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 recurMonthlyLast($slug, Request $request, Application $app) { if (!$this->build($slug, $request, $app)) { $app->abort(404, "Event does not exist."); } if (!$this->parameters['group']) { die("NO"); } if ($this->parameters['event']->getIsDeleted()) { die("No"); // TODO } if ($this->parameters['event']->getIsImported()) { die("No"); // TODO } $eventRecurSetRepository = new EventRecurSetRepository(); $eventRecurSet->setCustomFields($app['currentSite']->getCachedEventCustomFieldDefinitionsAsModels()); $eventRecurSet = $eventRecurSetRepository->getForEvent($this->parameters['event']); $eventRecurSet->setTimeZoneName($app['currentTimeZone']); $this->parameters['newEvents'] = $eventRecurSet->getNewMonthlyEventsOnLastDayInWeekFilteredForExisting($this->parameters['event'], $app['config']->recurEventForDaysInFutureWhenMonthly); if ($request->request->get('submitted') == 'yes' && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) { $data = is_array($request->request->get('new')) ? $request->request->get('new') : array(); $this->addTagsToParameters($app); $mrb = new MediaRepositoryBuilder(); $mrb->setIncludeDeleted(false); $mrb->setSite($app['currentSite']); $mrb->setEvent($this->parameters['event']); $medias = $mrb->fetchAll(); $eventRepository = new EventRepository(); $count = 0; foreach ($this->parameters['newEvents'] as $event) { if (in_array($event->getStartAt()->getTimeStamp(), $data)) { $eventRepository->create($event, $app['currentSite'], $app['currentUser'], $this->parameters['group'], $this->parameters['groups'], null, $this->parameters['tags'], $medias); ++$count; } } if ($count > 0) { return $app->redirect("/group/" . $this->parameters['group']->getSlug()); } } return $app['twig']->render('site/event/recurMonthly.html.twig', $this->parameters); }
function recurArbitrary($slug, Request $request, Application $app) { if (!$this->build($slug, $request, $app)) { $app->abort(404, "Event does not exist."); } if (!$this->parameters['group']) { die("NO"); } if ($this->parameters['event']->getIsDeleted()) { die("No"); // TODO } if ($this->parameters['event']->getIsImported()) { die("No"); // TODO } $eventRecurSetRepository = new EventRecurSetRepository(); $eventRecurSet = $eventRecurSetRepository->getForEvent($this->parameters['event']); $eventRecurSet->setTimeZoneName($app['currentTimeZone']); $eventRecurSet->setCustomFields($app['currentSite']->getCachedEventCustomFieldDefinitionsAsModels()); if ($request->request->get('date') && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) { $start = new \DateTime($request->request->get('date'), new \DateTimeZone($this->parameters['event']->getTimeZone())); if ($eventRecurSet->isDateToSoonForArbitraryDate($start, $app['timesource'])) { $app['flashmessages']->addError('That date is to soon!'); } else { if ($eventRecurSet->isDateToLateForArbitraryDate($start, $app['timesource'])) { $app['flashmessages']->addError('That date is to late!'); } else { $newEvents = $eventRecurSet->getNewEventOnArbitraryDateFilteredForExisting($this->parameters['event'], $start, $app['config']->recurEventForDaysInFutureWhenArbitrary); if ($newEvents) { $newEvent = $newEvents[0]; $this->addTagsToParameters($app); $mrb = new MediaRepositoryBuilder(); $mrb->setIncludeDeleted(false); $mrb->setSite($app['currentSite']); $mrb->setEvent($this->parameters['event']); $medias = $mrb->fetchAll(); $eventMeta = new EventEditMetaDataModel(); $eventMeta->setUserAccount($app['currentUser']); $eventMeta->setFromRequest($request); $eventRepository = new EventRepository(); $eventRepository->createWithMetaData($newEvent, $app['currentSite'], $eventMeta, $this->parameters['group'], $this->parameters['groups'], null, $this->parameters['tags'], $medias); return $app->redirect("/event/" . $newEvent->getSlugForURL()); } } } } return $app['twig']->render('site/event/recur.arbitrary.html.twig', $this->parameters); }
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; }