From: Roan Kattouw Date: Fri, 9 Jun 2017 19:36:26 +0000 (-0700) Subject: ChangesListSpecialPage: Add urlversion and make urlversion=2 ignore defaults X-Git-Tag: 1.31.0-rc.0~2964^2~3 X-Git-Url: http://git.cyclocoop.org/%24image?a=commitdiff_plain;h=dc499a662f4c6cb6eefcc2426ccd3be4e57044c7;p=lhc%2Fweb%2Fwiklou.git ChangesListSpecialPage: Add urlversion and make urlversion=2 ignore defaults This allows us to build reliable URLs that will be consistent over time and between users (because the defaults depend on preferences, extension presence, etC) by using urlversion=2 and specifying the state of each filter relative to the empty state (i.e. nothing enabled). urlversion defaults to 1, and urlversion=1 maintains the current behavior where the parameters are interpreted relative to the user's default state. Bug: T166906 Change-Id: Iaf33c14e3f909092d96453e78016814aa417673a --- diff --git a/includes/specialpage/ChangesListSpecialPage.php b/includes/specialpage/ChangesListSpecialPage.php index 09ed3c4440..1b561ef643 100644 --- a/includes/specialpage/ChangesListSpecialPage.php +++ b/includes/specialpage/ChangesListSpecialPage.php @@ -791,16 +791,18 @@ abstract class ChangesListSpecialPage extends SpecialPage { $config = $this->getConfig(); $opts = new FormOptions(); $structuredUI = $this->getUser()->getOption( 'rcenhancedfilters' ); + // If urlversion=2 is set, ignore the filter defaults and set them all to false/empty + $useDefaults = $this->getRequest()->getInt( 'urlversion' ) !== 2; // Add all filters foreach ( $this->filterGroups as $filterGroup ) { // URL parameters can be per-group, like 'userExpLevel', // or per-filter, like 'hideminor'. if ( $filterGroup->isPerGroupRequestParameter() ) { - $opts->add( $filterGroup->getName(), $filterGroup->getDefault() ); + $opts->add( $filterGroup->getName(), $useDefaults ? $filterGroup->getDefault() : '' ); } else { foreach ( $filterGroup->getFilters() as $filter ) { - $opts->add( $filter->getName(), $filter->getDefault( $structuredUI ) ); + $opts->add( $filter->getName(), $useDefaults ? $filter->getDefault( $structuredUI ) : false ); } } } @@ -808,6 +810,7 @@ abstract class ChangesListSpecialPage extends SpecialPage { $opts->add( 'namespace', '', FormOptions::STRING ); $opts->add( 'invert', false ); $opts->add( 'associated', false ); + $opts->add( 'urlversion', 1 ); return $opts; }