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
This commit is contained in:
Niklas Laxström
2015-07-07 14:57:12 +02:00
parent c3322ba830
commit 417f8ff655

View File

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