/**
  * @dataProvider dataForTest1
  */
 function test1($emailOption, $goingOption, $result)
 {
     TimeSource::mock(2013, 8, 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->setStartAt($this->mktime(2013, 8, 2, 19, 0, 0));
     $event->setEndAt($this->mktime(2013, 8, 2, 21, 0, 0));
     $eventRepository = new EventRepository();
     $eventRepository->create($event, $site, $user);
     $user->setEmailUpcomingEventsDaysNotice(1);
     $user->setEmailUpcomingEvents($emailOption);
     $userRepo->editEmailsOptions($user);
     if ($goingOption == 'a') {
         $userAtEvent = new UserAtEventModel();
         $userAtEvent->setUserAccountId($user->getId());
         $userAtEvent->setEventId($event->getId());
         $userAtEvent->setIsPlanAttending(true);
         $uaeRepo = new UserAtEventRepository();
         $uaeRepo->save($userAtEvent);
     } else {
         if ($goingOption == 'm') {
             $userAtEvent = new UserAtEventModel();
             $userAtEvent->setUserAccountId($user->getId());
             $userAtEvent->setEventId($event->getId());
             $userAtEvent->setIsPlanMaybeAttending(true);
             $uaeRepo = new UserAtEventRepository();
             $uaeRepo->save($userAtEvent);
         }
     }
     list($upcomingEvents, $allEvents, $userAtEvent, $flag) = $user->getDataForUpcomingEventsEmail();
     $this->assertEquals($result, $flag);
 }
 function emails($id, $code, Request $request, Application $app)
 {
     $userRepository = new UserAccountRepository();
     if ($app['currentUser'] && $app['currentUser']->getId() == $id) {
         // We do this to save a DB Query
         $user = $app['currentUser'];
     } else {
         $user = $userRepository->loadByID($id);
     }
     if (!$user) {
         $app['monolog']->addError("Failed changing email - no account");
         return $app['twig']->render('index/user/emails.fail.html.twig', array());
     }
     $userAccountGeneralSecurityKeyRepository = new UserAccountGeneralSecurityKeyRepository();
     $userAccountGSK = $userAccountGeneralSecurityKeyRepository->loadByUserAccountIDAndAccessKey($id, $code);
     if (!$userAccountGSK) {
         $app['monolog']->addError("Failed changing email - account user " . $user->getId() . " - code wrong");
         return $app['twig']->render('index/user/emails.fail.html.twig', array());
     }
     $ourForm = new UserEmailsForm($app['extensions'], $user);
     $form = $app['form.factory']->create($ourForm, $user);
     if ('POST' == $request->getMethod()) {
         $form->bind($request);
         if ($form->isValid()) {
             $userRepository->editEmailsOptions($user);
             $ourForm->savePreferences($form);
             $app['flashmessages']->addMessage("Options Changed.");
             return $app->redirect("/");
         }
     }
     return $app['twig']->render('index/user/emails.html.twig', array('form' => $form->createView(), 'user' => $user));
 }
 function emails(Request $request, Application $app)
 {
     $ourForm = new UserEmailsForm($app['extensions'], $app['currentUser']);
     $form = $app['form.factory']->create($ourForm, $app['currentUser']);
     if ('POST' == $request->getMethod()) {
         $form->bind($request);
         if ($form->isValid()) {
             $userRepo = new UserAccountRepository();
             $userRepo->editEmailsOptions($app['currentUser']);
             $ourForm->savePreferences($form);
             $app['flashmessages']->addMessage("Options Changed.");
             return $app->redirect("/me/");
         }
     }
     return $app['twig']->render('index/currentuser/emails.html.twig', array('form' => $form->createView()));
 }