mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-01-27 16:29:22 +01:00
Optimze and clean up GroupDAV
This commit is contained in:
parent
a0f5ff9dd5
commit
30a3296c8e
@ -387,10 +387,10 @@ class addressbook_groupdav extends groupdav_handler
|
|||||||
{
|
{
|
||||||
$props[] = HTTP_WebDAV_Server::mkprop(groupdav::DAV,'current-user-privilege-set',
|
$props[] = HTTP_WebDAV_Server::mkprop(groupdav::DAV,'current-user-privilege-set',
|
||||||
array(HTTP_WebDAV_Server::mkprop(groupdav::DAV,'privilege',
|
array(HTTP_WebDAV_Server::mkprop(groupdav::DAV,'privilege',
|
||||||
array(//HTTP_WebDAV_Server::mkprop(groupdav::DAV,'all',''),
|
array(
|
||||||
HTTP_WebDAV_Server::mkprop(groupdav::DAV,'read',''),
|
HTTP_WebDAV_Server::mkprop(groupdav::DAV,'read',''),
|
||||||
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'read-free-busy',''),
|
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'read-free-busy',''),
|
||||||
//HTTP_WebDAV_Server::mkprop(groupdav::DAV,'read-current-user-privilege-set',''),
|
HTTP_WebDAV_Server::mkprop(groupdav::DAV,'read-current-user-privilege-set',''),
|
||||||
HTTP_WebDAV_Server::mkprop(groupdav::DAV,'bind',''),
|
HTTP_WebDAV_Server::mkprop(groupdav::DAV,'bind',''),
|
||||||
HTTP_WebDAV_Server::mkprop(groupdav::DAV,'unbind',''),
|
HTTP_WebDAV_Server::mkprop(groupdav::DAV,'unbind',''),
|
||||||
HTTP_WebDAV_Server::mkprop(groupdav::DAV,'schedule-post',''),
|
HTTP_WebDAV_Server::mkprop(groupdav::DAV,'schedule-post',''),
|
||||||
|
@ -646,6 +646,34 @@ class calendar_groupdav extends groupdav_handler
|
|||||||
return $this->bo->read($id,null,false,'server');
|
return $this->bo->read($id,null,false,'server');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Query ctag for calendar
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getctag($path,$user)
|
||||||
|
{
|
||||||
|
$filter = array(
|
||||||
|
'users' => $user,
|
||||||
|
'start' => time()-100*24*3600, // default one month back -30 breaks all sync recurrences
|
||||||
|
'end' => time()+365*24*3600, // default one year into the future +365
|
||||||
|
'enum_recuring' => false,
|
||||||
|
'daywise' => false,
|
||||||
|
'date_format' => 'server',
|
||||||
|
'order' => 'cal_modified DESC',
|
||||||
|
'offset' => 0,
|
||||||
|
'num_rows' => 1,
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($path == '/calendar/') $filter['filter'] = 'owner';
|
||||||
|
|
||||||
|
$result =& $this->bo->search($filter);
|
||||||
|
|
||||||
|
$entry = array_shift($result);
|
||||||
|
|
||||||
|
return $this->get_etag($entry);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the etag for an entry, reimplemented to include the participants and stati in the etag
|
* Get the etag for an entry, reimplemented to include the participants and stati in the etag
|
||||||
*
|
*
|
||||||
@ -713,10 +741,10 @@ class calendar_groupdav extends groupdav_handler
|
|||||||
{
|
{
|
||||||
$props[] = HTTP_WebDAV_Server::mkprop(groupdav::DAV,'current-user-privilege-set',
|
$props[] = HTTP_WebDAV_Server::mkprop(groupdav::DAV,'current-user-privilege-set',
|
||||||
array(HTTP_WebDAV_Server::mkprop(groupdav::DAV,'privilege',
|
array(HTTP_WebDAV_Server::mkprop(groupdav::DAV,'privilege',
|
||||||
array(//HTTP_WebDAV_Server::mkprop(groupdav::DAV,'all',''),
|
array(
|
||||||
HTTP_WebDAV_Server::mkprop(groupdav::DAV,'read',''),
|
HTTP_WebDAV_Server::mkprop(groupdav::DAV,'read',''),
|
||||||
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'read-free-busy',''),
|
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'read-free-busy',''),
|
||||||
//HTTP_WebDAV_Server::mkprop(groupdav::DAV,'read-current-user-privilege-set',''),
|
HTTP_WebDAV_Server::mkprop(groupdav::DAV,'read-current-user-privilege-set',''),
|
||||||
HTTP_WebDAV_Server::mkprop(groupdav::DAV,'bind',''),
|
HTTP_WebDAV_Server::mkprop(groupdav::DAV,'bind',''),
|
||||||
HTTP_WebDAV_Server::mkprop(groupdav::DAV,'unbind',''),
|
HTTP_WebDAV_Server::mkprop(groupdav::DAV,'unbind',''),
|
||||||
HTTP_WebDAV_Server::mkprop(groupdav::DAV,'schedule-post',''),
|
HTTP_WebDAV_Server::mkprop(groupdav::DAV,'schedule-post',''),
|
||||||
@ -762,14 +790,19 @@ class calendar_groupdav extends groupdav_handler
|
|||||||
HTTP_WebDAV_Server::mkprop('href','MAILTO:'.$GLOBALS['egw_info']['user']['email'])));
|
HTTP_WebDAV_Server::mkprop('href','MAILTO:'.$GLOBALS['egw_info']['user']['email'])));
|
||||||
// supported components, currently only VEVENT
|
// supported components, currently only VEVENT
|
||||||
$props[] = HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'supported-calendar-component-set',array(
|
$props[] = HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'supported-calendar-component-set',array(
|
||||||
|
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'comp',array('name' => 'VCALENDAR')),
|
||||||
|
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'comp',array('name' => 'VTIMEZONE')),
|
||||||
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'comp',array('name' => 'VEVENT')),
|
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'comp',array('name' => 'VEVENT')),
|
||||||
// HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'comp',array('name' => 'VTODO')), // not yet supported
|
// HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'comp',array('name' => 'VTODO')), // not yet supported
|
||||||
));
|
));
|
||||||
|
|
||||||
$props[] = HTTP_WebDAV_Server::mkprop('supported-report-set',array(
|
$props[] = HTTP_WebDAV_Server::mkprop('supported-report-set',array(
|
||||||
HTTP_WebDAV_Server::mkprop('supported-report',array(
|
HTTP_WebDAV_Server::mkprop('supported-report',array(
|
||||||
HTTP_WebDAV_Server::mkprop('report',
|
HTTP_WebDAV_Server::mkprop('report',
|
||||||
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'calendar-multiget'))))));
|
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'calendar-multiget'))))));
|
||||||
|
$props[] = HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'supported-calendar-data',array(
|
||||||
|
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'calendar-data', array('content-type' => 'text/calendar', 'version'=> '2.0')),
|
||||||
|
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'calendar-data', array('content-type' => 'text/x-calendar', 'version'=> '1.0'))));
|
||||||
|
$props[] = HTTP_WebDAV_Server::mkprop(groupdav::ICAL,'calendar-color','#0040A0FF'); // TODO: make it configurable
|
||||||
|
|
||||||
//$props = self::current_user_privilege_set($props);
|
//$props = self::current_user_privilege_set($props);
|
||||||
return $props;
|
return $props;
|
||||||
|
@ -476,6 +476,48 @@ class infolog_groupdav extends groupdav_handler
|
|||||||
return $this->bo->check_access($task,$acl);
|
return $this->bo->check_access($task,$acl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Query ctag for infolog
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getctag($path,$user)
|
||||||
|
{
|
||||||
|
$myself = ($user == $GLOBALS['egw_info']['user']['account_id']);
|
||||||
|
|
||||||
|
if ($path == '/infolog/')
|
||||||
|
{
|
||||||
|
$task_filter= 'own';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($myself)
|
||||||
|
{
|
||||||
|
$task_filter = 'open';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$task_filter = 'open-user' . $user;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = array(
|
||||||
|
'order' => 'info_datemodified',
|
||||||
|
'sort' => 'DESC',
|
||||||
|
'filter' => $task_filter,
|
||||||
|
'date_format' => 'server',
|
||||||
|
'col_filter' => array('info_type' => 'task'),
|
||||||
|
'start' => 0,
|
||||||
|
'num_rows' => 1,
|
||||||
|
);
|
||||||
|
|
||||||
|
$result =& $this->bo->search($query);
|
||||||
|
|
||||||
|
$entry = array_shift($result);
|
||||||
|
|
||||||
|
return $this->get_etag($entry);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the etag for an infolog entry
|
* Get the etag for an infolog entry
|
||||||
*
|
*
|
||||||
@ -516,13 +558,15 @@ class infolog_groupdav extends groupdav_handler
|
|||||||
// supported components, currently only VEVENT
|
// supported components, currently only VEVENT
|
||||||
$props[] = HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'supported-calendar-component-set',array(
|
$props[] = HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'supported-calendar-component-set',array(
|
||||||
// HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'comp',array('name' => 'VEVENT')),
|
// HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'comp',array('name' => 'VEVENT')),
|
||||||
|
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'comp',array('name' => 'VCALENDAR')),
|
||||||
|
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'comp',array('name' => 'VTIMEZONE')),
|
||||||
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'comp',array('name' => 'VTODO')),
|
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'comp',array('name' => 'VTODO')),
|
||||||
));
|
));
|
||||||
|
|
||||||
$props[] = HTTP_WebDAV_Server::mkprop('supported-report-set',array(
|
$props[] = HTTP_WebDAV_Server::mkprop('supported-report-set',array(
|
||||||
HTTP_WebDAV_Server::mkprop('supported-report',array(
|
HTTP_WebDAV_Server::mkprop('supported-report',array(
|
||||||
HTTP_WebDAV_Server::mkprop('report',
|
HTTP_WebDAV_Server::mkprop('report',
|
||||||
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'calendar-multiget'))))));
|
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'calendar-multiget',''))))));
|
||||||
|
|
||||||
return $props;
|
return $props;
|
||||||
}
|
}
|
||||||
|
@ -56,10 +56,14 @@ class groupdav extends HTTP_WebDAV_Server
|
|||||||
* Calendarserver namespace (eg. for ctag)
|
* Calendarserver namespace (eg. for ctag)
|
||||||
*/
|
*/
|
||||||
const CALENDARSERVER = 'http://calendarserver.org/ns/';
|
const CALENDARSERVER = 'http://calendarserver.org/ns/';
|
||||||
|
/**
|
||||||
|
* Apple iCal namespace (eg. for calendar color)
|
||||||
|
*/
|
||||||
|
const ICAL = 'http://apple.com/ns/ical/';
|
||||||
/**
|
/**
|
||||||
* Realm and powered by string
|
* Realm and powered by string
|
||||||
*/
|
*/
|
||||||
const REALM = 'eGroupWare CalDAV/CardDAV/GroupDAV server';
|
const REALM = 'EGroupware CalDAV/CardDAV/GroupDAV server';
|
||||||
|
|
||||||
var $dav_powered_by = self::REALM;
|
var $dav_powered_by = self::REALM;
|
||||||
var $http_auth_realm = self::REALM;
|
var $http_auth_realm = self::REALM;
|
||||||
@ -249,7 +253,7 @@ class groupdav extends HTTP_WebDAV_Server
|
|||||||
{
|
{
|
||||||
if (empty($user_prefix))
|
if (empty($user_prefix))
|
||||||
{
|
{
|
||||||
$user_prefix = '/'.$GLOBALS['egw_info']['user']['account_lid'].'/';
|
$user_prefix = '/'; //.$GLOBALS['egw_info']['user']['account_lid'].'/';
|
||||||
}
|
}
|
||||||
if ($options['depth'])
|
if ($options['depth'])
|
||||||
{
|
{
|
||||||
@ -261,12 +265,15 @@ class groupdav extends HTTP_WebDAV_Server
|
|||||||
self::mkprop('resourcetype',array(self::mkprop('collection',''))),
|
self::mkprop('resourcetype',array(self::mkprop('collection',''))),
|
||||||
// adding the calendar extra property (calendar-home-set, etc.) here, allows apple iCal to "autodetect" the URL
|
// adding the calendar extra property (calendar-home-set, etc.) here, allows apple iCal to "autodetect" the URL
|
||||||
self::mkprop(groupdav::CALDAV,'calendar-home-set',array(
|
self::mkprop(groupdav::CALDAV,'calendar-home-set',array(
|
||||||
self::mkprop('href',$this->base_uri.$user_prefix.'calendar/'))),
|
self::mkprop('href',$this->base_uri.$user_prefix))),
|
||||||
self::mkprop(groupdav::CARDDAV,'addressbook-home-set',array(
|
self::mkprop(groupdav::CARDDAV,'addressbook-home-set',array(
|
||||||
self::mkprop('href',$this->base_uri.$user_prefix))),
|
self::mkprop('href',$this->base_uri.$user_prefix))),
|
||||||
self::mkprop('current-user-principal',array(self::mkprop('href',$this->principalURL))),
|
self::mkprop('current-user-principal',array(self::mkprop('href',$this->principalURL))),
|
||||||
self::mkprop(groupdav::CALDAV,'calendar-user-address-set',array(
|
self::mkprop(groupdav::CALDAV,'calendar-user-address-set',array(
|
||||||
self::mkprop('href','MAILTO:'.$GLOBALS['egw_info']['user']['email']))),
|
self::mkprop('href','MAILTO:'.$GLOBALS['egw_info']['user']['email']))),
|
||||||
|
self::mkprop('principal-collection-set',array(
|
||||||
|
self::mkprop('href',$this->base_uri.'/principals/users/'),
|
||||||
|
self::mkprop('href',$this->base_uri.'/principals/groups/'))),
|
||||||
//self::mkprop('principal-URL',array(self::mkprop('href',$this->principalURL))),
|
//self::mkprop('principal-URL',array(self::mkprop('href',$this->principalURL))),
|
||||||
//self::mkprop('principal-collection-set',array(self::mkprop('href',$this->base_uri.'/principals/'))),
|
//self::mkprop('principal-collection-set',array(self::mkprop('href',$this->base_uri.'/principals/'))),
|
||||||
);
|
);
|
||||||
@ -284,10 +291,10 @@ class groupdav extends HTTP_WebDAV_Server
|
|||||||
'path' => '/principals/',
|
'path' => '/principals/',
|
||||||
'props' => array(
|
'props' => array(
|
||||||
self::mkprop('displayname',lang('Accounts')),
|
self::mkprop('displayname',lang('Accounts')),
|
||||||
self::mkprop('resourcetype',array(self::mkprop('collection',''))),
|
self::mkprop('resourcetype',array(self::mkprop('principals',''))),
|
||||||
self::mkprop('current-user-principal',array(self::mkprop('href',$this->principalURL))),
|
self::mkprop('current-user-principal',array(self::mkprop('href',$this->principalURL))),
|
||||||
self::mkprop(groupdav::CALDAV,'calendar-home-set',array(
|
self::mkprop(groupdav::CALDAV,'calendar-home-set',array(
|
||||||
self::mkprop('href',$this->base_uri.$user_prefix.'calendar/'))),
|
self::mkprop('href',$this->base_uri.$user_prefix))),
|
||||||
self::mkprop(groupdav::CARDDAV,'addressbook-home-set',array(
|
self::mkprop(groupdav::CARDDAV,'addressbook-home-set',array(
|
||||||
self::mkprop('href',$this->base_uri.'/'))),
|
self::mkprop('href',$this->base_uri.'/'))),
|
||||||
self::mkprop('principal-URL',array(self::mkprop('href',$this->principalURL))),
|
self::mkprop('principal-URL',array(self::mkprop('href',$this->principalURL))),
|
||||||
@ -297,10 +304,16 @@ class groupdav extends HTTP_WebDAV_Server
|
|||||||
foreach($this->root as $app => $data)
|
foreach($this->root as $app => $data)
|
||||||
{
|
{
|
||||||
if (!$GLOBALS['egw_info']['user']['apps'][$app]) continue; // no rights for the given app
|
if (!$GLOBALS['egw_info']['user']['apps'][$app]) continue; // no rights for the given app
|
||||||
|
$props = $this->_properties($app,false,$user,$path);
|
||||||
|
// add ctag if handler implements it
|
||||||
|
if (($handler = self::app_handler($app)) && method_exists($handler,'getctag'))
|
||||||
|
{
|
||||||
|
$props[] = self::mkprop(
|
||||||
|
groupdav::CALENDARSERVER,'getctag',$handler->getctag($options['path'],$user));
|
||||||
|
}
|
||||||
$files['files'][] = array(
|
$files['files'][] = array(
|
||||||
'path' => $path.$app.'/',
|
'path' => $path.$app.'/',
|
||||||
'props' => $this->_properties($app,false,$user),
|
'props' => $props,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -318,7 +331,7 @@ class groupdav extends HTTP_WebDAV_Server
|
|||||||
$files['files'][0] = array(
|
$files['files'][0] = array(
|
||||||
'path' => $path.$app.'/',
|
'path' => $path.$app.'/',
|
||||||
// KAddressbook doubles the folder, if the self URL contains the GroupDAV/CalDAV resourcetypes
|
// KAddressbook doubles the folder, if the self URL contains the GroupDAV/CalDAV resourcetypes
|
||||||
'props' => $this->_properties($app,$app=='addressbook'&&strpos($_SERVER['HTTP_USER_AGENT'],'KHTML') !== false,$user),
|
'props' => $this->_properties($app,$app=='addressbook'&&strpos($_SERVER['HTTP_USER_AGENT'],'KHTML') !== false,$user,$path),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (isset($options['depth']) && !$options['depth'] && !$id)
|
if (isset($options['depth']) && !$options['depth'] && !$id)
|
||||||
@ -342,9 +355,10 @@ class groupdav extends HTTP_WebDAV_Server
|
|||||||
* @param string $app
|
* @param string $app
|
||||||
* @param boolean $no_extra_types=false should the GroupDAV and CalDAV types be added (KAddressbook has problems with it in self URL)
|
* @param boolean $no_extra_types=false should the GroupDAV and CalDAV types be added (KAddressbook has problems with it in self URL)
|
||||||
* @param int $user=null owner of the collection, default current user
|
* @param int $user=null owner of the collection, default current user
|
||||||
|
* @param string $path='/'
|
||||||
* @return array of DAV properties
|
* @return array of DAV properties
|
||||||
*/
|
*/
|
||||||
function _properties($app,$no_extra_types=false,$user=null)
|
function _properties($app,$no_extra_types=false,$user=null,$path='/')
|
||||||
{
|
{
|
||||||
if ($this->debug) error_log(__CLASS__."::$method: user='$user', app='$app'");
|
if ($this->debug) error_log(__CLASS__."::$method: user='$user', app='$app'");
|
||||||
if ($user)
|
if ($user)
|
||||||
@ -360,7 +374,7 @@ class groupdav extends HTTP_WebDAV_Server
|
|||||||
$GLOBALS['egw']->translation->charset(),'utf-8');
|
$GLOBALS['egw']->translation->charset(),'utf-8');
|
||||||
$props = array(
|
$props = array(
|
||||||
self::mkprop('current-user-principal',array(self::mkprop('href',$this->principalURL))),
|
self::mkprop('current-user-principal',array(self::mkprop('href',$this->principalURL))),
|
||||||
self::mkprop('owner',$displayname),
|
self::mkprop('owner',array(self::mkprop('href',$this->base_uri.'/principals/users/'.$account_lid.'/'))),
|
||||||
self::mkprop('principal-URL',array(self::mkprop('href',$this->principalURL))),
|
self::mkprop('principal-URL',array(self::mkprop('href',$this->principalURL))),
|
||||||
self::mkprop('alternate-URI-set',array(
|
self::mkprop('alternate-URI-set',array(
|
||||||
self::mkprop('href','MAILTO:'.$GLOBALS['egw_info']['user']['email']))),
|
self::mkprop('href','MAILTO:'.$GLOBALS['egw_info']['user']['email']))),
|
||||||
@ -374,24 +388,20 @@ class groupdav extends HTTP_WebDAV_Server
|
|||||||
|
|
||||||
switch ($app)
|
switch ($app)
|
||||||
{
|
{
|
||||||
case 'calendar':
|
|
||||||
$props[] = self::mkprop(groupdav::CALDAV,'calendar-home-set',array(
|
|
||||||
self::mkprop('href',$this->base_uri.'/'.$account_lid.'/calendar/')));
|
|
||||||
break;
|
|
||||||
case 'infolog':
|
case 'infolog':
|
||||||
$props[] = self::mkprop(groupdav::CALDAV,'calendar-home-set',array(
|
$props[] = self::mkprop(groupdav::CALDAV,'calendar-home-set',array(
|
||||||
self::mkprop('href',$this->base_uri.'/'.$account_lid.'/infolog/')));
|
self::mkprop('href',$this->base_uri.$path.'infolog/')));
|
||||||
$displayname = $this->translation->convert(lang($app).' '.
|
$displayname = $this->translation->convert(lang($app).' '.
|
||||||
common::grab_owner_name($user),$this->egw_charset,'utf-8');
|
common::grab_owner_name($user),$this->egw_charset,'utf-8');
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
$props[] = self::mkprop(groupdav::CALDAV,'calendar-home-set',array(
|
$props[] = self::mkprop(groupdav::CALDAV,'calendar-home-set',array(
|
||||||
self::mkprop('href',$this->base_uri.'/'.$account_lid.'/calendar/')));
|
self::mkprop('href',$this->base_uri.$path)));
|
||||||
$displayname = $this->translation->convert(lang($app).' '.
|
$displayname = $this->translation->convert(lang($app).' '.
|
||||||
common::grab_owner_name($user),$this->egw_charset,'utf-8');
|
common::grab_owner_name($user),$this->egw_charset,'utf-8');
|
||||||
}
|
}
|
||||||
$props[] = self::mkprop(groupdav::CARDDAV,'addressbook-home-set',array(
|
$props[] = self::mkprop(groupdav::CARDDAV,'addressbook-home-set',array(
|
||||||
self::mkprop('href',$this->base_uri.'/'.$account_lid.'/')));
|
self::mkprop('href',$this->base_uri.$path)));
|
||||||
$props[] = self::mkprop('displayname',$displayname);
|
$props[] = self::mkprop('displayname',$displayname);
|
||||||
|
|
||||||
foreach((array)$this->root[$app] as $prop => $values)
|
foreach((array)$this->root[$app] as $prop => $values)
|
||||||
@ -625,8 +635,10 @@ class groupdav extends HTTP_WebDAV_Server
|
|||||||
default:
|
default:
|
||||||
$ns = $prop['ns'];
|
$ns = $prop['ns'];
|
||||||
}
|
}
|
||||||
|
$ns_defs = '';
|
||||||
|
$ns_hash = array($prop['ns'] => $ns, 'DAV:' => 'D');
|
||||||
$arr[$ns.':'.$prop['name']] = is_array($prop['val']) ?
|
$arr[$ns.':'.$prop['name']] = is_array($prop['val']) ?
|
||||||
$this->_hierarchical_prop_encode($prop['val']) : $prop['val'];
|
$this->_hierarchical_prop_encode($prop['val'], $prop['ns'], $ns_defs, $ns_hash) : $prop['val'];
|
||||||
}
|
}
|
||||||
return $arr;
|
return $arr;
|
||||||
}
|
}
|
||||||
|
@ -87,10 +87,11 @@ class groupdav_principals extends groupdav_handler
|
|||||||
$props = array(
|
$props = array(
|
||||||
HTTP_WebDAV_Server::mkprop('displayname',$displayname),
|
HTTP_WebDAV_Server::mkprop('displayname',$displayname),
|
||||||
HTTP_WebDAV_Server::mkprop('getetag',$this->get_etag($account)),
|
HTTP_WebDAV_Server::mkprop('getetag',$this->get_etag($account)),
|
||||||
HTTP_WebDAV_Server::mkprop('resourcetype','principal'),
|
HTTP_WebDAV_Server::mkprop('resourcetype',array(
|
||||||
|
HTTP_WebDAV_Server::mkprop('principal', ''))),
|
||||||
HTTP_WebDAV_Server::mkprop('alternate-URI-set',''),
|
HTTP_WebDAV_Server::mkprop('alternate-URI-set',''),
|
||||||
HTTP_WebDAV_Server::mkprop('principal-URL',$this->base_uri.'/principals/'.$account['account_lid']),
|
HTTP_WebDAV_Server::mkprop('principal-URL',$this->base_uri.'/principals/'.$account['account_lid']),
|
||||||
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'calendar-home-set',$this->base_uri.$account['account_lid'].'/calendar/'),
|
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'calendar-home-set',$this->base_uri.$account['account_lid'].'/'),
|
||||||
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'calendar-user-address-set','MAILTO:'.$account['account_email']),
|
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'calendar-user-address-set','MAILTO:'.$account['account_email']),
|
||||||
);
|
);
|
||||||
foreach($this->accounts->memberships($account['account_id']) as $gid => $group)
|
foreach($this->accounts->memberships($account['account_id']) as $gid => $group)
|
||||||
@ -240,13 +241,14 @@ class groupdav_principals extends groupdav_handler
|
|||||||
$props = array(
|
$props = array(
|
||||||
HTTP_WebDAV_Server::mkprop('displayname',$displayname),
|
HTTP_WebDAV_Server::mkprop('displayname',$displayname),
|
||||||
HTTP_WebDAV_Server::mkprop('getetag',$this->get_etag($account)),
|
HTTP_WebDAV_Server::mkprop('getetag',$this->get_etag($account)),
|
||||||
HTTP_WebDAV_Server::mkprop('resourcetype','principal'),
|
HTTP_WebDAV_Server::mkprop('resourcetype',array(
|
||||||
|
HTTP_WebDAV_Server::mkprop('principal', ''))),
|
||||||
HTTP_WebDAV_Server::mkprop('alternate-URI-set',array(
|
HTTP_WebDAV_Server::mkprop('alternate-URI-set',array(
|
||||||
HTTP_WebDAV_Server::mkprop('href','MAILTO:'.$account['account_email']))),
|
HTTP_WebDAV_Server::mkprop('href','MAILTO:'.$account['account_email']))),
|
||||||
HTTP_WebDAV_Server::mkprop('principal-URL',array(
|
HTTP_WebDAV_Server::mkprop('principal-URL',array(
|
||||||
HTTP_WebDAV_Server::mkprop('href',$this->base_uri.'/principals/users/'.$account['account_lid'].'/'))),
|
HTTP_WebDAV_Server::mkprop('href',$this->base_uri.'/principals/users/'.$account['account_lid'].'/'))),
|
||||||
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'calendar-home-set',array(
|
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'calendar-home-set',array(
|
||||||
HTTP_WebDAV_Server::mkprop('href',$this->base_uri.'/'.$account['account_lid'].'/calendar/'))),
|
HTTP_WebDAV_Server::mkprop('href',$this->base_uri.'/'.$account['account_lid'].'/'))),
|
||||||
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'calendar-user-address-set',array(
|
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'calendar-user-address-set',array(
|
||||||
HTTP_WebDAV_Server::mkprop('href','MAILTO:'.$account['account_email']))),
|
HTTP_WebDAV_Server::mkprop('href','MAILTO:'.$account['account_email']))),
|
||||||
HTTP_WebDAV_Server::mkprop(groupdav::CARDDAV,'addressbook-home-set',array(
|
HTTP_WebDAV_Server::mkprop(groupdav::CARDDAV,'addressbook-home-set',array(
|
||||||
@ -282,7 +284,8 @@ class groupdav_principals extends groupdav_handler
|
|||||||
$props = array(
|
$props = array(
|
||||||
HTTP_WebDAV_Server::mkprop('displayname',$displayname),
|
HTTP_WebDAV_Server::mkprop('displayname',$displayname),
|
||||||
HTTP_WebDAV_Server::mkprop('getetag',$this->get_etag($account)),
|
HTTP_WebDAV_Server::mkprop('getetag',$this->get_etag($account)),
|
||||||
HTTP_WebDAV_Server::mkprop('resourcetype','principal'),
|
HTTP_WebDAV_Server::mkprop('resourcetype',array(
|
||||||
|
HTTP_WebDAV_Server::mkprop('principal', ''))),
|
||||||
HTTP_WebDAV_Server::mkprop('alternate-URI-set',''),
|
HTTP_WebDAV_Server::mkprop('alternate-URI-set',''),
|
||||||
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'calendar-home-set',array(
|
HTTP_WebDAV_Server::mkprop(groupdav::CALDAV,'calendar-home-set',array(
|
||||||
HTTP_WebDAV_Server::mkprop('href',$this->base_uri.'/'.$account['account_lid'].'/calendar/'))),
|
HTTP_WebDAV_Server::mkprop('href',$this->base_uri.'/'.$account['account_lid'].'/calendar/'))),
|
||||||
@ -314,7 +317,8 @@ class groupdav_principals extends groupdav_handler
|
|||||||
//echo "<p>".__METHOD__."($path,".array($props).")</p>\n";
|
//echo "<p>".__METHOD__."($path,".array($props).")</p>\n";
|
||||||
$props[] = HTTP_WebDAV_Server::mkprop('resourcetype',array(
|
$props[] = HTTP_WebDAV_Server::mkprop('resourcetype',array(
|
||||||
HTTP_WebDAV_Server::mkprop('collection',''),
|
HTTP_WebDAV_Server::mkprop('collection',''),
|
||||||
HTTP_WebDAV_Server::mkprop('resourcetype','principal'),
|
HTTP_WebDAV_Server::mkprop('resourcetype',array(
|
||||||
|
HTTP_WebDAV_Server::mkprop('principal', ''))),
|
||||||
));
|
));
|
||||||
return array(
|
return array(
|
||||||
'path' => $path,
|
'path' => $path,
|
||||||
|
Loading…
Reference in New Issue
Block a user