Difference between revisions of "Extension:ExtraMagic"

From Organic Design wiki
(NUMBERINGOFF)
m (#ifuses)
 
(18 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<?php
+
{{svn|extensions|/MediaWiki/ExtraMagic/ExtraMagic.php}}<br />
# Add some useful magic words{{php}}{{Category:Extensions|ExtraMagic}}
+
This extensions adds a number of useful [[MW:Help:Magic words|magic words]] which we've needed for our own projects over the years. Most of them are available already in various different extensions, but we preferred to have them all packaged together in one place.
  
$wgCustomVariables = array('CURRENTUSER', 'CURRENTLANG', 'CURRENTSKIN', 'IPADDRESS', 'NUMBERINGOFF');
+
== CURRENTUSER ==
 +
The username of the current user.
  
$wgHooks['MagicWordMagicWords'][]          = 'wfAddCustomVariable';
+
It is used as follows without any parameters (all the following ones without any example have the same basic syntax).
$wgHooks['MagicWordwgVariableIDs'][]      = 'wfAddCustomVariableID';
+
<source>
$wgHooks['LanguageGetMagic'][]            = 'wfAddCustomVariableLang';
+
{{CURRENTUSER}}
$wgHooks['ParserGetVariableValueSwitch'][] = 'wfGetCustomVariable';
+
</source>
  
function wfAddCustomVariable(&$magicWords) {
+
This gives the result: {{CURRENTUSER}}
global $wgCustomVariables;
 
foreach($wgCustomVariables as $var) $magicWords[] = "MAG_$var";
 
return true;
 
}
 
  
function wfAddCustomVariableID(&$variables) {
+
== CURRENTPERSON ==
global $wgCustomVariables;
+
The real name of the current user if they entered one on sign up or in their preferences.
foreach($wgCustomVariables as $var) $variables[] = constant("MAG_$var");
 
return true;
 
}
 
  
function wfAddCustomVariableLang(&$langMagic, $langCode = 0) {
+
== USERID ==
global $wgCustomVariables;
+
The ID of the current user.
foreach($wgCustomVariables as $var) {
 
$magic = "MAG_$var";
 
$langMagic[defined($magic) ? constant($magic) : $magic] = array(0,$var);
 
}
 
return true;
 
}
 
  
function wfGetCustomVariable(&$parser,&$cache,&$index,&$ret) {
+
== CURRENTLANG ==
switch ($index) {
+
The two-letter language code preference of the current user.
  
case MAG_CURRENTUSER:
+
== CURRENTSKIN ==
global $wgUser;
+
The name of the skin selected by the current user.
$parser->disableCache();
 
$ret = $wgUser->mName;
 
break;
 
  
case MAG_CURRENTLANG:
+
== ARTICLEID ==
global $wgUser;
+
The ID of the article being viewed.
$parser->disableCache();
 
$ret = $wgUser->getOption('language');
 
break;
 
  
case MAG_CURRENTSKIN:
+
== IPADDRESS ==
global $wgUser;
+
The IP address of the current user.
$parser->disableCache();
 
$ret = $wgUser->getOption('skin');
 
break;
 
  
case MAG_IPADDRESS:
+
== DOMAIN ==
$parser->disableCache();
+
The domain name used to make the current request.
$ret = $_SERVER['REMOTE_ADDR'];
 
break;
 
  
case MAG_NUMBERINGOFF:
+
== GUID ==
global $wgUser;
+
A randomly generated globally unique identifier.
$wgUser->setOption('numberheadings', false);
+
 
$ret = '';
+
== USERPAGESELFEDITS ==
break;
+
Returns a list of usernames for users who have made edits to their own user pages.
}
+
 
return true;
+
== REQUEST ==
}
+
This is a parser-function which has as its first parameter the name of a query-string or posted value, it will return the content of that value. The second parameter is a default to return if the value didn't exist. For example:
 +
<source>
 +
{{REQUEST:mydata | No data set }}
 +
</source>
 +
 
 +
== COOKIE ==
 +
This is similar to the ''REQUEST'' function but works for cookie values instead.
 +
 
 +
== #ifgroup ==
 +
A conditional function for testing group membership, the first parameter is the group (or comma-separated list of groups), the second is what to return if the current user belongs to at least one of the groups, and the third (optional) parameter is what to return if the user is not in any of the groups. For example:
 +
<source>
 +
{{#ifgroup:sysop | You are a sysop }}
 +
</source>
 +
 
 +
<source>
 +
{{#ifgroup:user | You are logged in as {{CURRENTUSER}} | You are not logged in }}
 +
</source>
 +
 
 +
== #ifuses ==
 +
A conditional function for testing whether or not the current article uses a given template, the first parameter is the name of the template to test for, the second and third are the content to return if the condition is true or not true the same as for ''#ifgroup''.
 +
 
 +
== #ifcat ==
 +
This is another conditional test, in this case the first parameter is the name of a category to test whether the current article is a member of or not.
 +
 
 +
== #next, #prev ==
 +
Return previous or next items in a list given item text and a list. Used by the [[Bliki 2.0]] system.
 +
 
 +
== OWNER ==
 +
Returns the owner (creator) of an article given its title.
 +
[[Category:Extensions|ExtraMagic]]

Latest revision as of 14:14, 19 October 2018

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.


This extensions adds a number of useful magic words which we've needed for our own projects over the years. Most of them are available already in various different extensions, but we preferred to have them all packaged together in one place.

CURRENTUSER

The username of the current user.

It is used as follows without any parameters (all the following ones without any example have the same basic syntax).

{{CURRENTUSER}}

This gives the result: 18.224.68.177

CURRENTPERSON

The real name of the current user if they entered one on sign up or in their preferences.

USERID

The ID of the current user.

CURRENTLANG

The two-letter language code preference of the current user.

CURRENTSKIN

The name of the skin selected by the current user.

ARTICLEID

The ID of the article being viewed.

IPADDRESS

The IP address of the current user.

DOMAIN

The domain name used to make the current request.

GUID

A randomly generated globally unique identifier.

USERPAGESELFEDITS

Returns a list of usernames for users who have made edits to their own user pages.

REQUEST

This is a parser-function which has as its first parameter the name of a query-string or posted value, it will return the content of that value. The second parameter is a default to return if the value didn't exist. For example:

{{REQUEST:mydata | No data set }}

COOKIE

This is similar to the REQUEST function but works for cookie values instead.

#ifgroup

A conditional function for testing group membership, the first parameter is the group (or comma-separated list of groups), the second is what to return if the current user belongs to at least one of the groups, and the third (optional) parameter is what to return if the user is not in any of the groups. For example:

{{#ifgroup:sysop | You are a sysop }}
{{#ifgroup:user | You are logged in as {{CURRENTUSER}} | You are not logged in }}

#ifuses

A conditional function for testing whether or not the current article uses a given template, the first parameter is the name of the template to test for, the second and third are the content to return if the condition is true or not true the same as for #ifgroup.

#ifcat

This is another conditional test, in this case the first parameter is the name of a category to test whether the current article is a member of or not.

#next, #prev

Return previous or next items in a list given item text and a list. Used by the Bliki 2.0 system.

OWNER

Returns the owner (creator) of an article given its title.