LightBringer
09-27-2002, 09:49 PM
I'm having an issue where my flash vb code that I've created isn't parsing properly when used the following way:
vB Code Tag: swf
vB Code replacement: <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" {param}>
<PARAM NAME=movie VALUE="{option}"> <EMBED src="{option}" quality=high {param} TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></EMBED>
</OBJECT>
vB Code example: width=400 height=100
The problem is, if a user attempts to put quotes around the option for height and width such as this: width="400" height="100"
the signature never shows up and when that user goes back to modify his or her profile it has been altered and reflects the following: width=\"400\" height=\"100\"
Notice the newly created \ marks in the sig line?
Any ideas?
I'm running vb 2.2.8 and I can't really nail down when this has begun since I hadn't tested out flash sigs since well before 2.2.6. :/
I could really use some help on this.
Sidenote: As long as the vbcode doesn't have the quotes around the height and width parameters, everything is fine.
Edited to include swf limit check code.
Below is the code I've installed into member.php to check the file size and dimensions of the flash movie.
$signature = preg_replace("/(\[)(swf)(=)(['\"]?)([^\"']*)(\\4])(.*)(\[\/swf\])/seiU", "\swf_size_check('\\5','\\7')", $signature);
function swf_size_check($image, $h_w) {
global $maxsigheight, $maxsigwidth;
//parse_all img tags
$image_xy=@getimagesize($image);
if ($image_xy==NULL)
{
return "Image not found";
}
else {
//ok, here we need to see if the user specified a size(i believe the swf will
//default to default size if no height width is specified, so lets get the
//dimensions of the swf..
$im_width=$image_xy[0];
$im_height=$image_xy[1];
//ok, did the user specify a height? lets see...
unset($params);
$params=explode(" ", $h_w);
foreach($params AS $param)
{
if (preg_match("/(height)(=)(['\"]?)([^\"']*)(\\3)/siU", $param))
{
$im_height=preg_replace("/(height)(=)(['\"]?)([^\"']*)(\\3)/seiU", "\intval('\\4')", $param);
}
if (preg_match("/(width)(=)(['\"]?)([^\"']*)(\\3)/siU", $param))
{
$im_width=preg_replace("/(width)(=)(['\"]?)([^\"']*)(\\3)/seiU", "\intval('\\4')", $param);
}
}
if ($im_width > $maxsigwidth)
{
return "Sorry, swf size exceeds maximum width of ".$maxsigwidth.".";
}
if ($im_height > $maxsigheight)
{
return "Sorry, swf size exceeds maximum height of ".$maxsigheight.".";
}
}
return "" . $h_w . "";
}
vB Code Tag: swf
vB Code replacement: <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" {param}>
<PARAM NAME=movie VALUE="{option}"> <EMBED src="{option}" quality=high {param} TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></EMBED>
</OBJECT>
vB Code example: width=400 height=100
The problem is, if a user attempts to put quotes around the option for height and width such as this: width="400" height="100"
the signature never shows up and when that user goes back to modify his or her profile it has been altered and reflects the following: width=\"400\" height=\"100\"
Notice the newly created \ marks in the sig line?
Any ideas?
I'm running vb 2.2.8 and I can't really nail down when this has begun since I hadn't tested out flash sigs since well before 2.2.6. :/
I could really use some help on this.
Sidenote: As long as the vbcode doesn't have the quotes around the height and width parameters, everything is fine.
Edited to include swf limit check code.
Below is the code I've installed into member.php to check the file size and dimensions of the flash movie.
$signature = preg_replace("/(\[)(swf)(=)(['\"]?)([^\"']*)(\\4])(.*)(\[\/swf\])/seiU", "\swf_size_check('\\5','\\7')", $signature);
function swf_size_check($image, $h_w) {
global $maxsigheight, $maxsigwidth;
//parse_all img tags
$image_xy=@getimagesize($image);
if ($image_xy==NULL)
{
return "Image not found";
}
else {
//ok, here we need to see if the user specified a size(i believe the swf will
//default to default size if no height width is specified, so lets get the
//dimensions of the swf..
$im_width=$image_xy[0];
$im_height=$image_xy[1];
//ok, did the user specify a height? lets see...
unset($params);
$params=explode(" ", $h_w);
foreach($params AS $param)
{
if (preg_match("/(height)(=)(['\"]?)([^\"']*)(\\3)/siU", $param))
{
$im_height=preg_replace("/(height)(=)(['\"]?)([^\"']*)(\\3)/seiU", "\intval('\\4')", $param);
}
if (preg_match("/(width)(=)(['\"]?)([^\"']*)(\\3)/siU", $param))
{
$im_width=preg_replace("/(width)(=)(['\"]?)([^\"']*)(\\3)/seiU", "\intval('\\4')", $param);
}
}
if ($im_width > $maxsigwidth)
{
return "Sorry, swf size exceeds maximum width of ".$maxsigwidth.".";
}
if ($im_height > $maxsigheight)
{
return "Sorry, swf size exceeds maximum height of ".$maxsigheight.".";
}
}
return "" . $h_w . "";
}