Extension:Multiplicator/code/Multiplicator.php

From MediaWiki.org
Jump to: navigation, search

[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;
}
Personal tools
Namespaces

Variants
Actions
Navigation
Support
Download
Development
Communication
Print/export
Toolbox