protected function build($slug, Request $request, Application $app) { $this->parameters = array('country' => null, 'parentAreas' => array(), 'areaIsDuplicateOf' => null); if (strpos($slug, "-")) { $slug = array_shift(explode("-", $slug, 2)); } $ar = new AreaRepository(); $this->parameters['area'] = $ar->loadBySlug($app['currentSite'], $slug); if (!$this->parameters['area']) { return false; } $checkArea = $this->parameters['area']->getParentAreaId() ? $ar->loadById($this->parameters['area']->getParentAreaId()) : null; while ($checkArea) { array_unshift($this->parameters['parentAreas'], $checkArea); $checkArea = $checkArea->getParentAreaId() ? $ar->loadById($checkArea->getParentAreaId()) : null; } if ($app['currentUser']) { $uwgr = new UserWatchesAreaRepository(); $uwg = $uwgr->loadByUserAndArea($app['currentUser'], $this->parameters['area']); $this->parameters['currentUserWatchesArea'] = $uwg && $uwg->getIsWatching(); } $cr = new CountryRepository(); $this->parameters['country'] = $cr->loadById($this->parameters['area']->getCountryID()); $areaRepoBuilder = new AreaRepositoryBuilder(); $areaRepoBuilder->setSite($app['currentSite']); $areaRepoBuilder->setCountry($this->parameters['country']); $areaRepoBuilder->setParentArea($this->parameters['area']); $areaRepoBuilder->setIncludeDeleted(false); $this->parameters['childAreas'] = $areaRepoBuilder->fetchAll(); if ($this->parameters['area']->getIsDuplicateOfId()) { $this->parameters['areaIsDuplicateOf'] = $ar->loadByID($this->parameters['area']->getIsDuplicateOfId()); } $app['currentUserActions']->set("org.openacalendar", "areaHistory", true); $app['currentUserActions']->set("org.openacalendar", "actionAreaEditDetails", $app['currentUserPermissions']->hasPermission("org.openacalendar", "AREAS_CHANGE") && !$this->parameters['area']->getIsDeleted()); $app['currentUserActions']->set("org.openacalendar", "actionAreaNew", $app['currentUserPermissions']->hasPermission("org.openacalendar", "AREAS_CHANGE") && !$this->parameters['area']->getIsDeleted()); return true; }
protected function processThingsToDoAfterGetUser(Request $request, Application $app) { global $CONFIG; $eventRepo = new EventRepository(); $areaRepo = new AreaRepository(); $event = null; $area = null; // Any events to add? if ($request->query->has("event")) { if ($CONFIG->isSingleSiteMode) { $event = $eventRepo->loadBySiteIDAndEventSlug($CONFIG->singleSiteID, $request->query->get("event")); } else { $siteRepo = new SiteRepository(); $site = $siteRepo->loadBySlug($request->query->get("eventSite")); if ($site) { $event = $eventRepo->loadBySlug($site, $request->query->get("event")); } } if ($event && $event->getIsAllowedForAfterGetUser()) { if (!$app['websession']->hasArray("afterGetUserAddEvents")) { $app['websession']->setArray("afterGetUserAddEvents", array($event->getId())); } else { if (!in_array($event->getId(), $app['websession']->getArray("afterGetUserAddEvents"))) { $app['websession']->appendArray("afterGetUserAddEvents", $event->getId()); } } } } // Any areas to add? if ($request->query->has("area")) { if ($CONFIG->isSingleSiteMode) { $area = $areaRepo->loadBySiteIDAndAreaSlug($CONFIG->singleSiteID, $request->query->get("area")); } else { $siteRepo = new SiteRepository(); $site = $siteRepo->loadBySlug($request->query->get("areaSite")); if ($site) { $area = $areaRepo->loadBySlug($site, $request->query->get("area")); } } if ($area && $area->getIsAllowedForAfterGetUser()) { if (!$app['websession']->hasArray("afterGetUserAddAreas")) { $app['websession']->setArray("afterGetUserAddAreas", array($area->getId())); } else { if (!in_array($area->getId(), $app['websession']->getArray("afterGetUserAddAreas"))) { $app['websession']->appendArray("afterGetUserAddAreas", $area->getId()); } } } } // Remove events? if ($request->query->has("removeEventId")) { $app['websession']->removeValueFromArray("afterGetUserAddEvents", $request->query->has("removeEventId")); } // Remove areas? if ($request->query->has("removeAreaId")) { $app['websession']->removeValueFromArray("afterGetUserAddAreas", $request->query->has("removeAreaId")); } // load events to show user $this->parameters['afterGetUserAddEvents'] = array(); if ($app['websession']->hasArray("afterGetUserAddEvents")) { foreach ($app['websession']->getArray("afterGetUserAddEvents") as $eventID) { if ($event != null && $eventID == $event->getId()) { if ($event->getIsAllowedForAfterGetUser()) { $this->parameters['afterGetUserAddEvents'][] = $event; } } else { $eventTmp = $eventRepo->loadByID($eventID); if ($eventTmp && $eventTmp->getIsAllowedForAfterGetUser()) { $this->parameters['afterGetUserAddEvents'][] = $eventTmp; } } } } // load areas to show user $this->parameters['afterGetUserAddAreas'] = array(); if ($app['websession']->hasArray("afterGetUserAddAreas")) { foreach ($app['websession']->getArray("afterGetUserAddAreas") as $areaID) { if ($area != null && $areaID == $area->getId()) { if ($area->getIsAllowedForAfterGetUser()) { $this->parameters['afterGetUserAddAreas'][] = $area; } } else { $areaTmp = $areaRepo->loadByID($areaID); if ($areaTmp && $areaTmp->getIsAllowedForAfterGetUser()) { $this->parameters['afterGetUserAddAreas'][] = $areaTmp; } } } } }