diff --git a/mod/assign/db/upgrade.php b/mod/assign/db/upgrade.php index a546fe3f25b..3610807e265 100644 --- a/mod/assign/db/upgrade.php +++ b/mod/assign/db/upgrade.php @@ -496,5 +496,37 @@ function xmldb_assign_upgrade($oldversion) { upgrade_mod_savepoint(true, 2014051201, 'assign'); } + if ($oldversion < 2014051202) { + // 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, 2014051202, 'assign'); + } + return true; } diff --git a/mod/assign/version.php b/mod/assign/version.php index 5c74a7a468a..75dfe32976d 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 = 2014051201; // The current module version (Date: YYYYMMDDXX). +$plugin->version = 2014051202; // The current module version (Date: YYYYMMDDXX). $plugin->requires = 2014050800; // Requires this Moodle version. $plugin->cron = 60; - -