public function pastEventsCount($data) { $erb = new EventRepositoryBuilder(); $erb->setBeforeNow(); $erb->setIncludeCancelled(true); $erb->setIncludeDeleted(false); if ($data instanceof \models\AreaModel) { $erb->setArea($data); } return $erb->fetchCount(); }
function getPossibleDuplicates() { /** * If no Start or End time on event then we aren't even going to try to look for dupes. * There would be to many options and not enought to search on. */ if (!$this->event->getStartAt() || !$this->event->getEndAt()) { return array(); } ## Get events $eventRepositoryBuilder = new EventRepositoryBuilder(); $eventRepositoryBuilder->setSite($this->site); $eventRepositoryBuilder->setIncludeAreaInformation(true); $eventRepositoryBuilder->setIncludeDeleted(true); $eventRepositoryBuilder->setIncludeCancelled(true); $after = clone $this->event->getStartAt(); $after->sub(new \DateInterval("PT4H")); $eventRepositoryBuilder->setAfter($after); $before = clone $this->event->getStartAt(); $before->add(new \DateInterval("PT4H")); $eventRepositoryBuilder->setBefore($before); $events = $eventRepositoryBuilder->fetchAll(); ## Score $eventsWithScore = array(); foreach ($events as $event) { if (!in_array($event->getSlug(), $this->notTheseSlugs)) { $eventsWithScore[] = array('event' => $event, 'score' => $this->getScoreForConsideredEvent($event)); } } ## sort $sortFunc = function ($a, $b) { if ($a['score'] == $b['score']) { return 0; } elseif ($a['score'] > $b['score']) { return 1; } elseif ($a['score'] < $b['score']) { return -1; } }; usort($eventsWithScore, $sortFunc); ## Results $results = array(); foreach ($eventsWithScore as $eventWithScore) { if (count($results) < $this->showEventsCount && $eventWithScore['score'] >= $this->showEventsThreshhold) { $results[] = $eventWithScore['event']; } } return $results; }
/** * * @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); }
public function updateFutureEventsCache(AreaModel $area) { global $DB; $statUpdate = $DB->prepare("UPDATE area_information SET cached_future_events=:count WHERE id=:id"); $erb = new EventRepositoryBuilder(); $erb->setArea($area); $erb->setIncludeDeleted(false); $erb->setIncludeCancelled(false); $erb->setAfterNow(); $count = count($erb->fetchAll()); $statUpdate->execute(array('count' => $count, 'id' => $area->getId())); $area->setCachedFutureEvents($count); }