Your IP : 172.71.120.3


Current Path : /var/www/element/data/www/wiki.element.ru/extensions/MediawikiPlayer/
Upload File :
Current File : /var/www/element/data/www/wiki.element.ru/extensions/MediawikiPlayer/MediawikiPlayer.php

<?php

/***********************************************************
 * Name:     MediawikiPlayer
 * Desc:     Embedds a mediaplayer into a wiki page
 *
 * Version:  0.2.0
 *
 * Author:   Andrew Fitzgerald (contact@swiftlytilting.com)
 * Homepage: http://www.mediawiki.org/wiki/Extension:MediawikiPlayer
 *           http://www.swiftlytilting.com/
 *
 * License:  GNU GPL
 *
 ***********************************************************
 */
 
$wgExtensionCredits['parserhook'][] = array(
       'name' => 'MediawikiPlayer',
       'author' =>'<a href="http://swiftlytilting.com">Andrew Fitzgerald</a>', 
       'url' => 'http://www.mediawiki.org/wiki/Extension:MediawikiPlayer', 
       'description' => 'Embedds a mediaplayer into a wiki page',
       'descriptionmsg' => "mediawikiplayer-desc", // Same as above but name of a message, for i18n - string, added in 1.12.0
		 'version' => '0.2.0',
		 'path' => __FILE__,
       );


//Avoid unstubbing $wgParser on setHook() too early on modern (1.12+) MW versions, as per r35980
if ( defined( 'MW_SUPPORTS_PARSERFIRSTCALLINIT' ) ) {
	$wgHooks['ParserFirstCallInit'][] = 'efMWPlayerSetup';
} else { // Otherwise do things the old fashioned way
	$wgExtensionFunctions[] = 'efMWPlayerSetup';
}
 
function efMWPlayerSetup() {
	global $wgParser, $MWPlayerID;
	$MWPlayerID = 0;
	$wgParser->setHook( 'mediaplayer', 'efMWPlayerRender' );
	$wgParser->setHook( 'mp3player', 'efMWPlayerRenderMP3' );
       return true;   
}
 
function efMWPlayerRenderMP3( $input, $args, $parser ) {
	$args['height'] = '20';
	return efMWPlayerRender( $input, $args, $parser);
}
function efMWPlayerRender( $input, $args, $parser ) {
	global $wgMWPlayerID, $wgScriptPath;
	$wgMWPlayerID++;   
	
	
	if (!isset($wgMWPlayerDir)) 
	{	$wgMWPlayerDir =  $wgScriptPath . '/extensions/MediawikiPlayer'; 
	}
	
	
	if (strtolower(substr($input,0,5)) == 'file:')
	{	
		$image = new Image(Title::makeTitleSafe("Image",$input));
		$input = $image->getViewURL(false);
	}
	
	$playerUrl = $wgMWPlayerDir. '/player.swf';
	$scriptUrl = $wgMWPlayerDir . '/swfobject.js';
	$paramArr = array('allowfullscreen', 'allowscriptaccess', 'wmode', 'flashvars');
	
	if (isset($wgMWPlayerConfig) 
				&& array_key_exists('MWPlayerConfig', $args) 
				&& array_key_exists($args['MWPlayerConfig'], $wgMWPlayerConfig))
	{ 
		$wgMWPlayerDefaultSettings = $wgMWPlayerConfig[$args['MWPlayerConfig']];
		unset($args['MWPlayerConfig']);
	
	} else if (!isset($wgMWPlayerDefaultSettings))
	{				
		$wgMWPlayerDefaultSettings = array(
               'width' => '400',
               'height' => '300',
               'allowfullscreen' => 'true',
               'backcolor' => 'eeeeee',
               );
	}	
		
	foreach ($wgMWPlayerDefaultSettings as $n => $v)
	{	
		if (!array_key_exists($n, $args))
		{	$args[$n] = $v;
		}
	}
	 
	if ((!array_key_exists('file',$args)) && (trim($input) != ''))
	{		$args['file'] = $input;
	}
	
	
	$code = "<span id='MWPlayer-$wgMWPlayerID'>The player will show in this paragraph</span>\n";
		
	if ($wgMWPlayerID ==1 )
	{	$code .= "<script type='text/javascript' src='$scriptUrl'></script>\n";
	}
	$code .= "<script type='text/javascript'>\n";
	$code .= "// <![CDATA[\n";
	$code .= "var s1 = new SWFObject('$playerUrl','player','$args[width]','$args[height]','9');\n";	 

	foreach( $args as $name => $value )
	{	
		$value = str_replace(array( ':PLAYERDIR:'), array( $wgMWPlayerDir ), $value);
		
		// Escape output to prevent XSS
		$name = efMWPlayerEscape($name);
		$value = efMWPlayerEscape($value);
         
		if (in_array($name,$paramArr))
		{	
			$code .= "s1.addParam('$name','$value');\n";
		} else
		{
			$code .= "s1.addVariable('$name','$value');\n";
		}
	}
	$code .= "s1.write('MWPlayer-$wgMWPlayerID');\n";
	$code .= "// ]]>\n";
	$code .= "</script>";
	return $code;
}

function efMWPlayerEscape($string)
{
	return preg_replace_callback('%([^A-Za-z0-9 ])%', 	
         create_function('$matches', 'return "\\x" . str_pad(dechex(ord($matches[1])), 2, "0", STR_PAD_LEFT);'),
         $string);	
}