1<?php
2/**
3 * @package tikiwiki
4 */
5// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
6//
7// All Rights Reserved. See copyright.txt for details and a complete list of authors.
8// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
9// $Id$
10
11use Sabre\DAV;
12use Sabre\CalDAV;
13use Sabre\DAVACL;
14use Tiki\SabreDav\BasicAuth;
15use Tiki\SabreDav\CalDAVBackend;
16use Tiki\SabreDav\PrincipalBackend;
17use Tiki\SabreDav\AclPlugin;
18
19require_once 'tiki-setup.php';
20$access->check_feature('feature_calendar');
21include_once('lib/calendar/calrecurrence.php');
22
23// Backends
24$authBackend = new BasicAuth();
25$principalBackend = new PrincipalBackend();
26$calendarBackend = new CalDAVBackend();
27
28// Directory tree
29$tree = array(
30    new DAVACL\PrincipalCollection($principalBackend),
31    new CalDAV\CalendarRoot($principalBackend, $calendarBackend)
32);
33
34// The object tree needs in turn to be passed to the server class
35$server = new DAV\Server($tree);
36$server->setBaseUri($tikiroot.'tiki-caldav.php');
37
38// Authentication plugin
39$authPlugin = new DAV\Auth\Plugin($authBackend);
40$server->addPlugin($authPlugin);
41
42// CalDAV plugin
43$caldavPlugin = new CalDAV\Plugin();
44$server->addPlugin($caldavPlugin);
45
46// CalDAV addons
47$server->addPlugin(new CalDAV\Schedule\Plugin());
48$server->addPlugin(new DAV\Sharing\Plugin());
49$server->addPlugin(new CalDAV\SharingPlugin());
50$server->addPlugin(new CalDAV\ICSExportPlugin());
51
52// ACL plugin
53$aclPlugin = new AclPlugin();
54$aclPlugin->allowUnauthenticatedAccess = false;
55$server->addPlugin($aclPlugin);
56
57// Support for html frontend
58$browser = new DAV\Browser\Plugin();
59$server->addPlugin($browser);
60
61// And off we go!
62$server->exec();
63