]> git.mxchange.org Git - friendica-addons.git/blob - dav/common/dav_caldav_backend_virtual.inc.php
Move StatusNet addon dependencies in own library subfolder
[friendica-addons.git] / dav / common / dav_caldav_backend_virtual.inc.php
1 <?php
2
3 abstract class Sabre_CalDAV_Backend_Virtual extends Sabre_CalDAV_Backend_Common
4 {
5
6
7
8         /**
9          * @static
10          * @abstract
11          * @param int $calendarId
12          * @param string $uri
13          * @return array
14          */
15         /*
16         abstract public function getItemsByUri($calendarId, $uri);
17     */
18
19         /**
20          * @static
21          * @param int $uid
22          * @param int $namespace
23          */
24         static public function invalidateCache($uid = 0, $namespace = 0) {
25                 q("DELETE FROM %s%scal_virtual_object_sync WHERE `uid` = %d AND `namespace` = %d",
26                         CALDAV_SQL_DB, CALDAV_SQL_PREFIX, IntVal($uid), IntVal($namespace));
27         }
28
29         /**
30          * @static
31          * @abstract
32          * @param int $calendarId
33          */
34         static abstract protected function createCache_internal($calendarId);
35
36         /**
37          * @static
38          * @param int $calendarId
39          */
40         static protected function createCache($calendarId) {
41                 $calendarId = IntVal($calendarId);
42                 q("DELETE FROM %s%scal_virtual_object_cache WHERE `calendar_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $calendarId);
43                 static::createCache_internal($calendarId);
44                 q("REPLACE INTO %s%scal_virtual_object_sync (`calendar_id`, `date`) VALUES (%d, NOW())", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $calendarId);
45         }
46
47         /**
48          * @param string $calendarId
49          * @return array
50          */
51         public function getCalendarObjects($calendarId)
52         {
53                 $calendarId = IntVal($calendarId);
54                 $r = q("SELECT COUNT(*) n FROM %s%scal_virtual_object_sync WHERE `calendar_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $calendarId);
55
56                 if ($r[0]["n"] == 0) static::createCache($calendarId);
57
58                 $r = q("SELECT * FROM %s%scal_virtual_object_cache WHERE `calendar_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $calendarId);
59
60                 $ret = array();
61                 foreach ($r as $obj) {
62                         $ret[] = array(
63                                 "id" => IntVal($obj["data_uri"]),
64                                 "calendardata" => $obj["calendardata"],
65                                 "uri" => $obj["data_uri"],
66                                 "lastmodified" => $obj["date"],
67                                 "calendarid" => $calendarId,
68                                 "etag" => $obj["etag"],
69                                 "size" => IntVal($obj["size"]),
70                         );
71                 }
72
73                 return $ret;
74         }
75
76         /**
77          * Returns information from a single calendar object, based on it's object
78          * uri.
79          *
80          * The returned array must have the same keys as getCalendarObjects. The
81          * 'calendardata' object is required here though, while it's not required
82          * for getCalendarObjects.
83          *
84          * @param string $calendarId
85          * @param string $objectUri
86          * @throws Sabre_DAV_Exception_NotFound
87          * @return array
88          */
89         public function getCalendarObject($calendarId, $objectUri)
90         {
91                 $calendarId = IntVal($calendarId);
92                 $r = q("SELECT COUNT(*) n FROM %s%scal_virtual_object_sync WHERE `calendar_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, IntVal($calendarId));
93
94                 if ($r[0]["n"] == 0) static::createCache($calendarId);
95
96                 $r = q("SELECT * FROM %s%scal_virtual_object_cache WHERE `data_uri` = '%s' AND `calendar_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, dbesc($objectUri), IntVal($calendarId));
97                 if (count($r) == 0) throw new Sabre_DAV_Exception_NotFound();
98
99                 $obj = $r[0];
100                 $ret = array(
101                         "id" => IntVal($obj["data_uri"]),
102                         "calendardata" => $obj["calendardata"],
103                         "uri" => $obj["data_uri"],
104                         "lastmodified" => $obj["date"],
105                         "calendarid" => $calendarId,
106                         "etag" => $obj["etag"],
107                         "size" => IntVal($obj["size"]),
108                 );
109                 return $ret;
110         }
111
112
113
114         /**
115          * Creates a new calendar for a principal.
116          *
117          * If the creation was a success, an id must be returned that can be used to reference
118          * this calendar in other methods, such as updateCalendar.
119          *
120          * @param string $principalUri
121          * @param string $calendarUri
122          * @param array $properties
123          * @throws Sabre_DAV_Exception_Forbidden
124          * @return void
125          */
126         public function createCalendar($principalUri, $calendarUri, array $properties)
127         {
128                 throw new Sabre_DAV_Exception_Forbidden();
129         }
130
131         /**
132          * Delete a calendar and all it's objects
133          *
134          * @param string $calendarId
135          * @throws Sabre_DAV_Exception_Forbidden
136          * @return void
137          */
138         public function deleteCalendar($calendarId)
139         {
140                 throw new Sabre_DAV_Exception_Forbidden();
141         }
142
143
144         /**
145          * Creates a new calendar object.
146          *
147          * @param string $calendarId
148          * @param string $objectUri
149          * @param string $calendarData
150          * @throws Sabre_DAV_Exception_Forbidden
151          * @return null|string|void
152          */
153         function createCalendarObject($calendarId, $objectUri, $calendarData)
154         {
155                 throw new Sabre_DAV_Exception_Forbidden();
156         }
157
158         /**
159          * Updates an existing calendarobject, based on it's uri.
160          *
161          * @param string $calendarId
162          * @param string $objectUri
163          * @param string $calendarData
164          * @throws Sabre_DAV_Exception_Forbidden
165          * @return null|string|void
166          */
167         function updateCalendarObject($calendarId, $objectUri, $calendarData)
168         {
169                 throw new Sabre_DAV_Exception_Forbidden();
170         }
171
172         /**
173          * Deletes an existing calendar object.
174          *
175          * @param string $calendarId
176          * @param string $objectUri
177          * @throws Sabre_DAV_Exception_Forbidden
178          * @return void
179          */
180         function deleteCalendarObject($calendarId, $objectUri)
181         {
182                 throw new Sabre_DAV_Exception_Forbidden();
183         }
184
185
186 }