mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-27 17:18:54 +01:00
Calendar: Fix recurring events that started outside current view were not updated properly in the current view after creating an exception
This commit is contained in:
parent
fbb02f5bd2
commit
64e2fb7c63
@ -84,10 +84,21 @@ class calendar_hooks
|
|||||||
*/
|
*/
|
||||||
static public function prepareEventPush($event)
|
static public function prepareEventPush($event)
|
||||||
{
|
{
|
||||||
$event = array_intersect_key($event, array_flip(['id','owner','participants','start','end']));
|
$send_keys = ['id', 'owner', 'participants', 'start', 'end'];
|
||||||
|
if($event['recur_type'])
|
||||||
|
{
|
||||||
|
// If it's a recurring event, we're only sending the first instance, which may be outside of the current
|
||||||
|
// view and therefore would be ignored by the client. Include range for additional check.
|
||||||
|
$send_keys[] = 'range_start';
|
||||||
|
$send_keys[] = 'range_end';
|
||||||
|
}
|
||||||
|
$event = array_intersect_key($event, array_flip($send_keys));
|
||||||
foreach($event['participants'] as $uid => $status)
|
foreach($event['participants'] as $uid => $status)
|
||||||
{
|
{
|
||||||
if ($uid[0] === 'e') unset($event['participants'][$uid]);
|
if($uid[0] === 'e')
|
||||||
|
{
|
||||||
|
unset($event['participants'][$uid]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return $event;
|
return $event;
|
||||||
}
|
}
|
||||||
|
@ -649,8 +649,13 @@ export class CalendarApp extends EgwApp
|
|||||||
// Check if we're interested by date?
|
// Check if we're interested by date?
|
||||||
if(cal_event.end <= new Date(this.state.first).valueOf() /1000 || cal_event.start > new Date(this.state.last).valueOf()/1000)
|
if(cal_event.end <= new Date(this.state.first).valueOf() /1000 || cal_event.start > new Date(this.state.last).valueOf()/1000)
|
||||||
{
|
{
|
||||||
// The event is outside our current view
|
// The event is outside our current view, but check if it's just one of a recurring event
|
||||||
return;
|
if(!cal_event.range_end && !cal_event.range_start ||
|
||||||
|
cal_event.range_end <= new Date(this.state.first).valueOf() / 1000 ||
|
||||||
|
cal_event.range_start > new Date(this.state.last).valueOf() / 1000)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do we already have "fresh" data? Most user actions give fresh data in response
|
// Do we already have "fresh" data? Most user actions give fresh data in response
|
||||||
|
Loading…
Reference in New Issue
Block a user