]> git.mxchange.org Git - friendica-addons.git/blobdiff - dav/calendar.friendica.fnk.php
More refactoring, mainly of the addressbook/VCARD-part
[friendica-addons.git] / dav / calendar.friendica.fnk.php
index fff3447e47f775fbbf5961f9ffde3327a2a3793d..60dd9c6bd190a4e9f97ad5570218398d4a4405a4 100644 (file)
@@ -10,16 +10,21 @@ if (isset($uri["path"]) && strlen($uri["path"]) > 1) {
 define("CALDAV_SQL_DB", "");
 define("CALDAV_SQL_PREFIX", "dav_");
 define("CALDAV_URL_PREFIX", $path . "dav/");
+define("DAV_APPNAME", "Friendica");
 
 define("CALDAV_NAMESPACE_PRIVATE", 1);
-
 define("CALDAV_FRIENDICA_MINE", "friendica-mine");
 define("CALDAV_FRIENDICA_CONTACTS", "friendica-contacts");
 
 $GLOBALS["CALDAV_PRIVATE_SYSTEM_CALENDARS"] = array(CALDAV_FRIENDICA_MINE, CALDAV_FRIENDICA_CONTACTS);
+$GLOBALS["CALDAV_PRIVATE_SYSTEM_BACKENDS"] = array("Sabre_CalDAV_Backend_Friendica");
+
+define("CARDDAV_NAMESPACE_PRIVATE", 1);
+define("CARDDAV_FRIENDICA_CONTACT", "friendica");
+$GLOBALS["CARDDAV_PRIVATE_SYSTEM_ADDRESSBOOKS"] = array(CARDDAV_FRIENDICA_CONTACT);
+$GLOBALS["CARDDAV_PRIVATE_SYSTEM_BACKENDS"] = array("Sabre_CardDAV_Backend_Friendica");
 
-define("CARDDAV_NAMESPACE_COMMUNITYCONTACTS", 1);
-define("CARDDAV_NAMESPACE_PHONECONTACTS", 2);
+$GLOBALS["CALDAV_ACL_PLUGIN_CLASS"] = "Sabre_DAVACL_Plugin_Friendica";
 
 define("CALDAV_MAX_YEAR", date("Y") + 5);
 
@@ -151,6 +156,14 @@ function dav_compat_get_max_private_calendars()
        return null;
 }
 
+/**
+ * @return string
+ */
+function dav_compat_get_hostname() {
+       $a = get_app();
+       return $a->get_hostname();
+}
+
 /**
  * @param int $namespace
  * @param int $namespace_id
@@ -218,3 +231,44 @@ function wdcal_create_std_calendars()
        $stms = wdcal_create_std_calendars_get_statements($a->user["uid"]);
        foreach ($stms as $stmt) q($stmt);
 }
+
+
+
+
+/**
+ * @param int $user_id
+ * @param bool $withcheck
+ * @return array
+ */
+function wdcal_create_std_addressbooks_get_statements($user_id, $withcheck = true)
+{
+       $stms = array();
+       $a = get_app();
+       $uris = array(
+               'private'                 => t("Private Addresses"),
+               CARDDAV_FRIENDICA_CONTACT     => t("Friendica Contacts"),
+       );
+       foreach ($uris as $uri => $name) {
+               $cals = q("SELECT * FROM %s%saddressbooks WHERE `namespace` = %d AND `namespace_id` = %d AND `uri` = '%s'",
+                       CALDAV_SQL_DB, CALDAV_SQL_PREFIX, CALDAV_NAMESPACE_PRIVATE, IntVal($user_id), dbesc($uri));
+               if (count($cals) == 0 || !$withcheck) $stms[] =
+                       sprintf("INSERT INTO %s%saddressbooks (`namespace`, `namespace_id`, `displayname`, `ctag`, `uri`)
+                               VALUES (%d, %d, '%s', 1, '%s')",
+                               CALDAV_SQL_DB, CALDAV_SQL_PREFIX, CARDDAV_NAMESPACE_PRIVATE, IntVal($user_id), dbesc($name), dbesc($uri));
+       }
+       return $stms;
+}
+
+/**
+ */
+function wdcal_create_std_addressbooks()
+{
+       $a = get_app();
+       if (!local_user()) return;
+
+       $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"]));
+       if ($privates[0]["num"] > 0) return;
+
+       $stms = wdcal_create_std_addressbooks_get_statements($a->user["uid"]);
+       foreach ($stms as $stmt) q($stmt);
+}