public function CoreViewsExposedFilterDeriver::getDerivativeDefinitions in Core Views Facets 8
Gets the definition of all derivatives of a base plugin.
Parameters
array $base_plugin_definition: The definition array of the base plugin.
Return value
array An array of full derivative definitions keyed on derivative id.
Overrides DeriverInterface::getDerivativeDefinitions
See also
getDerivativeDefinition()
File
- src/
Plugin/ facets/ facet_source/ CoreViewsExposedFilterDeriver.php, line 64
Class
- CoreViewsExposedFilterDeriver
- Derives a facet source plugin definition for views with exposed filters.
Namespace
Drupal\core_views_facets\Plugin\facets\facet_sourceCode
public function getDerivativeDefinitions($base_plugin_definition) {
if (!isset($this->derivatives[$this->basePluginId])) {
$plugin_derivatives = [];
/** @var \Drupal\views\Entity\View[] $all_views */
$all_views = $this->viewStorage
->loadMultiple();
foreach ($all_views as $view) {
// Do not return results for disabled views.
if (!$view
->status()) {
continue;
}
$displays = $view
->get('display');
foreach ($displays as $name => $display_info) {
if ($display_info['display_plugin'] === 'page') {
$view_executable = $view
->getExecutable();
$view_executable
->setDisplay($name);
if ($view_executable && $view_executable
->getQuery() instanceof Sql) {
$exposed_filter_available = FALSE;
foreach ($view_executable
->getHandlers('filter', $name) as $filter) {
if (!empty($filter['exposed']) && $filter['exposed'] == TRUE) {
$exposed_filter_available = TRUE;
}
}
if (!$exposed_filter_available) {
continue;
}
$machine_name = $view
->id() . '__' . $name;
$plugin_derivatives[$machine_name] = [
'id' => $this->basePluginId . ':' . $machine_name,
'label' => $this
->t('Core view exposed filter: %view_name, display: %display_title', [
'%view_name' => $view
->label(),
'%display_title' => $display_info['display_title'],
]),
'description' => $this
->t('Provides a facet source.'),
'display_id' => $machine_name,
'config_dependencies' => [
'config' => [
$view
->getConfigDependencyName(),
],
],
'view_id' => $view
->id(),
'view_display' => $name,
] + $base_plugin_definition;
}
}
}
}
$this->derivatives[$this->basePluginId] = $plugin_derivatives;
}
return $this->derivatives[$this->basePluginId];
}