diff --git a/module/VuFind/src/VuFind/AjaxHandler/GetSideFacets.php b/module/VuFind/src/VuFind/AjaxHandler/GetSideFacets.php index 7e2c9d67e934da7f46cf26d2b037c12d8fc6ade7..b8568d7a5a39e1cdbb3c20c1f9c42a07a28f519b 100644 --- a/module/VuFind/src/VuFind/AjaxHandler/GetSideFacets.php +++ b/module/VuFind/src/VuFind/AjaxHandler/GetSideFacets.php @@ -124,20 +124,20 @@ class GetSideFacets extends \VuFind\AjaxHandler\AbstractBase // Allow both GET and POST variables: $request = $params->fromQuery() + $params->fromPost(); - $results = $this->getFacetResults($request); + $configIndex = $request['configIndex'] ?? 0; + $configLocation = $request['location'] ?? 'side'; + $results = $this->getFacetResults($request, $configIndex, $configLocation); if ($results instanceof \VuFind\Search\EmptySet\Results) { $this->logError('Faceting request failed'); return $this->formatResponse('', self::STATUS_HTTP_ERROR); } - $recommend = $results->getRecommendations($request['location'] ?? 'side'); - $configIndex = $request['configIndex'] ?? 0; - $recommend = $recommend[(int)$configIndex] ?? []; + $recommend = $results->getRecommendations($configLocation)[0]; $context = [ 'recommend' => $recommend, 'params' => $results->getParams(), - 'searchClassId' => DEFAULT_SEARCH_BACKEND + 'searchClassId' => $request['searchClassId'] ?? DEFAULT_SEARCH_BACKEND ]; if (isset($request['enabledFacets'])) { // Render requested facets separately @@ -158,24 +158,25 @@ class GetSideFacets extends \VuFind\AjaxHandler\AbstractBase /** * Perform search and return the results * - * @param array $request Request params + * @param array $request Request params + * @param string $index Index of SideFacetsDeferred in configuration + * @param string $loc Location where SideFacetsDeferred is configured * * @return Results */ - protected function getFacetResults(array $request) + protected function getFacetResults(array $request, $index, $loc) { - $rManager = $this->recommendPluginManager; - $setupCallback = function ($runner, $params, $searchId) use ($rManager) { - $listener = new RecommendListener($rManager, $searchId); + $setupCallback = function ($runner, $params, $searchId) use ($index, $loc) { + $listener = new RecommendListener( + $this->recommendPluginManager, $searchId + ); $config = []; $rawConfig = $params->getOptions() ->getRecommendationSettings($params->getSearchHandler()); - foreach ($rawConfig['side'] as $value) { - $settings = explode(':', $value); - if ($settings[0] === 'SideFacetsDeferred') { - $settings[0] = 'SideFacets'; - $config['side'][] = implode(':', $settings); - } + $settings = explode(':', $rawConfig[$loc][$index] ?? ''); + if ($settings[0] === 'SideFacetsDeferred') { + $settings[0] = 'SideFacets'; + $config[$loc][] = implode(':', $settings); } $listener->setConfig($config); $listener->attach($runner->getEventManager()->getSharedManager());