Extension:MyVariables

This extension is a small example snippet of code which goes into the LocalSettings.php script, and allows the addition of new built in variables. The code snippet adds two example variables, and , which serve as examples to follow when adding others for your own use.

First we have to add all our new magic words to the MediaWiki environment. This code is based on the method described in Manual:Magic words. To add new magic words, add its name into the array on the first line, and add a case for it in the last function (wfGetCustomVariable) to calculate and return its value when it's requested. $wgCustomVariables = array('CURRENTUSER','LOGO');

$wgHooks['MagicWordMagicWords'][]         = 'wfAddCustomVariable'; $wgHooks['MagicWordwgVariableIDs'][]      = 'wfAddCustomVariableID'; $wgHooks['LanguageGetMagic'][]            = 'wfAddCustomVariableLang'; $wgHooks['ParserGetVariableValueSwitch'][] = 'wfGetCustomVariable';

function wfAddCustomVariable(&$magicWords) { foreach($GLOBALS['wgCustomVariables'] as $var) $magicWords[] = "MAG_$var"; return true; }

function wfAddCustomVariableID(&$variables) { foreach($GLOBALS['wgCustomVariables'] as $var) $variables[] = constant("MAG_$var"); return true; }

function wfAddCustomVariableLang(&$langMagic, $langCode = 0) { foreach($GLOBALS['wgCustomVariables'] as $var) { $magic = "MAG_$var"; $langMagic[defined($magic) ? constant($magic) : $magic] = array(0,$var); }	return true; }

function wfGetCustomVariable(&$this,&$cache,&$index,&$ret) { switch ($index) {

case MAG_CURRENTUSER: $ret = $GLOBALS['wgUser']->mName; break;

case MAG_LOGO: $ret = $GLOBALS['wgLogo']; break;

}	return true; }

Testing

 * It works on all 1.6.x's
 * Works fine on 1.8.4 --Nad 05:14, 6 April 2007 (UTC)
 * Tested and working on 1.9.3 --Nad 05:08, 6 April 2007 (UTC)