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