1###############################################################################
2# LivePreview.pm                                                              #
3# $Date: 12.02.14 $                                                           #
4###############################################################################
5# YaBB: Yet another Bulletin Board                                            #
6# Open-Source Community Software for Webmasters                               #
7# Version:        YaBB 2.6.11                                                 #
8# Packaged:       December 2, 2014                                            #
9# Distributed by: http://www.yabbforum.com                                    #
10# =========================================================================== #
11# Copyright (c) 2000-2014 YaBB (www.yabbforum.com) - All Rights Reserved.     #
12# Software by:  The YaBB Development Team                                     #
13#               with assistance from the YaBB community.                      #
14# Mod created by Carsten Dalgaard                                             #
15#                and added to YaBB core in Version 2.5.4/2.6.0                #
16# Released: May 11, 2013, Copyright 2013 Carsten Dalgaard                     #
17###############################################################################
18use CGI::Carp qw(fatalsToBrowser);
19our $VERSION = '2.6.11';
20
21$livepreviewpmver = 'YaBB 2.6.11 $Revision: 1611 $';
22if ( $action eq 'detailedversion' ) { return 1; }
23use URI::Escape;
24if ( $yymycharset ne 'UTF-8' ) {
25    use Encode;
26}
27LoadCensorList();
28guard();
29if ( $enable_ubbc  ) {
30    if (!$yyYaBBCloaded ) {
31        require Sources::YaBBC;
32    }
33}
34
35sub DoLiveMessage {
36    $displayname = $FORM{'musername'};
37    $FORM{'message'} =~ s/\r//gsm;
38    $message = $FORM{'message'};
39    uri_unescape($message);
40    if ( $yymycharset ne 'UTF-8' ) {
41         $message = decode_utf8($message);
42    }
43    $message =~ s/\[ch8203\]//igsm;
44    $message =~ s/\​//igsm;
45    FromChars($message);
46    ToHTML($message);
47    my $mess = $message;
48    $message =~ s/\cM//gsm;
49    $message =~ s/\[([^\]\[]{0,30})\n([^\]\[]{0,30})\]/\[$1$2\]/gsm;
50    $message =~ s/\[\/([^\]\[]{0,30})\n([^\]\[]{0,30})\]/\[\/$1$2\]/gsm;
51    $message =~ s/\t/ \  \  \ /gsm;
52    $message =~ s/\n/<br \/>/gsm;
53    $message =~ s/([\000-\x09\x0b\x0c\x0e-\x1f\x7f])/\x0d/gsm;
54    wrap();
55    if ( $FORM{'nschecked'} == 1 ) { $ns = 'NS'; }
56
57    if ($enable_ubbc) {
58        DoUBBC();
59        $message =~ s/ style="display:none"/ style="display:inline"/gsm;
60    }
61    wrap2();
62    ToChars($message);
63    $message  = Censor($message);
64    $csubject = $FORM{'subject'};
65    uri_unescape($csubject);
66    if ( $yymycharset ne 'UTF-8' ) {
67         $csubject = decode_utf8($csubject);
68    }
69    $csubject =~ s/[\r\n]//gsm;
70    FromChars($csubject);
71    $convertstr = $csubject;
72    $convertcut = $set_subjectMaxLength + ( $csubject =~ /^Re: /sm ? 4 : 0 );
73    CountChars();
74    $csubject = $convertstr;
75    ToHTML($csubject);
76    ToChars($csubject);
77    $csubject = Censor($csubject);
78    liveimage_resize();
79    $myname = $FORM{'guestname'};
80    uri_unescape($myname);
81    if ( $yymycharset ne 'UTF-8' ) {
82         $myname = decode_utf8($myname);
83    }
84    $myname =~ s/[\r\n]//gsm;
85    FromChars($myname);
86    ToHTML($myname);
87    ToChars($myname);
88    $myname = Censor($myname);
89    if ( $yymycharset ne 'UTF-8' ) {
90        $csubject = encode_utf8($csubject);
91        $message = encode_utf8($message);
92        $myname = encode_utf8($message);
93    }
94    print "Content-type: application/x-www-form-urlencoded\n\n"
95      or croak "$croak{'print'} content-type";
96    print qq~$csubject|$message|$myname~ or croak "$croak{'print'}";
97    $message = $mess;
98    exit;
99}
100
101sub DoLiveIM {
102    $subjdate = timeformat($date,0,0,0,1);
103    $FORM{'message'} =~ s/\r//gxsm;
104    $message = $FORM{'message'};
105    uri_unescape($message);
106    if ( $yymycharset ne 'UTF-8' ) {
107        $message = decode_utf8($message);
108    }
109    $message =~ s/\[ch8203\]//igsm;
110    $message =~ s/\&#8203;//igsm;
111    FromChars($message);
112    ToHTML($message);
113    my $mess = $message;
114    $message =~ s/\cM//gsm;
115    $message =~ s/\[([^\]\[]{0,30})\n([^\]\[]{0,30})\]/\[$1$2\]/gsm;
116    $message =~ s/\[\/([^\]\[]{0,30})\n([^\]\[]{0,30})\]/\[\/$1$2\]/gsm;
117    $message =~ s/\t/ \&nbsp; \&nbsp; \&nbsp;/gsm;
118    $message =~ s/\n/<br \/>/gsm;
119    $message =~ s/([\000-\x09\x0b\x0c\x0e-\x1f\x7f])/\x0d/gsm;
120    wrap();
121    if ( $FORM{'nschecked'} == 1 ) { $ns = 'NS'; }
122
123    if ($enable_ubbc) {
124        $displayname = ${ $uid . $tmpmusername }{'realname'};
125        DoUBBC();
126        $message =~ s/ style="display:none"/ style="display:inline"/gsm;
127    }
128    wrap2();
129    ToChars($message);
130    $message  = Censor($message);
131    $csubject = $FORM{'subject'};
132    uri_unescape($csubject);
133    if ( $yymycharset ne 'UTF-8' ) {
134        $csubject = decode_utf8($csubject);
135    }
136    $csubject =~ s/[\r\n]//gsm;
137    FromChars($csubject);
138    $convertstr = $csubject;
139    $convertcut = $set_subjectMaxLength + ( $csubject =~ /^Re: /sm ? 4 : 0 );
140    CountChars();
141    $csubject = $convertstr;
142    ToHTML($csubject);
143    ToChars($csubject);
144    $csubject = Censor($csubject);
145    $icon     = $FORM{'icon'};
146    CheckIcon();
147    get_micon();
148    $msgimg = qq~$micon{$icon}~;
149    $css    = q~windowbg~;
150    LoadLanguage('InstantMessage');
151
152    get_template('MyMessage');
153    $liveipimg = qq~<img src="$micon_bg{'ip'}" alt="" />~;
154    $livemip   = $inmes_txt{'511'};
155
156    $messageblock = $myIM_liveprev_b;
157    $messageblock =~ s/{yabb css}/$css/gsm;
158    $messageblock =~ s/{yabb msgimg}/$msgimg/gsm;
159    $messageblock =~ s/{yabb subjdate}/$subjdate/gsm;
160    $messageblock =~ s/{yabb csubject}/$csubject/gsm;
161    $messageblock =~ s/{yabb message}/$message/gsm;
162    $messageblock =~ s/{yabb my_sig}/$my_sig/gsm;
163    $messageblock =~ s/{yabb my_attach}/$my_attach/gsm;
164    $messageblock =~ s/{yabb my_showIP}/$liveipimg $livemip/gsm;
165
166    liveimage_resize();
167    if ( $yymycharset ne 'UTF-8' ) {
168        $messageblock = encode_utf8($messageblock);
169    }
170
171    print "Content-type: application/x-www-form-urlencoded\n\n"
172      or croak "$croak{'print'} content-type";
173    print qq~$messageblock\n~ or croak "$croak{'print'} messageblock";
174    $message = $mess;
175    exit;
176}
177
178sub DoLiveCal {
179    LoadLanguage('EventCal');
180    $message = $FORM{'message'};
181    uri_unescape($message);
182    if ( $yymycharset ne 'UTF-8' ) {
183        $message = decode_utf8($message);
184    }
185    $message =~ s/\r//gxsm;
186    $message =~ s/\[ch8203\]//igsm;
187    $message =~ s/\&#8203;//igsm;
188    FromChars($message);
189    ToHTML($message);
190    my $mess = $message;
191    $message =~ s/\cM//gsm;
192    $message =~ s/\[([^\]\[]{0,30})\n([^\]\[]{0,30})\]/\[$1$2\]/gsm;
193    $message =~ s/\[\/([^\]\[]{0,30})\n([^\]\[]{0,30})\]/\[\/$1$2\]/gsm;
194    $message =~ s/\t/ \&nbsp; \&nbsp; \&nbsp;/gsm;
195    $message =~ s/\n/<br \/>/gsm;
196    $message =~ s/([\000-\x09\x0b\x0c\x0e-\x1f\x7f])/\x0d/gsm;
197    wrap();
198    if ( $FORM{'nschecked'} == 1 ) { $ns = 'NS'; }
199
200    if ($enable_ubbc) {
201        $displayname = ${ $uid . $tmpmusername }{'realname'};
202        DoUBBC();
203        $message =~ s/ style="display:none"/ style="display:inline"/gsm;
204    }
205    wrap2();
206    ToChars($message);
207    $message = Censor($message);
208    liveimage_resize();
209    CountChars();
210    $myname = $FORM{'guestname'};
211    uri_unescape($myname);
212    if ( $yymycharset ne 'UTF-8' ) {
213        $myname = decode_utf8($myname);
214    }
215    $myname =~ s/[\r\n]//gsm;
216    FromChars($myname);
217    ToHTML($myname);
218    ToChars($myname);
219    $myname     = Censor($myname);
220    $d_year     = $FORM{'cal_year'};
221    $d_mon      = $FORM{'cal_mon'};
222    $d_day      = $FORM{'cal_day'};
223    $my_icontxt = $FORM{'icon_txt'};
224    $txt_icon   = $var_cal{$my_icontxt};
225    $my_caltype = $FORM{'cal_type'};
226    get_micon();
227    if   ( $my_caltype == 2 ) { $mycal_type = $cal_icon{'eventprivate'}; }
228    else                      { $mycal_type = q{}; }
229    $mybtime   = stringtotime(qq~$d_mon/$d_day/$d_year~);
230    $mybtimein = timeformat($mybtime);
231    $cdate     = dtonly($mybtimein);
232    if ( $yymycharset ne 'UTF-8' ) {
233        $message = encode_utf8($message);
234        $myname = encode_utf8($myname);
235        $cdate = encode_utf8($cdate);
236        $txt_icon = encode_utf8($txt_icon);
237    }
238    print "Content-type: application/x-www-form-urlencoded\n\n"
239      or croak "$croak{'print'} content-type";
240    print qq~$message|$myname|$cdate|$txt_icon|$mycal_type~
241      or croak "$croak{'print'} message";
242    $message = $mess;
243    exit;
244}
245
246sub liveimage_resize {
247    my ($resize_num);
248    *check_image_resize = sub {
249        my @x = @_;
250        $resize_num++;
251        $x[0] = "post_liveimg_resize_$resize_num";
252        return qq~"$x[0]"$x[1]~;
253    };
254
255    $messageblock =~
256      s/"(post_liveimg_resize)"([^>]*>)/ check_image_resize($1,$2) /gesm;
257    $message =~
258      s/"(post_liveimg_resize)"([^>]*>)/ check_image_resize($1,$2) /gesm;
259
260    return;
261}
262
2631;
264