Chris@0: getPluginCollection()->get($this->plugin); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Encapsulates the creation of the search page's LazyPluginCollection. Chris@0: * Chris@0: * @return \Drupal\Component\Plugin\LazyPluginCollection Chris@0: * The search page's plugin collection. Chris@0: */ Chris@0: protected function getPluginCollection() { Chris@0: if (!$this->pluginCollection) { Chris@0: $this->pluginCollection = new SearchPluginCollection($this->searchPluginManager(), $this->plugin, $this->configuration, $this->id()); Chris@0: } Chris@0: return $this->pluginCollection; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getPluginCollections() { Chris@0: return ['configuration' => $this->getPluginCollection()]; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function setPlugin($plugin_id) { Chris@0: $this->plugin = $plugin_id; Chris@0: $this->getPluginCollection()->addInstanceID($plugin_id); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function isIndexable() { Chris@0: return $this->status() && $this->getPlugin() instanceof SearchIndexingInterface; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function isDefaultSearch() { Chris@0: return $this->searchPageRepository()->getDefaultSearchPage() == $this->id(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getPath() { Chris@0: return $this->path; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getWeight() { Chris@0: return $this->weight; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function postCreate(EntityStorageInterface $storage) { Chris@0: parent::postCreate($storage); Chris@0: Chris@0: // @todo Use self::applyDefaultValue() once Chris@0: // https://www.drupal.org/node/2004756 is in. Chris@0: if (!isset($this->weight)) { Chris@0: $this->weight = $this->isDefaultSearch() ? -10 : 0; Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function postSave(EntityStorageInterface $storage, $update = TRUE) { Chris@0: parent::postSave($storage, $update); Chris@0: $this->routeBuilder()->setRebuildNeeded(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public static function postDelete(EntityStorageInterface $storage, array $entities) { Chris@0: parent::postDelete($storage, $entities); Chris@0: Chris@0: $search_page_repository = \Drupal::service('search.search_page_repository'); Chris@0: if (!$search_page_repository->isSearchActive()) { Chris@0: $search_page_repository->clearDefaultSearchPage(); Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public static function sort(ConfigEntityInterface $a, ConfigEntityInterface $b) { Chris@0: /** @var $a \Drupal\search\SearchPageInterface */ Chris@0: /** @var $b \Drupal\search\SearchPageInterface */ Chris@0: $a_status = (int) $a->status(); Chris@0: $b_status = (int) $b->status(); Chris@0: if ($a_status != $b_status) { Chris@0: return ($a_status > $b_status) ? -1 : 1; Chris@0: } Chris@0: return parent::sort($a, $b); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Wraps the route builder. Chris@0: * Chris@0: * @return \Drupal\Core\Routing\RouteBuilderInterface Chris@0: * An object for state storage. Chris@0: */ Chris@0: protected function routeBuilder() { Chris@0: return \Drupal::service('router.builder'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Wraps the config factory. Chris@0: * Chris@0: * @return \Drupal\Core\Config\ConfigFactoryInterface Chris@0: * A config factory object. Chris@0: */ Chris@0: protected function configFactory() { Chris@0: return \Drupal::service('config.factory'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Wraps the search page repository. Chris@0: * Chris@0: * @return \Drupal\search\SearchPageRepositoryInterface Chris@0: * A search page repository object. Chris@0: */ Chris@0: protected function searchPageRepository() { Chris@0: return \Drupal::service('search.search_page_repository'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Wraps the search plugin manager. Chris@0: * Chris@0: * @return \Drupal\Component\Plugin\PluginManagerInterface Chris@0: * A search plugin manager object. Chris@0: */ Chris@0: protected function searchPluginManager() { Chris@0: return \Drupal::service('plugin.manager.search'); Chris@0: } Chris@0: Chris@0: }