From c38c373db5ca9bb5f3d020832e2981b510f74e2d Mon Sep 17 00:00:00 2001 From: Michael Kotlyar Date: Fri, 11 Jul 2025 15:40:33 +0100 Subject: [PATCH] MDL-86010 competency: Delete competency evidence on cm delete Evidence recorded against course module competencies was not deleted with the course module. This led to errors when attempting to view the competency record on a learning plan. This change will delete associated evidence records with the cm, and will clean up any existing orphaned records on upgrade. Co-Authored-By: Mark Johnson --- public/competency/classes/api.php | 2 ++ public/lib/db/upgrade.php | 10 ++++++++++ public/version.php | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/public/competency/classes/api.php b/public/competency/classes/api.php index a8a3759a3e6..fae539c8ade 100644 --- a/public/competency/classes/api.php +++ b/public/competency/classes/api.php @@ -4781,6 +4781,8 @@ class api { public static function hook_course_module_deleted(stdClass $cm) { global $DB; $DB->delete_records(course_module_competency::TABLE, array('cmid' => $cm->id)); + $context = context_module::instance($cm->id); + $DB->delete_records(evidence::TABLE, ['contextid' => $context->id]); } /** diff --git a/public/lib/db/upgrade.php b/public/lib/db/upgrade.php index 92eda05655a..7a3ac2996c4 100644 --- a/public/lib/db/upgrade.php +++ b/public/lib/db/upgrade.php @@ -2304,5 +2304,15 @@ function xmldb_main_upgrade($oldversion) { // Automatically generated Moodle v5.1.0 release upgrade line. // Put any upgrade step following this. + if ($oldversion < 2025100600.05) { + // Remove any orphaned competency evidence records (pointing to non-existing contexts). + $DB->delete_records_select('competency_evidence', 'NOT EXISTS ( + SELECT ctx.id FROM {context} ctx WHERE ctx.id = {competency_evidence}.contextid + )'); + + // Main savepoint reached. + upgrade_main_savepoint(true, 2025100600.05); + } + return true; } diff --git a/public/version.php b/public/version.php index 6c4b4dc9f7e..ca190cd43b6 100644 --- a/public/version.php +++ b/public/version.php @@ -29,7 +29,7 @@ defined('MOODLE_INTERNAL') || die(); -$version = 2025100600.04; // 20251006 = branching date YYYYMMDD - do not modify! +$version = 2025100600.05; // 20251006 = branching date YYYYMMDD - do not modify! // RR = release increments - 00 in DEV branches. // .XX = incremental changes. $release = '5.1+ (Build: 20251030)'; // Human-friendly version name