MediaWiki  1.34.0
ChangesListBooleanFilter.php
Go to the documentation of this file.
1 <?php
25 
37  protected $showHide;
38 
46 
52  protected $defaultValue;
53 
59  protected $queryCallable;
60 
66  protected $activeValue;
67 
108  public function __construct( $filterDefinition ) {
109  parent::__construct( $filterDefinition );
110 
111  if ( isset( $filterDefinition['showHide'] ) ) {
112  $this->showHide = $filterDefinition['showHide'];
113  }
114 
115  $this->isReplacedInStructuredUi = $filterDefinition['isReplacedInStructuredUi'] ?? false;
116 
117  if ( isset( $filterDefinition['default'] ) ) {
118  $this->setDefault( $filterDefinition['default'] );
119  } else {
120  throw new MWException( 'You must set a default' );
121  }
122 
123  if ( isset( $filterDefinition['queryCallable'] ) ) {
124  $this->queryCallable = $filterDefinition['queryCallable'];
125  }
126 
127  $this->activeValue = $filterDefinition['activeValue'] ?? true;
128  }
129 
136  public function getDefault( $structuredUI = false ) {
137  return $this->isReplacedInStructuredUi && $structuredUI ?
138  !$this->activeValue :
140  }
141 
149  public function setDefault( $defaultValue ) {
150  $this->defaultValue = (bool)$defaultValue;
151  }
152 
156  public function getShowHide() {
157  return $this->showHide;
158  }
159 
163  public function displaysOnUnstructuredUi() {
164  return (bool)$this->showHide;
165  }
166 
171  return $this->isReplacedInStructuredUi ||
172  parent::isFeatureAvailableOnStructuredUi();
173  }
174 
187  public function modifyQuery( IDatabase $dbr, ChangesListSpecialPage $specialPage,
188  &$tables, &$fields, &$conds, &$query_options, &$join_conds
189  ) {
190  if ( $this->queryCallable === null ) {
191  return;
192  }
193 
195  get_class( $specialPage ),
196  $specialPage->getContext(),
197  $dbr,
198  $tables,
199  $fields,
200  $conds,
201  $query_options,
202  $join_conds
203  );
204  }
205 
209  public function getJsData() {
210  $output = parent::getJsData();
211 
212  $output['default'] = $this->defaultValue;
213 
214  return $output;
215  }
216 
220  public function isSelected( FormOptions $opts ) {
221  return !$opts[ $this->getName() ] &&
222  array_filter(
223  $this->getSiblings(),
224  function ( ChangesListBooleanFilter $sibling ) use ( $opts ) {
225  return $opts[ $sibling->getName() ];
226  }
227  );
228  }
229 
235  public function isActive( FormOptions $opts, $isStructuredUI ) {
236  if ( $this->isReplacedInStructuredUi && $isStructuredUI ) {
237  return false;
238  }
239 
240  return $opts[ $this->getName() ] === $this->activeValue;
241  }
242 }
ChangesListBooleanFilter\$defaultValue
$defaultValue
Default.
Definition: ChangesListBooleanFilter.php:52
ChangesListBooleanFilter\getDefault
getDefault( $structuredUI=false)
Get the default value.
Definition: ChangesListBooleanFilter.php:136
ChangesListBooleanFilter\getShowHide
getShowHide()
Definition: ChangesListBooleanFilter.php:156
ChangesListBooleanFilter\isSelected
isSelected(FormOptions $opts)
Checks whether this filter is selected in the provided options.bool
Definition: ChangesListBooleanFilter.php:220
ChangesListSpecialPage
Special page which uses a ChangesList to show query results.
Definition: ChangesListSpecialPage.php:37
ChangesListBooleanFilter
Represents a hide-based boolean filter (used on ChangesListSpecialPage and descendants)
Definition: ChangesListBooleanFilter.php:31
ChangesListFilter\getName
getName()
Definition: ChangesListFilter.php:268
ChangesListBooleanFilter\isFeatureAvailableOnStructuredUi
isFeatureAvailableOnStructuredUi()
Checks whether an equivalent feature for this filter is available on the structured UI....
Definition: ChangesListBooleanFilter.php:170
Wikimedia\Rdbms\IDatabase
Basic database interface for live and lazy-loaded relation database handles.
Definition: IDatabase.php:38
ChangesListBooleanFilter\isActive
isActive(FormOptions $opts, $isStructuredUI)
Definition: ChangesListBooleanFilter.php:235
$dbr
$dbr
Definition: testCompression.php:50
MWException
MediaWiki exception.
Definition: MWException.php:26
ChangesListBooleanFilter\__construct
__construct( $filterDefinition)
Create a new filter with the specified configuration.
Definition: ChangesListBooleanFilter.php:108
ChangesListFilter\getSiblings
getSiblings()
Get filters in the same group.
Definition: ChangesListFilter.php:493
ChangesListBooleanFilter\$activeValue
$activeValue
Value that defined when this filter is considered active.
Definition: ChangesListBooleanFilter.php:66
ChangesListBooleanFilter\setDefault
setDefault( $defaultValue)
Sets default.
Definition: ChangesListBooleanFilter.php:149
$output
$output
Definition: SyntaxHighlight.php:335
SpecialPage\getContext
getContext()
Gets the context this SpecialPage is executed in.
Definition: SpecialPage.php:692
ChangesListBooleanFilter\modifyQuery
modifyQuery(IDatabase $dbr, ChangesListSpecialPage $specialPage, &$tables, &$fields, &$conds, &$query_options, &$join_conds)
Modifies the query to include the filter.
Definition: ChangesListBooleanFilter.php:187
ChangesListBooleanFilter\$queryCallable
$queryCallable
Callable used to do the actual query modification; see constructor.
Definition: ChangesListBooleanFilter.php:59
ChangesListBooleanFilter\displaysOnUnstructuredUi
displaysOnUnstructuredUi()
Checks whether the filter should display on the unstructured UI.bool Whether to display
Definition: ChangesListBooleanFilter.php:163
ChangesListBooleanFilter\$isReplacedInStructuredUi
$isReplacedInStructuredUi
Whether there is a feature designed to replace this filter available on the structured UI.
Definition: ChangesListBooleanFilter.php:45
ChangesListFilter
Represents a filter (used on ChangesListSpecialPage and descendants)
Definition: ChangesListFilter.php:29
ChangesListBooleanFilter\$showHide
$showHide
Main unstructured UI i18n key.
Definition: ChangesListBooleanFilter.php:37
FormOptions
Helper class to keep track of options when mixing links and form elements.
Definition: FormOptions.php:35
ChangesListBooleanFilter\getJsData
getJsData()
Gets the JS data required by the front-end of the structured UI.array Associative array Data required...
Definition: ChangesListBooleanFilter.php:209