function WizardPluginBase::defaultDisplayFiltersUser
Same name in other branches
- 9 core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php \Drupal\views\Plugin\views\wizard\WizardPluginBase::defaultDisplayFiltersUser()
- 10 core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php \Drupal\views\Plugin\views\wizard\WizardPluginBase::defaultDisplayFiltersUser()
- 11.x core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php \Drupal\views\Plugin\views\wizard\WizardPluginBase::defaultDisplayFiltersUser()
Retrieves filter information based on user input for the default display.
Parameters
array $form: The full wizard form array.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the wizard form.
Return value
array An array of filter arrays keyed by ID. A sort array contains the options accepted by a filter handler.
2 calls to WizardPluginBase::defaultDisplayFiltersUser()
- Node::defaultDisplayFiltersUser in core/
modules/ node/ src/ Plugin/ views/ wizard/ Node.php - Retrieves filter information based on user input for the default display.
- WizardPluginBase::defaultDisplayFilters in core/
modules/ views/ src/ Plugin/ views/ wizard/ WizardPluginBase.php - Retrieves all filter information used by the default display.
2 methods override WizardPluginBase::defaultDisplayFiltersUser()
- Node::defaultDisplayFiltersUser in core/
modules/ node/ src/ Plugin/ views/ wizard/ Node.php - Retrieves filter information based on user input for the default display.
- NodeRevision::defaultDisplayFiltersUser in core/
modules/ node/ src/ Plugin/ views/ wizard/ NodeRevision.php - Retrieves filter information based on user input for the default display.
File
-
core/
modules/ views/ src/ Plugin/ views/ wizard/ WizardPluginBase.php, line 922
Class
- WizardPluginBase
- Base class for Views wizard plugins.
Namespace
Drupal\views\Plugin\views\wizardCode
protected function defaultDisplayFiltersUser(array $form, FormStateInterface $form_state) {
$filters = [];
if (($type = $form_state->getValue([
'show',
'type',
])) && $type != 'all') {
$bundle_key = $this->entityType
->getKey('bundle');
// Figure out the table where $bundle_key lives. It may not be the same as
// the base table for the view; the taxonomy vocabulary machine_name, for
// example, is stored in taxonomy_vocabulary, not taxonomy_term_data.
module_load_include('inc', 'views_ui', 'admin');
$fields = Views::viewsDataHelper()->fetchFields($this->base_table, 'filter');
$table = FALSE;
if (isset($fields[$this->base_table . '.' . $bundle_key])) {
$table = $this->base_table;
}
else {
foreach ($fields as $field_name => $value) {
if ($pos = strpos($field_name, '.' . $bundle_key)) {
$table = substr($field_name, 0, $pos);
break;
}
}
}
// Some entities have bundles but don't provide their bundle data on the
// base table. In this case the entities wizard should provide a
// relationship to the relevant data.
// @see \Drupal\node\Plugin\views\wizard\NodeRevision
if (!empty($table)) {
$table_data = Views::viewsData()->get($table);
// If the 'in' operator is being used, map the values to an array.
$handler = $table_data[$bundle_key]['filter']['id'];
$handler_definition = Views::pluginManager('filter')->getDefinition($handler);
if ($handler == 'in_operator' || is_subclass_of($handler_definition['class'], 'Drupal\\views\\Plugin\\views\\filter\\InOperator')) {
$value = [
$type => $type,
];
}
else {
$value = $type;
}
$filters[$bundle_key] = [
'id' => $bundle_key,
'table' => $table,
'field' => $bundle_key,
'value' => $value,
'entity_type' => isset($table_data['table']['entity type']) ? $table_data['table']['entity type'] : NULL,
'entity_field' => isset($table_data[$bundle_key]['entity field']) ? $table_data[$bundle_key]['entity field'] : NULL,
'plugin_id' => $handler,
];
}
}
return $filters;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.