39 lines
1.2 KiB
PHP
39 lines
1.2 KiB
PHP
<?php namespace App\Support;
|
|
|
|
use Gdoo\Calendar\Sabre\Connector;
|
|
|
|
class DAV
|
|
{
|
|
public static function caldav($uri)
|
|
{
|
|
// Backends
|
|
$authBackend = new Connector\Auth();
|
|
$calendarBackend = new Connector\Share\CalDAV();
|
|
$principalBackend = new Connector\Principal();
|
|
|
|
// Directory structure
|
|
$tree = array(
|
|
new \Sabre\CalDAV\Principal\Collection($principalBackend),
|
|
new \Sabre\CalDAV\CalendarRootNode($principalBackend, $calendarBackend),
|
|
);
|
|
|
|
$base_url = substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], '/'));
|
|
|
|
$server = new \Sabre\DAV\Server($tree);
|
|
|
|
$server->setBaseUri($base_url.'/'.$uri);
|
|
|
|
// Server Plugins
|
|
$server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend, 'SabreDAV'));
|
|
$server->addPlugin(new \Sabre\CalDAV\Plugin());
|
|
$server->addPlugin(new \Sabre\DAVACL\Plugin());
|
|
$server->addPlugin(new \Sabre\CalDAV\SharingPlugin());
|
|
// Support for html frontend
|
|
$server->addPlugin(new \Sabre\DAV\Browser\Plugin(false));
|
|
|
|
$server->debugExceptions = false;
|
|
$server->exec();
|
|
exit;
|
|
}
|
|
}
|