Extension:Multiplicator/code/Multiplicator.php
From MediaWiki.org
[edit] Multiplicator.php
<?php if (!defined('MEDIAWIKI')) die(); /** == Extension:Duplicator... == * * Special page which creates independent copies of articles, retaining * separate histories. [author Rob Church <robchur@gmail.com>] * * == ...extended to Multiplicator: == * if more than one copy, it creates duplicates in subpages of destination page; * and create a list of subages on destination page. [with <splist> if installed]. * * @addtogroup Extensions * @author Rob Church <robchur@gmail.com> */ $wgExtensionCredits['specialpage'][] = array( 'path' => __FILE__, 'name' => 'Multiplicator', 'version' => '0.1', 'author' => 'Rob Church, Al Maghi', 'url' => 'http://www.mediawiki.org/wiki/Extension:Multiplicator', 'description' => 'Create independent copies of articles with full edit histories', 'descriptionmsg' => 'multiplicator-desc', ); $dir = dirname(__FILE__) . '/'; $wgExtensionMessagesFiles['Multiplicator'] = $dir . 'Multiplicator.i18n.php'; $wgExtensionAliasesFiles['Multiplicator'] = $dir . 'Multiplicator.alias.php'; $wgAutoloadClasses['SpecialMultiplicator'] = $dir . 'Multiplicator.page.php'; $wgSpecialPages['Multiplicator'] = 'SpecialMultiplicator'; $wgExtensionFunctions[] = 'efMultiplicator'; /** * User permissions */ $wgGroupPermissions['user']['multiplicate'] = true; $wgAvailableRights[] = 'multiplicate'; /** * Pages with more than this number of revisions can't be duplicated */ $wgMultiplicatorRevisionLimit = 250; /** * Pages with more than this number of revisions can't be duplicated */ $wgMultiplicatorListDifferentCopies = true; $wgMultiplicatorListDifferentCopiesWithSplist = false; /** * * Extension setup function */ function efMultiplicator() { global $wgHooks; $wgHooks['SkinTemplateBuildNavUrlsNav_urlsAfterPermalink'][] = 'efMultiplicatorNavigation'; $wgHooks['MonoBookTemplateToolboxEnd'][] = 'efMultiplicatorToolbox'; } /** * Build the link to be shown in the toolbox if appropriate */ function efMultiplicatorNavigation( &$skin, &$nav_urls, &$oldid, &$revid ) { global $wgUser; $ns = $skin->mTitle->getNamespace(); if( ( $ns === NS_MAIN || $ns === NS_TALK ) && $wgUser->isAllowed( 'multiplicate' ) ) { wfLoadExtensionMessages( 'Multiplicator' ); $nav_urls['multiplicator'] = array( 'text' => wfMsg( 'multiplicator-toolbox' ), 'href' => $skin->makeSpecialUrl( 'Multiplicator', "source=" . wfUrlEncode( "{$skin->thispage}" ) ) ); } return true; } /** * Output the toolbox link if available */ function efMultiplicatorToolbox( &$monobook ) { if ( isset( $monobook->data['nav_urls']['multiplicator'] ) ) { wfLoadExtensionMessages( 'Multiplicator' ); if ( $monobook->data['nav_urls']['multiplicator']['href'] == '' ) { ?><li id="t-multiplicator"><?php echo $monobook->msg( 'multiplicator-toolbox' ); ?></li><?php } else { ?><li id="t-multiplicator"><?php ?><a href="<?php echo htmlspecialchars( $monobook->data['nav_urls']['multiplicator']['href'] ) ?>"><?php echo $monobook->msg( 'multiplicator-toolbox' ); ?></a><?php ?></li><?php } } return true; }
