Extension:InterwikiRegex

MediaWiki extensions manual
OOjs UI icon advanced.svg
InterwikiRegex
Release status: unmaintained
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
Check usage and version matrix.

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

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;
        }
}