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:
@@ -146,12 +146,6 @@ class UniversalLanguageSelectorHooks {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static function isSupportedLanguage( $language ) {
|
|
||||||
$supported = Language::fetchLanguageNames( null, 'mwfile' ); // since 1.20
|
|
||||||
|
|
||||||
return isset( $supported[$language] );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $preferred
|
* @param array $preferred
|
||||||
* @return string
|
* @return string
|
||||||
@@ -196,8 +190,8 @@ class UniversalLanguageSelectorHooks {
|
|||||||
|
|
||||||
$request = $context->getRequest();
|
$request = $context->getRequest();
|
||||||
|
|
||||||
$languageToSave = $request->getVal( 'setlang' );
|
$languageToSave = $request->getText( 'setlang' );
|
||||||
if ( $request->getVal( 'uselang' ) && !$languageToSave ) {
|
if ( $request->getText( 'uselang' ) && !$languageToSave ) {
|
||||||
// uselang can be used for temporary override of language preference
|
// uselang can be used for temporary override of language preference
|
||||||
// when setlang is not provided
|
// when setlang is not provided
|
||||||
return true;
|
return true;
|
||||||
@@ -206,7 +200,7 @@ class UniversalLanguageSelectorHooks {
|
|||||||
// Registered users - simple
|
// Registered users - simple
|
||||||
if ( !$user->isAnon() ) {
|
if ( !$user->isAnon() ) {
|
||||||
// Language change
|
// Language change
|
||||||
if ( self::isSupportedLanguage( $languageToSave ) ) {
|
if ( Language::isSupportedLanguage( $languageToSave ) ) {
|
||||||
$user->setOption( 'language', $languageToSave );
|
$user->setOption( 'language', $languageToSave );
|
||||||
$user->saveSettings();
|
$user->saveSettings();
|
||||||
// Apply immediately
|
// Apply immediately
|
||||||
@@ -223,7 +217,7 @@ class UniversalLanguageSelectorHooks {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Language change
|
// Language change
|
||||||
if ( self::isSupportedLanguage( $languageToSave ) ) {
|
if ( Language::isSupportedLanguage( $languageToSave ) ) {
|
||||||
$request->response()->setcookie( 'language', $languageToSave );
|
$request->response()->setcookie( 'language', $languageToSave );
|
||||||
$code = $languageToSave;
|
$code = $languageToSave;
|
||||||
|
|
||||||
@@ -231,8 +225,8 @@ class UniversalLanguageSelectorHooks {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Try cookie
|
// Try cookie
|
||||||
$languageToUse = $request->getCookie( 'language' );
|
$languageToUse = $request->getCookie( 'language', null, '' );
|
||||||
if ( self::isSupportedLanguage( $languageToUse ) ) {
|
if ( Language::isSupportedLanguage( $languageToUse ) ) {
|
||||||
$code = $languageToUse;
|
$code = $languageToUse;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user