mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-02-04 20:40:14 +01:00
max_user_modified for recurring events has to include all recurrences, otherwise we get a "412 Precondition Failed" in CalDAV, as it is part of the ETag
This commit is contained in:
parent
c3abca67db
commit
cf1eee2818
@ -803,11 +803,11 @@ class calendar_bo
|
|||||||
$time->setTime(23, 59, 59);
|
$time->setTime(23, 59, 59);
|
||||||
$event['recur_enddate'] = egw_time::to($time, $date_format);
|
$event['recur_enddate'] = egw_time::to($time, $date_format);
|
||||||
}
|
}
|
||||||
$timestamps = array('modified','created');
|
$timestamps = array('modified','created','max_user_modified');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$timestamps = array('start','end','modified','created','recur_enddate','recurrence');
|
$timestamps = array('start','end','modified','created','recur_enddate','recurrence','max_user_modified');
|
||||||
}
|
}
|
||||||
// we convert here from the server-time timestamps to user-time and (optional) to a different date-format!
|
// we convert here from the server-time timestamps to user-time and (optional) to a different date-format!
|
||||||
foreach ($timestamps as $ts)
|
foreach ($timestamps as $ts)
|
||||||
|
@ -228,6 +228,7 @@ class calendar_so
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$need_max_user_modified = array();
|
||||||
// participants, if a recur_date give, we read that recurance, plus the one users from the default entry with recur_date=0
|
// participants, if a recur_date give, we read that recurance, plus the one users from the default entry with recur_date=0
|
||||||
// sorting by cal_recur_date ASC makes sure recurence status always overwrites series status
|
// sorting by cal_recur_date ASC makes sure recurence status always overwrites series status
|
||||||
foreach($this->db->select($this->user_table,'*',array(
|
foreach($this->db->select($this->user_table,'*',array(
|
||||||
@ -242,11 +243,23 @@ class calendar_so
|
|||||||
$events[$row['cal_id']]['participants'][$uid] = $status;
|
$events[$row['cal_id']]['participants'][$uid] = $status;
|
||||||
$events[$row['cal_id']]['participant_types'][$row['cal_user_type']][$row['cal_user_id']] = $status;
|
$events[$row['cal_id']]['participant_types'][$row['cal_user_type']][$row['cal_user_id']] = $status;
|
||||||
|
|
||||||
if (($modified = $this->db->from_timestamp($row['cal_user_modified'])) > $events[$row['cal_id']]['max_user_modified'])
|
if ($events[$row['cal_id']]['recur_type'])
|
||||||
|
{
|
||||||
|
$need_max_user_modified[$row['cal_id']] = $row['cal_id'];
|
||||||
|
}
|
||||||
|
elseif (($modified = $this->db->from_timestamp($row['cal_user_modified'])) > $events[$row['cal_id']]['max_user_modified'])
|
||||||
{
|
{
|
||||||
$events[$row['cal_id']]['max_user_modified'] = $modified;
|
$events[$row['cal_id']]['max_user_modified'] = $modified;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// max_user_modified for recurring events has to include all recurrences, above code only querys $recur_date!
|
||||||
|
if ($need_max_user_modified)
|
||||||
|
{
|
||||||
|
foreach($this->max_user_modified($need_max_user_modified) as $id => $modified)
|
||||||
|
{
|
||||||
|
$events[$id]['max_user_modified'] = $modified;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// custom fields
|
// custom fields
|
||||||
foreach($this->db->select($this->extra_table,'*',array('cal_id'=>$ids),__LINE__,__FILE__,false,'','calendar') as $row)
|
foreach($this->db->select($this->extra_table,'*',array('cal_id'=>$ids),__LINE__,__FILE__,false,'','calendar') as $row)
|
||||||
@ -1582,6 +1595,10 @@ ORDER BY cal_user_type, cal_usre_id
|
|||||||
'cal_start' => $start,
|
'cal_start' => $start,
|
||||||
),__LINE__,__FILE__,'calendar');
|
),__LINE__,__FILE__,'calendar');
|
||||||
|
|
||||||
|
if (!is_array($participants))
|
||||||
|
{
|
||||||
|
error_log(__METHOD__."($cal_id, $start, $end, ".array2string($participants).") participants is NO array! ".function_backtrace());
|
||||||
|
}
|
||||||
foreach($participants as $uid => $status)
|
foreach($participants as $uid => $status)
|
||||||
{
|
{
|
||||||
if ($status == 'G') continue; // dont save group-invitations
|
if ($status == 'G') continue; // dont save group-invitations
|
||||||
|
Loading…
Reference in New Issue
Block a user