Extension:Workflow.php
<?php
- Extension:Workflow
- - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html)
- - Author: User:NadCategory:Extensions created with Template:Extension
- - Started: 2007-10-06
if (!defined('MEDIAWIKI')) die('Not an entry point.');
define('WORKFLOW_VERSION','0.0.0, 2007-10-06');
$wgWorkflowMagic = "tag"; $wgExtensionFunctions[] = 'wfSetupWorkflow'; $wgHooks['LanguageGetMagic'][] = 'wfWorkflowLanguageGetMagic';
$wgExtensionCredits['parserhook'][] = array( 'name' => 'Workflow', 'author' => 'User:Nad', 'description' => 'Allows dynamic content areas called tags which can be switched between pre-selected states by clicking. The states can contain normal content such as images and categorisation links.', 'url' => 'http://www.mediawiki.org/wiki/Extension:Workflow', 'version' => WORKFLOW_VERSION );
class Workflow {
# Constructor function Workflow() { global $wgParser,$wgWorkflowMagic; $wgParser->setFunctionHook($wgWorkflowMagic,array($this,'magic')); }
# Expand the tag-magic function magic(&$parser) {
# 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; }
# Return result with available parser flags return array( $text, found => true, nowiki => false, noparse => false, noargs => false, isHTML => false );
}
# Needed in some versions to prevent Special:Version from breaking function __toString() { return 'Workflow'; }
}
- Called from $wgExtensionFunctions array when initialising extensions
function wfSetupWorkflow() { global $wgWorkflow; $wgWorkflow = new Workflow(); }
- Needed in MediaWiki >1.8.0 for magic word hooks to work properly
function wfWorkflowLanguageGetMagic(&$magicWords,$langCode = 0) { global $wgWorkflowMagic; $magicWords[$wgWorkflowMagic] = array(0,$wgWorkflowMagic); return true; } ?>