Replace deprecated edit review params
authorpetarpetkovic <ppetkovic@wikimedia.org>
Tue, 17 Oct 2017 13:22:46 +0000 (15:22 +0200)
committerpetarpetkovic <ppetkovic@wikimedia.org>
Wed, 18 Oct 2017 11:41:35 +0000 (13:41 +0200)
- Replace old options 'hideanons' or 'hideliu' with structured UI equivalent.
- Update tests to take this new behavior into account.

Bug: T176172
Change-Id: I6ad050f7864bf51db05c3db957ac3533358cd3ac

includes/specialpage/ChangesListSpecialPage.php
tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php

index 3f45250..418ef05 100644 (file)
@@ -1185,7 +1185,10 @@ abstract class ChangesListSpecialPage extends SpecialPage {
         * @param FormOptions $opts
         */
        public function validateOptions( FormOptions $opts ) {
-               if ( $this->fixContradictoryOptions( $opts ) ) {
+               $isContradictory = $this->fixContradictoryOptions( $opts );
+               $isReplaced = $this->replaceOldOptions( $opts );
+
+               if ( $isContradictory || $isReplaced ) {
                        $query = wfArrayToCgi( $this->convertParamsForLink( $opts->getChangedValues() ) );
                        $this->getOutput()->redirect( $this->getPageTitle()->getCanonicalURL( $query ) );
                }
@@ -1256,6 +1259,34 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                return false;
        }
 
+       /**
+        * Replace old options 'hideanons' or 'hideliu' with structured UI equivalent
+        *
+        * @param FormOptions $opts
+        * @return bool True if the change was made
+        */
+       public function replaceOldOptions( FormOptions $opts ) {
+               if ( !$this->isStructuredFilterUiEnabled() ) {
+                       return false;
+               }
+
+               // At this point 'hideanons' and 'hideliu' cannot be both true,
+               // because fixBackwardsCompatibilityOptions resets (at least) 'hideanons' in such case
+               if ( $opts[ 'hideanons' ] ) {
+                       $opts->reset( 'hideanons' );
+                       $opts[ 'userExpLevel' ] = 'registered';
+                       return true;
+               }
+
+               if ( $opts[ 'hideliu' ] ) {
+                       $opts->reset( 'hideliu' );
+                       $opts[ 'userExpLevel' ] = 'unregistered';
+                       return true;
+               }
+
+               return false;
+       }
+
        /**
         * Convert parameters values from true/false to 1/0
         * so they are not omitted by wfArrayToCgi()
index 5a0834a..9b81d6d 100644 (file)
@@ -981,15 +981,33 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase
                        [
                                [ 'hideanons' => 1, 'hideliu' => 1, 'hidebots' => 1 ],
                                true,
-                               [ 'hideliu' => 1, 'hidebots' => 1, ],
+                               [ 'userExpLevel' => 'unregistered', 'hidebots' => 1, ],
                        ],
-
                        [
                                [ 'hideanons' => 1, 'hideliu' => 1, 'hidebots' => 0 ],
                                true,
                                [ 'hidebots' => 0, 'hidehumans' => 1 ],
                        ],
-
+                       [
+                               [ 'hideanons' => 1 ],
+                               true,
+                               [ 'userExpLevel' => 'registered' ]
+                       ],
+                       [
+                               [ 'hideliu' => 1 ],
+                               true,
+                               [ 'userExpLevel' => 'unregistered' ]
+                       ],
+                       [
+                               [ 'hideanons' => 1, 'hidebots' => 1 ],
+                               true,
+                               [ 'userExpLevel' => 'registered', 'hidebots' => 1 ]
+                       ],
+                       [
+                               [ 'hideliu' => 1, 'hidebots' => 0 ],
+                               true,
+                               [ 'userExpLevel' => 'unregistered', 'hidebots' => 0 ]
+                       ],
                        [
                                [ 'hidemyself' => 1, 'hidebyothers' => 1 ],
                                true,