X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fchanges%2FChangesListFilterGroup.php;h=0dc1145491feef47b6ab78389299345032281386;hb=5120937028f768749d058aa91dde82a96de0af1c;hp=3555158ed4a92df53a2db6b1b3d100df9e7607f5;hpb=ffcb34b56efa29e32434cfe1c55ef8fc076ba9ff;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/changes/ChangesListFilterGroup.php b/includes/changes/ChangesListFilterGroup.php index 3555158ed4..48c6e840a0 100644 --- a/includes/changes/ChangesListFilterGroup.php +++ b/includes/changes/ChangesListFilterGroup.php @@ -27,6 +27,8 @@ // What to call it. FilterStructure? That would also let me make // setUnidirectionalConflict protected. +use Wikimedia\Rdbms\IDatabase; + /** * Represents a filter group (used on ChangesListSpecialPage and descendants) * @@ -165,7 +167,7 @@ abstract class ChangesListFilterGroup { $this->title = $groupDefinition['title']; } - if ( isset ( $groupDefinition['whatsThisHeader'] ) ) { + if ( isset( $groupDefinition['whatsThisHeader'] ) ) { $this->whatsThisHeader = $groupDefinition['whatsThisHeader']; $this->whatsThisBody = $groupDefinition['whatsThisBody']; $this->whatsThisUrl = $groupDefinition['whatsThisUrl']; @@ -229,12 +231,8 @@ abstract class ChangesListFilterGroup { * @param string $backwardKey i18n key for conflict message in reverse * direction (when in UI context of $other object) */ - public function conflictsWith( $other, $globalKey, $forwardKey, - $backwardKey ) { - - if ( $globalKey === null || $forwardKey === null || - $backwardKey === null ) { - + public function conflictsWith( $other, $globalKey, $forwardKey, $backwardKey ) { + if ( $globalKey === null || $forwardKey === null || $backwardKey === null ) { throw new MWException( 'All messages must be specified' ); } @@ -263,9 +261,7 @@ abstract class ChangesListFilterGroup { * @param string $contextDescription i18n key for conflict message in this * direction (when in UI context of $this object) */ - public function setUnidirectionalConflict( $other, $globalDescription, - $contextDescription ) { - + public function setUnidirectionalConflict( $other, $globalDescription, $contextDescription ) { if ( $other instanceof ChangesListFilterGroup ) { $this->conflictingGroups[] = [ 'group' => $other->getName(), @@ -332,14 +328,6 @@ abstract class ChangesListFilterGroup { return isset( $this->filters[$name] ) ? $this->filters[$name] : null; } - /** - * Check whether the URL parameter is for the group, or for individual filters. - * Defaults can also be defined on the group if and only if this is true. - * - * @return bool True if and only if the URL parameter is per-group - */ - abstract public function isPerGroupRequestParameter(); - /** * Gets the JS data in the format required by the front-end of the structured UI * @@ -358,7 +346,7 @@ abstract class ChangesListFilterGroup { 'messageKeys' => [ $this->title ] ]; - if ( isset ( $this->whatsThisHeader ) ) { + if ( isset( $this->whatsThisHeader ) ) { $output['whatsThisHeader'] = $this->whatsThisHeader; $output['whatsThisBody'] = $this->whatsThisBody; $output['whatsThisUrl'] = $this->whatsThisUrl; @@ -400,9 +388,9 @@ abstract class ChangesListFilterGroup { ); foreach ( $conflicts as $conflictInfo ) { - $output['conflicts'][] = $conflictInfo; unset( $conflictInfo['filterObject'] ); unset( $conflictInfo['groupObject'] ); + $output['conflicts'][] = $conflictInfo; array_push( $output['messageKeys'], $conflictInfo['globalDescription'], @@ -455,4 +443,34 @@ abstract class ChangesListFilterGroup { } ) ); } + + /** + * Modifies the query to include the filter group. + * + * The modification is only done if the filter group is in effect. This means that + * one or more valid and allowed filters were selected. + * + * @param IDatabase $dbr Database, for addQuotes, makeList, and similar + * @param ChangesListSpecialPage $specialPage Current special page + * @param array &$tables Array of tables; see IDatabase::select $table + * @param array &$fields Array of fields; see IDatabase::select $vars + * @param array &$conds Array of conditions; see IDatabase::select $conds + * @param array &$query_options Array of query options; see IDatabase::select $options + * @param array &$join_conds Array of join conditions; see IDatabase::select $join_conds + * @param FormOptions $opts Wrapper for the current request options and their defaults + * @param bool $isStructuredFiltersEnabled True if the Structured UI is currently enabled + */ + abstract public function modifyQuery( IDatabase $dbr, ChangesListSpecialPage $specialPage, + &$tables, &$fields, &$conds, &$query_options, &$join_conds, + FormOptions $opts, $isStructuredFiltersEnabled ); + + /** + * All the options represented by this filter group to $opts + * + * @param FormOptions $opts + * @param bool $allowDefaults + * @param bool $isStructuredFiltersEnabled + */ + abstract public function addOptions( FormOptions $opts, $allowDefaults, + $isStructuredFiltersEnabled ); }