Difference between revisions of "Extension:Flashlets.php"
(ver) |
m |
||
Line 50: | Line 50: | ||
# create swf filename unique to the actionscript content and parameters | # create swf filename unique to the actionscript content and parameters | ||
− | $swf = md5($ | + | $sh = "$wgFlashletsMTASC -cp $wgFlashletsCP -swf /usr/local/mtasc/test.swf -out $file.swf -main -version $ver -header $width:$height:$fps $file.as 2>&1"; |
+ | $swf = md5($sh); | ||
$file = "$wgFlashletsDirectory/$swf"; | $file = "$wgFlashletsDirectory/$swf"; | ||
$path = "$wgFlashletsPath/$swf.swf"; | $path = "$wgFlashletsPath/$swf.swf"; | ||
Line 61: | Line 62: | ||
fwrite($handle,$actionscript); | fwrite($handle,$actionscript); | ||
fclose($handle); | fclose($handle); | ||
− | |||
$html = shell_exec($sh); | $html = shell_exec($sh); | ||
unlink("$file.as"); | unlink("$file.as"); | ||
Line 70: | Line 70: | ||
# If the SWF exists, return the HTMLcode to request and embed the SWF otherwise return error information | # If the SWF exists, return the HTMLcode to request and embed the SWF otherwise return error information | ||
if (file_exists("$file.swf")) { | if (file_exists("$file.swf")) { | ||
− | $html = "\n<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td><object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=$ | + | $html = "\n<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td><object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=$ver,0,0,0\" width=\"$width\" height=\"$height\" id=\"$path\" type=\"application/x-shockwave-flash\" data=\"$path\"><param name=\"flashvars\" value=\"$flashvars\"><param name=\"movie\" value=\"$path\"><param name=\"quality\" value=\"$quality\"><param name=\"bgcolor\" value=\"$bgcolor\"><embed src=\"$path\" quality=\"$quality\" bgcolor=\"$bgcolor\" width=\"$width\" height=\"$height\" flashvars=\"$flashvars\" name=\"$path\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" /></object></td></tr>\n"; |
if ($caption) $html .= "\n<tr><td align=\"center\"><a href=\"$wgFlashletsPath/$swf.swf\">$caption</a></td></tr>\n"; | if ($caption) $html .= "\n<tr><td align=\"center\"><a href=\"$wgFlashletsPath/$swf.swf\">$caption</a></td></tr>\n"; | ||
$html .= "</table>"; | $html .= "</table>"; |
Revision as of 04:52, 1 April 2007
<?
- Flashlets Extension
- - Allows ActionScript code to render in the page a SWF using the MTASC (http://www.mtasc.org) SWF compiler
- - Version 1.00 (2007-03-30)
- - See http://www.mediawiki.org/wiki/Extension:Flashlets for installation and usage details
- - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html)
- - Author: http://www.organicdesign.co.nz/nad
$wgFlashletsMagic = "swf"; # the tag name for embedding a SWF $wgFlashletsMTASC = "mtasc"; # Command used to launch the MTASC executable $wgFlashletsCP = "/usr/local/mtasc/std"; # Directory containing the MTASC class headers $wgFlashletsPath = "/wiki/swf"; # Writable directory to store files $wgFlashletsDirectory = "$IP/swf"; # Writable directory to store files $wgExtensionFunctions[] = 'wfSetupFlashlets';
class Flashlets {
var $version = '1.00, 2007-03-30'; var $expire = 100; # Number of minutes a generated SWF lives for without being accessed
# Constructor function Flashlets() { global $wgParser,$wgFlashletsMagic; $wgParser->setHook($wgFlashletsMagic,array($this,'tagHook')); }
# Convert the $magic tags to client-side javascript request code from its stored parameters function tagHook($actionscript,$argv,&$parser) { global $wgFlashletsMTASC,$wgFlashletsCP,$wgFlashletsDirectory,$wgFlashletsPath;
# convert args to command-line switches $width = isset($argv['width']) ? intval($argv['width']) : 300; $height = isset($argv['height']) ? intval($argv['height']) : 200; $fps = isset($argv['fps']) ? intval($argv['fps']) : 25; $bgcolor = isset($argv['bgcolor']) ? $argv['bgcolor'] : '#ffffff'; $caption = isset($argv['caption']) ? $argv['caption'] : false; $ver = isset($argv['ver']) ? $argv['ver'] : 6;
# delete swf's older than cache-expiry $expiry = $now - $this->expire; if ($handle = opendir('.')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $stat = stat($file); #if ($stat[8] < $expire) unlink($file); } } } closedir($handle);
# create swf filename unique to the actionscript content and parameters $sh = "$wgFlashletsMTASC -cp $wgFlashletsCP -swf /usr/local/mtasc/test.swf -out $file.swf -main -version $ver -header $width:$height:$fps $file.as 2>&1"; $swf = md5($sh); $file = "$wgFlashletsDirectory/$swf"; $path = "$wgFlashletsPath/$swf.swf";
# Compile the SWF if it doesn't already exist if (!file_exists("$file.swf")) {
# Write the actionscript to a file for MTASC to compile from if ($handle = fopen("$file.as", 'w+')) { fwrite($handle,$actionscript); fclose($handle); $html = shell_exec($sh); unlink("$file.as"); } else $html = "Could not open '$file.as' for writing!";
}
# If the SWF exists, return the HTMLcode to request and embed the SWF otherwise return error information if (file_exists("$file.swf")) {
$html = "\n
\n"; if ($caption) $html .= "\n\n"; $html .= "<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=$ver,0,0,0\" width=\"$width\" height=\"$height\" id=\"$path\" type=\"application/x-shockwave-flash\" data=\"$path\"><param name=\"flashvars\" value=\"$flashvars\"><param name=\"movie\" value=\"$path\"><param name=\"quality\" value=\"$quality\"><param name=\"bgcolor\" value=\"$bgcolor\"><embed src=\"$path\" quality=\"$quality\" bgcolor=\"$bgcolor\" width=\"$width\" height=\"$height\" flashvars=\"$flashvars\" name=\"$path\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" /></object> |
<a href=\"$wgFlashletsPath/$swf.swf\">$caption</a> |
";
}
else $html = "\n
Could not compile SWF!
$html
\n";
return $html; }
}
- Called from $wgExtensionFunctions array when initialising extensions
function wfSetupFlashlets() { global $wgFlashlets; $wgFlashlets = new Flashlets(); }
?>