From 4d856332e45ad7fa9b4a46c128115d0a0428f53f Mon Sep 17 00:00:00 2001 From: "Eloy Lafuente (stronk7)" Date: Sun, 11 Dec 2011 23:03:51 +0100 Subject: [PATCH] MDL-28180 backup - on restore always prevent completion_aggr_methd dupes This covers the last case where dupes could be happening in the completion_aggr_methd table: Restoring one complete course into an existing one, adding information. Now we always check if the aggr_method exists before inserting it. --- backup/moodle2/restore_stepslib.php | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/backup/moodle2/restore_stepslib.php b/backup/moodle2/restore_stepslib.php index f83b7c3752c09..14d130afa3be5 100644 --- a/backup/moodle2/restore_stepslib.php +++ b/backup/moodle2/restore_stepslib.php @@ -1805,15 +1805,20 @@ public function process_course_completion_aggr_methd($data) { $data->course = $this->get_courseid(); - $params = array( - 'course' => $data->course, - 'criteriatype' => $data->criteriatype, - 'method' => $data->method, - 'value' => $data->value, - ); - $DB->insert_record('course_completion_aggr_methd', $params); + // Only create the course_completion_aggr_methd records if + // the target course has not them defined. MDL-28180 + if (!$DB->record_exists('course_completion_aggr_methd', array( + 'course' => $data->course, + 'criteriatype' => $data->criteriatype))) { + $params = array( + 'course' => $data->course, + 'criteriatype' => $data->criteriatype, + 'method' => $data->method, + 'value' => $data->value, + ); + $DB->insert_record('course_completion_aggr_methd', $params); + } } - }