Permalink
Browse files

MDL-31914 Ensure that completion criteria are deleted when removing a…

… course module
  • Loading branch information...
1 parent 23778a4 commit cac06a034dd3e559ab8ae20cb162cf90582a8776 @andrewnicols andrewnicols committed Mar 6, 2012
Showing with 19 additions and 1 deletion.
  1. +1 −0 course/lib.php
  2. +17 −0 lib/db/upgrade.php
  3. +1 −1 version.php
View
@@ -2854,6 +2854,7 @@ function delete_course_module($id) {
// very quick on an empty table)
$DB->delete_records('course_modules_completion', array('coursemoduleid' => $cm->id));
$DB->delete_records('course_modules_availability', array('coursemoduleid'=> $cm->id));
+ $DB->delete_records('course_completion_criteria', array('moduleinstance'=> $cm->id));
delete_context(CONTEXT_MODULE, $cm->id);
return $DB->delete_records('course_modules', array('id'=>$cm->id));
View
@@ -204,6 +204,23 @@ function xmldb_main_upgrade($oldversion) {
upgrade_main_savepoint(true, 2012030100.02);
}
+ if ($oldversion < 2012030900.01) {
+ // Delete orphaned criteria which were left when modules were removed
+ if ($DB->get_dbfamily() === 'mysql') {
+ $sql = "DELETE cc FROM {course_completion_criteria} cc
+ LEFT JOIN {course_modules} cm ON cm.id = cc.moduleinstance
+ WHERE cm.id IS NULL";
+ } else {
+ $sql = "DELETE FROM {course_completion_criteria}
+ WHERE NOT EXISTS (
+ SELECT 'x' FROM {course_modules}
+ WHERE {course_modules}.id = {course_completion_criteria}.moduleinstance)";
+ }
+ $DB->execute($sql);
+
+ // Main savepoint reached
+ upgrade_main_savepoint(true, 2012030900.01);
+ }
return true;
}
View
@@ -30,7 +30,7 @@
defined('MOODLE_INTERNAL') || die();
-$version = 2012030900.00; // YYYYMMDD = weekly release date of this DEV branch
+$version = 2012030900.01; // YYYYMMDD = weekly release date of this DEV branch
// RR = release increments - 00 in DEV branches
// .XX = incremental changes

0 comments on commit cac06a0

Please sign in to comment.