From OrganicDesign Wiki
<?php
/**
/**
* MakePage extension - An extension which allows the title and text of a wiki page to be created
by a simple tag, made with [http://www.organicdesign.co.nz/Template:Extension Template:Extension]
*
* See http://www.mediawiki.org/wiki/Extension:MakePage for installation and usage details
*
* @package MediaWiki
* @subpackage Extensions
* @author [http://www.mediawiki.org/wiki/User:Jacknz User:Jack Henderson]
* @copyright © 2007 [http://www.mediawiki.org/wiki/User:Jacknz User:Jack Henderson]
* @licence GNU General Public Licence 2.0 or later
*/
if (!defined('MEDIAWIKI')) die('Not an entry point.');
define('MAKEPAGE_VERSION', '0.0.1, 2009-02-17');
$egMakePageTag = "makepage";
$wgExtensionCredits['parserhook'][] = array(
'name' => 'MakePage',
'author' => '[http://www.mediawiki.org/wiki/User:Jacknz User:Jack Henderson]',
'description' => 'An extension which allows the title and text of a wiki page to be created without leaving the current one',
'url' => 'http://www.organicdesign.co.nz/Extension:MakePage',
'version' => MAKEPAGE_VERSION
);
#Avoid unstubbing $wgParser on setHook() too early on modern (1.12+) MW versions, as per r35980
if ( defined( 'MW_SUPPORTS_PARSERFIRSTCALLINIT' ) ) {
$wgHooks['ParserFirstCallInit'][] = 'efMakePageParserInit';
} else { # Otherwise do things the old fashioned way
$wgExtensionFunctions[] = 'efMakePageParserInit';
}
function efMakePageParserInit() {
global $wgParser, $egMakePageTag;
$wgParser->setHook( $egMakePageTag, 'efMakePageRender' );
return true;
}
function efMakePageRender( $input, $args, $parser ) {
foreach ($args as $k => $v) {
$k = htmlspecialchars($k);
$v = htmlspecialchars($v);
if (strtolower($k) == "name") $title = Title::newFromText($v);
}
$article = new Article($title);
$input = htmlspecialchars($input);
$article->doEdit($input,EDIT_UPDATE|EDIT_MINOR);
return "$v has been created";
}