]> git.mxchange.org Git - friendica-addons.git/blob - dav/calendar.friendica.fnk.php
Initial Release of the calendar plugin
[friendica-addons.git] / dav / calendar.friendica.fnk.php
1 <?php
2
3 define("CALDAV_SQL_DB", "");
4 define("CALDAV_SQL_PREFIX", "dav_");
5 define("CALDAV_URL_PREFIX", "dav/");
6
7 define("CALDAV_NAMESPACE_PRIVATE", 1);
8 define("CALDAV_NAMESPACE_FRIENDICA_NATIVE", 2);
9
10 define("CALDAV_FRIENDICA_MINE", 1);
11 define("CALDAV_FRIENDICA_CONTACTS", 2);
12
13 define("CARDDAV_NAMESPACE_COMMUNITYCONTACTS", 1);
14 define("CARDDAV_NAMESPACE_PHONECONTACTS", 2);
15
16 define("CALDAV_DB_VERSION", 1);
17
18 function getCurMicrotime () {
19         list($usec, $sec) = explode(" ", microtime());
20         return sprintf("%14.0f", $sec * 10000 + $usec * 10000);
21 } // function getCurMicrotime
22
23 function debug_time() {
24         $cur = getCurMicrotime();
25         if ($GLOBALS["debug_time_last"] > 0) {
26                 echo "Zeit: " . ($cur - $GLOBALS["debug_time_last"]) . "<br>\n";
27         }
28         $GLOBALS["debug_time_last"] = $cur;
29 }
30
31
32 /**
33  * @param string $username
34  * @return int|null
35  */
36 function dav_compat_username2id($username = "")
37 {
38         $x = q("SELECT `uid` FROM user WHERE nickname='%s' AND account_removed = 0 AND account_expired = 0", dbesc($username));
39         if (count($x) == 1) return $x[0]["uid"];
40         return null;
41 }
42
43 /**
44  * @param int $id
45  * @return string
46  */
47 function dav_compat_id2username($id = 0)
48 {
49         $x = q("SELECT `nickname` FROM user WHERE uid = %i AND account_removed = 0 AND account_expired = 0", IntVal($id));
50         if (count($x) == 1) return $x[0]["nickname"];
51         return "";
52 }
53
54 /**
55  * @return int
56  */
57 function dav_compat_get_curr_user_id() {
58         $a = get_app();
59         return IntVal($a->user["uid"]);
60 }
61
62
63 /**
64  * @param string $principalUri
65  * @return int|null
66  */
67 function dav_compat_principal2uid($principalUri = "")
68 {
69         if (strlen($principalUri) == 0) return null;
70         if ($principalUri[0] == "/") $principalUri = substr($principalUri, 1);
71         if (strpos($principalUri, "principals/users/") !== 0) return null;
72         $username = substr($principalUri, strlen("principals/users/"));
73         return dav_compat_username2id($username);
74 }
75
76 /**
77  * @param $text
78  * @return mixed
79  */
80 function wdcal_parse_text_serverside($text)
81 {
82         return $text;
83 }
84
85 /**
86  * @param int $user_id
87  * @param int $namespace
88  * @param int $namespace_id
89  * @return AnimexxCalSource
90  * @throws Exception
91  */
92 function wdcal_calendar_factory($user_id, $namespace, $namespace_id)
93 {
94         switch ($namespace) {
95                 case CALDAV_NAMESPACE_PRIVATE:
96                         return new AnimexxCalSourcePrivate($user_id, $namespace_id);
97                 case CALDAV_NAMESPACE_FRIENDICA_NATIVE:
98                         return new FriendicaCalSourceEvents($user_id, $namespace_id);
99         }
100         throw new Exception("Calendar Namespace not found");
101 }
102
103
104 /**
105  */
106 function wdcal_create_std_calendars()
107 {
108         $a = get_app();
109         if (!local_user()) return;
110
111         $cals = q("SELECT * FROM %s%scalendars WHERE `uid` = %d AND `namespace` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $a->user["uid"], CALDAV_NAMESPACE_PRIVATE);
112         if (count($cals) == 0) {
113                 $maxid = q("SELECT MAX(`namespace_id`) maxid FROM %s%scalendars WHERE `namespace` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, CALDAV_NAMESPACE_PRIVATE);
114                 if (!$maxid) {
115                         notification("Something went wrong when trying to create your calendar.");
116                         goaway("/");
117                         killme();
118                 }
119                 $nextid = IntVal($maxid[0]["maxid"]) + 1;
120                 q("INSERT INTO %s%scalendars (`namespace`, `namespace_id`, `uid`, `displayname`, `timezone`, `ctag`) VALUES (%d, %d, %d, '%s', '%s', 1)",
121                         CALDAV_SQL_DB, CALDAV_SQL_PREFIX, CALDAV_NAMESPACE_PRIVATE, $nextid, $a->user["uid"], dbesc(t("Private Calendar")), dbesc($a->timezone)
122                 );
123         }
124
125         $cals = q("SELECT * FROM %s%scalendars WHERE `uid` = %d AND `namespace` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $a->user["uid"], CALDAV_NAMESPACE_FRIENDICA_NATIVE);
126         if (count($cals) < 2) {
127                 q("INSERT INTO %s%scalendars (`namespace`, `namespace_id`, `uid`, `displayname`, `timezone`, `ctag`) VALUES (%d, %d, %d, '%s', '%s', 1)",
128                         CALDAV_SQL_DB, CALDAV_SQL_PREFIX, CALDAV_NAMESPACE_FRIENDICA_NATIVE, CALDAV_FRIENDICA_MINE, $a->user["uid"], dbesc(t("Friendica Events: Mine")), dbesc($a->timezone)
129                 );
130                 q("INSERT INTO %s%scalendars (`namespace`, `namespace_id`, `uid`, `displayname`, `timezone`, `ctag`) VALUES (%d, %d, %d, '%s', '%s', 1)",
131                         CALDAV_SQL_DB, CALDAV_SQL_PREFIX, CALDAV_NAMESPACE_FRIENDICA_NATIVE, CALDAV_FRIENDICA_CONTACTS, $a->user["uid"], dbesc(t("Friendica Events: Contacts")), dbesc($a->timezone)
132                 );
133         }
134 }