* Wont work
[lhc/web/wiklou.git] / includes / SpecialPreferences.php
index 851eda2..33a31ee 100644 (file)
@@ -207,7 +207,7 @@ class PreferencesForm {
        function savePreferences() {
                global $wgUser, $wgOut, $wgParser;
                global $wgEnableUserEmail, $wgEnableEmail;
-               global $wgEmailAuthentication;
+               global $wgEmailAuthentication, $wgRCMaxAge;
                global $wgAuth, $wgEmailConfirmToEdit;
 
 
@@ -275,7 +275,7 @@ class PreferencesForm {
                $wgUser->setOption( 'contextlines', $this->validateIntOrNull( $this->mSearchLines ) );
                $wgUser->setOption( 'contextchars', $this->validateIntOrNull( $this->mSearchChars ) );
                $wgUser->setOption( 'rclimit', $this->validateIntOrNull( $this->mRecent ) );
-               $wgUser->setOption( 'rcdays', $this->validateInt( $this->mRecentDays, 1, 7 ) );
+               $wgUser->setOption( 'rcdays', $this->validateInt($this->mRecentDays, 1, ceil($wgRCMaxAge / (3600*24))));
                $wgUser->setOption( 'wllimit', $this->validateIntOrNull( $this->mWatchlistEdits, 0, 1000 ) );
                $wgUser->setOption( 'rows', $this->validateInt( $this->mRows, 4, 1000 ) );
                $wgUser->setOption( 'cols', $this->validateInt( $this->mCols, 4, 1000 ) );
@@ -299,20 +299,6 @@ class PreferencesForm {
                foreach ( $this->mToggles as $tname => $tvalue ) {
                        $wgUser->setOption( $tname, $tvalue );
                }
-               if (!$wgAuth->updateExternalDB($wgUser)) {
-                       $this->mainPrefsForm( 'error', wfMsg( 'externaldberror' ) );
-                       return;
-               }
-
-               $msg = '';
-               if ( !wfRunHooks( "SavePreferences", array( $this, $wgUser, &$msg ) ) ) {
-                       print "(($msg))";
-                       $this->mainPrefsForm( 'error', $msg ); 
-                       return;
-               }
-
-               $wgUser->setCookies();
-               $wgUser->saveSettings();
 
                $error = false;
                if( $wgEnableEmail ) {
@@ -323,7 +309,6 @@ class PreferencesForm {
                                if( $wgUser->isValidEmailAddr( $newadr ) ) {
                                        $wgUser->mEmail = $newadr; # new behaviour: set this new emailaddr from login-page into user database record
                                        $wgUser->mEmailAuthenticated = null; # but flag as "dirty" = unauthenticated
-                                       $wgUser->saveSettings();
                                        if ($wgEmailAuthentication) {
                                                # Mail a temporary password to the dirty address.
                                                # User can come back through the confirmation URL to re-enable email.
@@ -343,14 +328,27 @@ class PreferencesForm {
                                        return;
                                }
                                $wgUser->setEmail( $this->mUserEmail );
-                               $wgUser->setCookies();
-                               $wgUser->saveSettings();
                        }
                        if( $oldadr != $newadr ) {
                                wfRunHooks( "PrefsEmailAudit", array( $wgUser, $oldadr, $newadr ) );
                        }
                }
 
+               if (!$wgAuth->updateExternalDB($wgUser)) {
+                       $this->mainPrefsForm( 'error', wfMsg( 'externaldberror' ) );
+                       return;
+               }
+
+               $msg = '';
+               if ( !wfRunHooks( "SavePreferences", array( $this, $wgUser, &$msg ) ) ) {
+                       print "(($msg))";
+                       $this->mainPrefsForm( 'error', $msg );
+                       return;
+               }
+
+               $wgUser->setCookies();
+               $wgUser->saveSettings();
+
                if( $needRedirect && $error === false ) {
                        $title =& SpecialPage::getTitleFor( "Preferences" );
                        $wgOut->redirect($title->getFullURL('success'));