$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 );
}
}
}
$opts->add( 'namespace', '', FormOptions::STRING );
$opts->add( 'invert', false );
$opts->add( 'associated', false );
+ $opts->add( 'urlversion', 1 );
return $opts;
}
* @return bool True if any option was reset
*/
private function fixContradictoryOptions( FormOptions $opts ) {
- $contradictorySets = [];
-
$fixed = $this->fixBackwardsCompatibilityOptions( $opts );
foreach ( $this->filterGroups as $filterGroup ) {
if ( $filterGroup instanceof ChangesListBooleanFilterGroup ) {
$filters = $filterGroup->getFilters();
+
+ if ( count( $filters ) === 1 ) {
+ // legacy boolean filters should not be considered
+ continue;
+ }
+
$allInGroupEnabled = array_reduce(
$filters,
function ( $carry, $filter ) use ( $opts ) {
if ( $allInGroupEnabled ) {
foreach ( $filters as $filter ) {
- $opts->reset( $filter->getName() );
+ $opts[ $filter->getName() ] = false;
}
$fixed = true;
// Namespace filtering
if ( $opts[ 'namespace' ] !== '' ) {
- $namespaces = explode( ',', $opts[ 'namespace' ] );
+ $namespaces = explode( ';', $opts[ 'namespace' ] );
if ( $opts[ 'associated' ] ) {
$associatedNamespaces = array_map(
$aboveNewcomer = $dbr->makeList(
[
'user_editcount >= ' . intval( $wgLearnerEdits ),
- 'user_registration <= ' . $dbr->timestamp( $learnerCutoff ),
+ 'user_registration <= ' . $dbr->addQuotes( $dbr->timestamp( $learnerCutoff ) ),
],
IDatabase::LIST_AND
);
$aboveLearner = $dbr->makeList(
[
'user_editcount >= ' . intval( $wgExperiencedUserEdits ),
- 'user_registration <= ' . $dbr->timestamp( $experiencedUserCutoff ),
+ 'user_registration <= ' .
+ $dbr->addQuotes( $dbr->timestamp( $experiencedUserCutoff ) ),
],
IDatabase::LIST_AND
);