############################################################################### # LivePreview.pm # # $Date: 06.01.17 $ # ############################################################################### # YaBB: Yet another Bulletin Board # # Open-Source Community Software for Webmasters # # Version: YaBB 2.7.00 # # Packaged: June 1, 2017 # # Distributed by: http://www.yabbforum.com # # =========================================================================== # # Copyright (c) 2000-2017 YaBB (www.yabbforum.com) - All Rights Reserved. # # Software by: The YaBB Development Team # # with assistance from the YaBB community. # # Mod created by Carsten Dalgaard # # and added to YaBB core in Version 2.5.4/2.6.0 # # Released: May 11, 2013, Copyright 2013 Carsten Dalgaard # ############################################################################### use strict; use warnings; use CGI::Carp qw(fatalsToBrowser); our $VERSION = '2.7.00'; our $livepreviewpmver = 'YaBB 2.7.00 $Revision$'; our @livepreviewpmmods = (); our $livepreviewpmmods = 0; if (@livepreviewpmmods) { $livepreviewpmmods = 1; } our ($action); $action ||= q{}; if ( $action eq 'detailedversion' ) { return 1; } ## language ## our ( %croak, %micon, %micon_bg, %inmes_txt, %var_cal, %cal_icon, ); ## paths ## our ($scripturl); ## settings ## our ( $enable_ubbc, $set_subject_maxlength, ); ## system ## our ( $date, $my_attach, $my_sig, $tmpmusername, $uid, $username, $yy_yabbloaded, $yysetlocation, $cal_event_short, %FORM, ); ## templates ## our ($mypm_liveprev_b); use URI::Escape; load_censor_list(); require Sources::Guardian; guard(); if ($enable_ubbc) { if ( !$yy_yabbloaded ) { require Sources::YaBBC; } } sub dolive_message { if ( $FORM{'isprev'} ) { $FORM{'message'} =~ s/\r//gxsm; my $message = $FORM{'message'}; $message = uri_unescape($message); $message =~ s/\[ch8203\]//igxsm; $message =~ s/\&\x238203;//igxsm; $message = from_chars($message); $message = to_html($message); my $mess = $message; $message =~ s/\cM//gxsm; $message =~ s/\t/ \  \  \ /gxsm; $message =~ s/\n/
/gxsm; $message =~ s/([\000-\x09\x0b\x0c\x0e-\x1f\x7f])/\x0d/gxsm; $message = wrap($message); my $ns = q{}; if ( $FORM{'nschecked'} ) { $ns = 'NS'; } if ( $enable_ubbc && !$ns ) { my $displayname = $FORM{'musername'}; $message = do_ubbc( $message, q{}, $displayname ); $message =~ s/\Q style="display:none"\E/ style="display:inline"/gxsm; } $message = wrap2($message); $message = to_chars($message); $message = do_censor($message); my $csubject = $FORM{'subject'}; $csubject = uri_unescape($csubject); $csubject =~ s/[\r\n]//gxsm; $csubject = from_chars($csubject); $set_subject_maxlength ||= 50; my $convertcut = $set_subject_maxlength + ( $csubject =~ /^Re:\s+ /xsm ? 4 : 0 ); my $cliped = 0; ( $csubject, $cliped ) = count_chars( $csubject, $convertcut ); $csubject = to_html($csubject); $csubject = to_chars($csubject); $csubject = do_censor($csubject); $message = liveimage_resize($message); my $myname = $FORM{'guestname'}; $myname = uri_unescape($myname); $myname =~ s/[\r\n]//gxsm; $myname = from_chars($myname); $myname = to_html($myname); $myname = to_chars($myname); $myname = do_censor($myname); print "Content-type: application/x-www-form-urlencoded\n\n" or croak "$croak{'print'} content-type"; print qq~$csubject|$message|$myname~ or croak "$croak{'print'}"; $message = $mess; exit; } else { $yysetlocation = $scripturl; redirectexit(); } return; } sub dolive_pm { my $subjdate = timeformat( $date, 0, 0, 0, 1 ); if ( $FORM{'isprev'} ) { $FORM{'message'} =~ s/\r//gxsm; my $message = $FORM{'message'}; $message = uri_unescape($message); $message =~ s/\[ch8203\]//igxsm; $message =~ s/\&\x238203;//igxsm; $message = from_chars($message); $message = to_html($message); my $mess = $message; $message =~ s/\cM//gxsm; if ( $message =~ m/\[([^\]\[]{0,30})\n([^\]\[]{0,30})\]/xsm ) { $message =~ s/\[([^\]\[]{0,30})\n([^\]\[]{0,30})\]/\[$1$2\]/gxsm; } if ( $message =~ m/\[\/([^\]\[]{0,30})\n([^\]\[]{0,30})\]/xsm ) { $message =~ s/\[\/([^\]\[]{0,30})\n([^\]\[]{0,30})\]/\[\/$1$2\]/gxsm; } $message =~ s/\t/ \  \  \ /gxsm; $message =~ s/\n/
/gxsm; $message =~ s/([\000-\x09\x0b\x0c\x0e-\x1f\x7f])/\x0d/gxsm; $message = wrap($message); my $ns = q{}; if ( $FORM{'nschecked'} ) { $ns = 'NS'; } if ( $enable_ubbc && !$ns ) { my $displayname = $FORM{'musername'}; $message = do_ubbc( $message, q{}, $displayname ); $message =~ s/\Q style="display:none"\E/ style="display:inline"/gxsm; } $message = wrap2($message); $message = to_chars($message); $message = do_censor($message); my $csubject = $FORM{'subject'}; $csubject = uri_unescape($csubject); $csubject =~ s/[\r\n]//gxsm; $csubject = from_chars($csubject); $set_subject_maxlength ||= 50; my $convertcut = $set_subject_maxlength + ( $csubject =~ /^Re:\s+ /xsm ? 4 : 0 ); my $cliped = 0; ( $csubject, $cliped ) = count_chars( $csubject, $convertcut ); $csubject = to_html($csubject); $csubject = to_chars($csubject); $csubject = do_censor($csubject); my $icon = $FORM{'icon'} || 's'; $icon = check_icon($icon); get_micon(); my $msgimg = $micon{$icon}; my $css = q~windowbg~; load_language('InstantMessage'); get_template('MyMessage'); my $liveipimg = qq~~; my $livemip = $inmes_txt{'511'}; $my_sig ||= q{}; $my_attach ||= q{}; my $messageblock = $mypm_liveprev_b; $messageblock =~ s/\Q{yabb css}\E/$css/gxsm; $messageblock =~ s/\Q{yabb msgimg}\E/$msgimg/gxsm; $messageblock =~ s/\Q{yabb subjdate}\E/$subjdate/gxsm; $messageblock =~ s/\Q{yabb csubject}\E/$csubject/gxsm; $messageblock =~ s/\Q{yabb message}\E/$message/gxsm; $messageblock =~ s/\Q{yabb my_sig}\E/$my_sig/gxsm; $messageblock =~ s/\Q{yabb my_attach}\E/$my_attach/gxsm; $messageblock =~ s/\Q{yabb my_showIP}\E/$liveipimg $livemip/gxsm; my $txtsz = txtsz(); $messageblock =~ s/\Q{yabb txtsz}\E/$txtsz/gxsm; $messageblock = liveimage_resize($messageblock); print "Content-type: application/x-www-form-urlencoded\n\n" or croak "$croak{'print'} content-type"; print qq~$messageblock\n~ or croak "$croak{'print'} messageblock"; $message = $mess; exit; } else { $yysetlocation = $scripturl; redirectexit(); } return; } sub dolive_cal { if ( $FORM{'isprev'} ) { load_language('EventCal'); my $message = $FORM{'message'}; $message = uri_unescape($message); $message =~ s/\r//gxsm; $message =~ s/\[ch8203\]//igxsm; $message =~ s/\&\x238203;//igxsm; $message = from_chars($message); $message = to_html($message); my $mess = $message; $message =~ s/\cM//gxsm; if ( $message =~ m/\[([^\]\[]{0,30})\n([^\]\[]{0,30})\]/xsm ) { $message =~ s/\[([^\]\[]{0,30})\n([^\]\[]{0,30})\]/\[$1$2\]/gxsm; } if ( $message =~ m/\[\/([^\]\[]{0,30})\n([^\]\[]{0,30})\]/xsm ) { $message =~ s/\[\/([^\]\[]{0,30})\n([^\]\[]{0,30})\]/\[\/$1$2\]/gxsm; } $message =~ s/\t/ \  \  \ /gxsm; $message =~ s/\n/
/gxsm; $message =~ s/([\000-\x09\x0b\x0c\x0e-\x1f\x7f])/\x0d/gxsm; $message = wrap($message); my $ns = q{}; if ( $FORM{'nschecked'} ) { $ns = 'NS'; } if ( $enable_ubbc && !$ns ) { my $displayname = $FORM{'musername'}; $message = do_ubbc( $message, q{}, $displayname ); $message =~ s/\Q style="display:none"\E/ style="display:inline"/gxsm; } $message = wrap2($message); $message = to_chars($message); $message = do_censor($message); $message = liveimage_resize($message); if ( $cal_event_short && length($message) > $cal_event_short ) { ( $message, undef ) = count_chars( $message, $cal_event_short ); } my $myname = $FORM{'guestname'}; $myname = uri_unescape($myname); $myname =~ s/[\r\n]//gxsm; $myname = from_chars($myname); $myname = to_html($myname); $myname = to_chars($myname); $myname = do_censor($myname); my $d_year = $FORM{'cal_year'}; my $d_mon = $FORM{'cal_mon'}; my $d_day = $FORM{'cal_day'}; my $my_icontxt = $FORM{'icon_txt'}; my $txt_icon = $var_cal{$my_icontxt}; $txt_icon ||= q{}; my $my_caltype = $FORM{'cal_type'}; my $mycal_type = q{}; get_micon(); if ( $my_caltype eq 'c' ) { $mycal_type = $cal_icon{'eventprivate'}; } else { $mycal_type = q{}; } my $mybtime = stringtotime(qq~$d_mon/$d_day/$d_year~); my $mybtimein = timeformat($mybtime); my $cdate = dtonly($mybtimein); print "Content-type: application/x-www-form-urlencoded\n\n" or croak "$croak{'print'} content-type"; print qq~$message|$myname|$cdate|$txt_icon|$mycal_type~ or croak "$croak{'print'} message"; $message = $mess; exit; } else { $yysetlocation = $scripturl; redirectexit(); } return; } sub liveimage_resize { my ($message) = @_; my ($resize_num); local *check_image_resize = sub { my @x = @_; $resize_num++; $x[0] = "post_liveimg_resize_$resize_num"; return qq~"$x[0]"$x[1]~; }; if ( $message =~ m/"(post_liveimg_resize)"([^>]*>)/xsm ) { $message =~ s/"(post_liveimg_resize)"([^>]*>)/ check_image_resize($1,$2) /egxsm; } return $message; } 1;