summaryrefslogtreecommitdiffstats
path: root/apps/dav/appinfo/v1/caldav.php
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2016-02-01 14:56:31 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2016-02-08 10:52:30 +0100
commit0c9a469f7439be154854fc8933c2be950895fe25 (patch)
tree37b7e44e6090afc037a7bd93dd3fa6193c90b7f6 /apps/dav/appinfo/v1/caldav.php
parenta67f7ad1f36c0a4a2232e31befaec15cd8a0f0e1 (diff)
downloadnextcloud-server-0c9a469f7439be154854fc8933c2be950895fe25.tar.gz
nextcloud-server-0c9a469f7439be154854fc8933c2be950895fe25.zip
Adding pre oc 9.0 CalDAV endpoint for migration of old clients
Diffstat (limited to 'apps/dav/appinfo/v1/caldav.php')
-rw-r--r--apps/dav/appinfo/v1/caldav.php69
1 files changed, 69 insertions, 0 deletions
diff --git a/apps/dav/appinfo/v1/caldav.php b/apps/dav/appinfo/v1/caldav.php
new file mode 100644
index 00000000000..f860ced3877
--- /dev/null
+++ b/apps/dav/appinfo/v1/caldav.php
@@ -0,0 +1,69 @@
+<?php
+/**
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+// Backends
+use OCA\DAV\CalDAV\CalDavBackend;
+use OCA\DAV\Connector\Sabre\Auth;
+use OCA\DAV\Connector\Sabre\ExceptionLoggerPlugin;
+use OCA\DAV\Connector\Sabre\MaintenancePlugin;
+use OCA\DAV\Connector\Sabre\Principal;
+use Sabre\CalDAV\CalendarRoot;
+
+$authBackend = new Auth(
+ \OC::$server->getSession(),
+ \OC::$server->getUserSession(),
+ 'principals/'
+);
+$principalBackend = new Principal(
+ \OC::$server->getUserManager(),
+ \OC::$server->getGroupManager(),
+ 'principals/'
+);
+$db = \OC::$server->getDatabaseConnection();
+$calDavBackend = new CalDavBackend($db, $principalBackend);
+
+// Root nodes
+$principalCollection = new \Sabre\CalDAV\Principal\Collection($principalBackend);
+$principalCollection->disableListing = true; // Disable listing
+
+$addressBookRoot = new CalendarRoot($principalBackend, $calDavBackend);
+$addressBookRoot->disableListing = true; // Disable listing
+
+$nodes = array(
+ $principalCollection,
+ $addressBookRoot,
+);
+
+// Fire up server
+$server = new \Sabre\DAV\Server($nodes);
+$server->httpRequest->setUrl(\OC::$server->getRequest()->getRequestUri());
+$server->setBaseUri($baseuri);
+
+// Add plugins
+$server->addPlugin(new MaintenancePlugin());
+$server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend, 'ownCloud'));
+$server->addPlugin(new \Sabre\CalDAV\Plugin());
+$server->addPlugin(new \Sabre\DAVACL\Plugin());
+$server->addPlugin(new \Sabre\CalDAV\ICSExportPlugin());
+$server->addPlugin(new ExceptionLoggerPlugin('caldav', \OC::$server->getLogger()));
+
+// And off we go!
+$server->exec();