mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-30 11:53:57 +01:00
* CalDAV: allow organizer (edit-rights) update with If-Schedule-Tag-Match eg. from iOS or OS X iCal when event series was changed with "this and future" semantics
This commit is contained in:
parent
4030c6a2b7
commit
c1f0674e25
@ -734,7 +734,7 @@ class calendar_groupdav extends groupdav_handler
|
|||||||
$this->groupdav->log("Both If-Match and If-Schedule-Tag-Match header given: If-Schedule-Tag-Match takes precedence for participants!");
|
$this->groupdav->log("Both If-Match and If-Schedule-Tag-Match header given: If-Schedule-Tag-Match takes precedence for participants!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//client specified a CalDAV Scheduling schedule-tag precondition
|
// check CalDAV Scheduling schedule-tag precondition
|
||||||
if ($this->use_schedule_tag && isset($_SERVER['HTTP_IF_SCHEDULE_TAG_MATCH']))
|
if ($this->use_schedule_tag && isset($_SERVER['HTTP_IF_SCHEDULE_TAG_MATCH']))
|
||||||
{
|
{
|
||||||
$schedule_tag_match = $_SERVER['HTTP_IF_SCHEDULE_TAG_MATCH'];
|
$schedule_tag_match = $_SERVER['HTTP_IF_SCHEDULE_TAG_MATCH'];
|
||||||
@ -746,11 +746,17 @@ class calendar_groupdav extends groupdav_handler
|
|||||||
if ($this->debug) error_log(__METHOD__."(,,$user) schedule_tag missmatch: given '$schedule_tag_match' != '$schedule_tag'");
|
if ($this->debug) error_log(__METHOD__."(,,$user) schedule_tag missmatch: given '$schedule_tag_match' != '$schedule_tag'");
|
||||||
return '412 Precondition Failed';
|
return '412 Precondition Failed';
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
// if no edit-rights (aka no organizer), update only attendee stuff: status and alarms
|
||||||
|
if (!$this->check_access(EGW_ACL_EDIT, $oldEvent))
|
||||||
|
{
|
||||||
|
if (isset($oldEvent['participants'][$user]))
|
||||||
|
{
|
||||||
|
if ($this->debug) error_log(__METHOD__."(,,$user) user $user is NOT an attendee!");
|
||||||
|
return '403 Forbidden';
|
||||||
|
}
|
||||||
// update only participant status and alarms of current user
|
// update only participant status and alarms of current user
|
||||||
// fix for iCal on OS X, which uses only a schedule-tag (no etag), if event has no participants (only calendar owner)
|
if (($events = $handler->icaltoegw($vCalendar)))
|
||||||
// --> do regular calendar update as with matching etag (otherwise no updates possible)
|
|
||||||
if (!(count($oldEvent['participants']) == 1 && isset($oldEvent['participants'][$user])) &&
|
|
||||||
($events = $handler->icaltoegw($vCalendar)))
|
|
||||||
{
|
{
|
||||||
$modified = 0;
|
$modified = 0;
|
||||||
foreach($events as $n => $event)
|
foreach($events as $n => $event)
|
||||||
|
Loading…
Reference in New Issue
Block a user