From: Stephane Bisson Date: Thu, 1 Dec 2016 19:58:18 +0000 (-0500) Subject: Special:RC filter: hideunpatrolled X-Git-Tag: 1.31.0-rc.0~4647 X-Git-Url: https://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/comptes/journal.php?a=commitdiff_plain;h=efb4b8a69693734d8eb98bf7caf24cdf828f6005;p=lhc%2Fweb%2Fwiklou.git Special:RC filter: hideunpatrolled Allows hiding edits that have not been patrolled. In other words, showing only edits that have been patrolled. Will be used by the new Special:RC filters (ERI project). Bug: T152061 Change-Id: I3cd896812c5af87bc4be53d493055c37298c712f --- diff --git a/includes/specialpage/ChangesListSpecialPage.php b/includes/specialpage/ChangesListSpecialPage.php index 5add448b63..205194881d 100644 --- a/includes/specialpage/ChangesListSpecialPage.php +++ b/includes/specialpage/ChangesListSpecialPage.php @@ -145,6 +145,7 @@ abstract class ChangesListSpecialPage extends SpecialPage { $opts->add( 'hideanons', false ); $opts->add( 'hideliu', false ); $opts->add( 'hidepatrolled', false ); + $opts->add( 'hideunpatrolled', false ); $opts->add( 'hidemyself', false ); $opts->add( 'hidebyothers', false ); @@ -242,8 +243,13 @@ abstract class ChangesListSpecialPage extends SpecialPage { if ( $opts['hidehumans'] ) { $conds[] = 'rc_bot = 1'; } - if ( $user->useRCPatrol() && $opts['hidepatrolled'] ) { - $conds['rc_patrolled'] = 0; + if ( $user->useRCPatrol() ) { + if ( $opts['hidepatrolled'] ) { + $conds[] = 'rc_patrolled = 0'; + } + if ( $opts['hideunpatrolled'] ) { + $conds[] = 'rc_patrolled = 1'; + } } if ( $botsonly ) { $conds['rc_bot'] = 1; diff --git a/tests/phpunit/includes/specials/SpecialRecentchangesTest.php b/tests/phpunit/includes/specials/SpecialRecentchangesTest.php index 0cd1b3432c..03e9c8fee0 100644 --- a/tests/phpunit/includes/specials/SpecialRecentchangesTest.php +++ b/tests/phpunit/includes/specials/SpecialRecentchangesTest.php @@ -153,8 +153,8 @@ class SpecialRecentchangesTest extends MediaWikiTestCase { $this->assertConditions( [ # expected 'rc_bot' => 0, - 0 => "rc_user != '{$user->getId()}'", - 1 => "rc_type != '6'", + "rc_user != '{$user->getId()}'", + "rc_type != '6'", ], [ 'hidemyself' => 1, @@ -167,8 +167,8 @@ class SpecialRecentchangesTest extends MediaWikiTestCase { $this->assertConditions( [ # expected 'rc_bot' => 0, - 0 => "rc_user_text != '10.11.12.13'", - 1 => "rc_type != '6'", + "rc_user_text != '10.11.12.13'", + "rc_type != '6'", ], [ 'hidemyself' => 1, @@ -183,8 +183,8 @@ class SpecialRecentchangesTest extends MediaWikiTestCase { $this->assertConditions( [ # expected 'rc_bot' => 0, - 0 => "rc_user = '{$user->getId()}'", - 1 => "rc_type != '6'", + "rc_user = '{$user->getId()}'", + "rc_type != '6'", ], [ 'hidebyothers' => 1, @@ -197,8 +197,8 @@ class SpecialRecentchangesTest extends MediaWikiTestCase { $this->assertConditions( [ # expected 'rc_bot' => 0, - 0 => "rc_user_text = '10.11.12.13'", - 1 => "rc_type != '6'", + "rc_user_text = '10.11.12.13'", + "rc_type != '6'", ], [ 'hidebyothers' => 1, @@ -213,9 +213,9 @@ class SpecialRecentchangesTest extends MediaWikiTestCase { $this->assertConditions( [ # expected 'rc_bot' => 0, - 0 => "rc_user != '{$user->getId()}'", - 1 => "rc_user = '{$user->getId()}'", - 2 => "rc_type != '6'", + "rc_user != '{$user->getId()}'", + "rc_user = '{$user->getId()}'", + "rc_type != '6'", ], [ 'hidemyself' => 1, @@ -281,4 +281,86 @@ class SpecialRecentchangesTest extends MediaWikiTestCase { "rc conditions: hidebots=0 hidehumans=1" ); } + + public function testRcHidepatrolledDisabledFilter() { + $user = $this->getTestUser()->getUser(); + $this->assertConditions( + [ # expected + 'rc_bot' => 0, + "rc_type != '6'", + ], + [ + 'hidepatrolled' => 1, + ], + "rc conditions: hidepatrolled=1 (user not allowed)", + $user + ); + } + + public function testRcHideunpatrolledDisabledFilter() { + $user = $this->getTestUser()->getUser(); + $this->assertConditions( + [ # expected + 'rc_bot' => 0, + "rc_type != '6'", + ], + [ + 'hideunpatrolled' => 1, + ], + "rc conditions: hideunpatrolled=1 (user not allowed)", + $user + ); + } + public function testRcHidepatrolledFilter() { + $user = $this->getTestSysop()->getUser(); + $this->assertConditions( + [ # expected + 'rc_bot' => 0, + "rc_patrolled = 0", + "rc_type != '6'", + ], + [ + 'hidepatrolled' => 1, + ], + "rc conditions: hidepatrolled=1", + $user + ); + } + + public function testRcHideunpatrolledFilter() { + $user = $this->getTestSysop()->getUser(); + $this->assertConditions( + [ # expected + 'rc_bot' => 0, + "rc_patrolled = 1", + "rc_type != '6'", + ], + [ + 'hideunpatrolled' => 1, + ], + "rc conditions: hideunpatrolled=1", + $user + ); + } + + // This is probably going to change when we do auto-fix of + // filters combinations that don't make sense but for now + // it's the behavior therefore it's the test. + public function testRcHidepatrolledHideunpatrolledFilter() { + $user = $this->getTestSysop()->getUser(); + $this->assertConditions( + [ # expected + 'rc_bot' => 0, + "rc_patrolled = 0", + "rc_patrolled = 1", + "rc_type != '6'", + ], + [ + 'hidepatrolled' => 1, + 'hideunpatrolled' => 1, + ], + "rc conditions: hidepatrolled=1 hideunpatrolled=1", + $user + ); + } }