xref: /plugin/davcal/calendarserver.php (revision d5703f5ab52f470e8a65f18aad4b649cbb5febeb)
1a1a3b679SAndreas Boehler<?php
2a1a3b679SAndreas Boehler
3cb71a62aSAndreas Boehler/**
4cb71a62aSAndreas Boehler * DokuWiki DAVCal PlugIn - DAV Calendar Server PlugIn.
5cb71a62aSAndreas Boehler *
6cb71a62aSAndreas Boehler * This is heavily based on SabreDAV and features a DokuWiki connector.
7cb71a62aSAndreas Boehler */
8cb71a62aSAndreas Boehler
9cb71a62aSAndreas Boehler // Initialize DokuWiki
10a1a3b679SAndreas Boehlerif(!defined('DOKU_INC')) define('DOKU_INC', dirname(__FILE__).'/../../../');
11a1a3b679SAndreas Boehlerif (!defined('DOKU_DISABLE_GZIP_OUTPUT')) define('DOKU_DISABLE_GZIP_OUTPUT', 1);
12a1a3b679SAndreas Boehlerrequire_once(DOKU_INC.'inc/init.php');
13a1a3b679SAndreas Boehlersession_write_close(); //close session
14a1a3b679SAndreas Boehler
15a1a3b679SAndreas Boehlerglobal $conf;
16a1a3b679SAndreas Boehler
1721d04f73SAndreas Boehlerif($conf['allowdebug'])
1821d04f73SAndreas Boehler    dbglog('---- DAVCAL calendarserver.php init');
1921d04f73SAndreas Boehler
207c7c6b0bSAndreas Boehler$hlp = null;
217c7c6b0bSAndreas Boehler$hlp =& plugin_load('helper', 'davcal');
227c7c6b0bSAndreas Boehler
237c7c6b0bSAndreas Boehlerif(is_null($hlp))
247c7c6b0bSAndreas Boehler{
2521d04f73SAndreas Boehler    if($conf['allowdebug'])
2621d04f73SAndreas Boehler        dbglog('Error loading helper plugin');
277c7c6b0bSAndreas Boehler    die('Error loading helper plugin');
287c7c6b0bSAndreas Boehler}
297c7c6b0bSAndreas Boehler
30a1a3b679SAndreas Boehler$baseUri = DOKU_BASE.'lib/plugins/davcal/'.basename(__FILE__).'/';
31a1a3b679SAndreas Boehler
327c7c6b0bSAndreas Boehlerif($hlp->getConfig('disable_sync') === 1)
33185e2535SAndreas Boehler{
3421d04f73SAndreas Boehler    if($conf['allowdebug'])
3521d04f73SAndreas Boehler        dbglog('Synchronisation is disabled');
36185e2535SAndreas Boehler    die('Synchronisation is disabled');
37185e2535SAndreas Boehler}
38185e2535SAndreas Boehler
39a1a3b679SAndreas Boehler//Mapping PHP errors to exceptions
40a1a3b679SAndreas Boehlerfunction exception_error_handler($errno, $errstr, $errfile, $errline) {
4121d04f73SAndreas Boehler    if($conf['allowdebug'])
4221d04f73SAndreas Boehler        dbglog('Exception occured: '.$errstr);
43a1a3b679SAndreas Boehler    throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
44a1a3b679SAndreas Boehler}
45a1a3b679SAndreas Boehler//set_error_handler("exception_error_handler");
46a1a3b679SAndreas Boehler
47a1a3b679SAndreas Boehler// Files we need
489bef4ad8SAndreas Boehlerrequire_once(DOKU_PLUGIN.'davcal/vendor/autoload.php');
499bef4ad8SAndreas Boehlerrequire_once(DOKU_PLUGIN.'davcal/authBackendDokuwiki.php');
509bef4ad8SAndreas Boehlerrequire_once(DOKU_PLUGIN.'davcal/principalBackendDokuwiki.php');
519bef4ad8SAndreas Boehlerrequire_once(DOKU_PLUGIN.'davcal/calendarBackendDokuwiki.php');
52a1a3b679SAndreas Boehler
53cb71a62aSAndreas Boehler// Backends - our DokuWiki backends
54a1a3b679SAndreas Boehler$authBackend = new DokuWikiSabreAuthBackend();
55*d5703f5aSAndreas Boehler$calendarBackend = new DokuWikiSabreCalendarBackend($hlp);
56a1a3b679SAndreas Boehler$principalBackend = new DokuWikiSabrePrincipalBackend();
57a1a3b679SAndreas Boehler
58a1a3b679SAndreas Boehler// Directory structure
59*d5703f5aSAndreas Boehler$tree = array(
60a1a3b679SAndreas Boehler    new Sabre\CalDAV\Principal\Collection($principalBackend),
61a1a3b679SAndreas Boehler    new Sabre\CalDAV\CalendarRoot($principalBackend, $calendarBackend),
62*d5703f5aSAndreas Boehler);
63a1a3b679SAndreas Boehler
64a1a3b679SAndreas Boehler$server = new Sabre\DAV\Server($tree);
65a1a3b679SAndreas Boehler
66a1a3b679SAndreas Boehlerif (isset($baseUri))
67a1a3b679SAndreas Boehler    $server->setBaseUri($baseUri);
68a1a3b679SAndreas Boehler
69a1a3b679SAndreas Boehler/* Server Plugins */
70a1a3b679SAndreas Boehler$authPlugin = new Sabre\DAV\Auth\Plugin($authBackend);
71a1a3b679SAndreas Boehler$server->addPlugin($authPlugin);
72a1a3b679SAndreas Boehler
73a1a3b679SAndreas Boehler$aclPlugin = new Sabre\DAVACL\Plugin();
74a1a3b679SAndreas Boehler$server->addPlugin($aclPlugin);
75a1a3b679SAndreas Boehler
76a1a3b679SAndreas Boehler/* CalDAV support */
77a1a3b679SAndreas Boehler$caldavPlugin = new Sabre\CalDAV\Plugin();
78a1a3b679SAndreas Boehler$server->addPlugin($caldavPlugin);
79a1a3b679SAndreas Boehler
80a1a3b679SAndreas Boehler/* Calendar subscription support */
8155a741c0SAndreas Boehler//$server->addPlugin(
8255a741c0SAndreas Boehler//    new Sabre\CalDAV\Subscriptions\Plugin()
8355a741c0SAndreas Boehler//);
84a1a3b679SAndreas Boehler
85a1a3b679SAndreas Boehler/* Calendar scheduling support */
8655a741c0SAndreas Boehler//$server->addPlugin(
8755a741c0SAndreas Boehler//    new Sabre\CalDAV\Schedule\Plugin()
8855a741c0SAndreas Boehler//);
89a1a3b679SAndreas Boehler
90a1a3b679SAndreas Boehler/* WebDAV-Sync plugin */
9155a741c0SAndreas Boehler$server->addPlugin(new Sabre\DAV\Sync\Plugin());
92a1a3b679SAndreas Boehler
93a1a3b679SAndreas Boehler// Support for html frontend
94a1a3b679SAndreas Boehler$browser = new Sabre\DAV\Browser\Plugin();
95a1a3b679SAndreas Boehler$server->addPlugin($browser);
96a1a3b679SAndreas Boehler
9721d04f73SAndreas Boehlerif($conf['allowdebug'])
9821d04f73SAndreas Boehler    dbglog('$server->exec()');
99a1a3b679SAndreas Boehler// And off we go!
100a1a3b679SAndreas Boehler$server->exec();
101