5 Addressbook/CardDAV server example
7 This server features CardDAV support
12 date_default_timezone_set('Canada/Eastern');
14 // Make sure this setting is turned on and reflect the root url for your WebDAV server.
15 // This can be for example the root / or a complete path to your server script
19 $pdo = new PDO('sqlite:data/db.sqlite');
20 $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
22 //Mapping PHP errors to exceptions
23 function exception_error_handler($errno, $errstr, $errfile, $errline ) {
24 throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
26 set_error_handler("exception_error_handler");
29 require_once 'lib/Sabre/autoload.php';
32 $authBackend = new Sabre_DAV_Auth_Backend_PDO($pdo);
33 $principalBackend = new Sabre_DAVACL_PrincipalBackend_PDO($pdo);
34 $carddavBackend = new Sabre_CardDAV_Backend_PDO($pdo);
35 //$caldavBackend = new Sabre_CalDAV_Backend_PDO($pdo);
37 // Setting up the directory tree //
39 new Sabre_DAVACL_PrincipalCollection($principalBackend),
40 // new Sabre_CalDAV_CalendarRootNode($authBackend, $caldavBackend),
41 new Sabre_CardDAV_AddressBookRoot($principalBackend, $carddavBackend),
44 // The object tree needs in turn to be passed to the server class
45 $server = new Sabre_DAV_Server($nodes);
46 $server->setBaseUri($baseUri);
49 $server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend,'SabreDAV'));
50 $server->addPlugin(new Sabre_DAV_Browser_Plugin());
51 //$server->addPlugin(new Sabre_CalDAV_Plugin());
52 $server->addPlugin(new Sabre_CardDAV_Plugin());
53 $server->addPlugin(new Sabre_DAVACL_Plugin());