_doctrine = $doctrine; $this->_securityContext = $securityContext; } public function getGlobals() { $today = new \DateTime('now'); $firstDay = \DateTime::createFromFormat('Y-m-d', $today->format('Y-m-01')); $firstDayWeekday = $firstDay->format('N'); $numDays = $firstDay->format('t'); $lastDay = \DateTime::createFromFormat('Y-m-d', $today->format('Y-m-' . sprintf("%02d", $numDays))); /* * Get all events in today's month. Iterate through this * collection, adding each element to $monthEvents array's * 'day'th element array. */ $query = $this-> _doctrine ->getManager() ->createQuery(' SELECT e FROM KekRozsakFrontBundle:Event e WHERE e.cancelled = FALSE AND ( ( e.startDate < :firstDay AND e.endDate >= :firstDay ) OR e.startDate BETWEEN :firstDay AND :lastDay ) ') ; $query->setParameter('firstDay', $firstDay, \Doctrine\DBAL\Types\Type::DATE); $query->setParameter('lastDay', $lastDay, \Doctrine\DBAL\Types\Type::DATE); $events = $query->getResult(); $eventList = array(); for ($i = 1; $i <= $numDays; $i++) { $date = \DateTime::createFromFormat( 'Y-m-d', $today->format('Y-m-' . sprintf('%02d', $i)) ); $eventList[$i]['date'] = $date; $eventList[$i]['events'] = array(); foreach ($events as $event) { if ($event->isOnDate($date)) { $eventList[$i]['events'][] = $event; } } } return array( 'events' => $events, 'eventList' => $eventList, 'today' => $today, 'firstDay' => $firstDay, 'lastDay' => $lastDay, 'firstDayWeekday' => ($firstDayWeekday == 0) ? 7 : $firstDayWeekday, 'numDays' => $numDays, ); } public function getName() { return 'Events'; } }