Chris@0: configFactory = $config_factory; Chris@18: $this->storage = $entity_type_manager->getStorage('search_page'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getActiveSearchPages() { Chris@0: $ids = $this->getQuery() Chris@0: ->condition('status', TRUE) Chris@0: ->execute(); Chris@0: return $this->storage->loadMultiple($ids); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function isSearchActive() { Chris@0: return (bool) $this->getQuery() Chris@0: ->condition('status', TRUE) Chris@0: ->range(0, 1) Chris@0: ->execute(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getIndexableSearchPages() { Chris@0: return array_filter($this->getActiveSearchPages(), function (SearchPageInterface $search) { Chris@0: return $search->isIndexable(); Chris@0: }); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getDefaultSearchPage() { Chris@0: // Find all active search pages (without loading them). Chris@0: $search_pages = $this->getQuery() Chris@0: ->condition('status', TRUE) Chris@0: ->execute(); Chris@0: Chris@0: // If the default page is active, return it. Chris@0: $default = $this->configFactory->get('search.settings')->get('default_page'); Chris@0: if (isset($search_pages[$default])) { Chris@0: return $default; Chris@0: } Chris@0: Chris@0: // Otherwise, use the first active search page. Chris@0: return is_array($search_pages) ? reset($search_pages) : FALSE; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function clearDefaultSearchPage() { Chris@0: $this->configFactory->getEditable('search.settings')->clear('default_page')->save(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function setDefaultSearchPage(SearchPageInterface $search_page) { Chris@0: $this->configFactory->getEditable('search.settings')->set('default_page', $search_page->id())->save(); Chris@0: $search_page->enable()->save(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function sortSearchPages($search_pages) { Chris@0: $entity_type = $this->storage->getEntityType(); Chris@0: uasort($search_pages, [$entity_type->getClass(), 'sort']); Chris@0: return $search_pages; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Returns an entity query instance. Chris@0: * Chris@0: * @return \Drupal\Core\Entity\Query\QueryInterface Chris@0: * The query instance. Chris@0: */ Chris@0: protected function getQuery() { Chris@0: return $this->storage->getQuery(); Chris@0: } Chris@0: Chris@0: }