X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FPreferences.php;h=878462db218f7890103e04e7da542c42d7c67a0c;hb=6a47a03236c926ec9a01bf2df03ee7672c2cb6a9;hp=94854fa23d153ddb01e19952475fd8f1513b415d;hpb=c9a71813b828b22c3ea58c16731449dca3eacd53;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Preferences.php b/includes/Preferences.php index 94854fa23d..878462db21 100644 --- a/includes/Preferences.php +++ b/includes/Preferences.php @@ -47,9 +47,6 @@ use MediaWiki\MediaWikiServices; * over to the tryUISubmit static method of this class. */ class Preferences { - /** @var array */ - protected static $defaultPreferences = null; - /** @var array */ protected static $saveFilters = [ 'timecorrection' => [ 'Preferences', 'filterTimezoneInput' ], @@ -78,10 +75,6 @@ class Preferences { * @return array|null */ static function getPreferences( $user, IContextSource $context ) { - if ( self::$defaultPreferences ) { - return self::$defaultPreferences; - } - $defaultPreferences = []; self::profilePreferences( $user, $context, $defaultPreferences ); @@ -98,7 +91,6 @@ class Preferences { Hooks::run( 'GetPreferences', [ $user, &$defaultPreferences ] ); self::loadPreferenceValues( $user, $context, $defaultPreferences ); - self::$defaultPreferences = $defaultPreferences; return $defaultPreferences; } @@ -934,16 +926,16 @@ class Preferences { $defaultPreferences['rcfilters-wl-saved-queries'] = [ 'type' => 'api', ]; - $defaultPreferences['rcfilters-saved-queries-versionbackup'] = [ + // Override RCFilters preferences for RecentChanges 'limit' + $defaultPreferences['rcfilters-limit'] = [ 'type' => 'api', ]; - $defaultPreferences['rcfilters-wl-saved-queries-versionbackup'] = [ + $defaultPreferences['rcfilters-saved-queries-versionbackup'] = [ 'type' => 'api', ]; - $defaultPreferences['rcfilters-rclimit'] = [ + $defaultPreferences['rcfilters-wl-saved-queries-versionbackup'] = [ 'type' => 'api', ]; - if ( $config->get( 'RCWatchCategoryMembership' ) ) { $defaultPreferences['hidecategorization'] = [ 'type' => 'toggle', @@ -1179,21 +1171,31 @@ class Preferences { # Only show skins that aren't disabled in $wgSkipSkins $validSkinNames = Skin::getAllowedSkins(); - # Sort by UI skin name. First though need to update validSkinNames as sometimes - # the skinkey & UI skinname differ (e.g. "standard" skinkey is "Classic" in the UI). foreach ( $validSkinNames as $skinkey => &$skinname ) { $msg = $context->msg( "skinname-{$skinkey}" ); if ( $msg->exists() ) { $skinname = htmlspecialchars( $msg->text() ); } } - asort( $validSkinNames ); $config = $context->getConfig(); $defaultSkin = $config->get( 'DefaultSkin' ); $allowUserCss = $config->get( 'AllowUserCss' ); $allowUserJs = $config->get( 'AllowUserJs' ); + # Sort by the internal name, so that the ordering is the same for each display language, + # especially if some skin names are translated to use a different alphabet and some are not. + uksort( $validSkinNames, function ( $a, $b ) use ( $defaultSkin ) { + # Display the default first in the list by comparing it as lesser than any other. + if ( strcasecmp( $a, $defaultSkin ) === 0 ) { + return -1; + } + if ( strcasecmp( $b, $defaultSkin ) === 0 ) { + return 1; + } + return strcasecmp( $a, $b ); + } ); + $foundDefault = false; foreach ( $validSkinNames as $skinkey => $sn ) { $linkTools = []; @@ -1542,6 +1544,14 @@ class Preferences { $formData[$pref] = $user->getOption( $pref, null, true ); } + // If the user changed the rclimit preference, also change the rcfilters-rclimit preference + if ( + isset( $formData['rclimit'] ) && + intval( $formData[ 'rclimit' ] ) !== $user->getIntOption( 'rclimit' ) + ) { + $formData['rcfilters-limit'] = $formData['rclimit']; + } + // Keep old preferences from interfering due to back-compat code, etc. $user->resetOptions( 'unused', $form->getContext() );