From cdd6d0d240ef12387c878b4273f5b7d3fdc76740 Mon Sep 17 00:00:00 2001 From: Davo Smith Date: Fri, 6 Oct 2017 12:46:05 +0100 Subject: [PATCH] MDL-60366 mod_feedback: fix deletion of valid anonymous duplicates --- mod/feedback/db/upgrade.php | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/mod/feedback/db/upgrade.php b/mod/feedback/db/upgrade.php index 11801d574f8..b13a4e2f42f 100644 --- a/mod/feedback/db/upgrade.php +++ b/mod/feedback/db/upgrade.php @@ -155,17 +155,20 @@ function xmldb_feedback_upgrade($oldversion) { // Related values in feedback_value won't be deleted (they won't be used and can be kept there as a backup). $sql = "SELECT MAX(id) as maxid, userid, feedback, courseid FROM {feedback_completed} - WHERE userid <> 0 + WHERE userid <> 0 AND anonymous_response = :notanonymous GROUP BY userid, feedback, courseid HAVING COUNT(id) > 1"; + $params = ['notanonymous' => 2]; // FEEDBACK_ANONYMOUS_NO. - $duplicatedrows = $DB->get_recordset_sql($sql); + $duplicatedrows = $DB->get_recordset_sql($sql, $params); foreach ($duplicatedrows as $row) { - $DB->delete_records_select('feedback_completed', 'userid = ? AND feedback = ? AND courseid = ? AND id <> ?', array( - $row->userid, - $row->feedback, - $row->courseid, - $row->maxid, + $DB->delete_records_select('feedback_completed', 'userid = ? AND feedback = ? AND courseid = ? AND id <> ?'. + ' AND anonymous_response = ?', array( + $row->userid, + $row->feedback, + $row->courseid, + $row->maxid, + 2, // FEEDBACK_ANONYMOUS_NO. )); } $duplicatedrows->close();