-<?php
-
-class Calendar_Item extends DatabaseTable {
-
- public function __construct($id=false)
- {
- $db = new Database(DBDRIVER, DBHOST, DAV_DBNAME, DBUSER, DBPASS);
-
- parent::__construct('calendar_item', $id, $db, 'dav_id');
- }
-
- public static function pgTimestamp($timestamp)
- {
- if (is_string($timestamp))
- return $timestamp;
- elseif (is_int($timestamp))
- return date('Y-m-d H:i:s', $timestamp);
- elseif (is_object($timestamp) && is_a($timestamp, 'DateTime'))
- return $timestamp->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);
- }
-
-}