Extend plugin to use either country or region
This commit is contained in:
@@ -58,7 +58,7 @@ class CityController extends ActionController
|
|||||||
/**
|
/**
|
||||||
* @param City $city
|
* @param City $city
|
||||||
*/
|
*/
|
||||||
public function detailAction(City $city = null)
|
public function detailAction(City $city = null): void
|
||||||
{
|
{
|
||||||
if (null === $city) {
|
if (null === $city) {
|
||||||
$cityUid = $this->settings['cityUid'];
|
$cityUid = $this->settings['cityUid'];
|
||||||
@@ -81,12 +81,14 @@ class CityController extends ActionController
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function teasergroupAction()
|
public function teasergroupAction(): void
|
||||||
{
|
{
|
||||||
$regionUid = (int)$this->settings['regionUid'];
|
$regionUid = (int)$this->settings['regionUid'];
|
||||||
|
$countryUid = (int)$this->settings['countryUid'];
|
||||||
$season = $this->settings['season'];
|
$season = $this->settings['season'];
|
||||||
$citiesPid = (int)$this->settings['citiesStoragePid'];
|
$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;
|
$data = $this->configurationManager->getContentObject()->data;
|
||||||
$this->view->assign('data', $data);
|
$this->view->assign('data', $data);
|
||||||
$this->view->assign('teasers', $cities);
|
$this->view->assign('teasers', $cities);
|
||||||
|
|||||||
@@ -31,17 +31,21 @@ use EP\EpProducts\Domain\Model\AbstractDestination;
|
|||||||
|
|
||||||
class CityRepository extends AbstractRepository
|
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) {
|
if ($season === null) {
|
||||||
$season = AbstractDestination::SEASON_WINTER;
|
$season = AbstractDestination::SEASON_WINTER;
|
||||||
}
|
}
|
||||||
$query = $this->createQuery();
|
$query = $this->createQuery();
|
||||||
$constraints = [
|
$constraints = [
|
||||||
$query->equals('region', $regionUid),
|
|
||||||
$query->equals('season', $season),
|
$query->equals('season', $season),
|
||||||
$query->equals('excludeFromTeasergroups', 0)
|
$query->equals('excludeFromTeasergroups', 0)
|
||||||
];
|
];
|
||||||
|
if (0 < $regionUid) {
|
||||||
|
$constraints[] = $query->equals('region', $regionUid);
|
||||||
|
} elseif (0 < $countryUid) {
|
||||||
|
$constraints[] = $query->equals('country', $countryUid);
|
||||||
|
}
|
||||||
if (0 < $storagePid) {
|
if (0 < $storagePid) {
|
||||||
$constraints[] = $query->equals('pid', $storagePid);
|
$constraints[] = $query->equals('pid', $storagePid);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user