diff --git a/mod/assign/db/upgrade.php b/mod/assign/db/upgrade.php index ade4b79021b..300f574d4ed 100644 --- a/mod/assign/db/upgrade.php +++ b/mod/assign/db/upgrade.php @@ -584,5 +584,37 @@ function xmldb_assign_upgrade($oldversion) { // Moodle v2.8.0 release upgrade line. // Put any upgrade step following this. + if ($oldversion < 2014122600) { + // Delete any entries from the assign_user_flags and assign_user_mapping that are no longer required. + if ($DB->get_dbfamily() === 'mysql') { + $sql1 = "DELETE {assign_user_flags} + FROM {assign_user_flags} + LEFT JOIN {assign} + ON {assign_user_flags}.assignment = {assign}.id + WHERE {assign}.id IS NULL"; + + $sql2 = "DELETE {assign_user_mapping} + FROM {assign_user_mapping} + LEFT JOIN {assign} + ON {assign_user_mapping}.assignment = {assign}.id + WHERE {assign}.id IS NULL"; + } else { + $sql1 = "DELETE FROM {assign_user_flags} + WHERE NOT EXISTS ( + SELECT 'x' FROM {assign} + WHERE {assign_user_flags}.assignment = {assign}.id)"; + + $sql2 = "DELETE FROM {assign_user_mapping} + WHERE NOT EXISTS ( + SELECT 'x' FROM {assign} + WHERE {assign_user_mapping}.assignment = {assign}.id)"; + } + + $DB->execute($sql1); + $DB->execute($sql2); + + upgrade_mod_savepoint(true, 2014122600, 'assign'); + } + return true; } diff --git a/mod/assign/version.php b/mod/assign/version.php index fd7b5c5c3fb..96d2675fef4 100644 --- a/mod/assign/version.php +++ b/mod/assign/version.php @@ -25,8 +25,6 @@ defined('MOODLE_INTERNAL') || die(); $plugin->component = 'mod_assign'; // Full name of the plugin (used for diagnostics). -$plugin->version = 2014111000; // The current module version (Date: YYYYMMDDXX). +$plugin->version = 2014122600; // The current module version (Date: YYYYMMDDXX). $plugin->requires = 2014110400; // Requires this Moodle version. $plugin->cron = 60; - -