示例#1
0
 /**
  * Returns all CourseEvents in the given time range for the given range_id.
  *
  * @param string $user_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 CourseEvents.
  */
 public static function getEventsByInterval($user_id, DateTime $start, dateTime $end)
 {
     $stmt = DBManager::get()->prepare('SELECT termine.* FROM seminar_user ' . 'INNER JOIN termine ON seminar_id = range_id ' . 'WHERE user_id = :user_id ' . 'AND date BETWEEN :start AND :end ' . "AND (IFNULL(metadate_id, '') = '' " . 'OR metadate_id NOT IN ( ' . 'SELECT metadate_id FROM schedule_seminare ' . 'WHERE user_id = :user_id AND visible = 0) ) ' . 'ORDER BY date ASC');
     $stmt->execute(array(':user_id' => $user_id, ':start' => $start->getTimestamp(), ':end' => $end->getTimestamp()));
     $event_collection = array();
     foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
         $event = new CourseEvent();
         $event->setData($row);
         $event->setNew(false);
         // related persons (dozenten) or groups
         if (self::checkRelated($event, $user_id)) {
             $event_collection[] = $event;
         }
     }
     $event_collection = SimpleORMapCollection::createFromArray($event_collection, false);
     $event_collection->setClassName('Event');
     return $event_collection;
 }