MDL-57607 mod_assign: Make assign_refresh_events refresh overrides
authorJun Pataleta <jun@moodle.com>
Tue, 14 Mar 2017 04:32:25 +0000 (12:32 +0800)
committerDan Poltawski <dan@moodle.com>
Tue, 4 Apr 2017 10:01:54 +0000 (11:01 +0100)
Part of MDL-55611 epic.

mod/assign/lib.php

index f9fb3e2..c77f7f5 100644 (file)
@@ -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;