annotate core/modules/search/src/SearchPageRepository.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents af1871eacc83
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\search;
Chris@0 4
Chris@0 5 use Drupal\Core\Config\ConfigFactoryInterface;
Chris@18 6 use Drupal\Core\Entity\EntityTypeManagerInterface;
Chris@0 7
Chris@0 8 /**
Chris@0 9 * Provides a repository for Search Page config entities.
Chris@0 10 */
Chris@0 11 class SearchPageRepository implements SearchPageRepositoryInterface {
Chris@0 12
Chris@0 13 /**
Chris@0 14 * The config factory.
Chris@0 15 *
Chris@0 16 * @var \Drupal\Core\Config\ConfigFactoryInterface
Chris@0 17 */
Chris@0 18 protected $configFactory;
Chris@0 19
Chris@0 20 /**
Chris@0 21 * The search page storage.
Chris@0 22 *
Chris@0 23 * @var \Drupal\Core\Entity\EntityStorageInterface
Chris@0 24 */
Chris@0 25 protected $storage;
Chris@0 26
Chris@0 27 /**
Chris@0 28 * Constructs a new SearchPageRepository.
Chris@0 29 *
Chris@0 30 * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
Chris@0 31 * The config factory.
Chris@18 32 * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
Chris@18 33 * The entity type manager.
Chris@0 34 */
Chris@18 35 public function __construct(ConfigFactoryInterface $config_factory, EntityTypeManagerInterface $entity_type_manager) {
Chris@0 36 $this->configFactory = $config_factory;
Chris@18 37 $this->storage = $entity_type_manager->getStorage('search_page');
Chris@0 38 }
Chris@0 39
Chris@0 40 /**
Chris@0 41 * {@inheritdoc}
Chris@0 42 */
Chris@0 43 public function getActiveSearchPages() {
Chris@0 44 $ids = $this->getQuery()
Chris@0 45 ->condition('status', TRUE)
Chris@0 46 ->execute();
Chris@0 47 return $this->storage->loadMultiple($ids);
Chris@0 48 }
Chris@0 49
Chris@0 50 /**
Chris@0 51 * {@inheritdoc}
Chris@0 52 */
Chris@0 53 public function isSearchActive() {
Chris@0 54 return (bool) $this->getQuery()
Chris@0 55 ->condition('status', TRUE)
Chris@0 56 ->range(0, 1)
Chris@0 57 ->execute();
Chris@0 58 }
Chris@0 59
Chris@0 60 /**
Chris@0 61 * {@inheritdoc}
Chris@0 62 */
Chris@0 63 public function getIndexableSearchPages() {
Chris@0 64 return array_filter($this->getActiveSearchPages(), function (SearchPageInterface $search) {
Chris@0 65 return $search->isIndexable();
Chris@0 66 });
Chris@0 67 }
Chris@0 68
Chris@0 69 /**
Chris@0 70 * {@inheritdoc}
Chris@0 71 */
Chris@0 72 public function getDefaultSearchPage() {
Chris@0 73 // Find all active search pages (without loading them).
Chris@0 74 $search_pages = $this->getQuery()
Chris@0 75 ->condition('status', TRUE)
Chris@0 76 ->execute();
Chris@0 77
Chris@0 78 // If the default page is active, return it.
Chris@0 79 $default = $this->configFactory->get('search.settings')->get('default_page');
Chris@0 80 if (isset($search_pages[$default])) {
Chris@0 81 return $default;
Chris@0 82 }
Chris@0 83
Chris@0 84 // Otherwise, use the first active search page.
Chris@0 85 return is_array($search_pages) ? reset($search_pages) : FALSE;
Chris@0 86 }
Chris@0 87
Chris@0 88 /**
Chris@0 89 * {@inheritdoc}
Chris@0 90 */
Chris@0 91 public function clearDefaultSearchPage() {
Chris@0 92 $this->configFactory->getEditable('search.settings')->clear('default_page')->save();
Chris@0 93 }
Chris@0 94
Chris@0 95 /**
Chris@0 96 * {@inheritdoc}
Chris@0 97 */
Chris@0 98 public function setDefaultSearchPage(SearchPageInterface $search_page) {
Chris@0 99 $this->configFactory->getEditable('search.settings')->set('default_page', $search_page->id())->save();
Chris@0 100 $search_page->enable()->save();
Chris@0 101 }
Chris@0 102
Chris@0 103 /**
Chris@0 104 * {@inheritdoc}
Chris@0 105 */
Chris@0 106 public function sortSearchPages($search_pages) {
Chris@0 107 $entity_type = $this->storage->getEntityType();
Chris@0 108 uasort($search_pages, [$entity_type->getClass(), 'sort']);
Chris@0 109 return $search_pages;
Chris@0 110 }
Chris@0 111
Chris@0 112 /**
Chris@0 113 * Returns an entity query instance.
Chris@0 114 *
Chris@0 115 * @return \Drupal\Core\Entity\Query\QueryInterface
Chris@0 116 * The query instance.
Chris@0 117 */
Chris@0 118 protected function getQuery() {
Chris@0 119 return $this->storage->getQuery();
Chris@0 120 }
Chris@0 121
Chris@0 122 }