protected function build($siteid, $slug, Request $request, Application $app) { $this->parameters = array('user' => null, 'eventCreated' => null, 'eventDupe' => null); $sr = new SiteRepository(); $this->parameters['site'] = $sr->loadById($siteid); if (!$this->parameters['site']) { $app->abort(404); } $repo = new NewEventDraftRepository(); $this->parameters['draft'] = $repo->loadBySlugForSite($slug, $this->parameters['site']); if (!$this->parameters['draft']) { $app->abort(404); } if ($this->parameters['draft']->getUserAccountId()) { $ur = new UserAccountRepository(); $this->parameters['user'] = $ur->loadByID($this->parameters['draft']->getUserAccountId()); } if ($this->parameters['draft']->getEventId()) { $er = new EventRepository(); $this->parameters['eventCreated'] = $er->loadByID($this->parameters['draft']->getEventId()); } if ($this->parameters['draft']->getWasExistingEventId()) { $er = new EventRepository(); $this->parameters['eventDupe'] = $er->loadByID($this->parameters['draft']->getWasExistingEventId()); } }
protected function build($slug, Request $request, Application $app) { global $CONFIG; $this->parameters = array('group' => null, 'venue' => null, 'country' => null, 'area' => null, 'parentAreas' => array(), 'childAreas' => array(), 'importurl' => null, 'eventIsDuplicateOf' => null); if (strpos($slug, "-")) { $slug = array_shift(explode("-", $slug, 2)); } $eventRepository = new EventRepository(); $this->parameters['event'] = $eventRepository->loadBySlug($app['currentSite'], $slug); if (!$this->parameters['event']) { return false; } if ($this->parameters['event']->getCountryID()) { $cr = new CountryRepository(); $this->parameters['country'] = $cr->loadById($this->parameters['event']->getCountryID()); } $areaID = null; if ($this->parameters['event']->getVenueID()) { $cr = new VenueRepository(); $this->parameters['venue'] = $cr->loadById($this->parameters['event']->getVenueID()); $areaID = $this->parameters['venue']->getAreaId(); } else { if ($this->parameters['event']->getAreaId()) { $areaID = $this->parameters['event']->getAreaId(); } } if ($areaID) { $ar = new AreaRepository(); $this->parameters['area'] = $ar->loadById($areaID); 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 ($this->parameters['event']->getImportUrlId()) { $iur = new ImportURLRepository(); $this->parameters['importurl'] = $iur->loadById($this->parameters['event']->getImportUrlId()); } $groupRB = new GroupRepositoryBuilder(); $groupRB->setEvent($this->parameters['event']); $this->parameters['groups'] = $groupRB->fetchAll(); if ($this->parameters['event']->getGroupId()) { foreach ($this->parameters['groups'] as $group) { if ($group->getId() == $this->parameters['event']->getGroupId()) { $this->parameters['group'] = $group; } } } if ($this->parameters['event']->getIsDuplicateOfId()) { $this->parameters['eventIsDuplicateOf'] = $eventRepository->loadByID($this->parameters['event']->getIsDuplicateOfId()); } $app['currentUserActions']->set("org.openacalendar", "eventHistory", true); $app['currentUserActions']->set("org.openacalendar", "eventEditDetails", $app['currentUserPermissions']->hasPermission("org.openacalendar", "EVENTS_CHANGE") && !$this->parameters['event']->getIsDeleted() && !$this->parameters['event']->getIsCancelled()); $app['currentUserActions']->set("org.openacalendar", "eventEditDetailsRollback", $app['currentUserActions']->has("org.openacalendar", "eventEditDetails")); $app['currentUserActions']->set("org.openacalendar", "eventEditVenue", $app['currentUserPermissions']->hasPermission("org.openacalendar", "EVENTS_CHANGE") && !$this->parameters['event']->getIsDeleted() && !$this->parameters['event']->getIsCancelled() && $app['currentSite']->getIsFeaturePhysicalEvents()); $app['currentUserActions']->set("org.openacalendar", "eventEditTags", $app['currentUserPermissions']->hasPermission("org.openacalendar", "EVENTS_CHANGE") && !$this->parameters['event']->getIsDeleted() && !$this->parameters['event']->getIsCancelled() && $app['currentSite']->getIsFeatureTag()); $app['currentUserActions']->set("org.openacalendar", "eventEditGroups", $app['currentUserPermissions']->hasPermission("org.openacalendar", "EVENTS_CHANGE") && !$this->parameters['event']->getIsDeleted() && !$this->parameters['event']->getIsCancelled() && $app['currentSite']->getIsFeatureGroup()); $app['currentUserActions']->set("org.openacalendar", "eventEditMedia", $app['currentUserPermissions']->hasPermission("org.openacalendar", "EVENTS_CHANGE") && !$this->parameters['event']->getIsDeleted() && !$this->parameters['event']->getIsCancelled() && $CONFIG->isFileStore()); $app['currentUserActions']->set("org.openacalendar", "eventRecur", $app['currentUserPermissions']->hasPermission("org.openacalendar", "EVENTS_CHANGE") && !$this->parameters['event']->getIsImported() && !$this->parameters['event']->getIsDeleted() && !$this->parameters['event']->getIsCancelled()); $app['currentUserActions']->set("org.openacalendar", "eventDelete", $app['currentUserPermissions']->hasPermission("org.openacalendar", "EVENTS_CHANGE") && !$this->parameters['event']->getIsImported() && !$this->parameters['event']->getIsDeleted()); $app['currentUserActions']->set("org.openacalendar", "eventCancel", $app['currentUserPermissions']->hasPermission("org.openacalendar", "EVENTS_CHANGE") && !$this->parameters['event']->getIsImported() && !$this->parameters['event']->getIsCancelled() && !$this->parameters['event']->getIsDeleted()); $app['currentUserActions']->set("org.openacalendar", "eventUndelete", $app['currentUserPermissions']->hasPermission("org.openacalendar", "EVENTS_CHANGE") && !$this->parameters['event']->getIsImported() && $this->parameters['event']->getIsDeleted()); $app['currentUserActions']->set("org.openacalendar", "eventUncancel", $app['currentUserPermissions']->hasPermission("org.openacalendar", "EVENTS_CHANGE") && !$this->parameters['event']->getIsImported() && $this->parameters['event']->getIsCancelled()); 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; } } } } }
protected function getNewAndHistoriesForContentsToSend($contentsToSend) { $histories = array(); foreach ($contentsToSend as $contentToSend) { foreach ($contentToSend->getHistories() as $history) { if (!$this->isHistoryInHistories($history, $histories)) { $histories[] = $history; } } } // sort $usort = function ($a, $b) { if ($a->getCreatedAt()->getTimestamp() == $b->getCreatedAt()->getTimestamp()) { return 0; } else { if ($a->getCreatedAt()->getTimestamp() > $b->getCreatedAt()->getTimestamp()) { return -1; } else { return 1; } } }; usort($histories, $usort); $newEvents = array(); $eventRepo = new EventRepository(); foreach ($histories as $history) { if ($history instanceof EventHistoryModel && $history->getIsNew()) { $event = $eventRepo->loadByID($history->getId()); if ($event && !$event->getIsDeleted() && !$event->getIsCancelled()) { $newEvents[] = $event; } } } return array($newEvents, $histories); }
public function testAddCustomFieldThenCreateEventWithContent() { TimeSource::mock(2014, 5, 1, 7, 0, 0); $user = new UserAccountModel(); $user->setEmail("*****@*****.**"); $user->setUsername("test"); $user->setPassword("password"); $userRepo = new UserAccountRepository(); $userRepo->create($user); $site = new SiteModel(); $site->setTitle("Test"); $site->setSlug("test"); $siteRepo = new SiteRepository(); $siteRepo->create($site, $user, array(), $this->getSiteQuotaUsedForTesting()); $customFieldDefinition1 = new EventCustomFieldDefinitionModel(); $customFieldDefinition1->setSiteId($site->getId()); $customFieldDefinition1->setExtensionId('org.openacalendar'); $customFieldDefinition1->setType('TextSingleLine'); $customFieldDefinition1->setKey('cats'); $customFieldDefinition1->setLabel('cats'); $customFieldDefinition2 = new EventCustomFieldDefinitionModel(); $customFieldDefinition2->setSiteId($site->getId()); $customFieldDefinition2->setExtensionId('org.openacalendar'); $customFieldDefinition2->setType('TextSingleLine'); $customFieldDefinition2->setKey('dogs'); $customFieldDefinition2->setLabel('dogs'); $ecfRepo = new EventCustomFieldDefinitionRepository(); $ecfRepo->create($customFieldDefinition1, $user); $ecfRepo->create($customFieldDefinition2, $user); $event = new EventModel(); $event->setSummary("test"); $event->setDescription("test test"); $event->setStartAt(getUTCDateTime(2014, 5, 10, 19, 0, 0)); $event->setEndAt(getUTCDateTime(2014, 5, 10, 21, 0, 0)); $event->setUrl("http://www.info.com"); $event->setTicketUrl("http://www.tickets.com"); $event->setCustomField($customFieldDefinition1, "CATS"); // CREATE WITH TimeSource::mock(2014, 5, 1, 7, 1, 0); $eventRepository = new EventRepository(); $eventRepository->create($event, $site, $user); $event = $eventRepository->loadByID($event->getId()); $this->assertEquals(true, $event->hasCustomField($customFieldDefinition1)); $this->assertEquals(false, $event->hasCustomField($customFieldDefinition2)); $this->assertFalse($event->getIsDeleted()); // LET's CHECK HISTORY $eventHistoryRepo = new EventHistoryRepository(); $stat = $this->app['db']->prepare("SELECT * FROM event_history"); $stat->execute(); while ($data = $stat->fetch()) { $eventHistory = new EventHistoryModel(); $eventHistory->setFromDataBaseRow($data); $eventHistoryRepo->ensureChangedFlagsAreSet($eventHistory); } $eventHistoryRepoBuilder = new EventHistoryRepositoryBuilder(); $eventHistoryRepoBuilder->setEvent($event); $histories = $eventHistoryRepoBuilder->fetchAll(); $this->assertEquals(1, count($histories)); $historyCreate = $histories[0]; $this->assertTrue($historyCreate->getCustomFieldChangedKnown($customFieldDefinition1)); $this->assertTrue($historyCreate->getCustomFieldChanged($customFieldDefinition1)); $this->assertFalse($historyCreate->getCustomFieldChanged($customFieldDefinition2)); }