public function setFromAppAndEventAndEmail(Application $app, EventModel $eventModel, $email)
 {
     $this->event_id = $eventModel->getId();
     $this->email = $email;
     $this->subject = "Can we check the details of your event?";
     $venueRepo = new VenueRepository();
     $venue = null;
     if ($eventModel->getVenueId()) {
         $venue = $venueRepo->loadById($eventModel->getVenueId());
     }
     $area = null;
     $areaRepo = new AreaRepository();
     if ($eventModel->getAreaId()) {
         $area = $areaRepo->loadById($eventModel->getAreaId());
     } else {
         if ($venue && $venue->getAreaId()) {
             $area = $areaRepo->loadById($venue->getAreaId());
         }
     }
     $hrb = new HumanRepositoryBuilder();
     $hrb->setHumansForEvent($eventModel);
     $hrb->setIncludeDeleted(false);
     $humans = $hrb->fetchAll();
     $this->body_html = $app['twig']->render('email/organiserEmail.html.twig', array('event' => $eventModel, 'email' => $this->email, 'venue' => $venue, 'area' => $area, 'humans' => $humans));
     if ($app['config']->isDebug) {
         file_put_contents('/tmp/organiserEmail.html', $this->body_html);
     }
     $this->body_text = $app['twig']->render('email/organiserEmail.txt.twig', array('event' => $eventModel, 'email' => $this->email, 'venue' => $venue, 'area' => $area, 'humans' => $humans));
     if ($app['config']->isDebug) {
         file_put_contents('/tmp/organiserEmail.txt', $this->body_text);
     }
     $this->created_at = $app['timesource']->getDateTime();
 }
 function formedia(Application $app)
 {
     $trb = new HumanRepositoryBuilder();
     $trb->setSite($app['currentSite']);
     $trb->setIncludeDeleted(false);
     $humans = $trb->fetchAll();
     return $app['twig']->render('site/index/formedia.html.twig', array('humans' => $humans));
 }
 function index(Application $app, Request $request)
 {
     if ($request->query->get('search')) {
         $trb = new HumanRepositoryBuilder();
         $trb->setSite($app['currentSite']);
         $trb->setIncludeDeleted(false);
         $trb->setFreeTextsearch($request->query->get('search'));
         return $app['twig']->render('site/humanlist/index.html.twig', array('humans' => $trb->fetchAll(), 'search' => $request->query->get('search')));
     } else {
         return $app['twig']->render('site/humanlist/index.html.twig', array('humans' => array(), 'search' => null));
     }
 }
 function editHumans($slug, Request $request, Application $app)
 {
     if (!$this->build($slug, $request, $app)) {
         $app->abort(404, "Event does not exist.");
     }
     $humanRepo = new HumanRepository();
     if ('POST' == $request->getMethod() && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) {
         if ($request->request->get('addHuman')) {
             $data = $request->request->get('addHuman');
             if (!is_array($data)) {
                 $data = array($data);
             }
             foreach ($data as $slug) {
                 $human = $humanRepo->loadBySlug($app['currentSite'], $slug);
                 if ($human) {
                     $humanRepo->addHumanToEvent($human, $this->parameters['event'], $app['currentUser']);
                 }
             }
         } elseif ($request->request->get('removeHuman')) {
             $human = $humanRepo->loadBySlug($app['currentSite'], $request->request->get('removeHuman'));
             if ($human) {
                 $humanRepo->removeHumanFromEvent($human, $this->parameters['event'], $app['currentUser']);
             }
         }
         if ($request->request->get("returnTo") == 'event') {
             return $app->redirect("/event/" . $this->parameters['event']->getSlugforURL());
         }
     }
     $trb = new HumanRepositoryBuilder();
     $trb->setSite($app['currentSite']);
     $trb->setIncludeDeleted(false);
     $trb->setHumansForEvent($this->parameters['event']);
     $this->parameters['humans'] = $trb->fetchAll();
     $this->parameters['filterLimitToArea'] = $request->query->get('limitToArea') != 'no';
     $this->parameters['filterFreeTextSearch'] = $request->query->get('freeTextSearch');
     $trb = new HumanRepositoryBuilder();
     $trb->setSite($app['currentSite']);
     $trb->setIncludeDeleted(false);
     $trb->setHumansNotForEvent($this->parameters['event']);
     if ($this->parameters['area'] && $this->parameters['filterLimitToArea']) {
         $trb->setArea($this->parameters['area']);
     }
     if ($this->parameters['filterFreeTextSearch']) {
         $trb->setFreeTextsearch($this->parameters['filterFreeTextSearch']);
     }
     $trb->setLimit(200);
     $this->parameters['humansToAdd'] = $trb->fetchAll();
     return $app['twig']->render('site/event/edit.humans.html.twig', $this->parameters);
 }
 function tweetHumans($slug, Request $request, Application $app)
 {
     if (!$this->build($slug, $request, $app)) {
         $app->abort(404, "Area does not exist.");
     }
     $trb = new HumanRepositoryBuilder();
     $trb->setSite($app['currentSite']);
     $trb->setIncludeDeleted(false);
     $trb->setArea($this->parameters['area']);
     $trb->setLimit(200);
     $this->parameters['humans'] = array();
     foreach ($trb->fetchAll() as $human) {
         if ($human->getTwitter()) {
             $this->parameters['humans'][] = $human;
         }
     }
     // =================================== If no Candidates
     if (!$this->parameters['humans']) {
         return $app['twig']->render('site/area/tweetToCandidates.noHumans.html.twig', $this->parameters);
     }
     // =================================== If Tweeting
     if ($request->request->has("action") and $request->request->has("action") == 'tweet') {
         $humanSlugs = $request->request->get('human');
         $foundHumans = false;
         $tweet = ".";
         if (is_array($humanSlugs)) {
             foreach ($this->parameters['humans'] as $human) {
                 if (in_array($human->getSlug(), $humanSlugs)) {
                     $tweet .= '@' . $human->getTwitter() . ' ';
                     $foundHumans = true;
                 }
             }
         }
         if ($foundHumans) {
             $tweet .= 'Could you add your #ge2015 events to ' . 'https://' . $app['config']->webIndexDomain . '/area/' . $this->parameters['area']->getSlugForURL();
             $url = 'https://twitter.com/intent/tweet?text=' . urlencode($tweet);
             return $app->redirect($url);
         }
     }
     // =================================== Show Form
     return $app['twig']->render('site/area/tweetToCandidates.html.twig', $this->parameters);
 }
 public function getParameters()
 {
     $out = array();
     $trb = new HumanRepositoryBuilder();
     $trb->setSite($this->app['currentSite']);
     $trb->setIncludeDeleted(false);
     $trb->setHumansForEvent($this->parameters['event']);
     $out['humans'] = $trb->fetchAll();
     if (count($out['humans']) == 0 && $this->app['currentUserActions']->has("org.openacalendar", "eventEditDetails") && $this->parameters['area'] && !$this->parameters['event']->isInPast()) {
         $trb = new HumanRepositoryBuilder();
         $trb->setSite($this->app['currentSite']);
         $trb->setIncludeDeleted(false);
         $trb->setArea($this->parameters['area']);
         $trb->setLimit(100);
         $out['humansToAdd'] = $trb->fetchAll();
     } else {
         $out['humansToAdd'] = array();
     }
     return $out;
 }
 protected function run()
 {
     $this->localTimeZone = new \DateTimeZone("Europe/London");
     $siteRepo = new \repositories\SiteRepository();
     $site = $siteRepo->loadById($this->app['config']->singleSiteID);
     // TODO assumes single site!
     $areaRepository = new AreaRepository();
     $venueRepository = new VenueRepository();
     $countryRepository = new CountryRepository();
     $countries = array();
     $humanPopItRepository = new HumanPopItInfoRepository();
     $areaMapItRepo = new AreaMapItInfoRepository();
     $out = array('data' => array(), 'areasPastEvents' => array());
     $erb = new EventRepositoryBuilder();
     $erb->setSite($site);
     $erb->setIncludeDeleted(true);
     $erb->setIncludeCancelled(true);
     $erb->setAfterNow();
     foreach ($erb->fetchAll() as $event) {
         $venue = null;
         $country = null;
         $area = null;
         $humans = array();
         if ($event->getCountryId()) {
             if (!isset($countries[$event->getCountryId()])) {
                 $countries[$event->getCountryId()] = $countryRepository->loadById($event->getCountryId());
             }
             $country = $countries[$event->getCountryId()];
         }
         if ($event->getVenueId()) {
             $venue = $venueRepository->loadById($event->getVenueId());
         }
         if ($event->getAreaId()) {
             $area = $areaRepository->loadById($event->getAreaId());
         } else {
             if ($venue && $venue->getAreaId()) {
                 $area = $areaRepository->loadById($venue->getAreaId());
             }
         }
         $thisOut = $this->addEvent($event, $venue, $area, $country);
         $thisOut['humans'] = array();
         $mapitids = array();
         if ($area) {
             $areamapit = $areaMapItRepo->getByAreaID($area->getId());
             if ($areamapit) {
                 $mapitids[] = $areamapit->getMapitId();
             }
         }
         $hrb = new HumanRepositoryBuilder();
         $hrb->setHumansForEvent($event);
         foreach ($hrb->fetchAll() as $human) {
             $popit = $humanPopItRepository->getByHumanID($human->getId());
             $thisOut['humans'][] = array('popit_id' => $popit->getPopitId());
             $arb = new AreaRepositoryBuilder();
             $arb->setIncludeDeleted(false);
             $arb->setHuman($human);
             foreach ($arb->fetchAll() as $areaForHuman) {
                 if (!$area || $area->getId() != $areaForHuman->getId()) {
                     $areamapit = $areaMapItRepo->getByAreaID($areaForHuman->getId());
                     if ($areamapit) {
                         $mapitids[] = $areamapit->getMapitId();
                     }
                 }
             }
         }
         $thisOut['mapitids'] = array_values(array_unique($mapitids));
         $out['data'][] = $thisOut;
     }
     $arb = new \com\meetyournextmp\repositories\builders\AreaRepositoryBuilder();
     $arb->setLimit(1000);
     $arb->setIncludeDeleted(false);
     $arb->setIsMapItAreaOnly(true);
     foreach ($arb->fetchAll() as $area) {
         $erb = new EventRepositoryBuilder();
         $erb->setIncludeDeleted(false);
         $erb->setIncludeCancelled(false);
         $erb->setArea($area);
         $erb->setBeforeNow();
         $areamapit = $areaMapItRepo->getByAreaID($area->getId());
         $out['areasPastEvents'][$areamapit->getMapitId()] = $erb->fetchCount();
     }
     file_put_contents(APP_ROOT_DIR . DIRECTORY_SEPARATOR . 'webSingleSite' . DIRECTORY_SEPARATOR . 'datadump' . DIRECTORY_SEPARATOR . 'ynmpread.json', json_encode($out));
     return array('result' => 'ok');
 }