diff --git a/web/typo3conf/ext/ep_products/Classes/Controller/AjaxDateController.php b/web/typo3conf/ext/ep_products/Classes/Controller/AjaxDateController.php index 7e99dde3..6e0fe915 100644 --- a/web/typo3conf/ext/ep_products/Classes/Controller/AjaxDateController.php +++ b/web/typo3conf/ext/ep_products/Classes/Controller/AjaxDateController.php @@ -89,8 +89,8 @@ class AjaxDateController extends ActionController public function initializeAction() { - $forcedConceptUid = (int) $this->settings['forcedConceptUid']; - $this->processFilterSettingsArgument($forcedConceptUid); + $forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true); + $this->processFilterSettingsArgument($forcedConceptUids); } /** @@ -111,8 +111,8 @@ class AjaxDateController extends ActionController ]); } if ($filterSettings === null) { - $forcedConceptUid = (int) $this->settings['forcedConceptUid']; - $filterSettings = $this->filterService->getDefaultFilterSettings($forcedConceptUid, false); + $forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true); + $filterSettings = $this->filterService->getDefaultFilterSettings($forcedConceptUids, false); } $altProductLink = null; $altLabel = null; diff --git a/web/typo3conf/ext/ep_products/Classes/Controller/AjaxFilterpanelController.php b/web/typo3conf/ext/ep_products/Classes/Controller/AjaxFilterpanelController.php index 3e107dc6..c1aee5f1 100644 --- a/web/typo3conf/ext/ep_products/Classes/Controller/AjaxFilterpanelController.php +++ b/web/typo3conf/ext/ep_products/Classes/Controller/AjaxFilterpanelController.php @@ -61,8 +61,8 @@ class AjaxFilterpanelController extends ActionController public function initializeAction() { - $forcedConceptUid = (int) $this->settings['forcedConceptUid']; - $this->processFilterSettingsArgument($forcedConceptUid); + $forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true); + $this->processFilterSettingsArgument($forcedConceptUids); } /** diff --git a/web/typo3conf/ext/ep_products/Classes/Controller/AjaxSearchController.php b/web/typo3conf/ext/ep_products/Classes/Controller/AjaxSearchController.php index f3f69f60..c6c6ebc8 100644 --- a/web/typo3conf/ext/ep_products/Classes/Controller/AjaxSearchController.php +++ b/web/typo3conf/ext/ep_products/Classes/Controller/AjaxSearchController.php @@ -77,8 +77,8 @@ class AjaxSearchController extends ActionController public function initializeAction() { - $forcedConceptUid = (int) $this->settings['forcedConceptUid']; - $this->processFilterSettingsArgument($forcedConceptUid); + $forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true); + $this->processFilterSettingsArgument($forcedConceptUids); } /** @@ -90,11 +90,11 @@ class AjaxSearchController extends ActionController { $dateSelected = false; $organic = true; - $forcedConceptUid = (int) $this->settings['forcedConceptUid']; + $forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true); $excludedConceptUids = GeneralUtility::trimExplode(',', $this->settings['excludedConceptUids']); if ($filterSettings === null) { - $filterSettings = $this->filterService->getDefaultFilterSettings($forcedConceptUid); + $filterSettings = $this->filterService->getDefaultFilterSettings($forcedConceptUids); } if ($filterSettings->getDateFrom() !== null || $filterSettings->getDateTo() !== null) { @@ -104,7 +104,7 @@ class AjaxSearchController extends ActionController $searchResult = $this->searchResultService->getResult($filterSettings, $excludedConceptUids); if ($searchResult->getTotal() === 0) { - $filterSettings = $this->filterService->getDefaultFilterSettings($forcedConceptUid); + $filterSettings = $this->filterService->getDefaultFilterSettings($forcedConceptUids); $searchResult = $this->searchResultService->getResult($filterSettings, $excludedConceptUids); $organic = false; } diff --git a/web/typo3conf/ext/ep_products/Classes/Controller/AjaxSearchbarController.php b/web/typo3conf/ext/ep_products/Classes/Controller/AjaxSearchbarController.php index 46bacaa7..f38394b4 100644 --- a/web/typo3conf/ext/ep_products/Classes/Controller/AjaxSearchbarController.php +++ b/web/typo3conf/ext/ep_products/Classes/Controller/AjaxSearchbarController.php @@ -56,8 +56,8 @@ class AjaxSearchbarController extends ActionController public function initializeAction() { - $forcedConceptUid = $this->settings['forcedConceptUid']; - $this->processSearchParamsArgument($forcedConceptUid); + $forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true); + $this->processSearchParamsArgument($forcedConceptUids); } /** @@ -68,8 +68,8 @@ class AjaxSearchbarController extends ActionController { if ($searchParams === null) { $searchParams = new SearchParams(); - $forcedConceptUid = (int) $this->settings['forcedConceptUid']; - $filterSettings = $this->filterService->getDefaultFilterSettings($forcedConceptUid); + $forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true); + $filterSettings = $this->filterService->getDefaultFilterSettings($forcedConceptUids); } else { $filterSettings = FilterSettings::fromSearchParams($searchParams); } @@ -86,8 +86,8 @@ class AjaxSearchbarController extends ActionController public function resetAction() { $searchParams = new SearchParams(); - $forcedConceptUid = (int) $this->settings['forcedConceptUid']; - $filterSettings = $this->filterService->getDefaultFilterSettings($forcedConceptUid); + $forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true); + $filterSettings = $this->filterService->getDefaultFilterSettings($forcedConceptUids); $filterOptions = $this->filterService->getFilterOptions($filterSettings); return json_encode([ 'filterOptions' => $filterOptions, diff --git a/web/typo3conf/ext/ep_products/Classes/Controller/AjaxTableController.php b/web/typo3conf/ext/ep_products/Classes/Controller/AjaxTableController.php index 851f8467..5d12e13f 100644 --- a/web/typo3conf/ext/ep_products/Classes/Controller/AjaxTableController.php +++ b/web/typo3conf/ext/ep_products/Classes/Controller/AjaxTableController.php @@ -78,8 +78,8 @@ class AjaxTableController extends ActionController public function initializeAction() { - $forcedConceptUid = (int) $this->settings['forcedConceptUid']; - $this->processFilterSettingsArgument($forcedConceptUid); + $forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true); + $this->processFilterSettingsArgument($forcedConceptUids); } /** @@ -100,8 +100,8 @@ class AjaxTableController extends ActionController ) { if ($filterSettings === null) { - $forcedConceptUid = (int) $this->settings['forcedConceptUid']; - $filterSettings = $this->filterService->getDefaultFilterSettings($forcedConceptUid, false); + $forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true); + $filterSettings = $this->filterService->getDefaultFilterSettings($forcedConceptUids, false); } if ($reseller = $this->resellerDataService->getResellerForCurrentDomain()) { $paCode = $reseller['paCode']; diff --git a/web/typo3conf/ext/ep_products/Classes/Controller/SearchController.php b/web/typo3conf/ext/ep_products/Classes/Controller/SearchController.php index 4cc16036..0ac2424a 100644 --- a/web/typo3conf/ext/ep_products/Classes/Controller/SearchController.php +++ b/web/typo3conf/ext/ep_products/Classes/Controller/SearchController.php @@ -69,8 +69,8 @@ class SearchController extends ActionController public function initializeAction() { - $forcedConceptUid = (int) $this->settings['forcedConceptUid']; - $this->defaultFilterSettings = $this->filterService->getDefaultFilterSettings($forcedConceptUid); + $forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true); + $this->defaultFilterSettings = $this->filterService->getDefaultFilterSettings($forcedConceptUids); $excludedConceptUids = GeneralUtility::trimExplode(',', $this->settings['excludedConceptUids']); $this->defaultFilterOptions = $this->filterService->getFilterOptions($this->defaultFilterSettings, $excludedConceptUids); } @@ -99,9 +99,9 @@ class SearchController extends ActionController public function initializeSearchresultAction() { - $forcedConceptUid = $this->settings['forcedConceptUid']; - $this->processSearchParamsArgument($forcedConceptUid); - $this->processFilterSettingsArgument($forcedConceptUid); + $forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true); + $this->processSearchParamsArgument($forcedConceptUids); + $this->processFilterSettingsArgument($forcedConceptUids); } /** diff --git a/web/typo3conf/ext/ep_products/Classes/Domain/Model/FilterSettings.php b/web/typo3conf/ext/ep_products/Classes/Domain/Model/FilterSettings.php index 35f11457..c84dc51d 100644 --- a/web/typo3conf/ext/ep_products/Classes/Domain/Model/FilterSettings.php +++ b/web/typo3conf/ext/ep_products/Classes/Domain/Model/FilterSettings.php @@ -151,10 +151,6 @@ class FilterSettings implements \JsonSerializable { if ($dateFrom !== null) { $this->setDateFrom($dateFrom); - } else { - // Disabling the minimum date shouldn't be a problem since - // imported dates are never in the past - //$this->setDateFrom(new \DateTime('now')); } if ($dateTo !== null) { @@ -181,8 +177,8 @@ class FilterSettings implements \JsonSerializable break; } } - if ($searchParams->getConceptUid()) { - $filterSettings->setConceptUids([ $searchParams->getConceptUid() ]); + if ($searchParams->getConceptUids()) { + $filterSettings->setConceptUids($searchParams->getConceptUids()); } $filterSettings->setPriceRange($searchParams->getPriceRange()); $filterSettings->setPax($searchParams->getPax()); diff --git a/web/typo3conf/ext/ep_products/Classes/Domain/Model/SearchParams.php b/web/typo3conf/ext/ep_products/Classes/Domain/Model/SearchParams.php index ac597022..b44158c1 100644 --- a/web/typo3conf/ext/ep_products/Classes/Domain/Model/SearchParams.php +++ b/web/typo3conf/ext/ep_products/Classes/Domain/Model/SearchParams.php @@ -55,9 +55,9 @@ class SearchParams implements \JsonSerializable protected $destinationType; /** - * @var int + * @var array */ - protected $conceptUid = 0; + protected $conceptUids = []; /** * @var int @@ -163,19 +163,19 @@ class SearchParams implements \JsonSerializable } /** - * @return int + * @return array */ - public function getConceptUid() + public function getConceptUids() { - return $this->conceptUid; + return $this->conceptUids; } /** - * @param int $conceptUid + * @param array $conceptUids */ - public function setConceptUid($conceptUid) + public function setConceptUids(array $conceptUids) { - $this->conceptUid = $conceptUid; + $this->conceptUids = $conceptUids; } /** @@ -235,7 +235,7 @@ class SearchParams implements \JsonSerializable 'priceRange' => $this->getPriceRange(), 'destinationUid' => $this->getDestinationUid(), 'destinationType' => $this->getDestinationType(), - 'conceptUid' => $this->getConceptUid(), + 'conceptUids' => $this->getConceptUids(), 'nights' => $this->getNights(), 'pax' => $this->getPax(), 'pageUid' => $this->getPageUid(), @@ -244,4 +244,4 @@ class SearchParams implements \JsonSerializable ]; } -} \ No newline at end of file +} diff --git a/web/typo3conf/ext/ep_products/Classes/Service/FilterService.php b/web/typo3conf/ext/ep_products/Classes/Service/FilterService.php index 3f0f3196..c6007c2c 100644 --- a/web/typo3conf/ext/ep_products/Classes/Service/FilterService.php +++ b/web/typo3conf/ext/ep_products/Classes/Service/FilterService.php @@ -58,20 +58,20 @@ class FilterService implements SingletonInterface } /** - * @param int $forcedConceptUid + * @param array $forcedConceptUids * @param bool $respectBookableDaterange * * @return FilterSettings */ - public function getDefaultFilterSettings($forcedConceptUid = null, $respectBookableDaterange = true) + public function getDefaultFilterSettings(array $forcedConceptUids = [], $respectBookableDaterange = true) { [ $dateFrom, $dateTo ] = $this->constrainDateRange($this->getDateRange()); if (!$respectBookableDaterange) { $dateFrom = new \DateTime('now'); } $filterSettings = new FilterSettings($dateFrom, $dateTo); - if ($forcedConceptUid) { - $filterSettings->setConceptUids([ $forcedConceptUid ]); + if ($forcedConceptUids) { + $filterSettings->setConceptUids($forcedConceptUids); } return $filterSettings; diff --git a/web/typo3conf/ext/ep_products/Classes/Traits/RequestArgumentTypeConversionTrait.php b/web/typo3conf/ext/ep_products/Classes/Traits/RequestArgumentTypeConversionTrait.php index 289eb0c1..453f5d66 100644 --- a/web/typo3conf/ext/ep_products/Classes/Traits/RequestArgumentTypeConversionTrait.php +++ b/web/typo3conf/ext/ep_products/Classes/Traits/RequestArgumentTypeConversionTrait.php @@ -39,9 +39,9 @@ trait RequestArgumentTypeConversionTrait /** * Converts array to searchparams object - * @param null $forcedConceptUid + * @param array $forcedConceptUids */ - public function processSearchParamsArgument($forcedConceptUid = null) + public function processSearchParamsArgument(array $forcedConceptUids = []) { if ($this->request->hasArgument('searchParams')) { @@ -60,8 +60,8 @@ trait RequestArgumentTypeConversionTrait } } - if ($forcedConceptUid) { - $searchParamsObject->setConceptUid($forcedConceptUid); + if ($forcedConceptUids) { + $searchParamsObject->setConceptUids($forcedConceptUids); } $this->request->setArgument('searchParams', $searchParamsObject); @@ -70,9 +70,9 @@ trait RequestArgumentTypeConversionTrait /** * Converts urlencoded json or array to filtersettings object - * @param null $forcedConceptUid + * @param array $forcedConceptUids */ - public function processFilterSettingsArgument($forcedConceptUid = null) + public function processFilterSettingsArgument(array $forcedConceptUids = []) { if ($this->request->hasArgument('filterSettings')) { @@ -111,9 +111,9 @@ trait RequestArgumentTypeConversionTrait } } - if ($forcedConceptUid) { + if ($forcedConceptUids) { $conceptUids = $filterSettingsObject->getConceptUids(); - $conceptUids[] = $forcedConceptUid; + array_push($conceptUids, ...$forcedConceptUids); $filterSettingsObject->setConceptUids($conceptUids); } @@ -134,7 +134,7 @@ trait RequestArgumentTypeConversionTrait * @param mixed $value * @return mixed */ - static protected function convertType($value) + protected static function convertType($value) { if (\is_string($value) && (strtolower($value) === 'true' || strtolower($value) === 'false')) { return strtolower($value) === 'true'; diff --git a/web/typo3conf/ext/ep_products/Configuration/TypoScript/constants.txt b/web/typo3conf/ext/ep_products/Configuration/TypoScript/constants.txt index 3e32f07e..33489bc8 100644 --- a/web/typo3conf/ext/ep_products/Configuration/TypoScript/constants.txt +++ b/web/typo3conf/ext/ep_products/Configuration/TypoScript/constants.txt @@ -24,8 +24,8 @@ plugin.tx_epproducts { defaultDetailPageUid = # cat=plugin.tx_epproducts//a; type=string; label=Exclude products with concept UIDs from search result (CSV) excludedConceptUids = - # cat=plugin.tx_epproducts//a; type=string; label=Force concept UID in all search related parts - forcedConceptUid = + # cat=plugin.tx_epproducts//a; type=string; label=Force concept UID in all search related parts (CSV) + forcedConceptUids = # cat=plugin.tx_epproducts//a; type=string; label=Don't show availability info for products with these concept UIDs noInfoConceptUids = # cat=plugin.tx_epproducts//a; type=string; label=Room types for pricetables (CSV) diff --git a/web/typo3conf/ext/ep_products/Configuration/TypoScript/setup.txt b/web/typo3conf/ext/ep_products/Configuration/TypoScript/setup.txt index 5b76cacb..be4ba7e3 100644 --- a/web/typo3conf/ext/ep_products/Configuration/TypoScript/setup.txt +++ b/web/typo3conf/ext/ep_products/Configuration/TypoScript/setup.txt @@ -29,7 +29,7 @@ plugin.tx_epproducts { defaultSearchPageUid = {$plugin.tx_epproducts.settings.defaultSearchPageUid} defaultDetailPageUid = {$plugin.tx_epproducts.settings.defaultDetailPageUid} excludedConceptUids = {$plugin.tx_epproducts.settings.excludedConceptUids} - forcedConceptUid = {$plugin.tx_epproducts.settings.forcedConceptUid} + forcedConceptUids = {$plugin.tx_epproducts.settings.forcedConceptUids} noInfoConceptUids = {$plugin.tx_epproducts.settings.noInfoConceptUids} priceTableRoomTypes = {$plugin.tx_epproducts.settings.priceTableRoomTypes} searchLogIgnoreIps = {$plugin.tx_epproducts.settings.searchLogIgnoreIps}