Localisation updates from https://translatewiki.net.
[lhc/web/wiklou.git] / includes / Preferences.php
index cab1e1f..33a975d 100644 (file)
@@ -534,12 +534,22 @@ class Preferences {
 
                        if ( $config->get( 'EnableUserEmail' ) && $user->isAllowed( 'sendemail' ) ) {
                                $defaultPreferences['disablemail'] = [
+                                       'id' => 'wpAllowEmail',
                                        'type' => 'toggle',
                                        'invert' => true,
                                        'section' => 'personal/email',
                                        'label-message' => 'allowemail',
                                        'disabled' => $disableEmailPrefs,
                                ];
+
+                               $defaultPreferences['email-allow-new-users'] = [
+                                       'id' => 'wpAllowEmailFromNewUsers',
+                                       'type' => 'toggle',
+                                       'section' => 'personal/email',
+                                       'label-message' => 'email-allow-new-users-label',
+                                       'disabled' => $disableEmailPrefs,
+                               ];
+
                                $defaultPreferences['ccmeonemails'] = [
                                        'type' => 'toggle',
                                        'section' => 'personal/email',
@@ -547,10 +557,7 @@ class Preferences {
                                        'disabled' => $disableEmailPrefs,
                                ];
 
-                               if ( $config->get( 'EnableUserEmailBlacklist' )
-                                        && !$disableEmailPrefs
-                                        && !(bool)$user->getOption( 'disablemail' )
-                               ) {
+                               if ( $config->get( 'EnableUserEmailBlacklist' ) ) {
                                        $lookup = CentralIdLookup::factory();
                                        $ids = $user->getOption( 'email-blacklist', [] );
                                        $names = $ids ? $lookup->namesFromCentralIds( $ids, $user ) : [];
@@ -560,6 +567,7 @@ class Preferences {
                                                'label-message' => 'email-blacklist-label',
                                                'section' => 'personal/email',
                                                'default' => implode( "\n", $names ),
+                                               'disabled' => $disableEmailPrefs,
                                        ];
                                }
                        }
@@ -1171,21 +1179,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 = [];