/**
  * 
  * @return type array(array(), array(), array(), boolean) - upcoming events, other events, user at event data, flag if any to send
  */
 public function getDataForUpcomingEventsEmail()
 {
     $flag = false;
     $start = \TimeSource::getDateTime();
     $end = \TimeSource::getDateTime();
     if ($this->email_upcoming_events_days_notice > 0) {
         $interval = new \DateInterval("P" . $this->email_upcoming_events_days_notice . "D");
         $start->add($interval);
         $end->add($interval);
     }
     $start->setTime(0, 0, 0);
     $end->setTime(23, 59, 59);
     $upcomingEvents = array();
     $allEvents = array();
     $userAtEvent = array();
     $userAtEventRepo = new UserAtEventRepository();
     $erb = new EventRepositoryBuilder();
     $erb->setAfterNow();
     $erb->setIncludeDeleted(false);
     $erb->setIncludeCancelled(true);
     $erb->setUserAccount($this, false, true);
     foreach ($erb->fetchAll() as $event) {
         $userAtEvent[$event->getId()] = $userAtEventRepo->loadByUserAndEvent($this, $event);
         if ($start->getTimestamp() <= $event->getStartAt()->getTimestamp() && $event->getStartAt()->getTimestamp() <= $end->getTimestamp()) {
             $upcomingEvents[] = $event;
             if ($this->email_upcoming_events == 'w') {
                 $flag = true;
             } else {
                 if ($this->email_upcoming_events == 'a') {
                     if ($userAtEvent[$event->getId()] && $userAtEvent[$event->getId()]->getIsPlanAttending()) {
                         $flag = true;
                     }
                 } else {
                     if ($this->email_upcoming_events == 'm') {
                         if ($userAtEvent[$event->getId()] && ($userAtEvent[$event->getId()]->getIsPlanAttending() || $userAtEvent[$event->getId()]->getIsPlanMaybeAttending())) {
                             $flag = true;
                         }
                     }
                 }
             }
         }
         $allEvents[] = $event;
     }
     return array($upcomingEvents, $allEvents, $userAtEvent, $flag);
 }
 function userAttendanceHtml($slug, Request $request, Application $app)
 {
     if (!$this->build($slug, $request, $app)) {
         $app->abort(404, "Event does not exist.");
     }
     $uaerb = new UserAtEventRepositoryBuilder();
     $uaerb->setEventOnly($this->parameters['event']);
     $uaerb->setPlanAttendingYesOnly(true);
     $uaerb->setPlanPublicOnly(true);
     $this->parameters['userAtEventYesPublic'] = $uaerb->fetchAll();
     $uaerb = new UserAtEventRepositoryBuilder();
     $uaerb->setEventOnly($this->parameters['event']);
     $uaerb->setPlanAttendingYesOnly(true);
     $uaerb->setPlanPrivateOnly(true);
     $this->parameters['userAtEventYesPrivate'] = $uaerb->fetchAll();
     $uaerb = new UserAtEventRepositoryBuilder();
     $uaerb->setEventOnly($this->parameters['event']);
     $uaerb->setPlanAttendingMaybeOnly(true);
     $uaerb->setPlanPublicOnly(true);
     $this->parameters['userAtEventMaybePublic'] = $uaerb->fetchAll();
     $uaerb = new UserAtEventRepositoryBuilder();
     $uaerb->setEventOnly($this->parameters['event']);
     $uaerb->setPlanAttendingMaybeOnly(true);
     $uaerb->setPlanPrivateOnly(true);
     $this->parameters['userAtEventMaybePrivate'] = $uaerb->fetchAll();
     if ($app['currentUser']) {
         $uaer = new UserAtEventRepository();
         $uae = $uaer->loadByUserAndEvent($app['currentUser'], $this->parameters['event']);
         $this->parameters['userAtEventIsCurrentUser'] = $uae && ($uae->getIsPlanAttending() || $uae->getIsPlanMaybeAttending());
     } else {
         $this->parameters['userAtEventIsCurrentUser'] = false;
     }
     return $app['twig']->render('/site/event/usersAttending.html.twig', $this->parameters);
 }