/** * Return filters for a saved search. * * @param int $id Search hash * * @return mixed array of filters or false if the given search has no filters. */ protected function getSearchSettings($id) { $search = $this->table->get('Search')->select(['finna_search_id' => $id])->current(); if (empty($search)) { return false; } $sessId = $this->session->getId(); if ($search->session_id == $sessId) { $minSO = $search->getSearchObject(); $savedSearch = $minSO->deminify($this->results); $params = $savedSearch->getUrlQuery()->getParamArray(); $settings = []; if (isset($params['filter'])) { $settings['filters'] = $params['filter']; } $params = $savedSearch->getParams(); $daterange = $params->getSpatialDateRangeFilter(); if ($daterange) { $field = $params->getSpatialDateRangeField() . '_type'; $type = $daterange['type']; $settings['params'] = [$field => $type]; } return $settings; } return false; }
/** * List of current organisations. * * @return array */ public function __invoke() { $language = $this->translator->getLocale(); $cacheName = 'organisations_list_' . $language; $list = $this->cache->getItem($cacheName); if (!$list) { $emptyResults = $this->resultsManager->get('EmptySet'); $sectors = ['arc', 'lib', 'mus']; try { foreach ($sectors as $sector) { $list[$sector] = []; $results = $this->resultsManager->get('Solr'); $params = $results->getParams(); $params->addFacet('building', 'Building', false); $params->addFilter('sector_str_mv:0/' . $sector . '/'); $params->setLimit(0); $params->setFacetPrefix('0'); $params->setFacetLimit('-1'); $collection = $results->getFacetList()['building']['list']; foreach ($collection as $item) { $link = $emptyResults->getUrlQuery()->addFacet('building', $item['value']); $displayText = $item['displayText']; if ($displayText == $item['value']) { $displayText = $this->facetHelper->formatDisplayText($displayText)->getDisplayString(); } $list[$sector][] = ['name' => $displayText, 'link' => $link]; } usort($list[$sector], function ($a, $b) { return strtolower($a['name']) > strtolower($b['name']); }); } $this->cache->setItem($cacheName, $list); } catch (\VuFindSearch\Backend\Exception\BackendException $e) { foreach ($sectors as $sector) { $list[$sector] = []; } $this->logError('Error creating organisations list: ' . $e->getMessage()); } } return $list; }