From 10d39a1febe7b4a2b4abccd73c7dbe9ee8a53a2b Mon Sep 17 00:00:00 2001 From: Paul Holden Date: Mon, 5 Sep 2022 22:27:37 +0100 Subject: [PATCH] MDL-75168 tag: cleanup module tag instances upon course deletion. --- lib/db/upgrade.php | 11 +++++++++++ lib/moodlelib.php | 4 ++++ version.php | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/db/upgrade.php b/lib/db/upgrade.php index c0ff4512c0c..d24776ac519 100644 --- a/lib/db/upgrade.php +++ b/lib/db/upgrade.php @@ -2720,5 +2720,16 @@ function xmldb_main_upgrade($oldversion) { upgrade_main_savepoint(true, 2021051707.05); } + if ($oldversion < 2021051710.03) { + + // Remove any orphaned tag instance records (pointing to non-existing context). + $DB->delete_records_select('tag_instance', 'NOT EXISTS ( + SELECT ctx.id FROM {context} ctx WHERE ctx.id = {tag_instance}.contextid + )'); + + // Main savepoint reached. + upgrade_main_savepoint(true, 2021051710.03); + } + return true; } diff --git a/lib/moodlelib.php b/lib/moodlelib.php index 92e1085fc2b..b2f157200a0 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -5151,6 +5151,10 @@ function remove_course_contents($courseid, $showfeedback = true, array $options question_delete_activity($cm); // Notify the competency subsystem. \core_competency\api::hook_course_module_deleted($cm); + + // Delete all tag instances associated with the instance of this module. + core_tag_tag::delete_instances("mod_{$modname}", null, context_module::instance($cm->id)->id); + core_tag_tag::remove_all_item_tags('core', 'course_modules', $cm->id); } if (function_exists($moddelete)) { // This purges all module data in related tables, extra user prefs, settings, etc. diff --git a/version.php b/version.php index ae416028627..544e26f1980 100644 --- a/version.php +++ b/version.php @@ -29,7 +29,7 @@ defined('MOODLE_INTERNAL') || die(); -$version = 2021051710.02; // 20210517 = branching date YYYYMMDD - do not modify! +$version = 2021051710.03; // 20210517 = branching date YYYYMMDD - do not modify! // RR = release increments - 00 in DEV branches. // .XX = incremental changes. $release = '3.11.10+ (Build: 20220922)';// Human-friendly version name