basePluginId = $base_plugin_id; $this->viewStorage = $view_storage; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container, $base_plugin_id) { return new static( $base_plugin_id, $container->get('entity.manager')->getStorage('view') ); } /** * {@inheritdoc} */ public function getDerivativeDefinition($derivative_id, $base_plugin_definition) { if (!empty($this->derivatives) && !empty($this->derivatives[$derivative_id])) { return $this->derivatives[$derivative_id]; } $this->getDerivativeDefinitions($base_plugin_definition); return $this->derivatives[$derivative_id]; } /** * {@inheritdoc} */ public function getDerivativeDefinitions($base_plugin_definition) { // Check all Views for displays with an exposed filter block. foreach ($this->viewStorage->loadMultiple() as $view) { // Do not return results for disabled views. if (!$view->status()) { continue; } $executable = $view->getExecutable(); $executable->initDisplay(); foreach ($executable->displayHandlers as $display) { if (isset($display) && $display->getOption('exposed_block')) { // Add a block definition for the block. if ($display->usesExposedFormInBlock()) { $delta = $view->id() . '-' . $display->display['id']; $desc = t('Exposed form: @view-@display_id', ['@view' => $view->id(), '@display_id' => $display->display['id']]); $this->derivatives[$delta] = [ 'admin_label' => $desc, 'config_dependencies' => [ 'config' => [ $view->getConfigDependencyName(), ] ] ]; $this->derivatives[$delta] += $base_plugin_definition; } } } } return $this->derivatives; } }