Add /dav.php, a single location bundling all *DAV-operations.
This commit is contained in:
parent
48fe85d9bd
commit
503e5cada3
|
@ -8,6 +8,7 @@ if(version_compare(PHP_VERSION, '5.3.0', '>=')){
|
|||
OC::$CLASSPATH['OC_Connector_Sabre_CalDAV'] = 'apps/calendar/lib/connector_sabre.php';
|
||||
OC::$CLASSPATH['OC_Search_Provider_Calendar'] = 'apps/calendar/lib/search.php';
|
||||
OC_HOOK::connect('OC_User', 'post_deleteUser', 'OC_Calendar_Hooks', 'deleteUser');
|
||||
OC_Hook::connect('OC_DAV', 'initialize', 'OC_Calendar_Hooks', 'initializeCalDAV');
|
||||
OC_Util::addScript('calendar','loader');
|
||||
OC_App::register( array(
|
||||
'order' => 10,
|
||||
|
|
|
@ -24,4 +24,17 @@ class OC_Calendar_Hooks{
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Adds the CardDAV resource to the DAV server
|
||||
* @param paramters parameters from initialize-Hook
|
||||
* @return array
|
||||
*/
|
||||
public static function initializeCalDAV($parameters){
|
||||
// We need a backend, the root node and the caldav plugin
|
||||
$parameters['backends']['caldav'] = new OC_Connector_Sabre_CalDAV();
|
||||
$parameters['nodes'][] = new Sabre_CalDAV_CalendarRootNode($parameters['backends']['principal'], $parameters['backends']['caldav']);
|
||||
$parameters['plugins'][] = new Sabre_CalDAV_Plugin();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ OC::$CLASSPATH['OC_Search_Provider_Contacts'] = 'apps/contacts/lib/search.php';
|
|||
OC_HOOK::connect('OC_User', 'post_deleteUser', 'OC_Contacts_Hooks', 'deleteUser');
|
||||
OC_HOOK::connect('OC_Calendar', 'getEvents', 'OC_Contacts_Hooks', 'getBirthdayEvents');
|
||||
OC_HOOK::connect('OC_Calendar', 'getSources', 'OC_Contacts_Hooks', 'getCalenderSources');
|
||||
OC_Hook::connect('OC_DAV', 'initialize', 'OC_Contacts_Hooks', 'initializeCardDAV');
|
||||
|
||||
OC_App::register( array(
|
||||
'order' => 10,
|
||||
|
|
|
@ -39,6 +39,18 @@ class OC_Contacts_Hooks{
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Adds the CardDAV resource to the DAV server
|
||||
* @param paramters parameters from initialize-Hook
|
||||
* @return array
|
||||
*/
|
||||
static public function initializeCardDAV($parameters){
|
||||
// We need a backend, the root node and the carddav plugin
|
||||
$parameters['backends']['carddav'] = new OC_Connector_Sabre_CardDAV();
|
||||
$parameters['nodes'][] = new Sabre_CardDAV_AddressBookRoot($parameters['backends']['principal'], $parameters['backends']['carddav']);
|
||||
$parameters['plugins'][] = new Sabre_CardDAV_Plugin();
|
||||
return true;
|
||||
|
||||
static public function getCalenderSources($parameters) {
|
||||
$base_url = OC_Helper::linkTo('calendar', 'ajax/events.php').'?calendar_id=';
|
||||
foreach(OC_Contacts_Addressbook::all(OC_User::getUser()) as $addressbook) {
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* ownCloud
|
||||
*
|
||||
* @author Jakob Sack
|
||||
* @copyright 2012 Jakob Sack owncloud@jakobsack.de
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
require_once('lib/base.php');
|
||||
|
||||
// Backends we always need (auth, principal and files)
|
||||
$backends = array(
|
||||
'auth' => new OC_Connector_Sabre_Auth(),
|
||||
'principal' => new OC_Connector_Sabre_Principal()
|
||||
);
|
||||
|
||||
// Root nodes
|
||||
$nodes = array(
|
||||
new Sabre_CalDAV_Principal_Collection($backends['principal'])
|
||||
);
|
||||
|
||||
// Plugins
|
||||
$plugins = array(
|
||||
new Sabre_DAV_Auth_Plugin($backends['auth'],'ownCloud'),
|
||||
new Sabre_DAVACL_Plugin(),
|
||||
new Sabre_DAV_Browser_Plugin(false) // Show something in the Browser, but no upload
|
||||
);
|
||||
|
||||
// Load the plugins etc we need for usual file sharing
|
||||
$backends['lock'] = new OC_Connector_Sabre_Locks();
|
||||
$plugins[] = new Sabre_DAV_Locks_Plugin($backends['lock']);
|
||||
// Add a RESTful user directory
|
||||
// /files/$username/
|
||||
if( OC_User::isLoggedIn()){
|
||||
$currentuser = OC_User::getUser();
|
||||
$files = new Sabre_DAV_SimpleCollection('files');
|
||||
foreach( OC_User::getUsers() as $username ){
|
||||
if( $username == $currentuser ){
|
||||
$public = new OC_Connector_Sabre_Directory('.');
|
||||
$files->addChild( new Sabre_DAV_SimpleCollection( $username, $public->getChildren()));
|
||||
}
|
||||
else{
|
||||
$files->addChild(new Sabre_DAV_SimpleCollection( $username ));
|
||||
}
|
||||
}
|
||||
$nodes[] = $files;
|
||||
}
|
||||
|
||||
// Get the other plugins and nodes
|
||||
OC_Hook::emit( 'OC_DAV', 'initialize', array( 'backends' => &$backends, 'nodes' => &$nodes, 'plugins' => &$plugins ));
|
||||
|
||||
// Fire up server
|
||||
$server = new Sabre_DAV_Server($nodes);
|
||||
$server->setBaseUri(OC::$WEBROOT.'/dav.php');
|
||||
|
||||
// Load additional plugins
|
||||
foreach( $plugins as &$plugin ){
|
||||
$server->addPlugin( $plugin );
|
||||
} unset( $plugin ); // Always do this after foreach with references!
|
||||
|
||||
// And off we go!
|
||||
$server->exec();
|
Loading…
Reference in New Issue