format('Y-m-d H:i:s'); else return NULL; } public static function formatTimespan($dtstart, $dtend=false) { $start = new DateTime($dtstart); if ($dtend !== false) { $end = new DateTime($dtend); if ($start->format('Y-m-d') == $end->format('Y-m-d')) { if ($start->format('i') == '00' && $end->format('i') == '00') return $start->format('d.m. H') . '-' . $end->format('H') . ' Uhr'; else return $start->format('d.m. H:i') . '-' . $end->format('H:i'); } if ($start->format('H:i:s') == '00:00:00' && $end->format('H:i:s') == '00:00:00') { $end->sub(new DateInterval('P1D')); if ($start->format('Y-m-d') == $end->format('Y-m-d')) return $start->format('d.m.'); else return $start->format('d.m.') . '-' . $end->format('d.m.'); } if ($start->format('Y-m-') == $end->format('Y-m-')) { return $start->format('d.m. H:i') . '-' . $end->format('d.m. H:i'); } } return 'timespan'; } public function getYears() { $sql = sprintf("SELECT DISTINCT extract(year from dtstart) AS year FROM calendar_item WHERE user_no = %d ORDER BY year", DAV_USER_NO); return $this->db->fetchObjectList($sql); } public function getItems($from=false, $to=false) { $sql = sprintf("SELECT dav_id,dtstart,dtend,EXTRACT(WEEK FROM dtstart) AS kw,summary,location,description FROM calendar_item WHERE user_no = %d", DAV_USER_NO); if ($from) $sql .= sprintf(" AND dtstart >= %s", $this->db->quote(self::pgTimestamp($from))); if ($to) $sql .= sprintf(" AND dtstart <= %s", $this->db->quote(self::pgTimestamp($to))); $sql .= " ORDER BY dtstart"; return $this->db->fetchObjectList($sql); } }