Personal tools

Template:Extension

From OrganicDesign Wiki

Jump to: navigation, search
<?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;
}

The GNU Project Debian Linux Ubuntu Linux Wikipedia online encycopedia MediaWiki