diff --git a/module/VuFind/src/VuFind/Controller/CombinedController.php b/module/VuFind/src/VuFind/Controller/CombinedController.php index fb319fda7d44793965d446cbdd9be690498c2f1c..98ff2988a3c3d6270072a13c213d751393afd162 100644 --- a/module/VuFind/src/VuFind/Controller/CombinedController.php +++ b/module/VuFind/src/VuFind/Controller/CombinedController.php @@ -73,7 +73,8 @@ class CombinedController extends AbstractSearch $searchClassId = $this->params()->fromQuery('id'); $config = $this->getServiceLocator()->get('VuFind\Config')->get('combined') ->toArray(); - if (!isset($config[$searchClassId])) { + $tabConfig = $this->getTabConfig($config); + if (!isset($tabConfig[$searchClassId])) { throw new \Exception('Illegal ID'); } @@ -83,7 +84,7 @@ class CombinedController extends AbstractSearch $currentOptions = $options->get($searchClassId); list($controller, $action) = explode('-', $currentOptions->getSearchAction()); - $settings = $config[$searchClassId]; + $settings = $tabConfig[$searchClassId]; $this->adjustQueryForSettings($settings); $settings['view'] = $this->forwardTo($controller, $action); @@ -149,11 +150,7 @@ class CombinedController extends AbstractSearch ->toArray(); $supportsCart = false; $supportsCartOptions = []; - foreach ($config as $current => $settings) { - // Special case -- ignore recommendation config: - if ($current == 'Layout' || $current == 'RecommendationModules') { - continue; - } + foreach ($this->getTabConfig($config) as $current => $settings) { $this->adjustQueryForSettings($settings); $currentOptions = $options->get($current); $supportsCartOptions[] = $currentOptions->supportsCart(); @@ -274,4 +271,20 @@ class CombinedController extends AbstractSearch $query->noRecommend = 'top,side'; } } + + /** + * Get tab configuration based on the full combined results configuration. + * + * @param array $config Combined results configuration + * + * @return array + */ + protected function getTabConfig($config) + { + // Strip out non-tab sections of the configuration: + unset($config['Layout']); + unset($config['RecommendationModules']); + + return $config; + } }