function testFilterAreaAndIncludeAreaAndIncludeVenue()
 {
     $this->addCountriesToTestDB();
     $countryRepo = new CountryRepository();
     $areaRepo = new AreaRepository();
     $userRepo = new UserAccountRepository();
     $siteRepo = new SiteRepository();
     $user = new UserAccountModel();
     $user->setEmail("*****@*****.**");
     $user->setUsername("test");
     $user->setPassword("password");
     $userRepo->create($user);
     $site = new SiteModel();
     $site->setTitle("Test");
     $site->setSlug("test");
     $siteRepo->create($site, $user, array($countryRepo->loadByTwoCharCode('GB')), $this->getSiteQuotaUsedForTesting());
     $area = new AreaModel();
     $area->setTitle("test");
     $area->setDescription("test test");
     $areaRepo->create($area, null, $site, $countryRepo->loadByTwoCharCode('GB'), $user);
     $areaRepo->buildCacheAreaHasParent($area);
     ######################## For now just test it doesn't crash, I commited a bug that did crash here
     $erb = new EventRepositoryBuilder();
     $erb->setArea($area);
     $erb->setIncludeVenueInformation(true);
     $erb->setIncludeAreaInformation(true);
     $erb->fetchAll();
 }
 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;
 }
 function index(Application $app)
 {
     $erb = new EventRepositoryBuilder();
     $erb->setSite($app['currentSite']);
     $erb->setAfterNow();
     $erb->setIncludeDeleted(false);
     $erb->setIncludeAreaInformation(true);
     $erb->setIncludeVenueInformation(true);
     $erb->setIncludeMediasSlugs(true);
     if ($app['currentUser']) {
         $erb->setUserAccount($app['currentUser'], true);
     }
     $erb->setLimit(100);
     $events = $erb->fetchAll();
     return $app['twig']->render('site/index/index.html.twig', array('events' => $events));
 }