3 abstract class Sabre_CalDAV_Backend_Virtual extends Sabre_CalDAV_Backend_Common
11 * @param int $calendarId
16 abstract public function getItemsByUri($calendarId, $uri);
22 * @param int $namespace
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));
32 * @param int $calendarId
34 static abstract protected function createCache_internal($calendarId);
38 * @param int $calendarId
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);
48 * @param string $calendarId
51 public function getCalendarObjects($calendarId)
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);
56 if ($r[0]["n"] == 0) static::createCache($calendarId);
58 $r = q("SELECT * FROM %s%scal_virtual_object_cache WHERE `calendar_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $calendarId);
61 foreach ($r as $obj) {
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"]),
77 * Returns information from a single calendar object, based on it's object
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.
84 * @param string $calendarId
85 * @param string $objectUri
86 * @throws Sabre_DAV_Exception_NotFound
89 public function getCalendarObject($calendarId, $objectUri)
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));
94 if ($r[0]["n"] == 0) static::createCache($calendarId);
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();
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"]),
115 * Creates a new calendar for a principal.
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.
120 * @param string $principalUri
121 * @param string $calendarUri
122 * @param array $properties
123 * @throws Sabre_DAV_Exception_Forbidden
126 public function createCalendar($principalUri, $calendarUri, array $properties)
128 throw new Sabre_DAV_Exception_Forbidden();
132 * Delete a calendar and all it's objects
134 * @param string $calendarId
135 * @throws Sabre_DAV_Exception_Forbidden
138 public function deleteCalendar($calendarId)
140 throw new Sabre_DAV_Exception_Forbidden();
145 * Creates a new calendar object.
147 * @param string $calendarId
148 * @param string $objectUri
149 * @param string $calendarData
150 * @throws Sabre_DAV_Exception_Forbidden
151 * @return null|string|void
153 function createCalendarObject($calendarId, $objectUri, $calendarData)
155 throw new Sabre_DAV_Exception_Forbidden();
159 * Updates an existing calendarobject, based on it's uri.
161 * @param string $calendarId
162 * @param string $objectUri
163 * @param string $calendarData
164 * @throws Sabre_DAV_Exception_Forbidden
165 * @return null|string|void
167 function updateCalendarObject($calendarId, $objectUri, $calendarData)
169 throw new Sabre_DAV_Exception_Forbidden();
173 * Deletes an existing calendar object.
175 * @param string $calendarId
176 * @param string $objectUri
177 * @throws Sabre_DAV_Exception_Forbidden
180 function deleteCalendarObject($calendarId, $objectUri)
182 throw new Sabre_DAV_Exception_Forbidden();