From f7f36419096e6e8b1b22223c8f2536c6deaa6ca6 Mon Sep 17 00:00:00 2001 From: daniel Date: Thu, 12 May 2016 20:44:04 +0200 Subject: [PATCH] Use InterwikiLookup in Title. This makes the use of the global InterwikiLookup singleton more explicit in the Title class. It does not remove the strong binding between Title and InterwikiLookup. Change-Id: Iaeb7c418af17fe19f170487f5364040da6052699 --- includes/Title.php | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/includes/Title.php b/includes/Title.php index b996defffd..6a5bbf71ca 100644 --- a/includes/Title.php +++ b/includes/Title.php @@ -22,6 +22,7 @@ * @file */ use MediaWiki\Linker\LinkTarget; +use MediaWiki\Interwiki\InterwikiLookup; use MediaWiki\MediaWikiServices; /** @@ -170,6 +171,18 @@ class Title implements LinkTarget { return MediaWikiServices::getInstance()->getTitleFormatter(); } + /** + * B/C kludge: provide an InterwikiLookup for use by Title. + * Ideally, Title would have no methods that need this. + * Avoid usage of this singleton by using TitleValue + * and the associated services when possible. + * + * @return InterwikiLookup + */ + private static function getInterwikiLookup() { + return MediaWikiServices::getInstance()->getInterwikiLookup(); + } + /** * @access protected */ @@ -760,7 +773,7 @@ class Title implements LinkTarget { */ public function isLocal() { if ( $this->isExternal() ) { - $iw = Interwiki::fetch( $this->mInterwiki ); + $iw = self::getInterwikiLookup()->fetch( $this->mInterwiki ); if ( $iw ) { return $iw->isLocal(); } @@ -808,7 +821,7 @@ class Title implements LinkTarget { return false; } - return Interwiki::fetch( $this->mInterwiki )->isTranscludable(); + return self::getInterwikiLookup()->fetch( $this->mInterwiki )->isTranscludable(); } /** @@ -821,7 +834,7 @@ class Title implements LinkTarget { return false; } - return Interwiki::fetch( $this->mInterwiki )->getWikiID(); + return self::getInterwikiLookup()->fetch( $this->mInterwiki )->getWikiID(); } /** @@ -1677,7 +1690,7 @@ class Title implements LinkTarget { $query = self::fixUrlQueryArgs( $query, $query2 ); - $interwiki = Interwiki::fetch( $this->mInterwiki ); + $interwiki = self::getInterwikiLookup()->fetch( $this->mInterwiki ); if ( $interwiki ) { $namespace = $this->getNsText(); if ( $namespace != '' ) { -- 2.20.1