############################################################################### # YaBBC.pl # ############################################################################### # YaBB: Yet another Bulletin Board # # Open-Source Community Software for Webmasters # # Version: YaBB 1 Gold - SP 1.1 # # Released: December 2001; Updated March 22, 2002 # # Distributed by: http://www.yabbforum.com # # =========================================================================== # # Copyright (c) 2000-2002 Xnull (www.xnull.com) - All Rights Reserved. # # Software by: The YaBB Development Team # # with assistance from the YaBB community. # ############################################################################### $yabbcplver = "1 Gold - SP 1.1"; $yyYaBBCloaded = 1; sub validwidth { return ( $_[0] > 400 ? 400 : $_[0] ); } sub MakeSmileys { $message =~ s/\[smilie=(.*?)\]/\/isg; $message =~ s/\[smiley=(.*?)\]/\/isg; $message =~ s/(\W|\A)\;\)/$1\/g; $message =~ s/(\W|\A)\;\-\)/$1\/g; $message =~ s/(\W|\A)\;D/$1\/g; $message =~ s/\Q:'(\E/\/g; $message =~ s/(\W)\:\-\//$1\/g; $message =~ s/:\-\///g; $message =~ s/\Q:-X\E/\/g; $message =~ s/\Q:-[\E/\/g; $message =~ s/\Q:-*\E/\/g; $message =~ s/\Q>:(\E/\/g; $message =~ s/\Q>:(\E/\/g; $message =~ s/\Q::)\E/\/g; $message =~ s/\Q:P\E/\/g; $message =~ s/\Q:)\E/\/g; $message =~ s/\Q:-)\E/\/g; $message =~ s/\Q:D\E/\/g; $message =~ s/\Q:-(\E/\/g; $message =~ s/\Q:(\E/\/g; $message =~ s/\Q:o\E/\/gi; $message =~ s/\Q8)\E/\/g; $message =~ s/\Q???\E/\/g; $message =~ s/\Q?!?\E/\/g; $count=0; while($SmilieURL[$count]) { if ($SmilieURL[$count]=~ /\//i) {$tmpurl = $SmilieURL[$count];} else {$tmpurl = qq~$imagesdir/$SmilieURL[$count]~;} $tmpcode = $SmilieCode[$count]; $tmpcode =~ s/$/\$/g; $tmpcode =~ s/@/\@/g; $message =~ s/\Q$tmpcode\E/\/g; $count++ } } $MAXIMGWIDTH = 400; $MAXIMGHEIGHT = 500; sub restrictimage { my($w,$h,$s) = @_; $w = $w <= $MAXIMGWIDTH ? $w : $MAXIMGWIDTH; $h = $h <= $MAXIMGHEIGHT ? $h : $MAXIMGHEIGHT; return qq~~; } sub quotemsg { my( $qauthor, $qlink, $qdate, $qmessage ) = @_; $qmessage =~ s~\/me\s+(.*?)(\n.*?)~* $qauthor $1$2~ig; $qmessage =~ s~(.*?)\/me~$1\&\#47\;me~ig; $qmessage =~ s~\/me\s+([\s\S]*)~* $qauthor $1~ig; $qdate = &timeformat($qdate); $_ = $txt{'704'}; $_ =~ s~AUTHOR~$qauthor~g; $_ =~ s~QUOTELINK~$scripturl?action=display;$qlink~g; $_ =~ s~DATE~$qdate~g; $_ =~ s~QUOTE~$qmessage~g; return $_; } sub simplequotemsg { my $qmessage = $_[0]; $qmessage =~ s~\/me\s+(.*?)(\n.*?)~* $1~ig; $qmessage =~ s~(.*?)\/me~$1\&\#47\;me~ig; $qmessage =~ s~\/me\s+([\s\S]*)~* $1~ig; $qmessage =~ s~\/me~\&\#47\;me~ig; $_ = $txt{'705'}; $_ =~ s~QUOTE~$qmessage~g; return $_; } { my %killhash = ( ';' => ';', '!' => '!', '(' => '(', ')' => ')', '-' => '-', '.' => '.', '/' => '/', ':' => ':', '?' => '?', '[' => '[', '\\' => '\', ']' => ']', '^' => '^' ); sub codemsg { my $code = $_[0]; if($code !~ /&\S*;/) { $code =~ s/;/;/g; } $code =~ s~([\(\)\-\:\\\/\?\!\]\[\.\^])~$killhash{$1}~g; $_ = $txt{'706'}; $_ =~ s~CODE~$code~g; return $_; } } sub DoUBBC { $message =~ s~\[code\]~ \[code\]~ig; $message =~ s~\[/code\]~ \[/code\]~ig; $message =~ s~\[quote\]~ \[quote\]~ig; $message =~ s~\[/quote\]~ \[/quote\]~ig; $message =~ s~\[glow\]~ \[glow\]~ig; $message =~ s~\[/glow\]~ \[/glow\]~ig; $message =~ s~
~\n~ig; $message =~ s~\[code\]\n*(.+?)\n*\[/code\]~&codemsg($1)~eisg; if ($message =~ /\#nosmileys/isg || $ns =~ "NS") {$message =~ s/\#nosmileys//isg;} else { &MakeSmileys; } $message =~ s~\[([^\]]{0,30})\n([^\]]{0,30})\]~\[$1$2\]~g; $message =~ s~\[/([^\]]{0,30})\n([^\]]{0,30})\]~\[/$1$2\]~g; $message =~ s~(\w+://[^<>\s\n\"\]\[]+)\n([^<>\s\n\"\]\[]+)~$1\n$2~g; $message =~ s~\[b\](.+?)\[/b\]~$1~isg; $message =~ s~\[i\](.+?)\[/i\]~$1~isg; $message =~ s~\[u\](.+?)\[/u\]~$1~isg; $message =~ s~\[s\](.+?)\[/s\]~$1~isg; $message =~ s~\[move\](.+?)\[/move\]~$1~isg; $message =~ s~\[glow(.*?)\](.*?)\[/glow\]~qq^[glow$1]^ . &elimnests($2) . q^[/glow]^~eisg; $message =~ s~\[shadow(.*?)\](.*?)\[/shadow\]~qq^[shadow$1]^ . &elimnests($2) . q^[/shadow]^~eisg; $message =~ s~\[shadow=(\S+?),(.+?),(.+?)\](.+?)\[/shadow\]~q^[&table width=^ . validwidth($3) . qq^ style="filter:shadow\(color=$1, direction=$2\)"\]$4\[/\&table\]^~eisg; $message =~ s~\[glow=(\S+?),(.+?),(.+?)\](.+?)\[/glow\]~q^[&table width=^ . validwidth($3) . qq^ style="filter:glow\(color=$1, strength=$2\)"\]$4\[/\&table\]^~eisg; $message =~ s~\[color=([\w#]+)\](.*?)\[/color\]~$2~isg; $message =~ s~\[black\](.*?)\[/black\]~$1~isg; $message =~ s~\[white\](.*?)\[/white\]~$1~isg; $message =~ s~\[red\](.*?)\[/red\]~$1~isg; $message =~ s~\[green\](.*?)\[/green\]~$1~isg; $message =~ s~\[blue\](.*?)\[/blue\]~$1~isg; $message =~ s~\[font=(.+?)\](.+?)\[/font\]~$2~isg; $message =~ s~\[size=(.+?)\](.+?)\[/size\]~$2~isg; $char_160 = chr(160); $message =~ s~\[img\][\s*\t*\n*( )*($char_160)*]*(http\:\/\/)*(.+?)[\s*\t*\n*( )*($char_160)*]*\[/img\]~~isg; $message =~ s~\[img width=(\d+) height=(\d+)\][\s*\t*\n*( )*($char_160)*]*(http\:\/\/)*(.+?)[\s*\t*\n*( )*($char_160)*]*\[/img\]~restrictimage($1,$2,'http://'.$4)~eisg; $char2_160 = chr(160); # align_image_sp1.mod v0.2 $message =~ s~\[img align=(\w+)\][\s*\t*\n*( )*($char2_160)*]*(http\:\/\/)*(.+?)[\s*\t*\n*( )*($char2_160)*]*\[/img\]~~isg; $char2_160 = chr(160); # align_image_sp1.mod v0.2 $message =~ s~\[img align=(\w+)\][\s*\t*\n*( )*($char2_160)*]*(http\:\/\/)*(.+?)[\s*\t*\n*( )*($char2_160)*]*\[/img\]~~isg; $message =~ s~\[tt\](.*?)\[/tt\]~$1~isg; $message =~ s~\[left\](.+?)\[/left\]~

$1

~isg; $message =~ s~\[center\](.+?)\[/center\]~
$1
~isg; $message =~ s~\[right\](.+?)\[/right\]~

$1

~isg; $message =~ s~\[sub\](.+?)\[/sub\]~$1~isg; $message =~ s~\[sup\](.+?)\[/sup\]~$1~isg; $message =~ s~\[fixed\](.+?)\[/fixed\]~$1~isg; $message =~ s~\[hr\]\n~
~g; $message =~ s~\[hr\]~
~g; $message =~ s~\[br\]~\n~ig; if( $autolinkurls ) { $message =~ s~([^\w\"\=\[\]]|[\n\b]|\A)\\*(\w+://[\w\~\.\;\:\,\$\-\+\!\*\?/\=\&\@\#\%]+\.[\w\~\;\:\$\-\+\!\*\?/\=\&\@\#\%]+[\w\~\;\:\$\-\+\!\*\?/\=\&\@\#\%])~$1$2~isg; $message =~ s~([^\"\=\[\]/\:\.(\://\w+)]|[\n\b]|\A)\\*(www\.[^\.][\w\~\.\;\:\,\$\-\+\!\*\?/\=\&\@\#\%]+\.[\w\~\;\:\$\-\+\!\*\?/\=\&\@\#\%]+[\w\~\;\:\$\-\+\!\*\?/\=\&\@\#\%])~$1$2~isg; } $message =~ s~\[url\]www\.\s*(.+?)\s*\[/url\]~www.$1~isg; $message =~ s~\[url=\s*(\w+\://.+?)\](.+?)\s*\[/url\]~$2~isg; $message =~ s~\[url=\s*(.+?)\]\s*(.+?)\s*\[/url\]~$2~isg; $message =~ s~\[url\]\s*(.+?)\s*\[/url\]~$1~isg; $message =~ s~\[link\]www\.\s*(.+?)\s*\[/link\]~www.$1~isg; $message =~ s~\[link=\s*(\w+\://.+?)\](.+?)\s*\[/link\]~$2~isg; $message =~ s~\[link=\s*(.+?)\]\s*(.+?)\s*\[/link\]~$2~isg; $message =~ s~\[link\]\s*(.+?)\s*\[/link\]~$1~isg; $message =~ s~\[email\]\s*(\S+?\@\S+?)\s*\[/email\]~$1~isg; $message =~ s~\[email=\s*(\S+?\@\S+?)\]\s*(.*?)\s*\[/email\]~$2~isg; $message =~ s~\[news\](.+?)\[/news\]~$1~isg; $message =~ s~\[gopher\](.+?)\[/gopher\]~$1~isg; $message =~ s~\[ftp\](.+?)\[/ftp\]~$1~isg; $message =~ s~\[quote\s+author=(.*?)link=(.*?)\s+date=(.*?)\s*\]\n*(.*?)\n*\[/quote\]~"emsg($1,$2,$3,$4)~eisg; $message =~ s~\[quote\]\n*(.+?)\n*\[/quote\]~&simplequotemsg($1)~eisg; $message =~ s~\/me\s+(.*)~* $displayname $1~ig; $message =~ s~\[list\]~
    ~isg; $message =~ s~\[\*\]~
  • ~isg; $message =~ s~\[/list\]~
~isg; $message =~ s~\[pre\](.+?)\[/pre\]~'
' . dopre($1) . '
'~iseg; $message =~ /\[flash\=(\S+?),(\S+?)](\S+?)\[\/flash\]/; $width = $1; $height = $2; if ($width > 500) { $width = 500; } if ($height > 500) { $height = 500; } $message =~ s~\[flash\=(\S+?),(\S+?)](\S+?)\[\/flash\]~~g; if( $message =~ m~\[table\]\s*(.+?)\s*\[tr\]~i ) { while( $message =~ s~(.*?)\[table\](.*?)\[/table\](.*?)~$1$2
$3
~s ) {} while( $message =~ s~(.*?)\[table\](.*?)(.*?)\[/table\]~$1\[//table\]$2$3\[//table\]~s ) {} while( $message =~ s~\[table\](.*?)(.*?)\[/table\](.*?)~\[//table\]$1$2\[//table\]$3~s ) {} $message =~ s~\n{0,1}\[table\]\n*(.+?)\n*\[/table\]\n{0,1}~$1
~isg; while( $message =~ s~\(.*?)\n*\[tr\]\n*(.*?)\n*\[/tr\]\n*(.*?)\~$1$2$3
~is ) {} while( $message =~ s~\(.*?)\n*\[td\]\n{0,1}(.*?)\n{0,1}\[/td\]\n*(.*?)\~$1$2$3~is ) {} } while( $message =~ s~]*?)\n([^>]*)>~~ ) {} while( $message =~ s~]*)>([^<]*?)\n([^<]*)~$2$3~ ) {} while( $message =~ s~]*?)&([^>]*)>~~ ) {} while( $message =~ s~]*?)\n([^>]*)>~~ ) {} while( $message =~ s~]*?)&([^>]*)>~~ ) {} $message =~ s~\[\&table(.*?)\]~~g; $message =~ s~\[/\&table\]~~g; $message =~ s~\n~
~ig; } 1;