diff --git a/lib/db/upgrade.php b/lib/db/upgrade.php index cb482010fac..55adbb7e878 100644 --- a/lib/db/upgrade.php +++ b/lib/db/upgrade.php @@ -3404,7 +3404,7 @@ function xmldb_main_upgrade($oldversion) { FROM {event_subscriptions} es LEFT JOIN {user} u ON u.id = es.userid WHERE u.deleted = 1 OR u.id IS NULL"; - $deletedusers = $DB->get_field_sql($sql); + $deletedusers = $DB->get_fieldset_sql($sql); if ($deletedusers) { list($sql, $params) = $DB->get_in_or_equal($deletedusers); @@ -3459,5 +3459,15 @@ function xmldb_main_upgrade($oldversion) { upgrade_main_savepoint(true, 2019052003.05); } + + if ($oldversion < 2019052004.02) { + // Delete all orphaned subscription events. + $select = "subscriptionid IS NOT NULL + AND subscriptionid NOT IN (SELECT id from {event_subscriptions})"; + $DB->delete_records_select('event', $select); + + upgrade_main_savepoint(true, 2019052004.02); + } + return true; } diff --git a/lib/moodlelib.php b/lib/moodlelib.php index 9ca5860eadf..4080ecfbad1 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -4222,7 +4222,10 @@ function delete_user(stdClass $user) { // Now do a brute force cleanup. - // Remove user's calendar subscriptions. + // Delete all user events and subscription events. + $DB->delete_records_select('event', 'userid = :userid AND subscriptionid IS NOT NULL', ['userid' => $user->id]); + + // Now, delete all calendar subscription from the user. $DB->delete_records('event_subscriptions', ['userid' => $user->id]); // Remove from all cohorts. diff --git a/version.php b/version.php index 1c1aacc086a..1600491e1fb 100644 --- a/version.php +++ b/version.php @@ -29,7 +29,7 @@ defined('MOODLE_INTERNAL') || die(); -$version = 2019052004.01; // 20190520 = branching date YYYYMMDD - do not modify! +$version = 2019052004.02; // 20190520 = branching date YYYYMMDD - do not modify! // RR = release increments - 00 in DEV branches. // .XX = incremental changes.