From ce12d03e7110745ff25a24dfe77f67dd7be6c1e6 Mon Sep 17 00:00:00 2001 From: stronk7 Date: Sun, 15 May 2005 21:40:59 +0000 Subject: [PATCH] Now STEP1 is 100% completed. Remap of multianswers isn't necessary because, under Moodle 1.5, it seems to be always a 1..n collection of pairs and responses pairs are always ordered from {#1} to {#n}. If this isn't true we should look for an alternatice method of restore attempts... :-( For more info, bug 3252 has more info (http://moodle.org/bugs/bug.php?op=show&bugid=3252) --- mod/quiz/restorelibpre15.php | 67 ++++-------------------------------- 1 file changed, 6 insertions(+), 61 deletions(-) diff --git a/mod/quiz/restorelibpre15.php b/mod/quiz/restorelibpre15.php index e9a1c9a058c..36d7d5b72f7 100644 --- a/mod/quiz/restorelibpre15.php +++ b/mod/quiz/restorelibpre15.php @@ -282,7 +282,6 @@ } else if ($question->qtype == "8") { $status = quiz_restore_pre15_numerical($oldid,$newid,$que_info,$restore); } else if ($question->qtype == "9") { -echo "Cloze questions not working!!!"; $status = quiz_restore_pre15_multianswer($oldid,$newid,$que_info,$restore); } else if ($question->qtype == "10") { $status = quiz_restore_pre15_calculated($oldid,$newid,$que_info,$restore); @@ -291,7 +290,7 @@ echo "Cloze questions not working!!!"; //We are NOT creating the question, but we need to know every quiz_answers //map between the XML file and the database to be able to restore the responses //in each attempt. - $status = quiz_restore_map_answers($oldid,$newid,$que_info,$restore); + $status = quiz_restore_pre15_map_answers($oldid,$newid,$que_info,$restore); //Now, depending of the type of questions, invoke different functions //to create the necessary mappings in backup_ids, because we are not //creating the question, but need some records in backup table @@ -304,7 +303,7 @@ echo "Cloze questions not working!!!"; } else if ($question->qtype == "4") { //Random question. Nothing to remap } else if ($question->qtype == "5") { - $status = quiz_restore_map_match($oldid,$newid,$que_info,$restore); + $status = quiz_restore_pre15_map_match($oldid,$newid,$que_info,$restore); } else if ($question->qtype == "6") { //Randomsamatch question. Nothing to remap } else if ($question->qtype == "7") { @@ -312,7 +311,7 @@ echo "Cloze questions not working!!!"; } else if ($question->qtype == "8") { //Numerical question. Nothing to remap } else if ($question->qtype == "9") { - $status = quiz_restore_map_multianswer($oldid,$newid,$que_info,$restore); + //Multianswer question. Nothing to remap } else if ($question->qtype == "10") { //Calculated question. Nothing to remap } @@ -406,9 +405,10 @@ echo "Cloze questions not working!!!"; //Now, we are going to look for that answer in DB and to create the //mappings in backup_ids to use them later where restoring responses (user level). - //Get the answer from DB (by question and answer) + //Get the answer from DB (by question, answer and fraction) $db_answer = get_record ("quiz_answers","question",$new_question_id, - "answer",$answer->answer); + "answer",$answer->answer, + "fraction",$answer->fraction); //Do some output if (($i+1) % 50 == 0) { @@ -746,61 +746,6 @@ echo "Cloze questions not working!!!"; return $status; } - function quiz_restore_pre15_map_multianswer ($old_question_id,$new_question_id,$info,$restore) { - - global $CFG; - - $status = true; - - //Get the multianswers array - $multianswers = $info['#']['MULTIANSWERS']['0']['#']['MULTIANSWER']; - //Iterate over multianswers - for($i = 0; $i < sizeof($multianswers); $i++) { - $mul_info = $multianswers[$i]; - //traverse_xmlize($mul_info); //Debug - //print_object ($GLOBALS['traverse_array']); //Debug - //$GLOBALS['traverse_array']=""; //Debug - - //We need this later - $oldid = backup_todb($mul_info['#']['ID']['0']['#']); - - //Now, build the QUIZ_MULTIANSWER record structure - $multianswer->question = $new_question_id; - $multianswer->answers = backup_todb($mul_info['#']['ANSWERS']['0']['#']); - $multianswer->positionkey = backup_todb($mul_info['#']['POSITIONKEY']['0']['#']); - $multianswer->answertype = backup_todb($mul_info['#']['ANSWERTYPE']['0']['#']); - $multianswer->norm = backup_todb($mul_info['#']['NORM']['0']['#']); - - //If we are in this method is because the question exists in DB, so its - //multianswer must exist too. - //Now, we are going to look for that multianswer in DB and to create the - //mappings in backup_ids to use them later where restoring responses (user level). - - //Get the multianswer from DB (by question and positionkey) - $db_multianswer = get_record ("quiz_multianswers","question",$new_question_id, - "positionkey",$multianswer->positionkey); - //Do some output - if (($i+1) % 50 == 0) { - echo "."; - if (($i+1) % 1000 == 0) { - echo "
"; - } - backup_flush(300); - } - - //We have the database multianswer, so update backup_ids - if ($db_multianswer) { - //We have the newid, update backup_ids - backup_putid($restore->backup_unique_code,"quiz_multianswers",$oldid, - $db_multianswer->id); - } else { - $status = false; - } - } - - return $status; - } - function quiz_restore_pre15_randomsamatch ($old_question_id,$new_question_id,$info,$restore) { global $CFG;