diff --git a/calendar/lib.php b/calendar/lib.php index fc5573a83e7..cfb8fbaff73 100644 --- a/calendar/lib.php +++ b/calendar/lib.php @@ -2276,6 +2276,20 @@ class calendar_event { // Delete the event $DB->delete_records('event', array('id'=>$this->properties->id)); + // If we are deleting parent of a repeated event series, promote the next event in the series as parent + if (($this->properties->id == $this->properties->repeatid) && !$deleterepeated) { + $newparent = $DB->get_field_sql("SELECT id from {event} where repeatid = ? order by id ASC", array($this->properties->id), IGNORE_MULTIPLE); + if (!empty($newparent)) { + $DB->execute("UPDATE {event} SET repeatid = ? WHERE repeatid = ?", array($newparent, $this->properties->id)); + // Get all records where the repeatid is the same as the event being removed + $events = $DB->get_records('event', array('repeatid' => $newparent)); + // For each of the returned events trigger the event_update hook. + foreach ($events as $event) { + self::calendar_event_hook('update_event', array($event, false)); + } + } + } + // If the editor context hasn't already been set then set it now if ($this->editorcontext === null) { $this->editorcontext = $this->properties->context;