Pass old user options in PreferencesFormPreSave hook
[lhc/web/wiklou.git] / includes / Preferences.php
index 6d15c1e..008963b 100644 (file)
@@ -120,7 +120,7 @@ class Preferences {
                        }
                }
 
-               # # Make sure that form fields have their parent set. See bug 41337.
+               # # Make sure that form fields have their parent set. See T43337.
                $dummyForm = new HTMLForm( [], $context );
 
                $disable = !$user->isAllowed( 'editmyoptions' );
@@ -915,6 +915,9 @@ class Preferences {
                        'label-message' => 'tog-hideminor',
                        'section' => 'rc/advancedrc',
                ];
+               $defaultPreferences['rcfilters-saved-queries'] = [
+                       'type' => 'api',
+               ];
 
                if ( $config->get( 'RCWatchCategoryMembership' ) ) {
                        $defaultPreferences['hidecategorization'] = [
@@ -1201,8 +1204,7 @@ class Preferences {
 
                if ( $dateopts ) {
                        if ( !in_array( 'default', $dateopts ) ) {
-                               $dateopts[] = 'default'; // Make sure default is always valid
-                                                                               // Bug 19237
+                               $dateopts[] = 'default'; // Make sure default is always valid T21237
                        }
 
                        // FIXME KLUGE: site default might not be valid for user language
@@ -1483,6 +1485,8 @@ class Preferences {
                }
 
                if ( $user->isAllowed( 'editmyoptions' ) ) {
+                       $oldUserOptions = $user->getOptions();
+
                        foreach ( self::$saveBlacklist as $b ) {
                                unset( $formData[$b] );
                        }
@@ -1503,7 +1507,10 @@ class Preferences {
                                $user->setOption( $key, $value );
                        }
 
-                       Hooks::run( 'PreferencesFormPreSave', [ $formData, $form, $user, &$result ] );
+                       Hooks::run(
+                               'PreferencesFormPreSave',
+                               [ $formData, $form, $user, &$result, $oldUserOptions ]
+                       );
                }
 
                MediaWiki\Auth\AuthManager::callLegacyAuthPlugin( 'updateExternalDB', [ $user ] );