1<?php 2 3if(!defined('DOKU_INC')) define('DOKU_INC', dirname(__FILE__).'/../../../'); 4if (!defined('DOKU_DISABLE_GZIP_OUTPUT')) define('DOKU_DISABLE_GZIP_OUTPUT', 1); 5require_once(DOKU_INC.'inc/init.php'); 6session_write_close(); //close session 7 8require_once (DOKU_INC.'inc/fetch.functions.php'); 9 10global $conf; 11 12$baseUri = DOKU_BASE.'lib/plugins/davcal/'.basename(__FILE__).'/'; 13$sqlFile = $conf['metadir'].'/davcal.sqlite3'; 14 15if(!file_exists($sqlFile)) 16{ 17 die('SQL File doesn\'t exist'); 18} 19 20/* 21 22CalendarServer example 23 24This server features CalDAV support 25 26*/ 27 28// settings 29// date_default_timezone_set('Canada/Eastern'); 30 31// If you want to run the SabreDAV server in a custom location (using mod_rewrite for instance) 32// You can override the baseUri here. 33// $baseUri = '/'; 34 35/* Database */ 36$pdo = new PDO('sqlite:'.$sqlFile); 37$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 38 39//Mapping PHP errors to exceptions 40function exception_error_handler($errno, $errstr, $errfile, $errline) { 41 throw new ErrorException($errstr, 0, $errno, $errfile, $errline); 42} 43//set_error_handler("exception_error_handler"); 44 45// Files we need 46require_once 'vendor/autoload.php'; 47require_once('authBackendDokuwiki.php'); 48require_once('principalBackendDokuwiki.php'); 49require_once('calendarBackendDokuwiki.php'); 50 51// Backends 52$authBackend = new DokuWikiSabreAuthBackend(); 53$calendarBackend = new DokuWikiSabreCalendarBackend($pdo); //Sabre\CalDAV\Backend\PDO($pdo); 54$principalBackend = new DokuWikiSabrePrincipalBackend(); 55 56// Directory structure 57$tree = [ 58 new Sabre\CalDAV\Principal\Collection($principalBackend), 59 new Sabre\CalDAV\CalendarRoot($principalBackend, $calendarBackend), 60]; 61 62$server = new Sabre\DAV\Server($tree); 63 64if (isset($baseUri)) 65 $server->setBaseUri($baseUri); 66 67/* Server Plugins */ 68$authPlugin = new Sabre\DAV\Auth\Plugin($authBackend); 69$server->addPlugin($authPlugin); 70 71$aclPlugin = new Sabre\DAVACL\Plugin(); 72$server->addPlugin($aclPlugin); 73 74/* CalDAV support */ 75$caldavPlugin = new Sabre\CalDAV\Plugin(); 76$server->addPlugin($caldavPlugin); 77 78/* Calendar subscription support */ 79//$server->addPlugin( 80// new Sabre\CalDAV\Subscriptions\Plugin() 81//); 82 83/* Calendar scheduling support */ 84//$server->addPlugin( 85// new Sabre\CalDAV\Schedule\Plugin() 86//); 87 88/* WebDAV-Sync plugin */ 89$server->addPlugin(new Sabre\DAV\Sync\Plugin()); 90 91// Support for html frontend 92$browser = new Sabre\DAV\Browser\Plugin(); 93$server->addPlugin($browser); 94 95// And off we go! 96$server->exec(); 97