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