Personal tools

Extension:ExtraMagic.php

From OrganicDesign Wiki

Jump to: navigation, search
<?php
# Add some useful magic words
 
$wgCustomVariables = array('CURRENTUSER', 'CURRENTLANG', 'CURRENTSKIN', 'IPADDRESS', 'NUMBERINGOFF');
 
$wgHooks['MagicWordMagicWords'][]          = 'wfAddCustomVariable';
$wgHooks['MagicWordwgVariableIDs'][]       = 'wfAddCustomVariableID';
$wgHooks['LanguageGetMagic'][]             = 'wfAddCustomVariableLang';
$wgHooks['ParserGetVariableValueSwitch'][] = 'wfGetCustomVariable';
 
function wfAddCustomVariable(&$magicWords) {
	global $wgCustomVariables;
	foreach($wgCustomVariables as $var) $magicWords[] = "MAG_$var";
	return true;
	}
 
function wfAddCustomVariableID(&$variables) {
	global $wgCustomVariables;
	foreach($wgCustomVariables as $var) $variables[] = constant("MAG_$var");
	return true;
	}
 
function wfAddCustomVariableLang(&$langMagic, $langCode = 0) {
	global $wgCustomVariables;
	foreach($wgCustomVariables as $var) {
		$magic = "MAG_$var";
		$langMagic[defined($magic) ? constant($magic) : $magic] = array(0,$var);
		}
	return true;
	}
 
function wfGetCustomVariable(&$parser,&$cache,&$index,&$ret) {
	switch ($index) {
 
		case MAG_CURRENTUSER:
			global $wgUser;
			$parser->disableCache();
			$ret = $wgUser->mName;
			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_NUMBERINGOFF:
			global $wgUser;
			$wgUser->setOption('numberheadings', false);
			$ret = '';
			break;
		}
	return true;
	}

The GNU Project Debian Linux Ubuntu Linux Wikipedia online encycopedia MediaWiki