From 795a418db54ca12685cf13811ffff7a74dcc988e Mon Sep 17 00:00:00 2001 From: Fomafix Date: Fri, 3 Aug 2018 18:14:10 +0200 Subject: [PATCH] SpecialMyLanguage: Get content language from service Also use methods getFallbackLanguages() and equals() from Language object. Change-Id: I601a5dfeea3bac7938f9884be65d007955ffb1b2 --- includes/specials/SpecialMyLanguage.php | 14 ++++++++------ .../includes/specials/SpecialMyLanguageTest.php | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/includes/specials/SpecialMyLanguage.php b/includes/specials/SpecialMyLanguage.php index 37d96f47cc..537db9ee1d 100644 --- a/includes/specials/SpecialMyLanguage.php +++ b/includes/specials/SpecialMyLanguage.php @@ -23,6 +23,8 @@ * @copyright Copyright © 2010-2013 Niklas Laxström, Siebrand Mazeland */ +use MediaWiki\MediaWikiServices; + /** * Unlisted special page just to redirect the user to the translated version of * a page, if it exists. @@ -90,17 +92,17 @@ class SpecialMyLanguage extends RedirectSpecialArticle { $base = $page->getRedirectTarget(); } - $uiCode = $this->getLanguage()->getCode(); - $wikiLangCode = $this->getConfig()->get( 'LanguageCode' ); + $uiLang = $this->getLanguage(); + $contLang = MediaWikiServices::getInstance()->getContentLanguage(); - if ( $uiCode === $wikiLangCode ) { + if ( $uiLang->equals( $contLang ) ) { // Short circuit when the current UI language is the // wiki's default language to avoid unnecessary page lookups. return $base; } // Check for a subpage in current UI language - $proposed = $base->getSubpage( $uiCode ); + $proposed = $base->getSubpage( $uiLang->getCode() ); if ( $proposed && $proposed->exists() ) { return $proposed; } @@ -111,9 +113,9 @@ class SpecialMyLanguage extends RedirectSpecialArticle { } // Check for fallback languages specified by the UI language - $possibilities = Language::getFallbacksFor( $uiCode ); + $possibilities = $uiLang->getFallbackLanguages(); foreach ( $possibilities as $lang ) { - if ( $lang !== $wikiLangCode ) { + if ( $lang !== $contLang->getCode() ) { $proposed = $base->getSubpage( $lang ); if ( $proposed && $proposed->exists() ) { return $proposed; diff --git a/tests/phpunit/includes/specials/SpecialMyLanguageTest.php b/tests/phpunit/includes/specials/SpecialMyLanguageTest.php index 84fa71a2c6..bcd3d84946 100644 --- a/tests/phpunit/includes/specials/SpecialMyLanguageTest.php +++ b/tests/phpunit/includes/specials/SpecialMyLanguageTest.php @@ -35,7 +35,7 @@ class SpecialMyLanguageTest extends MediaWikiTestCase { * @param string $userLang */ public function testFindTitle( $expected, $subpage, $langCode, $userLang ) { - $this->setMwGlobals( 'wgLanguageCode', $langCode ); + $this->setContentLang( $langCode ); $special = new SpecialMyLanguage(); $special->getContext()->setLanguage( $userLang ); // Test with subpages both enabled and disabled -- 2.20.1