###############################################################################
# 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=(.*?)\]/\ $1/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\]~~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~\[sub\](.+?)\[/sub\]~$1~isg; $message =~ s~\[sup\](.+?)\[/sup\]~$1~isg; $message =~ s~\[fixed\](.+?)\[/fixed\]~$1~isg; $message =~ s~\[hr\]\n~' . 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~~~s ) {} while( $message =~ s~(.*?)\[/table\]~$3\[//table\]~s ) {} while( $message =~ s~\[table\](.*?)~\[//table\]$1~s ) {} $message =~ s~\n{0,1}\[table\]\n*(.+?)\n*\[/table\]\n{0,1}~