From c68232de86ce4e53ec16ade428ac83df476c3e22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bjo=CC=88rn=20Fromme?= Date: Thu, 13 Sep 2018 21:00:35 +0200 Subject: [PATCH] Fix incorrect treatment of empty search results --- .../Controller/AjaxSearchController.php | 22 +++++++++++-------- .../Classes/Service/FilterService.php | 2 +- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/web/typo3conf/ext/ep_products/Classes/Controller/AjaxSearchController.php b/web/typo3conf/ext/ep_products/Classes/Controller/AjaxSearchController.php index 6b8da39b..b496aba9 100644 --- a/web/typo3conf/ext/ep_products/Classes/Controller/AjaxSearchController.php +++ b/web/typo3conf/ext/ep_products/Classes/Controller/AjaxSearchController.php @@ -91,31 +91,35 @@ class AjaxSearchController extends ActionController { $dateSelected = false; $organic = true; + $forcedConceptUid = (int) $this->settings['forcedConceptUid']; + $excludedConceptUids = GeneralUtility::trimExplode(',', $this->settings['excludedConceptUids']); if ($filterSettings === null) { - $forcedConceptUid = (int) $this->settings['forcedConceptUid']; $filterSettings = $this->filterService->getDefaultFilterSettings($forcedConceptUid); - } elseif ($filterSettings->getDateFrom() !== null || $filterSettings->getDateTo() !== null) { + } + + if ($filterSettings->getDateFrom() !== null || $filterSettings->getDateTo() !== null) { $dateSelected = true; } - $excludedConceptUids = GeneralUtility::trimExplode(',', $this->settings['excludedConceptUids']); - $filterOptions = $this->filterService->getFilterOptions($filterSettings, $excludedConceptUids); - if ($filterOptions === null) { - $filterSettings = $this->filterService->getDefaultFilterSettings(); - $filterOptions = $this->filterService->getFilterOptions($filterSettings, $excludedConceptUids); - } + $searchResult = $this->searchResultService->getResult($filterSettings, $excludedConceptUids); + if ($searchResult->getTotal() === 0) { - $filterSettings = $this->filterService->getDefaultFilterSettings(); + $filterSettings = $this->filterService->getDefaultFilterSettings($forcedConceptUid); $searchResult = $this->searchResultService->getResult($filterSettings, $excludedConceptUids); $organic = false; } + + $filterOptions = $this->filterService->getFilterOptions($filterSettings, $excludedConceptUids); + $options = [ 'defaultDetailPageUid' => $this->settings['defaultDetailPageUid'], 'referringPageUid' => $referringPageUid, 'filterSettings' => $filterSettings, ]; + $this->searchResultUrlService->process($searchResult, $options); + return json_encode([ 'data' => $searchResult->getData(), 'filterOptions' => $filterOptions, diff --git a/web/typo3conf/ext/ep_products/Classes/Service/FilterService.php b/web/typo3conf/ext/ep_products/Classes/Service/FilterService.php index fd1f1648..fdda4349 100644 --- a/web/typo3conf/ext/ep_products/Classes/Service/FilterService.php +++ b/web/typo3conf/ext/ep_products/Classes/Service/FilterService.php @@ -91,7 +91,7 @@ class FilterService implements SingletonInterface } $filterOptionsData = static::$cache['filterOptions'][$key]; if (count($filterOptionsData) === 0) { - return null; + return new FilterOptions(); } $dateRange = $this->constrainDateRange($this->getDateRange()); return $this->preprocessFilterOptions($filterOptionsData, $dateRange);