/** * Get Custom Variables for Search Results * * @param VuFind\Search\Base\Results $results Search results * * @return array Associative array of custom variables */ protected function getSearchCustomVars($results) { if (!$this->customVars) { return []; } $vars = parent::getSearchCustomVars($results); $facetType = null; $facets = []; $facetTypes = []; $params = $results->getParams(); if ($params->getSearchType() == 'basic') { $vars['SearchHandler'] = $results->getParams()->getQuery()->getHandler(); } $currentType = $vars['SearchType']; $backendId = method_exists($results, 'getBackendId') ? $results->getBackendId() : ''; if ($backendId === 'MetaLib') { unset($vars['Facets']); unset($vars['FacetTypes']); unset($vars['View']); unset($vars['Limit']); unset($vars['Sort']); $vars['SearchType'] = 'MetaLib'; if ($currentType == 'advanced') { $vars['SearchType'] = 'MetaLibAdvanced'; } return $vars; } else { if ($backendId == 'Primo') { unset($vars['View']); $vars['SearchType'] = 'PCI'; if ($currentType == 'advanced') { $vars['SearchType'] = 'PCIAdvanced'; } } } foreach ($params->getFilterList() as $filterType => $filters) { $facetType = null; foreach ($filters as $filter) { if (!$facetType) { $facetTypes[] = $filter['field']; } $parts = $filter['value']; if ($backendId === 'Solr') { $parts = explode('/', $parts); $parts = array_slice($parts, 1, -1); $facetLevels = []; for ($i = 0; $i < count($parts); $i++) { $facetLevel = "{$i}/"; for ($j = 0; $j <= $i; $j++) { $facetLevel .= $parts[$j] . '/'; } $facetLevels[] = $this->translator->translate($facetLevel); } $facetStr = implode(' > ', $facetLevels); } else { $facetStr = $parts; } $facets[] = $filter['field'] . '|' . $facetStr; } } $vars['Facets'] = implode("\t", $facets); $vars['FacetTypes'] = implode("\t", $facetTypes); return $vars; }