setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //Mapping PHP errors to exceptions function exception_error_handler($errno, $errstr, $errfile, $errline) { throw new ErrorException($errstr, 0, $errno, $errfile, $errline); } set_error_handler("exception_error_handler"); // Autoloader require_once 'vendor/autoload.php'; // Backends $authBackend = new Sabre\DAV\Auth\Backend\PDO($pdo); $principalBackend = new Sabre\DAVACL\PrincipalBackend\PDO($pdo); $carddavBackend = new Sabre\CardDAV\Backend\PDO($pdo); //$caldavBackend = new Sabre\CalDAV\Backend\PDO($pdo); // Setting up the directory tree // $nodes = [ new Sabre\DAVACL\PrincipalCollection($principalBackend), // new Sabre\CalDAV\CalendarRoot($authBackend, $caldavBackend), new Sabre\CardDAV\AddressBookRoot($principalBackend, $carddavBackend), ]; // The object tree needs in turn to be passed to the server class $server = new Sabre\DAV\Server($nodes); $server->setBaseUri($baseUri); // Plugins $server->addPlugin(new Sabre\DAV\Auth\Plugin($authBackend)); $server->addPlugin(new Sabre\DAV\Browser\Plugin()); //$server->addPlugin(new Sabre\CalDAV\Plugin()); $server->addPlugin(new Sabre\CardDAV\Plugin()); $server->addPlugin(new Sabre\DAVACL\Plugin()); $server->addPlugin(new Sabre\DAV\Sync\Plugin()); // And off we go! $server->exec();