From cab836cf8d13700f19dbe8d071c2eaef44466cba Mon Sep 17 00:00:00 2001 From: Peter Burnett Date: Mon, 30 Aug 2021 16:33:30 +1000 Subject: [PATCH] MDL-72375 completion: Remove id from custom rules The id stored in the default custom rules was the courseid, and would incorrectly be applied to new activities as the activity id. --- completion/classes/manager.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/completion/classes/manager.php b/completion/classes/manager.php index 83738d113c3..29f0d77f7f7 100644 --- a/completion/classes/manager.php +++ b/completion/classes/manager.php @@ -416,6 +416,8 @@ class manager { global $DB; $courseid = $data->id; + // MDL-72375 Unset the id here, it should not be stored in customrules. + unset($data->id); $coursecontext = context_course::instance($courseid); if (!$modids = $data->modids) { return; @@ -484,6 +486,9 @@ class manager { if ($data = $DB->get_record('course_completion_defaults', ['course' => $course->id, 'module' => $module->id], 'completion, completionview, completionexpected, completionusegrade, completionpassgrade, customrules')) { if ($data->customrules && ($customrules = @json_decode($data->customrules, true))) { + // MDL-72375 This will override activity id for new mods. Skip this field, it is already exposed as courseid. + unset($customrules['id']); + if ($flatten) { foreach ($customrules as $key => $value) { $data->$key = $value;