From 417f8ff6551adc4a9341dc44bc7fdbe5594f19f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Laxstr=C3=B6m?= Date: Tue, 7 Jul 2015 14:57:12 +0200 Subject: [PATCH] Use Language::isSupportedLanguage for language code validation Aforementioned function is faster and available since 1.21 so we can start using it. In addition it is needed to fix T104987. Made it so that default value is empty string instead of null because the language validations barf at null. Bug: T104987 Change-Id: Ie944f5c8af0c825546f9fab660451f41ab7dde3c --- UniversalLanguageSelector.hooks.php | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/UniversalLanguageSelector.hooks.php b/UniversalLanguageSelector.hooks.php index 4c7a5534..f5d42cbc 100644 --- a/UniversalLanguageSelector.hooks.php +++ b/UniversalLanguageSelector.hooks.php @@ -146,12 +146,6 @@ class UniversalLanguageSelectorHooks { return true; } - protected static function isSupportedLanguage( $language ) { - $supported = Language::fetchLanguageNames( null, 'mwfile' ); // since 1.20 - - return isset( $supported[$language] ); - } - /** * @param array $preferred * @return string @@ -196,8 +190,8 @@ class UniversalLanguageSelectorHooks { $request = $context->getRequest(); - $languageToSave = $request->getVal( 'setlang' ); - if ( $request->getVal( 'uselang' ) && !$languageToSave ) { + $languageToSave = $request->getText( 'setlang' ); + if ( $request->getText( 'uselang' ) && !$languageToSave ) { // uselang can be used for temporary override of language preference // when setlang is not provided return true; @@ -206,7 +200,7 @@ class UniversalLanguageSelectorHooks { // Registered users - simple if ( !$user->isAnon() ) { // Language change - if ( self::isSupportedLanguage( $languageToSave ) ) { + if ( Language::isSupportedLanguage( $languageToSave ) ) { $user->setOption( 'language', $languageToSave ); $user->saveSettings(); // Apply immediately @@ -223,7 +217,7 @@ class UniversalLanguageSelectorHooks { } // Language change - if ( self::isSupportedLanguage( $languageToSave ) ) { + if ( Language::isSupportedLanguage( $languageToSave ) ) { $request->response()->setcookie( 'language', $languageToSave ); $code = $languageToSave; @@ -231,8 +225,8 @@ class UniversalLanguageSelectorHooks { } // Try cookie - $languageToUse = $request->getCookie( 'language' ); - if ( self::isSupportedLanguage( $languageToUse ) ) { + $languageToUse = $request->getCookie( 'language', null, '' ); + if ( Language::isSupportedLanguage( $languageToUse ) ) { $code = $languageToUse; return true;