]> git.mxchange.org Git - friendica-addons.git/blobdiff - dav/main.php
Merge remote branch 'upstream/master'
[friendica-addons.git] / dav / main.php
index bc5aeab022bee752ad56870a597faa20a337a687..6635d18aca544961977cc80f87f9226a2d9f3412 100644 (file)
@@ -22,21 +22,8 @@ function dav_module()
 {
 }
 
-
-/**
- * @param App $a
- */
-function dav_init(&$a)
+function dav_include_files()
 {
-
-       error_reporting(E_ALL);
-       ini_set("display_errors", 1);
-
-       /*
-        * Recommended settings:
-        * ALTER TABLE `photo` ADD INDEX ( `contact-id` )
-        */
-
        require_once (__DIR__ . "/common/dbclasses/dbclass_animexx.class.php");
        require_once (__DIR__ . "/common/dbclasses/dbclass.friendica.calendars.class.php");
        require_once (__DIR__ . "/common/dbclasses/dbclass.friendica.jqcalendar.class.php");
@@ -44,11 +31,11 @@ function dav_init(&$a)
        require_once (__DIR__ . "/common/dbclasses/dbclass.friendica.calendarobjects.class.php");
 
        /*
-       require_once (__DIR__ . "/SabreDAV/lib/Sabre.includes.php");
-       require_once (__DIR__ . "/SabreDAV/lib/Sabre/VObject/includes.php");
-       require_once (__DIR__ . "/SabreDAV/lib/Sabre/DAVACL/includes.php");
-       require_once (__DIR__ . "/SabreDAV/lib/Sabre/CalDAV/includes.php");
-       */
+                       require_once (__DIR__ . "/SabreDAV/lib/Sabre.includes.php");
+                       require_once (__DIR__ . "/SabreDAV/lib/Sabre/VObject/includes.php");
+                       require_once (__DIR__ . "/SabreDAV/lib/Sabre/DAVACL/includes.php");
+                       require_once (__DIR__ . "/SabreDAV/lib/Sabre/CalDAV/includes.php");
+                       */
        require_once (__DIR__ . "/SabreDAV/lib/Sabre/autoload.php");
 
        $tz_before = date_default_timezone_get();
@@ -78,6 +65,21 @@ function dav_init(&$a)
 
        require_once (__DIR__ . "/calendar.friendica.fnk.php");
        require_once (__DIR__ . "/layout.fnk.php");
+}
+
+
+/**
+ * @param App $a
+ */
+function dav_init(&$a)
+{
+
+       /*
+        * Recommended settings:
+        * ALTER TABLE `photo` ADD INDEX ( `contact-id` )
+        */
+
+       dav_include_files();
 
        if (false) {
                dbg(true);
@@ -91,7 +93,7 @@ function dav_init(&$a)
        if ($a->argc >= 2 && $a->argv[1] == "wdcal") {
 
                if ($a->argc >= 3 && $a->argv[2] == "feed") {
-                       wdcal_print_feed();
+                       wdcal_print_feed($a->get_baseurl() . "/dav/wdcal/");
                        killme();
                } elseif ($a->argc >= 3 && strlen($a->argv[2]) > 0) {
                        wdcal_addRequiredHeadersEdit();
@@ -133,7 +135,8 @@ function dav_init(&$a)
 // The object tree needs in turn to be passed to the server class
        $server = new Sabre_DAV_Server($tree);
 
-       $server->setBaseUri("/" . CALDAV_URL_PREFIX);
+       $url = parse_url($a->get_baseurl());
+       $server->setBaseUri(CALDAV_URL_PREFIX);
 
        $authPlugin = new Sabre_DAV_Auth_Plugin($authBackend, 'SabreDAV');
        $server->addPlugin($authPlugin);
@@ -172,21 +175,35 @@ function dav_content()
                return wdcal_getSettingsPage($a);
        } elseif ($a->argv[1] == "wdcal") {
                if ($a->argc >= 3 && strlen($a->argv[2]) > 0) {
-                       $uri        = $a->argv[2];
-                       $recurr_uri = ""; // @TODO
-                       if (isset($a->argv[3]) && $a->argv[3] == "edit") {
+                       $uri = $a->argv[2];
+
+                       if ($uri == "new") {
                                $o = "";
-                               if (isset($_REQUEST["save"])) $o .= wdcal_postEditPage($uri, $recurr_uri);
-                               $o .= wdcal_getEditPage($uri, $recurr_uri);
+                               if (isset($_REQUEST["save"])) {
+                                       check_form_security_token_redirectOnErr($a->get_baseurl() . "/dav/wdcal/", "caledit");
+                                       $o .= wdcal_postEditPage("new", "", $a->user["uid"], $a->timezone, $a->get_baseurl() . "/dav/wdcal/");
+                               }
+                               $o .= wdcal_getEditPage("new");
                                return $o;
                        } else {
-                               return wdcal_getDetailPage($uri, $recurr_uri);
+                               $recurr_uri = ""; // @TODO
+                               if (isset($a->argv[3]) && $a->argv[3] == "edit") {
+                                       $o = "";
+                                       if (isset($_REQUEST["save"])) {
+                                               check_form_security_token_redirectOnErr($a->get_baseurl() . "/dav/wdcal/", "caledit");
+                                               $o .= wdcal_postEditPage($uri, $recurr_uri, $a->user["uid"], $a->timezone, $a->get_baseurl() . "/dav/wdcal/");
+                                       }
+                                       $o .= wdcal_getEditPage($uri, $recurr_uri);
+                                       return $o;
+                               } else {
+                                       return wdcal_getDetailPage($uri, $recurr_uri);
+                               }
                        }
                } else {
                        $cals      = dav_getMyCals($a->user["uid"]);
                        $cals_show = array();
                        foreach ($cals as $e) $cals_show[] = array("ns" => $e->namespace, "id" => $e->namespace_id, "displayname" => $e->displayname);
-                       $x = wdcal_printCalendar($cals, $cals_show, "/dav/wdcal/feed/", "week", 0, 200);
+                       $x = wdcal_printCalendar($cals, $cals_show, $a->get_baseurl() . "/dav/wdcal/feed/", "week", 0, 200);
                }
        }
        return $x;
@@ -199,6 +216,7 @@ function dav_content()
  */
 function dav_event_created_hook(&$a, &$b)
 {
+       dav_include_files();
        // @TODO Updating the cache instead of completely invalidating and rebuilding it
        FriendicaVirtualCalSourceBackend::invalidateCache($a->user["uid"], CALDAV_FRIENDICA_CONTACTS);
        FriendicaVirtualCalSourceBackend::invalidateCache($a->user["uid"], CALDAV_FRIENDICA_MINE);
@@ -210,6 +228,7 @@ function dav_event_created_hook(&$a, &$b)
  */
 function dav_event_updated_hook(&$a, &$b)
 {
+       dav_include_files();
        // @TODO Updating the cache instead of completely invalidating and rebuilding it
        FriendicaVirtualCalSourceBackend::invalidateCache($a->user["uid"], CALDAV_FRIENDICA_CONTACTS);
        FriendicaVirtualCalSourceBackend::invalidateCache($a->user["uid"], CALDAV_FRIENDICA_MINE);
@@ -222,9 +241,9 @@ function dav_event_updated_hook(&$a, &$b)
 function dav_profile_tabs_hook(&$a, &$b)
 {
        $b["tabs"][] = array(
-       "label" => t('Calendar'),
-               "url" => "/dav/wdcal/",
-               "sel" => "",
+               "label" => t('Calendar'),
+               "url"   => $a->get_baseurl() . "/dav/wdcal/",
+               "sel"   => "",
                "title" => t('Extended calendar with CalDAV-support'),
        );
 }
@@ -281,4 +300,4 @@ function dav_plugin_admin(&$a, &$o)
        $tables = dav_get_create_statements();
        foreach ($tables as $t) $o .= escape_tags($t . "\n\n");
        $o .= "</pre></blockquote>";
-}
\ No newline at end of file
+}