############################################################################### # YaBBC.pl # ############################################################################### # YaBB: Yet another Bulletin Board # # Open-Source Community Software for Webmasters # # Version: YaBB 1 Gold - SP 1.3.1 # # Released: December 2001; Updated April 18, 2003 # # Distributed by: http://www.yabbforum.com # # =========================================================================== # # Copyright (c) 2000-2003 YaBB (www.yabbforum.com) - All Rights Reserved. # # Software by: The YaBB Development Team # # with assistance from the YaBB community. # # Sponsored by: Xnull Internet Media, Inc. - http://www.ximinc.com # ############################################################################### $yabbcplver = "1 Gold - SP 1.3.1"; $yyYaBBCloaded = 1; sub decode_direction { $_ = $_[0]; $_ =~ s~left~270~ig; $_ =~ s~right~90~ig; $_ =~ s~top~0~ig; $_ =~ s~bottom~180~ig; $_ =~ s~topright~45~ig; $_ =~ s~bottomright~135~ig; $_ =~ s~bottomleft~225~ig; $_ =~ s~topleft~315~ig; return $_; } sub validwidth { return ( $_[0] > 400 ? 400 : $_[0] ); } ### Add More Smilies 3.0 - Make Smilies ### sub MakeSmileys { if ($SmilieURL[0] eq "") {&LoadSmilies;} for( my $i = @SmilieURL; $i >= 0; $i-- ) { if ($SmilieURL[$i]=~ /\//i) {$tmpurl = $SmilieURL[$i];} else {$tmpurl = qq~$smiliesurl/$SmilieURL[$i]~;} foreach $tmpCode (split (/\s+/, $SmilieCode[$i])) { $message =~ s~\Q$tmpCode\E~$SmilieDescription[$i]~sg; } } $message =~ s~\[smilie=(\w+)\.(gif|jpg|jpeg|png|bmp)\]~$1~isg; $message =~ s~\[smiley=(\w+)\.(gif|jpg|jpeg|png|bmp)\]~$1~isg; } ### Add More Smilies 3.0 - Make Smilies ### $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+?),(\D\S+?),(\d+)\](.+?)\[/shadow\]~qq^\[shadow=$1,^ . &decode_direction($2) . qq^,$3\]$4\[/shadow\]^~eisg; $message =~ s~\[shadow=(\S+?),(\d+),(\d+)\](.+?)\[/shadow\]~qq^[&table width="^ . validwidth($3) . qq^" style="filter:shadow\(color=$1, direction=$2\)"\]$4\[/\&table\]^~eisg; $message =~ s~\[glow=(\S+?),(\d+),(\d+)\](.+?)\[/glow\]~qq^[&table width="^ . validwidth($3) . qq^" style="filter:glow\(color=$1, strength=$2\)"\]$4\[/\&table\]^~eisg;  $message =~(s~\[color=(.+?)\](.+?)\[/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; $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\]\s*www\.(\S+?)\s*\[/url\]~www.$1~isg; $message =~ s~\[url=\s*(\S\w+\://\S+?)\s*\](.+?)\[/url\]~$2~isg; $message =~ s~\[url=\s*(\S+?)\](.+?)\s*\[/url\]~$2~isg; $message =~ s~\[url\]\s*(\S+?)\s*\[/url\]~$1~isg; $message =~ s~\[link\]\s*www\.(\S+?)\s*\[/link\]~www.$1~isg; $message =~ s~\[link=\s*(\S\w+\://\S+?)\s*\](.+?)\[/link\]~$2~isg; $message =~ s~\[link=\s*(\S+?)\](.+?)\s*\[/link\]~$2~isg; $message =~ s~\[link\]\s*(\S+?)\s*\[/link\]~$1~isg; $message =~ s~\[email\]\s*(\S+?\@\S+?)\s*\[/email\]~$1~isg; $message =~ s~\[email=\s*(\S+?\@\S+?)\](.*?)\[/email\]~$2~isg; $message =~ s~\[news\](\S+?)\[/news\]~$1~isg; $message =~ s~\[gopher\](\S+?)\[/gopher\]~$1~isg; $message =~ s~\[ftp\](\S+?)\[/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\](?:.*?)\[/table\]~is ) { 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 ) {} $message =~ s~((?:(?!|||
|
|
).)*)~~isg; $message =~ s~((?:(?!|||
|
|
).)*)~~isg; $message =~ s~((?:(?!|||||
).)*)~~isg; $message =~ s~((?:(?!|||||
).)*)~~isg; $message =~ s~((?:(?!|||||
).)*)~~isg; $message =~ s~((?:(?!|||||
).)*)~~isg; } 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;