diff --git a/backup/moodle2/restore_stepslib.php b/backup/moodle2/restore_stepslib.php index 6178a04c790..2f9ada8b08c 100644 --- a/backup/moodle2/restore_stepslib.php +++ b/backup/moodle2/restore_stepslib.php @@ -2827,8 +2827,7 @@ abstract class restore_questions_activity_structure_step extends restore_activit $usage->preferredbehaviour = $quiz->preferredbehaviour; $usage->id = $DB->insert_record('question_usages', $usage); - $DB->set_field('quiz_attempts', 'uniqueid', $usage->id, - array('id' => $this->get_mappingid('quiz_attempt', $data->id))); + $this->inform_new_usage_id($usage->id); $data->uniqueid = $usage->id; $upgrader->save_usage($quiz->preferredbehaviour, $data, $qas, $quiz->questions); diff --git a/mod/quiz/backup/moodle2/restore_quiz_stepslib.php b/mod/quiz/backup/moodle2/restore_quiz_stepslib.php index b2ed15bec74..a80f87ce383 100644 --- a/mod/quiz/backup/moodle2/restore_quiz_stepslib.php +++ b/mod/quiz/backup/moodle2/restore_quiz_stepslib.php @@ -271,27 +271,19 @@ class restore_quiz_activity_structure_step extends restore_questions_activity_st } protected function process_quiz_attempt($data) { - global $DB; - $data = (object)$data; - $oldid = $data->id; - $olduniqueid = $data->uniqueid; $data->quiz = $this->get_new_parentid('quiz'); $data->attempt = $data->attemptnum; - $data->uniqueid = 0; // filled in later by {@link inform_new_usage_id()} - $data->userid = $this->get_mappingid('user', $data->userid); $data->timestart = $this->apply_date_offset($data->timestart); $data->timefinish = $this->apply_date_offset($data->timefinish); $data->timemodified = $this->apply_date_offset($data->timemodified); - $newitemid = $DB->insert_record('quiz_attempts', $data); - - // Save quiz_attempt->id mapping, because logs use it - $this->set_mapping('quiz_attempt', $oldid, $newitemid, false); + // The data is actually inserted into the database later in inform_new_usage_id. + $this->currentquizattempt = clone($data); } protected function process_quiz_attempt_legacy($data) { @@ -306,8 +298,16 @@ class restore_quiz_activity_structure_step extends restore_questions_activity_st protected function inform_new_usage_id($newusageid) { global $DB; - $DB->set_field('quiz_attempts', 'uniqueid', $newusageid, array('id' => - $this->get_new_parentid('quiz_attempt'))); + + $data = $this->currentquizattempt; + + $oldid = $data->id; + $data->uniqueid = $newusageid; + + $newitemid = $DB->insert_record('quiz_attempts', $data); + + // Save quiz_attempt->id mapping, because logs use it + $this->set_mapping('quiz_attempt', $oldid, $newitemid, false); } protected function after_execute() {