Fix incorrect treatment of empty search results

This commit is contained in:
Björn Fromme
2018-09-13 21:00:35 +02:00
parent 63361dd524
commit c68232de86
2 changed files with 14 additions and 10 deletions
@@ -91,31 +91,35 @@ class AjaxSearchController extends ActionController
{ {
$dateSelected = false; $dateSelected = false;
$organic = true; $organic = true;
$forcedConceptUid = (int) $this->settings['forcedConceptUid'];
$excludedConceptUids = GeneralUtility::trimExplode(',', $this->settings['excludedConceptUids']);
if ($filterSettings === null) { if ($filterSettings === null) {
$forcedConceptUid = (int) $this->settings['forcedConceptUid'];
$filterSettings = $this->filterService->getDefaultFilterSettings($forcedConceptUid); $filterSettings = $this->filterService->getDefaultFilterSettings($forcedConceptUid);
} elseif ($filterSettings->getDateFrom() !== null || $filterSettings->getDateTo() !== null) { }
if ($filterSettings->getDateFrom() !== null || $filterSettings->getDateTo() !== null) {
$dateSelected = true; $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); $searchResult = $this->searchResultService->getResult($filterSettings, $excludedConceptUids);
if ($searchResult->getTotal() === 0) { if ($searchResult->getTotal() === 0) {
$filterSettings = $this->filterService->getDefaultFilterSettings(); $filterSettings = $this->filterService->getDefaultFilterSettings($forcedConceptUid);
$searchResult = $this->searchResultService->getResult($filterSettings, $excludedConceptUids); $searchResult = $this->searchResultService->getResult($filterSettings, $excludedConceptUids);
$organic = false; $organic = false;
} }
$filterOptions = $this->filterService->getFilterOptions($filterSettings, $excludedConceptUids);
$options = [ $options = [
'defaultDetailPageUid' => $this->settings['defaultDetailPageUid'], 'defaultDetailPageUid' => $this->settings['defaultDetailPageUid'],
'referringPageUid' => $referringPageUid, 'referringPageUid' => $referringPageUid,
'filterSettings' => $filterSettings, 'filterSettings' => $filterSettings,
]; ];
$this->searchResultUrlService->process($searchResult, $options); $this->searchResultUrlService->process($searchResult, $options);
return json_encode([ return json_encode([
'data' => $searchResult->getData(), 'data' => $searchResult->getData(),
'filterOptions' => $filterOptions, 'filterOptions' => $filterOptions,
@@ -91,7 +91,7 @@ class FilterService implements SingletonInterface
} }
$filterOptionsData = static::$cache['filterOptions'][$key]; $filterOptionsData = static::$cache['filterOptions'][$key];
if (count($filterOptionsData) === 0) { if (count($filterOptionsData) === 0) {
return null; return new FilterOptions();
} }
$dateRange = $this->constrainDateRange($this->getDateRange()); $dateRange = $this->constrainDateRange($this->getDateRange());
return $this->preprocessFilterOptions($filterOptionsData, $dateRange); return $this->preprocessFilterOptions($filterOptionsData, $dateRange);