diff --git a/mod/feedback/classes/completion.php b/mod/feedback/classes/completion.php index 75096dcf9ea..3477629d047 100644 --- a/mod/feedback/classes/completion.php +++ b/mod/feedback/classes/completion.php @@ -517,7 +517,7 @@ class mod_feedback_completion extends mod_feedback_structure { */ protected function find_last_completed() { global $USER, $DB; - if (isloggedin() || isguestuser()) { + if (!isloggedin() || isguestuser()) { // Not possible to retrieve completed feedback for guests. return false; } diff --git a/mod/feedback/db/upgrade.php b/mod/feedback/db/upgrade.php index 2e1644ecc38..7455297d9d6 100644 --- a/mod/feedback/db/upgrade.php +++ b/mod/feedback/db/upgrade.php @@ -146,5 +146,31 @@ function xmldb_feedback_upgrade($oldversion) { // Moodle v3.1.0 release upgrade line. // Put any upgrade step following this. + if ($oldversion < 2016052301) { + + // Delete duplicated records in feedback_completed. We just keep the last record of completion. + // 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 + GROUP BY userid, feedback, courseid + HAVING COUNT(id) > 1"; + + if ($duplicatedrows = $DB->get_recordset_sql($sql)) { + 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, + )); + } + } + $duplicatedrows->close(); + + // Feedback savepoint reached. + upgrade_mod_savepoint(true, 2016052301, 'feedback'); + } + return true; } diff --git a/mod/feedback/version.php b/mod/feedback/version.php index 5e98b6bd07f..7249ddc10eb 100644 --- a/mod/feedback/version.php +++ b/mod/feedback/version.php @@ -24,7 +24,7 @@ defined('MOODLE_INTERNAL') || die(); -$plugin->version = 2016052300; // The current module version (Date: YYYYMMDDXX) +$plugin->version = 2016052301; // The current module version (Date: YYYYMMDDXX) $plugin->requires = 2016051900; // Requires this Moodle version $plugin->component = 'mod_feedback'; // Full name of the plugin (used for diagnostics) $plugin->cron = 0;