~gsm;
$message =~ s~(\W|^);D~$1
~gsm;
$message =~ s~(\W|^):\x27\(~$1
~gsm;
$message =~ s~(\W|^):-/~$1
~gsm;
$message =~ s~(\W|^):-X~$1
~gsm;
$message =~ s~(\W|^):-\[~$1
~gsm;
$message =~ s~(\W|^):-\*~$1
~gsm;
$message =~ s~(\W|^)>:\(~$1
~gsm;
$message =~ s~(\W|^)::\)~$1
~gsm;
$message =~ s~(\W|^):P~$1
~gsm;
$message =~ s~(\W|^):-?\)~$1
~gsm;
$message =~ s~(\W|^):D~$1
~gsm;
$message =~ s~(\W|^):-?\(~$1
~gsm;
$message =~ s~(\W|^):o~$1
~gism;
$message =~ s~(\W|^)8-\)~$1
~gsm;
$message =~ s~(\W|^):-\?~$1
~gsm;
$message =~ s~(\W|^)\^_\^~$1
~gsm;
$message =~ s~(\W|^):thumb~$1
~gsm;
my $count = 0;
while ($SmilieURL[$count]) {
if ( $SmilieURL[$count] =~ /\//ixsm ) { $tmpurl = $SmilieURL[$count]; }
else { $tmpurl = qq~$imagesdir/$SmilieURL[$count]~; }
$tmpcode = $SmilieCode[$count];
$tmpcode =~ s/&\x2336;/\$/gxsm;
$tmpcode =~ s/&\x2364;/\@/gxsm;
$message =~ s/\Q$tmpcode\E/ tag
$code =~ s/">/\[code_qgt\]/igxsm;
$codecnt++;
if ( $guest_media_disallowed && $iamguest ) {
$prselect = q{};
}
else {
$prselect =
qq~
~;
}
$code =
qq~$code\[code_br][code_br]
~;
$_ =~ s/XSELECTX/$prselect/gxsm;
$_ =~ s/XLANGX/$prclass/gxsm;
$_ =~ s/CODE/$code/gxsm;
return $_;
}
sub noparse {
my ($noubbc) = @_;
$noubbc =~ s/([!\(\)\-\.\/:\?\[\\\]\^D])/$killhash{$1}/gxsm;
return $noubbc;
}
}
sub imagemsg {
my ( $rest, $attribut, $url, $type ) = @_;
# use or kill urls
$url =~ s/\[url\](.*?)\[\/url\]/$1/igxsm;
$url =~ s/\[link\](.*?)\[\/link\]/$1/igxsm;
$url =~ s/\[url\s*=\s*(.*?)\s*.*?\].*?\[\/url\]/$1/igxsm;
$url =~ s/\[link\s*=\s*(.*?)\s*.*?\].*?\[\/link\]/$1/igxsm;
$url =~ s/\[url.*?\/url\]//igxsm;
$url =~ s/\[link.*?\/link\]//igxsm;
my $char_160 = chr 160;
$url =~ s/\s|\?| |$char_160//gxsm;
if ( $url !~ /^http.+\.(gif|jpg|jpeg|png|bmp)$/ixsm ) {
return $rest . $url;
}
my %parameter;
FromHTML($attribut);
$attribut =~ s/(\s|$char_160)+/ /gxsm;
local *altconv = sub {
my ( $attfirst, $attalt, $attlast ) = @_;
$attalt =~ s/\s/_/gxsm;
$attfirst . qq~ alt=$attalt $attlast~;
};
$attribut =~ s/(.*?)alt=(.+?)(\s\S+=|\Z)/ altconv($1,$2,$3)/eisgxm;
foreach ( split / +/sm, $attribut ) {
my ( $key, $value ) = split /=/sm, $_;
$value =~ s/[\x22\x27]//gxsm;
$parameter{$key} = $value;
}
my $use_greybox = $img_greybox;
if ( $action eq 'ajxmessage'
|| $action eq 'ajximmessage'
|| $action eq 'ajxcal' )
{
$parameter{'name'} = q~class="liveimg" name="post_liveimg_resize"~;
$use_greybox = 0;
}
elsif ( $action eq 'eventcal' ) {
$parameter{'name'} = q~id="post_img_resize"~;
}
else {
$parameter{'name'} =
$type ? q~id="signat_img_resize"~ : q~id="post_img_resize"~;
}
$parameter{'alt'} =~ s/[<>"]/*/gxsm;
$parameter{'alt'} =~ s/_/ /gxsm;
if ( $url =~ /([^\/]+?)$/xsm ) {
$parameter{'alt'} ||= $1;
}
$parameter{'align'} =~ s/[^a-z]//igxsm;
$parameter{'width'} =~ s/\D//gxsm;
$parameter{'height'} =~ s/\D//gxsm;
if ( $parameter{'align'} ) {
$parameter{'align'} = qq~ style="vertical-align:$parameter{'align'}"~;
}
if ( $parameter{'width'} ) {
$parameter{'width'} = qq~ width="$parameter{'width'}"~;
}
if ( $parameter{'height'} ) {
$parameter{'height'} = qq~ height="$parameter{'height'}"~;
}
my $linkedimg = $rest =~ /\[url[^\[]*\]\s*$/ism ? 1 : 0;
return $rest
. (
( !$linkedimg && $use_greybox )
? qq~~
: q{}
)
. qq~~
. ( ( !$linkedimg && $img_greybox ) ? '' : q{} );
}
#greybox image bug fixed;
sub DoUBBC {
my ($image_type) = @_;
$ycsscounter = 2;
if ( $ns && $ns eq 'NS' || $message =~ s/\x23nosmileys//isgm ) { return $message; }
if ( ${ $uid . $username }{'hide_img'} && $user_hide_img ) { $message = parseimgflash($message); }
$message =~ s/\[noparse\](.*?)(\[\/noparse\]|$)/noparse($1)/eisgm;
$message =~ s/\[reason\](.+?)\[\/reason\]//igsm;
$message =~ s/\[code\]/ \[code\]/igsm;
$message =~ s/\[\/code\]/ \[\/code\]/igsm;
$message =~ s/\[quote\]/ \[quote\]/igsm;
$message =~ s/\[\/quote\]/ \[\/quote\]/igsm;
$message =~ s/\[glow\]/ \[glow\]/igsm;
$message =~ s/\[\/glow\]/ \[\/glow\]/igsm;
$message =~ s/
|
/\n/igsm;
$message =~ s/
\x1f|
\x1f/\n/igsm;
$message =~ s/\[code\s*(.*?)\]\n*(.+?)\n*\[\/code\]/codemsg($2,$1)/eisgm;
# [code] must come at first! At least before image transformation!
$message =~ s/\[([^\]\[]{0,30})\n([^\]\[]{0,30})\]/\[$1$2\]/gsm;
$message =~ s/\[\/([^\]\[]{0,30})\n([^\]\[]{0,30})\]/\[\/$1$2\]/gsm;
#$message =~ s~(\w+://[^<>\s\n\"\]\[]+)\n([^<>\s\n\"\]\[]+)~$1\n$2~g;
$message =~ s/\[b\](.*?)\[\/b\]/$1<\/b>/isgm;
$message =~ s/\[i\](.*?)\[\/i\]/$1<\/i>/isgm;
$message =~
s/\[u\](.*?)\[\/u\]/$1<\/span>/isgm;
$message =~
s/\[s\](.*?)\[\/s\]/$1<\/span>/isgm;
$message =~ s/\[glb\](.*?)\[\/glb\]/$1<\/div>/isgm;
# $message =~
#s/( | )*\[move\](.*?)\[\/move\]/$2<\/div>/isg;
$message =~
s/( | )*\[move\](.*?)\[\/move\]/