23use InvalidArgumentException;
45 public const TYPE =
'string_options';
55 public const ALL =
'all';
116 if ( !isset( $groupDefinition[
'isFullCoverage'] ) ) {
117 throw new InvalidArgumentException(
'You must specify isFullCoverage' );
122 parent::__construct( $groupDefinition );
124 $this->queryCallable = $groupDefinition[
'queryCallable'];
126 if ( isset( $groupDefinition[
'default'] ) ) {
127 $this->
setDefault( $groupDefinition[
'default'] );
129 throw new InvalidArgumentException(
'You must specify a default' );
165 $this->filters[$filter->
getName()] = $filter;
172 &$tables, &$fields, &$conds, &$query_options, &$join_conds,
176 if ( !$isStructuredFiltersEnabled ) {
180 $value = $opts[ $this->
getName() ];
181 $allowedFilterNames = [];
182 foreach ( $this->filters as $filter ) {
183 $allowedFilterNames[] = $filter->getName();
186 if ( $value === self::ALL ) {
187 $selectedValues = $allowedFilterNames;
189 $selectedValues = explode( self::SEPARATOR, strtolower( $value ) );
192 $selectedValues = array_intersect(
203 if ( count( $selectedValues ) === 0 ) {
207 sort( $selectedValues );
210 get_class( $specialPage ),
226 $output = parent::getJsData();
243class_alias( ChangesListStringOptionsFilterGroup::class,
'ChangesListStringOptionsFilterGroup' );
Special page which uses a ChangesList to show query results.
getContext()
Gets the context this SpecialPage is executed in.