MediaWiki master
ChangesListFilterGroup Class Reference

Represents a filter group (used on ChangesListSpecialPage and descendants) More...

Inherited by ChangesListBooleanFilterGroup, and ChangesListStringOptionsFilterGroup.

Collaboration diagram for ChangesListFilterGroup:

Public Member Functions

 __construct (array $groupDefinition)
 Create a new filter group with the specified configuration.
 
 addOptions (FormOptions $opts, $allowDefaults, $isStructuredFiltersEnabled)
 All the options represented by this filter group to $opts.
 
 anySelected (FormOptions $opts)
 Check if any filter in this group is selected.
 
 conflictsWith ( $other, string $globalKey, string $forwardKey, string $backwardKey)
 Marks that the given ChangesListFilterGroup or ChangesListFilter conflicts with this object.
 
 getConflictingFilters ()
 Get filters conflicting with this filter group.
 
 getConflictingGroups ()
 Get groups conflicting with this filter group.
 
 getFilter ( $name)
 Get filter by name.
 
 getFilters ()
 
 getJsData ()
 Gets the JS data in the format required by the front-end of the structured UI.
 
 getName ()
 
 getPriority ()
 
 getTitle ()
 
 getType ()
 
 modifyQuery (IReadableDatabase $dbr, ChangesListSpecialPage $specialPage, &$tables, &$fields, &$conds, &$query_options, &$join_conds, FormOptions $opts, $isStructuredFiltersEnabled)
 Modifies the query to include the filter group.
 
 setUnidirectionalConflict ( $other, $globalDescription, $contextDescription)
 Marks that the given ChangesListFilterGroup or ChangesListFilter conflicts with this object.
 

Protected Member Functions

 createFilter (array $filterDefinition)
 Creates a filter of the appropriate type for this group, from the definition.
 

Protected Attributes

array $conflictingFilters = []
 Array of associative arrays with conflict information.
 
array $conflictingGroups = []
 Array of associative arrays with conflict information.
 
ChangesListFilter[] $filters
 Associative array of filters, as ChangesListFilter objects, with filter name as key.
 
bool $isFullCoverage
 Whether this group is full coverage.
 
string $name
 Name (internal identifier)
 
int $priority
 Priority integer.
 
string $title
 i18n key for title
 
string $type
 Type, from a TYPE constant of a subclass.
 
string null $whatsThisBody
 i18n key for body of What's This?
 
string null $whatsThisHeader
 i18n key for header of What's This?
 
string null $whatsThisLinkText
 i18n key for What's This? link
 
string null $whatsThisUrl
 URL of What's This? link.
 

Detailed Description

Represents a filter group (used on ChangesListSpecialPage and descendants)

Todo
Might want to make a super-class or trait to share behavior (especially re conflicts) between ChangesListFilter and ChangesListFilterGroup. What to call it. FilterStructure? That would also let me make setUnidirectionalConflict protected.
Since
1.29
Author
Matthew Flaschen @method registerFilter($filter)

Definition at line 38 of file ChangesListFilterGroup.php.

Constructor & Destructor Documentation

◆ __construct()

ChangesListFilterGroup::__construct ( array $groupDefinition)

Create a new filter group with the specified configuration.

Parameters
array$groupDefinitionConfiguration of group
  • $groupDefinition['name'] string Group name; use camelCase with no punctuation
  • $groupDefinition['title'] string i18n key for title (optional, can be omitted only if none of the filters in the group display in the structured UI)
  • $groupDefinition['type'] string A type constant from a subclass of this one
  • $groupDefinition['priority'] int Priority integer. Higher value means higher up in the group list (optional, defaults to -100).
  • $groupDefinition['filters'] array Numeric array of filter definitions, each of which is an associative array to be passed to the filter constructor. However, 'priority' is optional for the filters. Any filter that has priority unset will be put to the bottom, in the order given.
  • $groupDefinition['isFullCoverage'] bool Whether the group is full coverage; if true, this means that checking every item in the group means no changes list entries are filtered out.
  • $groupDefinition['whatsThisHeader'] string i18n key for header of "What's This" popup (optional).
  • $groupDefinition['whatsThisBody'] string i18n key for body of "What's This" popup (optional).
  • $groupDefinition['whatsThisUrl'] string URL for main link of "What's This" popup (optional).
  • $groupDefinition['whatsThisLinkText'] string i18n key of text for main link of "What's This" popup (optional).

Reimplemented in ChangesListBooleanFilterGroup, and ChangesListStringOptionsFilterGroup.

Definition at line 157 of file ChangesListFilterGroup.php.

References createFilter().

Member Function Documentation

◆ addOptions()

ChangesListFilterGroup::addOptions ( FormOptions $opts,
$allowDefaults,
$isStructuredFiltersEnabled )
abstract

All the options represented by this filter group to $opts.

Parameters
FormOptions$opts
bool$allowDefaults
bool$isStructuredFiltersEnabled

Reimplemented in ChangesListBooleanFilterGroup, and ChangesListStringOptionsFilterGroup.

◆ anySelected()

ChangesListFilterGroup::anySelected ( FormOptions $opts)

Check if any filter in this group is selected.

Parameters
FormOptions$opts
Returns
bool

Definition at line 421 of file ChangesListFilterGroup.php.

References getFilters(), and ChangesListFilter\isSelected().

Referenced by ChangesListFilter\activelyInConflictWithGroup().

◆ conflictsWith()

ChangesListFilterGroup::conflictsWith ( $other,
string $globalKey,
string $forwardKey,
string $backwardKey )

Marks that the given ChangesListFilterGroup or ChangesListFilter conflicts with this object.

WARNING: This means there is a conflict when both things are shown (not filtered out), even for the hide-based filters. So e.g. conflicting with 'hideanons' means there is a conflict if only anonymous users are shown.

Parameters
ChangesListFilterGroup | ChangesListFilter$other
string$globalKeyi18n key for top-level conflict message
string$forwardKeyi18n key for conflict message in this direction (when in UI context of $this object)
string$backwardKeyi18n key for conflict message in reverse direction (when in UI context of $other object)

Definition at line 230 of file ChangesListFilterGroup.php.

References setUnidirectionalConflict().

◆ createFilter()

ChangesListFilterGroup::createFilter ( array $filterDefinition)
abstractprotected

Creates a filter of the appropriate type for this group, from the definition.

Parameters
array$filterDefinition
Returns
ChangesListFilter Filter

Reimplemented in ChangesListBooleanFilterGroup, and ChangesListStringOptionsFilterGroup.

Referenced by __construct().

◆ getConflictingFilters()

ChangesListFilterGroup::getConflictingFilters ( )

Get filters conflicting with this filter group.

Returns
ChangesListFilter[]

Definition at line 411 of file ChangesListFilterGroup.php.

◆ getConflictingGroups()

ChangesListFilterGroup::getConflictingGroups ( )

Get groups conflicting with this filter group.

Returns
ChangesListFilterGroup[]

Definition at line 402 of file ChangesListFilterGroup.php.

◆ getFilter()

ChangesListFilterGroup::getFilter ( $name)

Get filter by name.

Parameters
string$nameFilter name
Returns
ChangesListFilter|null Specified filter, or null if it is not registered

Definition at line 320 of file ChangesListFilterGroup.php.

◆ getFilters()

ChangesListFilterGroup::getFilters ( )
Returns
ChangesListFilter[] Associative array of ChangesListFilter objects, with filter name as key

Definition at line 310 of file ChangesListFilterGroup.php.

Referenced by ChangesListBooleanFilterGroup\addOptions(), anySelected(), and ChangesListBooleanFilterGroup\modifyQuery().

◆ getJsData()

ChangesListFilterGroup::getJsData ( )

Gets the JS data in the format required by the front-end of the structured UI.

Returns
array|null Associative array, or null if there are no filters that display in the structured UI. messageKeys is a special top-level value, with the value being an array of the message keys to send to the client.

Reimplemented in ChangesListStringOptionsFilterGroup.

Definition at line 331 of file ChangesListFilterGroup.php.

References ChangesListFilter\getPriority().

◆ getName()

◆ getPriority()

ChangesListFilterGroup::getPriority ( )
Returns
int Priority. Higher means higher in the group list

Definition at line 302 of file ChangesListFilterGroup.php.

Referenced by MediaWiki\SpecialPage\ChangesListSpecialPage\getStructuredFilterJsData().

◆ getTitle()

ChangesListFilterGroup::getTitle ( )
Returns
string i18n key for title

Definition at line 288 of file ChangesListFilterGroup.php.

◆ getType()

ChangesListFilterGroup::getType ( )
Returns
string Type (TYPE constant from a subclass)

Definition at line 295 of file ChangesListFilterGroup.php.

◆ modifyQuery()

ChangesListFilterGroup::modifyQuery ( IReadableDatabase $dbr,
ChangesListSpecialPage $specialPage,
& $tables,
& $fields,
& $conds,
& $query_options,
& $join_conds,
FormOptions $opts,
$isStructuredFiltersEnabled )
abstract

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.

Parameters
IReadableDatabase$dbrDatabase, for addQuotes, makeList, and similar
ChangesListSpecialPage$specialPageCurrent special page
array&$tablesArray of tables; see IDatabase::select $table
array&$fieldsArray of fields; see IDatabase::select $vars
array&$condsArray of conditions; see IDatabase::select $conds
array&$query_optionsArray of query options; see IDatabase::select $options
array&$join_condsArray of join conditions; see IDatabase::select $join_conds
FormOptions$optsWrapper for the current request options and their defaults
bool$isStructuredFiltersEnabledTrue if the Structured UI is currently enabled

Reimplemented in ChangesListBooleanFilterGroup, and ChangesListStringOptionsFilterGroup.

◆ setUnidirectionalConflict()

ChangesListFilterGroup::setUnidirectionalConflict ( $other,
$globalDescription,
$contextDescription )

Marks that the given ChangesListFilterGroup or ChangesListFilter conflicts with this object.

Internal use ONLY.

Parameters
ChangesListFilterGroup | ChangesListFilter$other
string$globalDescriptioni18n key for top-level conflict message
string$contextDescriptioni18n key for conflict message in this direction (when in UI context of $this object)

Definition at line 255 of file ChangesListFilterGroup.php.

Referenced by conflictsWith().

Member Data Documentation

◆ $conflictingFilters

array ChangesListFilterGroup::$conflictingFilters = []
protected

Array of associative arrays with conflict information.

See setUnidirectionalConflict

Definition at line 125 of file ChangesListFilterGroup.php.

◆ $conflictingGroups

array ChangesListFilterGroup::$conflictingGroups = []
protected

Array of associative arrays with conflict information.

See setUnidirectionalConflict

Definition at line 117 of file ChangesListFilterGroup.php.

◆ $filters

ChangesListFilter [] ChangesListFilterGroup::$filters
protected

Associative array of filters, as ChangesListFilter objects, with filter name as key.

Definition at line 101 of file ChangesListFilterGroup.php.

◆ $isFullCoverage

bool ChangesListFilterGroup::$isFullCoverage
protected

Whether this group is full coverage.

This means that checking every item in the group means no changes list (e.g. RecentChanges) entries are filtered out.

Definition at line 109 of file ChangesListFilterGroup.php.

◆ $name

string ChangesListFilterGroup::$name
protected

Name (internal identifier)

Definition at line 44 of file ChangesListFilterGroup.php.

◆ $priority

int ChangesListFilterGroup::$priority
protected

Priority integer.

Higher values means higher up in the group list.

Definition at line 94 of file ChangesListFilterGroup.php.

◆ $title

string ChangesListFilterGroup::$title
protected

i18n key for title

Definition at line 51 of file ChangesListFilterGroup.php.

◆ $type

string ChangesListFilterGroup::$type
protected

Type, from a TYPE constant of a subclass.

Definition at line 86 of file ChangesListFilterGroup.php.

◆ $whatsThisBody

string null ChangesListFilterGroup::$whatsThisBody
protected

i18n key for body of What's This?

Definition at line 65 of file ChangesListFilterGroup.php.

◆ $whatsThisHeader

string null ChangesListFilterGroup::$whatsThisHeader
protected

i18n key for header of What's This?

Definition at line 58 of file ChangesListFilterGroup.php.

◆ $whatsThisLinkText

string null ChangesListFilterGroup::$whatsThisLinkText
protected

i18n key for What's This? link

Definition at line 79 of file ChangesListFilterGroup.php.

◆ $whatsThisUrl

string null ChangesListFilterGroup::$whatsThisUrl
protected

URL of What's This? link.

Definition at line 72 of file ChangesListFilterGroup.php.


The documentation for this class was generated from the following file: