Calendar: If an event went from recurring to non-recurring, recurring events could still be displayed

This commit is contained in:
nathan 2022-11-25 09:24:04 -07:00 committed by ralf
parent 0ab30a1b3a
commit e9b6553ab4

View File

@ -690,10 +690,10 @@ class calendar_ui
if(!$event['recur_type'] || $recurrence_date) if(!$event['recur_type'] || $recurrence_date)
{ {
$this->to_client($event); $this->to_client($event);
$response->generic('data', array('uid' => 'calendar::'.$event['row_id'], 'data' => $event)); $response->generic('data', array('uid' => 'calendar::' . $event['row_id'], 'data' => $event));
} }
// If it's recurring, try to send the next month or so // If it is (or was) recurring, try to send the next month or so
else if($event['recur_type'] ) if($event['recur_type'] || (!$event['recur_type'] && $old_event['recur_type']))
{ {
$this_month = new Api\DateTime('next month'); $this_month = new Api\DateTime('next month');
$data = []; $data = [];
@ -711,6 +711,8 @@ class calendar_ui
} }
while($old_rrule->valid() && $occurrence <= $this_month); while($old_rrule->valid() && $occurrence <= $this_month);
} }
if($event['recur_type'])
{
$rrule = calendar_rrule::event2rrule($event, true); $rrule = calendar_rrule::event2rrule($event, true);
$rrule->rewind(); $rrule->rewind();
do do
@ -722,6 +724,7 @@ class calendar_ui
$rrule->next(); $rrule->next();
} }
while($rrule->valid() && $occurrence <= $this_month); while($rrule->valid() && $occurrence <= $this_month);
}
// Now we have to go through and send each one individually, since client side data can't handle more than one // Now we have to go through and send each one individually, since client side data can't handle more than one
foreach($data as $uid => $cal_data) foreach($data as $uid => $cal_data)