Esempio n. 1
0
 /**
  * Returns all CalendarEvents in the given time range for the given range_id.
  *
  * @param string $range_id Id of Stud.IP object from type user, course, inst
  * @param DateTime $start The start date time.
  * @param DateTime $end The end date time.
  * @return SimpleORMapCollection Collection of found CalendarEvents.
  */
 public static function getEventsByInterval($range_id, DateTime $start, DateTime $end)
 {
     $stmt = DBManager::get()->prepare('SELECT * FROM calendar_event ' . 'INNER JOIN event_data USING(event_id) ' . 'WHERE range_id = :range_id ' . 'AND (start BETWEEN :start AND :end OR ' . "(start <= :end AND (expire + end - start) >= :start AND rtype != 'SINGLE') " . 'OR (:start BETWEEN start AND end)) ' . 'ORDER BY start ASC');
     $stmt->execute(array(':range_id' => $range_id, ':start' => $start->getTimestamp(), ':end' => $end->getTimestamp()));
     $i = 0;
     $event_collection = array();
     foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
         $event_collection[$i] = new CalendarEvent();
         $event_collection[$i]->setData($row);
         $event_collection[$i]->setNew(false);
         $event = new EventData();
         $event->setData($row);
         $event->setNew(false);
         $event_collection[$i]->event = $event;
         $i++;
     }
     $event_collection = SimpleORMapCollection::createFromArray($event_collection, false);
     $event_collection->setClassName('Event');
     return $event_collection;
 }