Open main menu

Extension:InterwikiRegex

MediaWiki extensions manual
OOjs UI icon advanced.svg
InterwikiRegex
Release status: stable
Implementation Link markup
Description Adds regex capability for interwiki links
Author(s) Leucosticte
Latest version 1.0.0
MediaWiki 1.19+
License GPL
Download No link
Translate the InterwikiRegex extension if it is available at translatewiki.net
Check usage and version matrix.

The InterwikiRegex extension adds regex capability for interwiki links. Or something like regex; actually, it's str_replace.

Contents

InstallationEdit

  • Create a folder in the extensions folder named InterwikiRegex
  • Move the files to the extensions/InterwikiRegex/ folder
  • Edit LocalSettings.php in the root of your MediaWiki installation, and add the following line near the bottom:
require_once("$IP/extensions/InterwikiRegex/InterwikiRegex.php");

UsageEdit

Configuration settingsEdit

// Array of interwiki prefixes and the string replacements
$wgInterwikiRegexString = array (
        'urbandictionary' => array (
                ' ' => '+',
                '_' => '+',
        )
);

This will cause [[urbandictionary:would of]] to link to http://www.urbandictionary.com/define.php?term=would+of , once you have added the appropriate interwiki link using Special:Interwiki.

FilesEdit

InterwikiRegex.phpEdit

<?
/**
 * InterwikiRegex MediaWiki extension.
 *
 * This extension adds regex capability for interwiki links.
 *
 * Written by Leucosticte
 * https://www.mediawiki.org/wiki/User:Leucosticte
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 * http://www.gnu.org/copyleft/gpl.html
 *
 * @file
 * @ingroup Extensions
 */

if( !defined( 'MEDIAWIKI' ) ) {
        echo( "This file is an extension to the MediaWiki software and cannot be used standalone.\n" );
        die( 1 );
}

$wgExtensionCredits['other'][] = array(
        'path' => __FILE__,
        'name' => 'InterwikiRegex',
        'author' => '[https://mediawiki.org/User:Leucosticte Leucosticte]',
        'url' => 'https://mediawiki.org/wiki/Extension:InterwikiRegex',
        'description' => 'Adds regex capability for interwiki links',
        'version' => '1.0.0'
);

// Array of interwiki prefixes and the string replacements
$wgInterwikiRegexString = array (
        'urbandictionary' => array (
                ' ' => '+',
                '_' => '+',
        )
);

$wgHooks['LinkEnd'][] = 'InterwikiRegex::onLinkEnd';

class InterwikiRegex {
    public static function onLinkEnd( $skin, $target, $options, &$text,
        &$attribs, &$ret ) {
                global $wgInterwikiRegexString;
                if ( !$target->isExternal() ) {
                        return true;
                }
                $interwiki = $target->getInterwiki();
                if ( isset ( $wgInterwikiRegexString[ $interwiki ] ) ) {
                        foreach ( $wgInterwikiRegexString[ $interwiki ] as
                                $key => $value ) {
                                $attribs[ 'href' ] = str_replace ( $key, $value,
                                        $attribs[ 'href' ] );
                        }
                }
                return true;
        }
}