From: tjhunt Date: Wed, 28 Feb 2007 17:18:28 +0000 (+0000) Subject: When restoring numerical questions, don't create duplicate unit definitions. Merged... X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=a24a414f248ddc417114d63e3c4eab639a3fac6b;p=moodle.git When restoring numerical questions, don't create duplicate unit definitions. Merged from MOODLE_18_STABLE. --- diff --git a/question/restorelib.php b/question/restorelib.php index e4ca6f7d70..68b723d8cb 100644 --- a/question/restorelib.php +++ b/question/restorelib.php @@ -427,7 +427,7 @@ return $status; } - function question_restore_numerical_units ($old_question_id,$new_question_id,$info,$restore) { + function question_restore_numerical_units($old_question_id,$new_question_id,$info,$restore) { global $CFG; @@ -447,17 +447,23 @@ //print_object ($GLOBALS['traverse_array']); //Debug //$GLOBALS['traverse_array']=""; //Debug - //Now, build the question_numerical_UNITS record structure - $numerical_unit = new stdClass; - $numerical_unit->question = $new_question_id; - $numerical_unit->multiplier = backup_todb($nu_info['#']['MULTIPLIER']['0']['#']); - $numerical_unit->unit = backup_todb($nu_info['#']['UNIT']['0']['#']); - - //The structure is equal to the db, so insert the question_numerical_units - $newid = insert_record ("question_numerical_units",$numerical_unit); - - if (!$newid) { - $status = false; + // Check to see if this until already exists in the database, which it might, for + // Historical reasons. + $unit = backup_todb($nu_info['#']['UNIT']['0']['#']); + if (!record_exists('question_numerical_units', 'question', $new_question_id, 'unit', $unit)) { + + //Now, build the question_numerical_UNITS record structure. + $numerical_unit = new stdClass; + $numerical_unit->question = $new_question_id; + $numerical_unit->multiplier = backup_todb($nu_info['#']['MULTIPLIER']['0']['#']); + $numerical_unit->unit = $unit; + + //The structure is equal to the db, so insert the question_numerical_units + $newid = insert_record("question_numerical_units", $numerical_unit); + + if (!$newid) { + $status = false; + } } }