/**
  * @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);
     }
 }