MDL-69687 Course: Improve removal of completion data on MySQL
authorsam marshall <s.marshall@open.ac.uk>
Mon, 5 Oct 2020 09:27:38 +0000 (10:27 +0100)
committersam marshall <s.marshall@open.ac.uk>
Fri, 16 Oct 2020 17:20:23 +0000 (18:20 +0100)
lib/moodlelib.php

index 8634bfb..fde434d 100644 (file)
@@ -5327,9 +5327,8 @@ function remove_course_contents($courseid, $showfeedback = true, array $options
     // Remove all data from availability and completion tables that is associated
     // with course-modules belonging to this course. Note this is done even if the
     // features are not enabled now, in case they were enabled previously.
-    $DB->delete_records_select('course_modules_completion',
-           'coursemoduleid IN (SELECT id from {course_modules} WHERE course=?)',
-           array($courseid));
+    $DB->delete_records_subquery('course_modules_completion', 'coursemoduleid', 'id',
+            'SELECT id from {course_modules} WHERE course = ?', [$courseid]);
 
     // Remove course-module data that has not been removed in modules' _delete_instance callbacks.
     $cms = $DB->get_records('course_modules', array('course' => $course->id));