public function run(ImportedEventOccurrenceModel $importedEventOccurrenceModel) { $eventRepo = new EventRepository(); $eventRecurSetRepo = new EventRecurSetRepository(); if ($importedEventOccurrenceModel->hasReoccurence()) { // Have to load it looking for the right time to! $event = $this->loadEventForImportedReoccurredEvent($importedEventOccurrenceModel); } else { // just load it. $event = $this->loadEventForImportedEvent($importedEventOccurrenceModel); } if ($event) { $this->eventsSeenIDs[] = $event->getId(); // Set Existing Event From Import Event URL if ($importedEventOccurrenceModel->getIsDeleted()) { if (!$event->getIsDeleted()) { $eventRepo->delete($event); return true; } } else { if ($event->setFromImportedEventModel($importedEventOccurrenceModel) || $event->getIsDeleted()) { $event->setIsDeleted(false); $eventRepo->edit($event); return true; } } } else { if (!$this->importURL->getIsManualEventsCreation()) { // New Event From Import Event URL $event = $this->newEventFromImportedEventModel($importedEventOccurrenceModel); if ($this->eventRecurSet) { $event->setEventRecurSetId($this->eventRecurSet->getId()); } $eventRepo->create($event, $this->site, null, $this->group, null, $importedEventOccurrenceModel); $this->eventsSeenIDs[] = $event->getId(); if (!$this->eventRecurSet && $this->makeEventRecurSetIfNone) { $this->eventRecurSet = $eventRecurSetRepo->getForEvent($event); } return true; } else { return false; } } return false; }
function testAcrossBST1() { \TimeSource::mock(2015, 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()); $event = new EventModel(); $event->setSummary("test"); $event->setDescription("test test"); $event->setTimezone('Europe/London'); $start = new \DateTime("", new \DateTimeZone('Europe/London')); $start->setDate(2015, 5, 10); $start->setTime(19, 0, 0); $event->setStartAt($start); $end = new \DateTime("", new \DateTimeZone('Europe/London')); $end->setDate(2015, 5, 10); $end->setTime(21, 0, 0); $event->setEndAt($end); $event->setUrl("http://www.info.com"); $event->setTicketUrl("http://www.tickets.com"); $eventRepository = new EventRepository(); $eventRepository->create($event, $site, $user); $event = $eventRepository->loadBySlug($site, $event->getSlug()); $eventRecurSetRepository = new EventRecurSetRepository(); $eventRecurSet = $eventRecurSetRepository->getForEvent($event); $eventRecurSet->setTimeZoneName($event->getTimezone()); $newStart = new \DateTime(); $newStart->setDate(2015, 11, 1); $newEvent = $eventRecurSet->getNewEventOnArbitraryDate($event, $newStart); // What we are really testing here is start and end times set correctly $this->assertEquals("2015-11-01T19:00:00+00:00", $newEvent->getStartAtInUTC()->format("c")); $this->assertEquals("2015-11-01T21:00:00+00:00", $newEvent->getEndAtInUTC()->format("c")); $this->assertEquals("2015-11-01T19:00:00+00:00", $newEvent->getStartAtInTimezone()->format("c")); $this->assertEquals("2015-11-01T21:00:00+00:00", $newEvent->getEndAtInTimezone()->format("c")); }
function moveToArea($slug, Request $request, Application $app) { if (!$this->build($slug, $request, $app)) { $app->abort(404, "Event does not exist."); } $gotResultEditedVenue = false; $gotResultEditedEvent = false; if ($request->request->get('area') && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) { if (intval($request->request->get('area'))) { $areaRepository = new AreaRepository(); $area = $areaRepository->loadBySlug($app['currentSite'], $request->request->get('area')); if ($area && (!$this->parameters['area'] || $area->getId() != $this->parameters['area']->getId())) { if ($this->parameters['venue']) { $this->parameters['venue']->setAreaId($area->getId()); $venueRepository = new VenueRepository(); $venueRepository->edit($this->parameters['venue'], $app['currentUser']); $gotResultEditedVenue = true; } else { $this->parameters['event']->setAreaId($area->getId()); $eventRepository = new EventRepository(); $eventRepository->edit($this->parameters['event'], $app['currentUser']); $gotResultEditedEvent = true; } $app['flashmessages']->addMessage('Thank you; event updated!'); } } } if ($gotResultEditedEvent) { $repo = new EventRecurSetRepository(); if ($repo->isEventInSetWithNotDeletedFutureEvents($this->parameters['event'])) { return $app->redirect("/event/" . $this->parameters['event']->getSlugForUrl() . '/edit/future'); } else { return $app->redirect("/event/" . $this->parameters['event']->getSlugForUrl()); } } else { return $app->redirect("/event/" . $this->parameters['event']->getSlugForUrl() . '/'); } }
protected function processICalEvent(ICalEvent $icalevent) { global $CONFIG; $importedEventRepo = new ImportedEventRepository(); $eventRecurSetRepo = new EventRecurSetRepository(); $importedEventChangesToSave = false; $importedEvent = $importedEventRepo->loadByImportURLIDAndImportId($this->importURLRun->getImportURL()->getId(), $icalevent->getUid()); if (!$importedEvent) { if (!$icalevent->isDeleted()) { $importedEvent = new ImportedEventModel(); $importedEvent->setImportId($icalevent->getUid()); $importedEvent->setImportUrlId($this->importURLRun->getImportURL()->getId()); $this->setOurEventFromIcalEvent($importedEvent, $icalevent); $importedEventChangesToSave = true; } } else { if ($icalevent->isDeleted()) { if (!$importedEvent->getIsDeleted()) { $importedEvent->setIsDeleted(true); $importedEventChangesToSave = true; } } else { $importedEventChangesToSave = $this->setOurEventFromIcalEvent($importedEvent, $icalevent); // if was deleted, undelete if ($importedEvent->getIsDeleted()) { $importedEvent->setIsDeleted(false); $importedEventChangesToSave = true; } } } $ietieo = new ImportedEventToImportedEventOccurrences($importedEvent); if ($ietieo->getToMultiples()) { $eventRecurSet = $importedEvent != null ? $eventRecurSetRepo->getForImportedEvent($importedEvent) : null; $this->importedEventOccurrenceToEvent->setEventRecurSet($eventRecurSet, true); } else { $this->importedEventOccurrenceToEvent->setEventRecurSet(null, false); } foreach ($ietieo->getImportedEventOccurrences() as $importedEventOccurrence) { if ($importedEventOccurrence->getEndAt()->getTimeStamp() < TimeSource::time()) { $this->inpast++; } else { if ($importedEventOccurrence->getStartAt()->getTimeStamp() > TimeSource::time() + $CONFIG->importURLAllowEventsSecondsIntoFuture) { $this->tofarinfuture++; } else { if ($this->saved < $this->limitToSaveOnEachRun) { // Imported Event if ($importedEventChangesToSave) { if ($importedEvent->getId()) { if ($importedEvent->getIsDeleted()) { $importedEventRepo->delete($importedEvent); } else { $importedEventRepo->edit($importedEvent); } } else { $importedEventRepo->create($importedEvent); // the ID will not be set until this point. So make sure we copy over the ID below just to be sure. } $importedEventChangesToSave = false; } // ... and the Imported Event Occurrence becomes a real event! $importedEventOccurrence->setId($importedEvent->getId()); if ($this->importedEventOccurrenceToEvent->run($importedEventOccurrence)) { $this->saved++; } } } } } }