]> git.mxchange.org Git - friendica-addons.git/blob - dav/friendica/calendar.friendica.fnk.php
Revert to stable version 3.5.4
[friendica-addons.git] / dav / friendica / calendar.friendica.fnk.php
1 <?php
2
3 $a    = get_app();
4 $uri  = parse_url($a->get_baseurl());
5 $path = "/";
6 if (isset($uri["path"]) && strlen($uri["path"]) > 1) {
7         $path = $uri["path"] . "/";
8 }
9
10 define("CALDAV_SQL_DB", "");
11 define("CALDAV_SQL_PREFIX", "dav_");
12 define("CALDAV_URL_PREFIX", $path . "dav/");
13 define("DAV_APPNAME", "Friendica");
14
15 define("CALDAV_NAMESPACE_PRIVATE", 1);
16 define("CALDAV_FRIENDICA_MINE", "friendica-mine");
17 define("CALDAV_FRIENDICA_CONTACTS", "friendica-contacts");
18
19 $GLOBALS["CALDAV_PRIVATE_SYSTEM_CALENDARS"] = array(CALDAV_FRIENDICA_MINE, CALDAV_FRIENDICA_CONTACTS);
20 $GLOBALS["CALDAV_PRIVATE_SYSTEM_BACKENDS"] = array("Sabre_CalDAV_Backend_Friendica");
21
22 define("CARDDAV_NAMESPACE_PRIVATE", 1);
23 define("CARDDAV_FRIENDICA_CONTACT", "friendica");
24 $GLOBALS["CARDDAV_PRIVATE_SYSTEM_ADDRESSBOOKS"] = array(CARDDAV_FRIENDICA_CONTACT);
25 $GLOBALS["CARDDAV_PRIVATE_SYSTEM_BACKENDS"] = array("Sabre_CardDAV_Backend_Friendica");
26
27 $GLOBALS["CALDAV_ACL_PLUGIN_CLASS"] = "Sabre_DAVACL_Plugin_Friendica";
28
29 define("CALDAV_MAX_YEAR", date("Y") + 5);
30
31 /**
32  * @return int
33  */
34 function getCurMicrotime()
35 {
36         list($usec, $sec) = explode(" ", microtime());
37         return sprintf("%14.0f", $sec * 10000 + $usec * 10000);
38 } // function getCurMicrotime
39
40 /**
41  *
42  */
43 function debug_time()
44 {
45         $cur = getCurMicrotime();
46         if ($GLOBALS["debug_time_last"] > 0) {
47                 echo "Zeit: " . ($cur - $GLOBALS["debug_time_last"]) . "<br>\n";
48         }
49         $GLOBALS["debug_time_last"] = $cur;
50 }
51
52
53 /**
54  * @param string $username
55  * @return int|null
56  */
57 function dav_compat_username2id($username = "")
58 {
59         $x = q("SELECT `uid` FROM `user` WHERE `nickname`='%s' AND `account_removed` = 0 AND `account_expired` = 0", dbesc($username));
60         if (count($x) == 1) return $x[0]["uid"];
61         return null;
62 }
63
64 /**
65  * @param int $id
66  * @return string
67  */
68 function dav_compat_id2username($id = 0)
69 {
70         $x = q("SELECT `nickname` FROM `user` WHERE `uid` = %i AND `account_removed` = 0 AND `account_expired` = 0", IntVal($id));
71         if (count($x) == 1) return $x[0]["nickname"];
72         return "";
73 }
74
75 /**
76  * @return int
77  */
78 function dav_compat_get_curr_user_id()
79 {
80         $a = get_app();
81         return IntVal($a->user["uid"]);
82 }
83
84
85 /**
86  * @param string $principalUri
87  * @return int|null
88  */
89 function dav_compat_principal2uid($principalUri = "")
90 {
91         if (strlen($principalUri) == 0) return null;
92         if ($principalUri[0] == "/") $principalUri = substr($principalUri, 1);
93         if (strpos($principalUri, "principals/users/") !== 0) return null;
94         $username = substr($principalUri, strlen("principals/users/"));
95         return dav_compat_username2id($username);
96 }
97
98 /**
99  * @param string $principalUri
100  * @return array|null
101  */
102 function dav_compat_principal2namespace($principalUri = "")
103 {
104         if (strlen($principalUri) == 0) return null;
105         if ($principalUri[0] == "/") $principalUri = substr($principalUri, 1);
106
107         if (strpos($principalUri, "principals/users/") !== 0) return null;
108         $username = substr($principalUri, strlen("principals/users/"));
109         return array("namespace" => CALDAV_NAMESPACE_PRIVATE, "namespace_id" => dav_compat_username2id($username));
110 }
111
112
113 /**
114  * @return string
115  */
116 function dav_compat_currentUserPrincipal()
117 {
118         $a = get_app();
119         return "principals/users/" . strtolower($a->user["nickname"]);
120 }
121
122
123 /**
124  * @param string $name
125  * @return null|string
126  */
127 function dav_compat_getRequestVar($name = "")
128 {
129         if (isset($_REQUEST[$name])) return $_REQUEST[$name];
130         else return null;
131 }
132
133 /**
134  * @param $text
135  * @return null|string
136  */
137 function dav_compat_parse_text_serverside($text)
138 {
139         return dav_compat_getRequestVar($text);
140 }
141
142 /**
143  * @param string $uri
144  */
145 function dav_compat_redirect($uri = "")
146 {
147         goaway($uri);
148 }
149
150
151 /**
152  * @return null|int
153  */
154 function dav_compat_get_max_private_calendars()
155 {
156         return null;
157 }
158
159 /**
160  * @return string
161  */
162 function dav_compat_get_hostname() {
163         $a = get_app();
164         return $a->get_hostname();
165 }
166
167 /**
168  * @param int $namespace
169  * @param int $namespace_id
170  * @param string $uri
171  * @param array $calendar
172  * @return Sabre_CalDAV_Backend_Common
173  * @throws Exception
174  */
175 function wdcal_calendar_factory($namespace, $namespace_id, $uri, $calendar = null)
176 {
177         switch ($namespace) {
178                 case CALDAV_NAMESPACE_PRIVATE:
179                         if ($uri == CALDAV_FRIENDICA_MINE || $uri == CALDAV_FRIENDICA_CONTACTS) return Sabre_CalDAV_Backend_Friendica::getInstance();
180                         else return Sabre_CalDAV_Backend_Private::getInstance();
181         }
182         throw new Exception("Calendar Namespace not found");
183 }
184
185 /**
186  * @param int $calendar_id
187  * @return Sabre_CalDAV_Backend_Common
188  * @throws Exception
189  */
190 function wdcal_calendar_factory_by_id($calendar_id)
191 {
192         $calendar = Sabre_CalDAV_Backend_Common::loadCalendarById($calendar_id);
193         return wdcal_calendar_factory($calendar["namespace"], $calendar["namespace_id"], $calendar["uri"], $calendar);
194 }
195
196 /**
197  * @param int $user_id
198  * @param bool $withcheck
199  * @return array
200  */
201 function wdcal_create_std_calendars_get_statements($user_id, $withcheck = true)
202 {
203         $stms = array();
204         $a = get_app();
205         $uris = array(
206                 'private'                 => t("Private Calendar"),
207                 CALDAV_FRIENDICA_MINE     => t("Friendica Events: Mine"),
208                 CALDAV_FRIENDICA_CONTACTS => t("Friendica Events: Contacts"),
209         );
210         foreach ($uris as $uri => $name) {
211                 $cals = q("SELECT * FROM %s%scalendars WHERE `namespace` = %d AND `namespace_id` = %d AND `uri` = '%s'",
212                         CALDAV_SQL_DB, CALDAV_SQL_PREFIX, CALDAV_NAMESPACE_PRIVATE, IntVal($user_id), dbesc($uri));
213                 if (count($cals) == 0 || !$withcheck) $stms[] =
214                         sprintf("INSERT INTO %s%scalendars (`namespace`, `namespace_id`, `displayname`, `timezone`, `ctag`, `uri`, `has_vevent`, `has_vtodo`)
215                                 VALUES (%d, %d, '%s', '%s', 1, '%s', 1, 0)",
216                                 CALDAV_SQL_DB, CALDAV_SQL_PREFIX, CALDAV_NAMESPACE_PRIVATE, IntVal($user_id), dbesc($name), dbesc($a->timezone), dbesc($uri));
217         }
218         return $stms;
219 }
220
221 /**
222  */
223 function wdcal_create_std_calendars()
224 {
225         $a = get_app();
226         if (!local_user()) return;
227
228         $privates = q("SELECT COUNT(*) num FROM %s%scalendars WHERE `namespace` = %d AND `namespace_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, CALDAV_NAMESPACE_PRIVATE, IntVal($a->user["uid"]));
229         if ($privates[0]["num"] > 0) return;
230
231         $stms = wdcal_create_std_calendars_get_statements($a->user["uid"]);
232         foreach ($stms as $stmt) q($stmt);
233 }
234
235
236
237
238 /**
239  * @param int $user_id
240  * @param bool $withcheck
241  * @return array
242  */
243 function wdcal_create_std_addressbooks_get_statements($user_id, $withcheck = true)
244 {
245         $stms = array();
246         $a = get_app();
247         $uris = array(
248                 'private'                 => t("Private Addresses"),
249                 CARDDAV_FRIENDICA_CONTACT     => t("Friendica Contacts"),
250         );
251         foreach ($uris as $uri => $name) {
252                 $cals = q("SELECT * FROM %s%saddressbooks WHERE `namespace` = %d AND `namespace_id` = %d AND `uri` = '%s'",
253                         CALDAV_SQL_DB, CALDAV_SQL_PREFIX, CALDAV_NAMESPACE_PRIVATE, IntVal($user_id), dbesc($uri));
254                 if (count($cals) == 0 || !$withcheck) $stms[] =
255                         sprintf("INSERT INTO %s%saddressbooks (`namespace`, `namespace_id`, `displayname`, `ctag`, `uri`)
256                                 VALUES (%d, %d, '%s', 1, '%s')",
257                                 CALDAV_SQL_DB, CALDAV_SQL_PREFIX, CARDDAV_NAMESPACE_PRIVATE, IntVal($user_id), dbesc($name), dbesc($uri));
258         }
259         return $stms;
260 }
261
262 /**
263  */
264 function wdcal_create_std_addressbooks()
265 {
266         $a = get_app();
267         if (!local_user()) return;
268
269         $privates = q("SELECT COUNT(*) num FROM %s%addressbooks WHERE `namespace` = %d AND `namespace_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, CARDDAV_NAMESPACE_PRIVATE, IntVal($a->user["uid"]));
270         if ($privates[0]["num"] > 0) return;
271
272         $stms = wdcal_create_std_addressbooks_get_statements($a->user["uid"]);
273         foreach ($stms as $stmt) q($stmt);
274 }