Difference between revisions of "Extension:ExtraMagic"

From Organic Design wiki
m
(moved to svn)
Line 1: Line 1:
<?php
+
{{svn|extensions|/ExtraMagic/ExtraMagic.php}}
/**
 
* ExtraMagic extension - Adds useful variables and parser functions
 
* {{Category:Extensions|ExtraMagic}}{{php}}
 
* See http://www.organicdesign.co.nz/Extension:ExtraMagic.php
 
*
 
* @package MediaWiki
 
* @subpackage Extensions
 
* @author [http://www.organicdesign.co.nz/User:Nad User:Nad]
 
* @copyright © 2007 [http://www.organicdesign.co.nz/User:Nad User:Nad]
 
* @licence GNU General Public Licence 2.0 or later
 
*/
 
if (!defined('MEDIAWIKI')) die('Not an entry point.');
 
 
define('EXTRAMAGIC_VERSION', '2.0.3, 2009-07-20');
 
 
$wgExtensionCredits['parserhook'][] = array(
 
'name'        => 'ExtraMagic',
 
'author'      => '[http://www.organicdesign.co.nz/User:Nad User:Nad]',
 
'description' => 'Adds useful variables and parser functions',
 
'url'        => 'http://www.organicdesign.co.nz/Extension:ExtraMagic.php',
 
'version'    => EXTRAMAGIC_VERSION
 
);
 
 
 
$wgCustomVariables = array( 'CURRENTUSER', 'CURRENTUSERREALNAME', 'CURRENTLANG', 'CURRENTSKIN', 'IPADDRESS', 'DOMAIN', 'NUMBERINGOFF', 'GUID' );
 
 
$wgExtensionFunctions[]                    = 'efSetupExtraMagic';
 
$wgHooks['MagicWordMagicWords'][]          = 'efAddCustomVariable';
 
$wgHooks['MagicWordwgVariableIDs'][]      = 'efAddCustomVariableID';
 
$wgHooks['LanguageGetMagic'][]            = 'efAddCustomVariableLang';
 
$wgHooks['ParserGetVariableValueSwitch'][] = 'efGetCustomVariable';
 
 
/**
 
* Called from $wgExtensionFunctions array when initialising extensions
 
*/
 
function efSetupExtraMagic() {
 
global $wgParser;
 
$wgParser->setFunctionHook( 'REQUEST', 'efExtraMagicExpandRequest', SFH_NO_HASH );
 
}
 
 
/**
 
* Register magic words
 
*/
 
function efAddCustomVariable( &$magicWords ) {
 
global $wgCustomVariables;
 
foreach( $wgCustomVariables as $var ) $magicWords[] = "MAG_$var";
 
return true;
 
}
 
 
function efAddCustomVariableID( &$variables ) {
 
global $wgCustomVariables;
 
foreach( $wgCustomVariables as $var ) $variables[] = constant( "MAG_$var" );
 
return true;
 
}
 
 
function efAddCustomVariableLang( &$langMagic, $langCode = 0 ) {
 
global $wgCustomVariables;
 
 
# Magic words
 
foreach( $wgCustomVariables as $var ) {
 
$magic = "MAG_$var";
 
$langMagic[defined( $magic ) ? constant( $magic ) : $magic] = array( $langCode, $var );
 
}
 
 
# Parser functions
 
$langMagic['REQUEST'] = array( $langCode, 'REQUEST' );
 
 
return true;
 
}
 
 
/**
 
* Expand parser functions
 
*/
 
function efExtraMagicExpandRequest( &$parser, $param ) {
 
global $wgRequest;
 
$parser->disableCache();
 
return $wgRequest->getText( $param );
 
}
 
 
/**
 
* Process variable values
 
*/
 
function efGetCustomVariable( &$parser, &$cache, &$index, &$ret ) {
 
switch ( $index ) {
 
 
case MAG_CURRENTUSER:
 
global $wgUser;
 
$parser->disableCache();
 
$ret = $wgUser->mName;
 
break;
 
 
case MAG_CURRENTUSERREALNAME:
 
global $wgUser;
 
$parser->disableCache();
 
$ret = $wgUser->getRealName();
 
break;
 
 
 
case MAG_CURRENTLANG:
 
global $wgUser;
 
$parser->disableCache();
 
$ret = $wgUser->getOption( 'language' );
 
break;
 
 
case MAG_CURRENTSKIN:
 
global $wgUser;
 
$parser->disableCache();
 
$ret = $wgUser->getOption( 'skin' );
 
break;
 
 
case MAG_IPADDRESS:
 
$parser->disableCache();
 
$ret = $_SERVER['REMOTE_ADDR'];
 
break;
 
 
case MAG_DOMAIN:
 
$parser->disableCache();
 
$ret = $_SERVER['SERVER_NAME'];
 
break;
 
 
case MAG_NUMBERINGOFF:
 
global $wgUser;
 
$wgUser->setOption( 'numberheadings', false );
 
$ret = '';
 
break;
 
 
case MAG_GUID:
 
$parser->disableCache();
 
$ret = strftime( '%Y%m%d', time() ) . '-' . substr( strtoupper( uniqid('', true) ), -5 );
 
break;
 
 
}
 
return true;
 
}
 

Revision as of 23:28, 5 October 2009

Info.svg This code is in our Git repository here.

Note: If there is no information in this page about this code and it's a MediaWiki extension, there may be something at mediawiki.org.