/** * @dataProvider dataForTestGetEventPatternData */ function testGetEventPatternData($year, $month, $day, $weekOfmonth, $lastInMonth) { $event = new EventModel(); $event->setStartAt($this->mktime($year, $month, $day, 19, 0, 0)); $event->setEndAt($this->mktime($year, $month, $day, 21, 0, 0)); $event->setSummary("Event Please"); $eventSet = new EventRecurSetModel(); $eventSet->setTimeZoneName('Europe/London'); $data = $eventSet->getEventPatternData($event); $this->assertEquals($weekOfmonth, $data['weekInMonth']); $this->assertEquals($lastInMonth, $data['isLastWeekInMonth']); }
function recur($slug, Request $request, Application $app) { if (!$this->build($slug, $request, $app)) { $app->abort(404, "Event does not exist."); } if ($this->parameters['event']->getIsDeleted()) { die("No"); // TODO } if ($this->parameters['event']->getIsImported()) { die("No"); // TODO } if (!$this->parameters['group']) { // Existing Group // TODO csfr if ($request->request->get('intoGroupSlug')) { $groupRepo = new GroupRepository(); $group = $groupRepo->loadBySlug($app['currentSite'], $request->request->get('intoGroupSlug')); if ($group) { $groupRepo->addEventToGroup($this->parameters['event'], $group); $repo = new UserWatchesGroupRepository(); $repo->startUserWatchingGroupIfNotWatchedBefore($app['currentUser'], $group); return $app->redirect("/event/" . $this->parameters['event']->getSlugForURL() . "/recur/"); } } // New group if ($request->request->get('NewGroupTitle') && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) { $group = new GroupModel(); $group->setTitle($request->request->get('NewGroupTitle')); $groupRepo = new GroupRepository(); $groupRepo->create($group, $app['currentSite'], $app['currentUser']); $groupRepo->addEventToGroup($this->parameters['event'], $group); return $app->redirect("/event/" . $this->parameters['event']->getSlugForURL() . "/recur/"); } return $app['twig']->render('site/event/recur.groupneeded.html.twig', $this->parameters); } else { $eventRecurSet = new EventRecurSetModel(); $eventRecurSet->setTimeZoneName($this->parameters['event']->getTimezone()); $data = $eventRecurSet->getEventPatternData($this->parameters['event']); if ($data['weekInMonth'] < 5) { $this->parameters['recurMonthlyOnWeekNumber'] = $data['weekInMonth']; $ordinal = array(1 => 'st', 2 => 'nd', 3 => 'rd', 4 => 'th'); $this->parameters['recurMonthlyOnWeekNumberOrdinal'] = $ordinal[$data['weekInMonth']]; } else { $this->parameters['recurMonthlyOnWeekNumber'] = null; $this->parameters['recurMonthlyOnWeekNumberOrdinal'] = null; } $this->parameters['recurMonthlyOnLastWeek'] = $data['isLastWeekInMonth']; return $app['twig']->render('site/event/recur.html.twig', $this->parameters); } }