From 9bd6807635d4d2cf384c6b27c67ac60d26e39065 Mon Sep 17 00:00:00 2001 From: Tobias Reischmann Date: Mon, 6 Nov 2017 13:29:11 +0100 Subject: [PATCH] MDL-60669 forum: Added duplicate check for restoring forum subscriptions Before MDL-59854 it was possible to have duplicate forum subscriptions. Trying to import backups created from back then, caused a DB exception due to unqiue key constraints. Now only one of multiple identical forum subscritions is restored. --- mod/forum/backup/moodle2/restore_forum_stepslib.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/mod/forum/backup/moodle2/restore_forum_stepslib.php b/mod/forum/backup/moodle2/restore_forum_stepslib.php index f7521c02ace..771fd41af07 100644 --- a/mod/forum/backup/moodle2/restore_forum_stepslib.php +++ b/mod/forum/backup/moodle2/restore_forum_stepslib.php @@ -168,8 +168,14 @@ class restore_forum_activity_structure_step extends restore_activity_structure_s $data->forum = $this->get_new_parentid('forum'); $data->userid = $this->get_mappingid('user', $data->userid); - $newitemid = $DB->insert_record('forum_subscriptions', $data); - $this->set_mapping('forum_subscription', $oldid, $newitemid, true); + // Create only a new subscription if it does not already exist (see MDL-59854). + if ($subscription = $DB->get_record('forum_subscriptions', + array('forum' => $data->forum, 'userid' => $data->userid))) { + $this->set_mapping('forum_subscription', $oldid, $subscription->id, true); + } else { + $newitemid = $DB->insert_record('forum_subscriptions', $data); + $this->set_mapping('forum_subscription', $oldid, $newitemid, true); + } }