diff --git a/mod/assign/lib.php b/mod/assign/lib.php index f9fb3e20034..c77f7f5971d 100644 --- a/mod/assign/lib.php +++ b/mod/assign/lib.php @@ -118,19 +118,25 @@ function assign_refresh_events($courseid = 0) { } } foreach ($assigns as $assign) { - // Use assignment's course column if courseid parameter is not given. - if (!$courseid) { - $courseid = $assign->course; - if (!$course = $DB->get_record('course', array('id' => $courseid), '*')) { - continue; - } - } - if (!$cm = get_coursemodule_from_instance('assign', $assign->id, $courseid, false)) { - continue; - } + // Get course and course module for the assignment. + list($course, $cm) = get_course_and_cm_from_instance($assign->id, 'assign', $assign->course); + + // Refresh the assignment's calendar events. $context = context_module::instance($cm->id); $assignment = new assign($context, $cm, $course); $assignment->update_calendar($cm->id); + + // Refresh the calendar events also for the assignment overrides. + $overrides = $DB->get_records('assign_overrides', ['assignid' => $assign->id], '', 'id, groupid, userid'); + foreach ($overrides as $override) { + if (empty($override->userid)) { + unset($override->userid); + } + if (empty($override->groupid)) { + unset($override->groupid); + } + assign_update_events($assignment, $override); + } } return true;