From 78469ecf512392e99f77e9eccc0e58ffefe90098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Wed, 24 Aug 2022 18:37:57 +0200 Subject: [PATCH] Extend plugin to use either country or region --- .../ext/ep_products/Classes/Controller/CityController.php | 8 +++++--- .../Classes/Domain/Repository/CityRepository.php | 8 ++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/public/typo3conf/ext/ep_products/Classes/Controller/CityController.php b/public/typo3conf/ext/ep_products/Classes/Controller/CityController.php index 24478a06..2e3c8696 100644 --- a/public/typo3conf/ext/ep_products/Classes/Controller/CityController.php +++ b/public/typo3conf/ext/ep_products/Classes/Controller/CityController.php @@ -58,7 +58,7 @@ class CityController extends ActionController /** * @param City $city */ - public function detailAction(City $city = null) + public function detailAction(City $city = null): void { if (null === $city) { $cityUid = $this->settings['cityUid']; @@ -81,12 +81,14 @@ class CityController extends ActionController ]); } - public function teasergroupAction() + public function teasergroupAction(): void { $regionUid = (int)$this->settings['regionUid']; + $countryUid = (int)$this->settings['countryUid']; $season = $this->settings['season']; $citiesPid = (int)$this->settings['citiesStoragePid']; - $cities = $this->cityRepository->getTeasersByRegionAndSeason($regionUid, $season, $citiesPid); + + $cities = $this->cityRepository->getTeasersByCountryOrRegionAndSeason($regionUid, $countryUid, $season, $citiesPid); $data = $this->configurationManager->getContentObject()->data; $this->view->assign('data', $data); $this->view->assign('teasers', $cities); diff --git a/public/typo3conf/ext/ep_products/Classes/Domain/Repository/CityRepository.php b/public/typo3conf/ext/ep_products/Classes/Domain/Repository/CityRepository.php index e768b837..ba268ecb 100644 --- a/public/typo3conf/ext/ep_products/Classes/Domain/Repository/CityRepository.php +++ b/public/typo3conf/ext/ep_products/Classes/Domain/Repository/CityRepository.php @@ -31,17 +31,21 @@ use EP\EpProducts\Domain\Model\AbstractDestination; class CityRepository extends AbstractRepository { - public function getTeasersByRegionAndSeason(int $regionUid, string $season = 'w', int $storagePid = 0) + public function getTeasersByCountryOrRegionAndSeason(int $regionUid = 0, int $countryUid = 0, string $season = 'w', int $storagePid = 0) { if ($season === null) { $season = AbstractDestination::SEASON_WINTER; } $query = $this->createQuery(); $constraints = [ - $query->equals('region', $regionUid), $query->equals('season', $season), $query->equals('excludeFromTeasergroups', 0) ]; + if (0 < $regionUid) { + $constraints[] = $query->equals('region', $regionUid); + } elseif (0 < $countryUid) { + $constraints[] = $query->equals('country', $countryUid); + } if (0 < $storagePid) { $constraints[] = $query->equals('pid', $storagePid); }