From OrganicDesign Wiki
<?php{{Category:Extensions|{{{name}}}}}{{php}}{{Category:Extensions created with Template:Extension}}
/**
* {{{name}}} extension -
*
* See http://www.mediawiki.org/wiki/Extension:{{{name}}} for installation and usage details
*
* @package MediaWiki
* @subpackage Extensions
* @author Unknown
* @copyright © 2007
* @licence GNU General Public Licence 2.0 or later
*/
if (!defined('MEDIAWIKI')) die('Not an entry point.');
define('{{{NAME}}}_VERSION', '{{{version}}}');
$eg{{{name}}}Magic = "{{{magic}}}";
$eg{{{name}}}Tag = "{{{tag}}}";
$wgExtensionFunctions[] = 'efSetup{{{name}}}';
$wgHooks['LanguageGetMagic'][] = 'ef{{{name}}}LanguageGetMagic';
$wgExtensionCredits['other'][] = array(
'name' => '{{{name}}}',
'author' => 'Unknown',
'description' => '',
'url' => 'http://www.organicdesign.co.nz/Template:Extension',
'version' => {{{NAME}}}_VERSION
);
class {{{name}}} {
/**
* Properties
*/
var $prop1 = 'default value';
var $prop2 = 'default value';
/**
* Constructor
*/
function __construct() {
global $wgHooks, $wgParser, $eg{{{name}}}Magic, $eg{{{name}}}Tag;
# Add the parser-function
$wgParser->setFunctionHook($eg{{{name}}}Magic, array($this, 'magic{{{magic}}}'));
# Add the tagHook
$wgParser->setHook($eg{{{name}}}Tag, array($this, 'tag{{{tag}}}'));
}
/**
* Expand the {{{magic}}}-magic
*/
function magic{{{magic}}}(&$parser) {
global $eg{{{name}}}Magic;
# Populate $argv with both named and numeric parameters
$argv = array();
foreach (func_get_args() as $arg) if (!is_object($arg)) {
if (preg_match('/^(.+?)\\s*=\\s*(.+)$/',$arg,$match)) $argv[$match[1]] = $match[2]; else $argv[] = $arg;
}
# Build text of expanded result
$args = '';
foreach ($argv as $k => $v) $args .= "*'''$k:''' ''$v''\n";
$args = htmlspecialchars($args);
$text = "=== Magic $eg{{{name}}}Magic(): ===\n$args";
# Return result with available parser flags
return array(
$text,
'found' => true,
'nowiki' => false,
'noparse' => false,
'noargs' => false,
'isHTML' => false
);
}
/**
* Convert the <{{{tag}}}> tags to HTML
*/
function tag{{{tag}}}($text,$argv,&$parser) {
global $eg{{{name}}}Tag;
$args = '';
foreach ($argv as $k => $v) {
$k = htmlspecialchars($k);
$v = htmlspecialchars($v);
$args .= "<li><b>$k:</b> <i>$v</i></li>\n";
}
$text = htmlspecialchars($text);
return "<h3>Tag $eg{{{name}}}Tag():</h3>\n<ul>$args<li>Content:</b>$text</ul>\n";
}
/**
* Needed in some versions to prevent Special:Version from breaking
*/
function __toString() { return __CLASS__; }
}
/**
* Called from $wgExtensionFunctions array when initialising extensions
*/
function efSetup{{{name}}}() {
global $eg{{{name}}};
$eg{{{name}}} = new {{{name}}}();
}
/**
* Needed in MediaWiki >1.8.0 for magic word hooks to work properly
*/
function ef{{{name}}}LanguageGetMagic(&$magicWords, $langCode = 0) {
global $eg{{{name}}}Magic;
$magicWords[$eg{{{name}}}Magic] = array($langCode, $eg{{{name}}}Magic);
return true;
}