(bug 34289) user.options CSS loaded twice. Fixed by splitting off the CSS part of...
[lhc/web/wiklou.git] / includes / Preferences.php
index 27603cb..3fe6a8c 100644 (file)
@@ -193,14 +193,16 @@ class Preferences {
                );
 
                if ( $user->getRegistration() ) {
+                       $displayUser = $context->getUser();
+                       $userRegistration = $user->getRegistration();
                        $defaultPreferences['registrationdate'] = array(
                                'type' => 'info',
                                'label-message' => 'prefs-registration',
                                'default' => $context->msg(
                                        'prefs-registration-date-time',
-                                       $lang->timeanddate( $user->getRegistration(), true ),
-                                       $lang->date( $user->getRegistration(), true ),
-                                       $lang->time( $user->getRegistration(), true )
+                                       $lang->userTimeAndDate( $userRegistration, $displayUser ),
+                                       $lang->userDate( $userRegistration, $displayUser ),
+                                       $lang->userTime( $userRegistration, $displayUser )
                                )->parse(),
                                'section' => 'personal/info',
                        );
@@ -368,9 +370,11 @@ class Preferences {
                                                // date and time are separate parameters to facilitate localisation.
                                                // $time is kept for backward compat reasons.
                                                // 'emailauthenticated' is also used in SpecialConfirmemail.php
-                                               $time = $lang->timeAndDate( $user->getEmailAuthenticationTimestamp(), true );
-                                               $d = $lang->date( $user->getEmailAuthenticationTimestamp(), true );
-                                               $t = $lang->time( $user->getEmailAuthenticationTimestamp(), true );
+                                               $displayUser = $context->getUser();
+                                               $emailTimestamp = $user->getEmailAuthenticationTimestamp();
+                                               $time = $lang->userTimeAndDate( $emailTimestamp, $displayUser );
+                                               $d = $lang->userDate( $emailTimestamp, $displayUser );
+                                               $t = $lang->userTime( $emailTimestamp, $displayUser );
                                                $emailauthenticated = $context->msg( 'emailauthenticated',
                                                        $time, $d, $t )->parse() . '<br />';
                                                $disableEmailPrefs = false;
@@ -845,15 +849,18 @@ class Preferences {
         * @param $defaultPreferences
         */
        static function watchlistPreferences( $user, IContextSource $context, &$defaultPreferences ) {
-               global $wgUseRCPatrol, $wgEnableAPI;
+               global $wgUseRCPatrol, $wgEnableAPI, $wgRCMaxAge;
 
+               $watchlistdaysMax = ceil( $wgRCMaxAge / ( 3600 * 24 ) );
+               
                ## Watchlist #####################################
                $defaultPreferences['watchlistdays'] = array(
                        'type' => 'float',
                        'min' => 0,
-                       'max' => 7,
+                       'max' => $watchlistdaysMax,
                        'section' => 'watchlist/displaywatchlist',
-                       'help' => $context->msg( 'prefs-watchlist-days-max' )->escaped(),
+                       'help' => $context->msg( 'prefs-watchlist-days-max' )->numParams(
+                                                $watchlistdaysMax )->text(),
                        'label-message' => 'prefs-watchlist-days',
                );
                $defaultPreferences['wllimit'] = array(
@@ -1094,7 +1101,8 @@ class Preferences {
         * @return array
         */
        static function getDateOptions( IContextSource $context ) {
-               $dateopts = $context->getLanguage()->getDatePreferences();
+               $lang = $context->getLanguage();
+               $dateopts = $lang->getDatePreferences();
 
                $ret = array();
 
@@ -1115,7 +1123,7 @@ class Preferences {
                                if ( $key == 'default' ) {
                                        $formatted = $context->msg( 'datedefault' )->escaped();
                                } else {
-                                       $formatted = htmlspecialchars( $context->getLanguage()->timeanddate( $epoch, false, $key ) );
+                                       $formatted = htmlspecialchars( $lang->timeanddate( $epoch, false, $key ) );
                                }
                                $ret[$formatted] = $key;
                        }
@@ -1210,6 +1218,10 @@ class Preferences {
                        $removeKeys = array_flip( $remove );
                        $formDescriptor = array_diff_key( $formDescriptor, $removeKeys );
                }
+
+               /**
+                * @var $htmlForm PreferencesForm
+                */
                $htmlForm = new $formClass( $formDescriptor, $context, 'prefs' );
 
                $htmlForm->setModifiedUser( $user );
@@ -1329,7 +1341,7 @@ class Preferences {
 
        /**
         * @param $formData
-        * @param $form HTMLForm
+        * @param $form PreferencesForm
         * @param $entryPoint string
         * @return bool|Status|string
         */
@@ -1388,6 +1400,7 @@ class Preferences {
 
        /**
         * @param $formData
+        * @param $form PreferencesForm
         * @return Status
         */
        public static function tryUISubmit( $formData, $form ) {
@@ -1428,8 +1441,6 @@ class Preferences {
                                # The user has supplied a new email address on the login page
                                # new behaviour: set this new emailaddr from login-page into user database record
                                $user->setEmail( $newaddr );
-                               # But flag as "dirty" = unauthenticated
-                               $user->invalidateEmail();
                                if ( $wgEmailAuthentication ) {
                                        # Mail a temporary password to the dirty address.
                                        # User can come back through the confirmation URL to re-enable email.
@@ -1440,7 +1451,7 @@ class Preferences {
                                        }
                                        $info = 'eauth';
                                }
-                       } else {
+                       } elseif ( $newaddr != $oldaddr ) { // if the address is the same, don't change it
                                $user->setEmail( $newaddr );
                        }
                        if ( $oldaddr != $newaddr ) {
@@ -1452,10 +1463,13 @@ class Preferences {
        }
 
        /**
+        * @deprecated in 1.19; will be removed in 1.20.
         * @param $user User
         * @return array
         */
        public static function loadOldSearchNs( $user ) {
+               wfDeprecated( __METHOD__, '1.19' );
+
                $searchableNamespaces = SearchEngine::searchableNamespaces();
                // Back compat with old format
                $arr = array();
@@ -1474,13 +1488,19 @@ class Preferences {
 class PreferencesForm extends HTMLForm {
        // Override default value from HTMLForm
        protected $mSubSectionBeforeFields = false;
-       
+
        private $modifiedUser;
 
+       /**
+        * @param $user User
+        */
        public function setModifiedUser( $user ) {
                $this->modifiedUser = $user;
        }
 
+       /**
+        * @return User
+        */
        public function getModifiedUser() {
                if ( $this->modifiedUser === null ) {
                        return $this->getUser();
@@ -1547,16 +1567,20 @@ class PreferencesForm extends HTMLForm {
 
                return $data;
        }
+
        /**
         * Get the whole body of the form.
+        * @return string
         */
        function getBody() {
                return $this->displaySection( $this->mFieldTree, '', 'mw-prefsection-' );
        }
-       
+
        /**
         * Get the <legend> for a given section key. Normally this is the
         * prefs-$key message but we'll allow extensions to override it.
+        * @param $key string
+        * @return string
         */
        function getLegend( $key ) {
                $legend = parent::getLegend( $key );