Browse Source

Fixes BT#633 - Course copy bug fixed when trying to copy an exercise with a specific question_order

Julio Montoya 15 years ago
parent
commit
b94b0d2e1e

+ 1 - 1
main/coursecopy/classes/CourseBuilder.class.php

@@ -333,7 +333,7 @@ class CourseBuilder
 			$db_result2 = Database::query($sql, __FILE__, __LINE__);
 			while ($obj2 = Database::fetch_object($db_result2))
 			{
-				$quiz->add_question($obj2->question_id);
+				$quiz->add_question($obj2->question_id, $obj2->question_order);
 			}
 			$this->course->add_resource($quiz);
 		}

+ 3 - 7
main/coursecopy/classes/CourseRestorer.class.php

@@ -843,17 +843,14 @@ class CourseRestorer
 						$condition_session;
 					Database::query($sql, __FILE__, __LINE__);
 					$new_id = Database::insert_id();
-				}
-				else
-				{
+				} else {
 					// $id = -1 identifies the fictionary test for collecting orphan questions. We do not store it in the database.
 					$new_id = -1;
 				}
 				$this->course->resources[RESOURCE_QUIZ][$id]->destination_id = $new_id;
-				foreach ($quiz->question_ids as $index => $question_id)
-				{
+				foreach ($quiz->question_ids as $index => $question_id) {
 					$qid = $this->restore_quiz_question($question_id);
-					$sql = "INSERT IGNORE INTO ".$table_rel." SET question_id = ".$qid.", exercice_id = ".$new_id."";
+					$sql = "INSERT IGNORE INTO ".$table_rel." SET question_id = ".$qid.", exercice_id = ".$new_id.", question_order = ".$quiz->question_orders[$index]."";
 					Database::query($sql, __FILE__, __LINE__);
 				}
 			}
@@ -895,7 +892,6 @@ class CourseRestorer
 			}
 			$this->course->resources[RESOURCE_QUIZQUESTION][$id]->destination_id = $new_id;
 		}
-
 		return $new_id;
 	}
 	/**

+ 7 - 1
main/coursecopy/classes/Quiz.class.php

@@ -62,6 +62,10 @@ class Quiz extends Resource
 	 * Questions
 	 */
 	var $question_ids;
+	/**
+	 * Questions orders
+	 */
+	var $question_orders;
 	/**
 	 * Max attempts
 	 */
@@ -114,6 +118,7 @@ class Quiz extends Resource
 		$this->media = $media;
 		$this->attempts = $attempts;
 		$this->question_ids = array();
+		$this->question_orders= array();
 		$this->results_disabled = $results_disabled;
 		$this->access_condition = $access_condition;
 		$this->start_time = $start_time;
@@ -125,9 +130,10 @@ class Quiz extends Resource
 	/**
 	 * Add a question to this Quiz
 	 */
-	function add_question($id)
+	function add_question($id,$question_order)
 	{
 		$this->question_ids[] = $id;
+		$this->question_orders[] = $question_order;
 	}
 	/**
 	 * Show this question