/** * 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(); } $organisationInfoId = $this->organisationInfo->getOrganisationInfoId($item['value']); $list[$sector][] = ['name' => $displayText, 'link' => $link, 'organisation' => $organisationInfoId]; } 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; }