From OrganicDesign Wiki
<?php
# Extension:SimpleUploads
# - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html)
# - Author: [http://www.organicdesign.co.nz/nad User:Rob]
if (!defined('MEDIAWIKI')) die('Not an entry point.');
define('SIMPLEUPLOADS_VERSION','1.0.0, 2007-09-20');
$wgSimpleUploadsMagic = "foo";
$wgSimpleUploadsTag = "bar";
$wgExtensionFunctions[] = 'wfSetupSimpleUploads';
$wgHooks['LanguageGetMagic'][] = 'wfSimpleUploadsLanguageGetMagic';
$wgExtensionCredits['parserhook'][] = array(
'name' => 'SimpleUploads',
'author' => '[http://www.organicdesign.co.nz/nad User:Rob]',
'description' => 'Convenient uploading of files to the wiki with WebDAV',
'url' => 'http://www.organicdesign.co.nz/Extension:SimpleUploads',
'version' => SIMPLEUPLOADS_VERSION
);
class SimpleUploads {
# Properties
var $prop1 = 'default value';
var $prop2 = 'default value';
# Constructor
function SimpleUploads() {
global $wgHooks,$wgParser,$wgSimpleUploadsMagic,$wgSimpleUploadsTag;
# Add the parser-function
$wgParser->setFunctionHook($wgSimpleUploadsMagic,array($this,'magicFoo'));
# Add the tagHook
$wgParser->setHook($wgSimpleUploadsTag,array($this,'tagBar'));
}
# Expand the foo-magic
function magicFoo(&$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;
}
# Build text of expanded result
$args = '';
foreach ($argv as $k => $v) $args .= "*'''$k:''' ''$v''\n";
$text = "=== magicFoo(): ===\n$args";
# Return result with available parser flags
return array(
$text,
found => true,
nowiki => false,
noparse => false,
noargs => false,
isHTML => false
);
}
# Convert the <bar> tags to HTML
function tagBar($text,$argv,&$parser) {
$args = '';
foreach ($argv as $k => $v) $args .= "<li><b>$k:</b> <i>$v</i></li>\n";
return "<h3>tagBar():</h3>\n<ul>$args<li>Content:</b> $text</ul>\n";
}
# Needed in some versions to prevent Special:Version from breaking
function __toString() { return 'SimpleUploads'; }
}
# Called from $wgExtensionFunctions array when initialising extensions
function wfSetupSimpleUploads() {
global $wgSimpleUploads;
$wgSimpleUploads = new SimpleUploads();
}
# Needed in MediaWiki >1.8.0 for magic word hooks to work properly
function wfSimpleUploadsLanguageGetMagic(&$magicWords,$langCode = 0) {
global $wgSimpleUploadsMagic;
$magicWords[$wgSimpleUploadsMagic] = array(0,$wgSimpleUploadsMagic);
return true;
}