]> git.mxchange.org Git - friendica-addons.git/blobdiff - dav/common/dav_caldav_backend_private.inc.php
Merge remote branch 'upstream/master'
[friendica-addons.git] / dav / common / dav_caldav_backend_private.inc.php
index d258b6ca7480974143170d14337f62498ea1e59d..5356280a42c225a98797836306aafb272dfd1b0d 100644 (file)
@@ -34,7 +34,8 @@ class Sabre_CalDAV_Backend_Private extends Sabre_CalDAV_Backend_Common
         * @static
         * @return string
         */
-       public static function getBackendTypeName() {
+       public static function getBackendTypeName()
+       {
                return t("Private Events");
        }
 
@@ -110,14 +111,15 @@ class Sabre_CalDAV_Backend_Private extends Sabre_CalDAV_Backend_Common
         */
        public function listItemsByRange($calendarId, $sd, $ed, $base_path)
        {
-               $calendar = Sabre_CalDAV_Backend_Common::loadCalendarById($calendarId);
-               $von      = wdcal_php2MySqlTime($sd);
-               $bis      = wdcal_php2MySqlTime($ed);
+               $calendar       = Sabre_CalDAV_Backend_Common::loadCalendarById($calendarId);
+               $von            = wdcal_php2MySqlTime($sd);
+               $bis            = wdcal_php2MySqlTime($ed);
+               $timezoneOffset = date("P");
 
                // @TODO Events, die früher angefangen haben, aber noch andauern
-               $evs = q("SELECT * FROM %s%sjqcalendar WHERE `calendar_id` = %d AND `starttime` between '%s' and '%s'",
-                       CALDAV_SQL_DB, CALDAV_SQL_PREFIX,
-                       IntVal($calendarId), dbesc($von), dbesc($bis));
+               $evs = q("SELECT *, CONVERT_TZ(`StartTime`, @@session.time_zone, '$timezoneOffset') StartTime, CONVERT_TZ(`EndTime`, @@session.time_zone, '$timezoneOffset') EndTime
+                       FROM %s%sjqcalendar WHERE `calendar_id` = %d AND `StartTime` between '%s' and '%s'",
+                       CALDAV_SQL_DB, CALDAV_SQL_PREFIX, IntVal($calendarId), dbesc($von), dbesc($bis));
 
                $events = array();
                foreach ($evs as $row) $events[] = $this->jqcal2wdcal($row, $calendar, $base_path . $row["calendar_id"] . "/");
@@ -151,6 +153,7 @@ class Sabre_CalDAV_Backend_Private extends Sabre_CalDAV_Backend_Common
         * common one is '{DAV:}displayname'.
         *
         * @param string $principalUri
+        * @throws DAVVersionMismatchException
         * @return array
         */
        public function getCalendarsForUser($principalUri)
@@ -161,14 +164,20 @@ class Sabre_CalDAV_Backend_Private extends Sabre_CalDAV_Backend_Common
                $cals = q("SELECT * FROM %s%scalendars WHERE `namespace` = %d AND `namespace_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $this->getNamespace(), IntVal($n["namespace_id"]));
                $ret  = array();
                foreach ($cals as $cal) {
+                       if (!isset($cal["uri"])) throw new DAVVersionMismatchException();
                        if (in_array($cal["uri"], $GLOBALS["CALDAV_PRIVATE_SYSTEM_CALENDARS"])) continue;
 
+                       $components = array();
+                       if ($cal["has_vevent"]) $components[] = "VEVENT";
+                       if ($cal["has_vtodo"]) $components[] = "VTODO";
+
                        $dat = array(
-                               "id"                                                      => $cal["id"],
-                               "uri"                                                     => $cal["uri"],
-                               "principaluri"                                            => $principalUri,
-                               '{' . Sabre_CalDAV_Plugin::NS_CALENDARSERVER . '}getctag' => $cal['ctag'] ? $cal['ctag'] : '0',
-                               "calendar_class"                                          => "Sabre_CalDAV_Calendar",
+                               "id"                                                                       => $cal["id"],
+                               "uri"                                                                      => $cal["uri"],
+                               "principaluri"                                                             => $principalUri,
+                               '{' . Sabre_CalDAV_Plugin::NS_CALENDARSERVER . '}getctag'                  => $cal['ctag'] ? $cal['ctag'] : '0',
+                               '{' . Sabre_CalDAV_Plugin::NS_CALDAV . '}supported-calendar-component-set' => new Sabre_CalDAV_Property_SupportedCalendarComponentSet($components),
+                               "calendar_class"                                                           => "Sabre_CalDAV_Calendar",
                        );
                        foreach ($this->propertyMap as $key=> $field) $dat[$key] = $cal[$field];
 
@@ -188,7 +197,7 @@ class Sabre_CalDAV_Backend_Private extends Sabre_CalDAV_Backend_Common
         * @param string $principalUri
         * @param string $calendarUri
         * @param array $properties
-        * @throws Sabre_DAV_Exception
+        * @throws Sabre_DAV_Exception|Sabre_DAV_Exception_Conflict
         * @return string|void
         */
        public function createCalendar($principalUri, $calendarUri, array $properties)
@@ -197,7 +206,7 @@ class Sabre_CalDAV_Backend_Private extends Sabre_CalDAV_Backend_Common
                $uid = dav_compat_principal2uid($principalUri);
 
                $r = q("SELECT * FROM %s%scalendars WHERE `namespace` = %d AND `namespace_id` = %d AND `uri` = '%s'", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, CALDAV_NAMESPACE_PRIVATE, $uid, dbesc($calendarUri));
-               if (count($r) > 0) throw new Sabre_DAV_Exception("A calendar with this URI already exists");
+               if (count($r) > 0) throw new Sabre_DAV_Exception_Conflict("A calendar with this URI already exists");
 
                $keys = array("`namespace`", "`namespace_id`", "`ctag`", "`uri`");
                $vals = array(CALDAV_NAMESPACE_PRIVATE, IntVal($uid), 1, "'" . dbesc($calendarUri) . "'");
@@ -431,7 +440,6 @@ class Sabre_CalDAV_Backend_Private extends Sabre_CalDAV_Backend_Common
         */
        function createCalendarObject($calendarId, $objectUri, $calendarData)
        {
-
                $calendarData = icalendar_sanitize_string($calendarData);
 
                $extraData = $this->getDenormalizedData($calendarData);