X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;ds=sidebyside;f=includes%2Fspecialpage%2FChangesListSpecialPage.php;h=8c4cc1183432ae730fefdc5d8d34410bb83140ff;hb=435e4064b579d64195e7d41b830af5d93031c035;hp=268f0b099d0d51d9e1d86b1df1ffce36b15dad73;hpb=ca95cad6cc1abc9ce14ab161e982e342e4403dc8;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specialpage/ChangesListSpecialPage.php b/includes/specialpage/ChangesListSpecialPage.php index 268f0b099d..8c4cc11834 100644 --- a/includes/specialpage/ChangesListSpecialPage.php +++ b/includes/specialpage/ChangesListSpecialPage.php @@ -92,8 +92,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'showHideSuffix' => 'showhideliu', 'default' => false, 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, - &$query_options, &$join_conds ) { - + &$query_options, &$join_conds + ) { $conds[] = 'rc_user = 0'; }, 'cssClassSuffix' => 'liu', @@ -111,8 +111,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'showHideSuffix' => 'showhideanons', 'default' => false, 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, - &$query_options, &$join_conds ) { - + &$query_options, &$join_conds + ) { $conds[] = 'rc_user != 0'; }, 'cssClassSuffix' => 'anon', @@ -182,8 +182,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'showHideSuffix' => 'showhidemine', 'default' => false, 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, - &$query_options, &$join_conds ) { - + &$query_options, &$join_conds + ) { $user = $ctx->getUser(); $conds[] = 'rc_user_text != ' . $dbr->addQuotes( $user->getName() ); }, @@ -198,8 +198,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'description' => 'rcfilters-filter-editsbyother-description', 'default' => false, 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, - &$query_options, &$join_conds ) { - + &$query_options, &$join_conds + ) { $user = $ctx->getUser(); $conds[] = 'rc_user_text = ' . $dbr->addQuotes( $user->getName() ); }, @@ -225,8 +225,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'showHideSuffix' => 'showhidebots', 'default' => false, 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, - &$query_options, &$join_conds ) { - + &$query_options, &$join_conds + ) { $conds[] = 'rc_bot = 0'; }, 'cssClassSuffix' => 'bot', @@ -240,8 +240,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'description' => 'rcfilters-filter-humans-description', 'default' => false, 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, - &$query_options, &$join_conds ) { - + &$query_options, &$join_conds + ) { $conds[] = 'rc_bot = 1'; }, 'cssClassSuffix' => 'human', @@ -269,8 +269,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'showHideSuffix' => 'showhideminor', 'default' => false, 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, - &$query_options, &$join_conds ) { - + &$query_options, &$join_conds + ) { $conds[] = 'rc_minor = 0'; }, 'cssClassSuffix' => 'minor', @@ -284,8 +284,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'description' => 'rcfilters-filter-major-description', 'default' => false, 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, - &$query_options, &$join_conds ) { - + &$query_options, &$join_conds + ) { $conds[] = 'rc_minor = 1'; }, 'cssClassSuffix' => 'major', @@ -347,8 +347,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'default' => false, 'priority' => -2, 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, - &$query_options, &$join_conds ) { - + &$query_options, &$join_conds + ) { $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_EDIT ); }, 'cssClassSuffix' => 'src-mw-edit', @@ -363,8 +363,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'default' => false, 'priority' => -3, 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, - &$query_options, &$join_conds ) { - + &$query_options, &$join_conds + ) { $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_NEW ); }, 'cssClassSuffix' => 'src-mw-new', @@ -382,8 +382,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'default' => false, 'priority' => -5, 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, - &$query_options, &$join_conds ) { - + &$query_options, &$join_conds + ) { $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_LOG ); }, 'cssClassSuffix' => 'src-mw-log', @@ -412,8 +412,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'showHideSuffix' => 'showhidepatr', 'default' => false, 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, - &$query_options, &$join_conds ) { - + &$query_options, &$join_conds + ) { $conds[] = 'rc_patrolled = 0'; }, 'cssClassSuffix' => 'patrolled', @@ -427,8 +427,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'description' => 'rcfilters-filter-unpatrolled-description', 'default' => false, 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, - &$query_options, &$join_conds ) { - + &$query_options, &$join_conds + ) { $conds[] = 'rc_patrolled = 1'; }, 'cssClassSuffix' => 'unpatrolled', @@ -450,8 +450,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'default' => false, 'priority' => -4, 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, - &$query_options, &$join_conds ) { - + &$query_options, &$join_conds + ) { $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_CATEGORIZE ); }, 'cssClassSuffix' => 'src-mw-categorize', @@ -470,7 +470,6 @@ abstract class ChangesListSpecialPage extends SpecialPage { $opts = $this->getOptions(); /** @var ChangesListFilterGroup $group */ foreach ( $this->getFilterGroups() as $group ) { - if ( $group->getConflictingGroups() ) { wfLogWarning( $group->getName() . @@ -487,7 +486,6 @@ abstract class ChangesListSpecialPage extends SpecialPage { /** @var ChangesListFilter $filter */ foreach ( $group->getFilters() as $filter ) { - /** @var ChangesListFilter $conflictingFilter */ foreach ( $filter->getConflictingFilters() as $conflictingFilter ) { if ( @@ -791,16 +789,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 +808,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; } @@ -973,13 +974,17 @@ abstract class ChangesListSpecialPage extends SpecialPage { * @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 ) { @@ -990,7 +995,7 @@ abstract class ChangesListSpecialPage extends SpecialPage { if ( $allInGroupEnabled ) { foreach ( $filters as $filter ) { - $opts->reset( $filter->getName() ); + $opts[ $filter->getName() ] = false; } $fixed = true; @@ -1022,7 +1027,6 @@ abstract class ChangesListSpecialPage extends SpecialPage { } return false; - } /** @@ -1055,8 +1059,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { * @param FormOptions $opts */ protected function buildQuery( &$tables, &$fields, &$conds, &$query_options, - &$join_conds, FormOptions $opts ) { - + &$join_conds, FormOptions $opts + ) { $dbr = $this->getDB(); $user = $this->getUser(); @@ -1079,7 +1083,7 @@ abstract class ChangesListSpecialPage extends SpecialPage { // Namespace filtering if ( $opts[ 'namespace' ] !== '' ) { - $namespaces = explode( ',', $opts[ 'namespace' ] ); + $namespaces = explode( ';', $opts[ 'namespace' ] ); if ( $opts[ 'associated' ] ) { $associatedNamespaces = array_map( @@ -1115,8 +1119,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { * @return bool|ResultWrapper Result or false */ protected function doMainQuery( $tables, $fields, $conds, - $query_options, $join_conds, FormOptions $opts ) { - + $query_options, $join_conds, FormOptions $opts + ) { $tables[] = 'recentchanges'; $fields = array_merge( RecentChange::selectFields(), $fields ); @@ -1283,9 +1287,14 @@ abstract class ChangesListSpecialPage extends SpecialPage { $legend .= Html::closeElement( 'dl' ) . "\n"; # Collapsibility + $legendHeading = $this->getUser()->getOption( + 'rcenhancedfilters' + ) ? + $context->msg( 'rcfilters-legend-heading' )->parse() : + $context->msg( 'recentchanges-legend-heading' )->parse(); $legend = '
' . - $context->msg( 'recentchanges-legend-heading' )->parse() . + $legendHeading . '
' . $legend . '
' . '
'; @@ -1326,8 +1335,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { * (optional) */ public function filterOnUserExperienceLevel( $specialPageClassName, $context, $dbr, - &$tables, &$fields, &$conds, &$query_options, &$join_conds, $selectedExpLevels, $now = 0 ) { - + &$tables, &$fields, &$conds, &$query_options, &$join_conds, $selectedExpLevels, $now = 0 + ) { global $wgLearnerEdits, $wgExperiencedUserEdits, $wgLearnerMemberSince, @@ -1355,7 +1364,7 @@ abstract class ChangesListSpecialPage extends SpecialPage { $aboveNewcomer = $dbr->makeList( [ 'user_editcount >= ' . intval( $wgLearnerEdits ), - 'user_registration <= ' . $dbr->timestamp( $learnerCutoff ), + 'user_registration <= ' . $dbr->addQuotes( $dbr->timestamp( $learnerCutoff ) ), ], IDatabase::LIST_AND ); @@ -1363,7 +1372,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { $aboveLearner = $dbr->makeList( [ 'user_editcount >= ' . intval( $wgExperiencedUserEdits ), - 'user_registration <= ' . $dbr->timestamp( $experiencedUserCutoff ), + 'user_registration <= ' . + $dbr->addQuotes( $dbr->timestamp( $experiencedUserCutoff ) ), ], IDatabase::LIST_AND );