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;
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user