Okay, this is OUT OF CONTROL! One of our moderators tested this and noticed that the [size] tag could get around this and make a nasty sig. So I went a replaced Size=n with size=0. Unfortunately we agreed that this wasn't cool because some people wa nt to have a big size=6 signature and keep it down to a line or two. I came up with a solution but I really dislike it. Surely there is something more elegant
Code:
if ($maxlinessig!=0) {
// check signature lines
$a = 0;
$counter =0;
$linecount =0;
$maxcounter = 50;
$lastsize = 1;
//
//Handle the size field
//
$SizeMeanings=array("0"=>.5, "1"=> .5, "2"=> 1, "3" => 1.5, "4" => 2, "5" => 3, "6"=>4, "7"=>6, "8"=>6, "9"=>6 );
while($signature[$a] <> ""){
$checkforsizetag = substr($signature,$a,6);
if(strtolower($checkforsizetag)=="[size="){
//
//Found a size tag. This throws everything off
//First see how many digits are in the size of field
$SizeOfIndex = 0;
//
//scan for the ]
while($signature[$a+6+$SizeOfIndex] <> "]" and $signature[$a+6+$SizeOfIndex] <>""){
$SizeOfIndex++;
}
if($signature[$a+6+$SizeOfIndex]=="]"){
if($SizeOfIndex != 1)
{
//
//In this case there are more than 2 characters in the size field
//Just fill them in with 0's I guess
//
while($SizeOfIndex != 0){
$SizeOfIndex--;
$signature[$a+6+$SizeOfIndex] = '0';
}
}else{
$lastsize = $SizeMeanings[$signature[$a+6]];
if($lastsize==""){
$lastsize=$maxlinessig;
}
}
}
}
$counter++;
if($signature[$a]==" "){
$maxcounter=67;
}
if($signature[$a] == "\n" or $counter > $maxcounter)
{
$linecount+=$lastsize;
$counter = 0;
$maxcounter=50;
}
$a++;
}
if($linecount>=$maxlinessig){
eval("standarderror(\"".gettemplate("error_sigtoolong")."\");");
exit;
}
}