Yurik has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/332040 )
Change subject: Add custom InterwikiLookup to MediaWikiTitleCodec ...................................................................... Add custom InterwikiLookup to MediaWikiTitleCodec This patch allows for a custom InterwikiLookup service when constructing MediaWikiTitleCodec instances. If not specified, it continues to get the service from MediaWikiServices::getInstance()->getInterwikiLookup(). This patch will allow a fully customized instance creation, without any global state. Change-Id: Ica87aff5df4534aae0a32e307b27d88b3df023b4 --- M includes/title/MediaWikiTitleCodec.php 1 file changed, 12 insertions(+), 4 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/40/332040/1 diff --git a/includes/title/MediaWikiTitleCodec.php b/includes/title/MediaWikiTitleCodec.php index 1bf05d9..b7fa36d 100644 --- a/includes/title/MediaWikiTitleCodec.php +++ b/includes/title/MediaWikiTitleCodec.php @@ -21,6 +21,7 @@ * @license GPL 2+ * @author Daniel Kinzler */ +use MediaWiki\Interwiki\InterwikiLookup; use MediaWiki\MediaWikiServices; use MediaWiki\Linker\LinkTarget; @@ -52,16 +53,24 @@ protected $localInterwikis; /** + * @var InterwikiLookup + */ + protected $interwikiLookup; + + /** * @param Language $language The language object to use for localizing namespace names. * @param GenderCache $genderCache The gender cache for generating gendered namespace names * @param string[]|string $localInterwikis + * @param InterwikiLookup|null $interwikiLookup */ public function __construct( Language $language, GenderCache $genderCache, - $localInterwikis = [] + $localInterwikis = [], $interwikiLookup = null ) { $this->language = $language; $this->genderCache = $genderCache; $this->localInterwikis = (array)$localInterwikis; + $this->interwikiLookup = $interwikiLookup ? : + MediaWikiServices::getInstance()->getInterwikiLookup(); } /** @@ -310,7 +319,6 @@ if ( preg_match( $prefixRegexp, $dbkey, $m ) ) { $p = $m[1]; $ns = $this->language->getNsIndex( $p ); - $interwikiLookup = MediaWikiServices::getInstance()->getInterwikiLookup(); if ( $ns !== false ) { # Ordinary namespace $dbkey = $m[2]; @@ -320,13 +328,13 @@ if ( $this->language->getNsIndex( $x[1] ) ) { # Disallow Talk:File:x type titles... throw new MalformedTitleException( 'title-invalid-talk-namespace', $text ); - } elseif ( $interwikiLookup->isValidInterwiki( $x[1] ) ) { + } elseif ( $this->interwikiLookup->isValidInterwiki( $x[1] ) ) { // TODO: get rid of global state! # Disallow Talk:Interwiki:x type titles... throw new MalformedTitleException( 'title-invalid-talk-namespace', $text ); } } - } elseif ( $interwikiLookup->isValidInterwiki( $p ) ) { + } elseif ( $this->interwikiLookup->isValidInterwiki( $p ) ) { # Interwiki link $dbkey = $m[2]; $parts['interwiki'] = $this->language->lc( $p ); -- To view, visit https://gerrit.wikimedia.org/r/332040 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ica87aff5df4534aae0a32e307b27d88b3df023b4 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Yurik <yu...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits