Preferences: Use session data instead of URL parameter for success
[lhc/web/wiklou.git] / includes / specials / SpecialPreferences.php
index 49ab6d5..3fa5fd5 100644 (file)
@@ -49,7 +49,11 @@ class SpecialPreferences extends SpecialPage {
                $out->addModules( 'mediawiki.special.preferences' );
                $out->addModuleStyles( 'mediawiki.special.preferences.styles' );
 
-               if ( $this->getRequest()->getCheck( 'success' ) ) {
+               $request = $this->getRequest();
+               if ( $request->getSessionData( 'specialPreferencesSaveSuccess' ) ) {
+                       // Remove session data for the success message
+                       $request->setSessionData( 'specialPreferencesSaveSuccess', null );
+
                        $out->wrapWikiMsg(
                                Html::rawElement(
                                        'div',
@@ -128,12 +132,14 @@ class SpecialPreferences extends SpecialPage {
                        throw new PermissionsError( 'editmyoptions' );
                }
 
-               $user = $this->getUser();
+               $user = $this->getUser()->getInstanceForUpdate();
                $user->resetOptions( 'all', $this->getContext() );
                $user->saveSettings();
 
-               $url = $this->getPageTitle()->getFullURL( 'success' );
+               // Set session data for the success message
+               $this->getRequest()->setSessionData( 'specialPreferencesSaveSuccess', 1 );
 
+               $url = $this->getPageTitle()->getFullURL();
                $this->getOutput()->redirect( $url );
 
                return true;