|
|
|
|
@ -12,7 +12,7 @@ |
|
|
|
|
* new iid. |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
//exit; |
|
|
|
|
exit; |
|
|
|
|
|
|
|
|
|
require_once '../../main/inc/global.inc.php'; |
|
|
|
|
|
|
|
|
|
@ -21,23 +21,28 @@ $onlyCourseId = 0; |
|
|
|
|
/** @var int $quizId quiz id */ |
|
|
|
|
$quizId = 0; |
|
|
|
|
|
|
|
|
|
$courses = Database::select('id, code', Database::get_main_table(TABLE_MAIN_COURSE)); |
|
|
|
|
$coursesSelect = Database::select('id, code', Database::get_main_table(TABLE_MAIN_COURSE)); |
|
|
|
|
$courseCodes = []; |
|
|
|
|
foreach($coursesSelect as $key => $value) { |
|
|
|
|
$courseCodes[$value['id']] = $value['code']; |
|
|
|
|
} |
|
|
|
|
ksort($courseCodes); |
|
|
|
|
$tblCQuiz = Database::get_course_table(TABLE_QUIZ_TEST); |
|
|
|
|
$tblCQuizQuestion = Database::get_course_table(TABLE_QUIZ_QUESTION); |
|
|
|
|
$tblCQuizAnswer = Database::get_course_table(TABLE_QUIZ_ANSWER); |
|
|
|
|
|
|
|
|
|
$tblCItemProperty = Database::get_course_table(TABLE_ITEM_PROPERTY); |
|
|
|
|
$tblTrackExercises = Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCISES); |
|
|
|
|
$tblTrackAttempt = Database::get_main_table(TABLE_STATISTIC_TRACK_E_ATTEMPT); |
|
|
|
|
$tblTrackAttemptRecording = Database::get_main_table(TABLE_STATISTIC_TRACK_E_ATTEMPT_RECORDING); |
|
|
|
|
$tblCLpItem = Database::get_course_table(TABLE_LP_ITEM); |
|
|
|
|
$tblGradebookLink = Database::get_main_table(TABLE_MAIN_GRADEBOOK_LINK); |
|
|
|
|
$tblCQuizQuestionOption = Database::get_course_table(TABLE_QUIZ_QUESTION_OPTION); |
|
|
|
|
$tblCQuizQuestionRelCategory = Database::get_course_table(TABLE_QUIZ_QUESTION_REL_CATEGORY); |
|
|
|
|
$tblCQuizRelCategory = Database::get_course_table(TABLE_QUIZ_REL_CATEGORY); |
|
|
|
|
$tblCQuizRelQuestion = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION); |
|
|
|
|
|
|
|
|
|
$exercises = []; |
|
|
|
|
$sql = "SELECT id, iid, c_id, session_id FROM $tblCQuiz WHERE id != iid"; |
|
|
|
|
$sql = "SELECT id, iid, c_id, session_id FROM $tblCQuiz WHERE id != iid ORDER BY iid"; |
|
|
|
|
$result = Database::query($sql); |
|
|
|
|
while ($row = Database::fetch_assoc($result)) { |
|
|
|
|
$mySession = $row['session_id']; |
|
|
|
|
@ -51,9 +56,9 @@ while ($row = Database::fetch_assoc($result)) { |
|
|
|
|
's_id' => $mySession, |
|
|
|
|
]; |
|
|
|
|
} |
|
|
|
|
print_r($exercises); |
|
|
|
|
//print_r($exercises); |
|
|
|
|
$questions = []; |
|
|
|
|
$sql = "SELECT id, iid, c_id FROM $tblCQuizQuestion WHERE id != iid"; |
|
|
|
|
$sql = "SELECT id, iid, c_id FROM $tblCQuizQuestion WHERE id != iid ORDER BY iid"; |
|
|
|
|
$result = Database::query($sql); |
|
|
|
|
while ($row = Database::fetch_assoc($result)) { |
|
|
|
|
$questions[$row['c_id'].'-'.$row['id']] = [ |
|
|
|
|
@ -62,30 +67,125 @@ while ($row = Database::fetch_assoc($result)) { |
|
|
|
|
'c_id' => $row['c_id'], |
|
|
|
|
]; |
|
|
|
|
} |
|
|
|
|
print_r($questions); |
|
|
|
|
//print_r($questions); |
|
|
|
|
$answers = []; |
|
|
|
|
$sql = "SELECT id, iid, c_id FROM $tblCQuizAnswer WHERE id != iid"; |
|
|
|
|
$sql = "SELECT id, iid, c_id, question_id FROM $tblCQuizAnswer WHERE id != iid ORDER BY iid"; |
|
|
|
|
$result = Database::query($sql); |
|
|
|
|
while ($row = Database::fetch_assoc($result)) { |
|
|
|
|
$answers[$row['c_id'].'-'.$row['id']] = [ |
|
|
|
|
'id' => $row['id'], |
|
|
|
|
'iid' => $row['iid'], |
|
|
|
|
'c_id' => $row['c_id'], |
|
|
|
|
'q_id' => $row['question_id'], |
|
|
|
|
]; |
|
|
|
|
} |
|
|
|
|
print_r($answers); |
|
|
|
|
|
|
|
|
|
exit(); |
|
|
|
|
//print_r($answers); |
|
|
|
|
|
|
|
|
|
// We have to treat each of the following tables, and replace the contents of |
|
|
|
|
// the field which contains the id by the corresponding iid |
|
|
|
|
|
|
|
|
|
// 1. c_item_property, quiz, QuizDeleted |
|
|
|
|
$sql = "SELECT iid, c_id, ref FROM $tblCItemProperty WHERE tool = 'quiz' AND lastedit_type = 'QuizDeleted' AND c_id = %d AND ref = %d"; |
|
|
|
|
// c_item_property, exercises, ref field |
|
|
|
|
$sqlTemplate = "UPDATE $tblCItemProperty SET ref = %d WHERE tool = 'quiz' AND lastedit_type IN (%s) AND c_id = %d AND ref = %d"; |
|
|
|
|
foreach ($exercises as $key => $value) { |
|
|
|
|
|
|
|
|
|
$sql = sprintf($sqlTemplate, $value['iid'], "'QuizDeleted', 'QuizUpdated'", $value['c_id'], $value['id']); |
|
|
|
|
if ($value['s_id'] === 0) { |
|
|
|
|
$sql .= " AND (session_id = 0 OR session_id IS NULL)"; |
|
|
|
|
} else { |
|
|
|
|
$sql .= " AND session_id = ".$value['s_id']; |
|
|
|
|
} |
|
|
|
|
//echo($sql.PHP_EOL); |
|
|
|
|
Database::query($sql); |
|
|
|
|
} |
|
|
|
|
// c_item_property, question, ref field |
|
|
|
|
foreach ($questions as $key => $value) { |
|
|
|
|
$sql = sprintf($sqlTemplate, $value['iid'], "'QuizQuestionUpdated', 'QuizQuestionDeleted'", $value['c_id'], $value['id']); |
|
|
|
|
//echo($sql.PHP_EOL); |
|
|
|
|
Database::query($sql); |
|
|
|
|
} |
|
|
|
|
// track_e_exercises, exercises, exe_exo_id field |
|
|
|
|
$sqlTemplate = "UPDATE $tblTrackExercises SET exe_exo_id = %d WHERE c_id = %d AND exe_exo_id = %d"; |
|
|
|
|
foreach ($exercises as $key => $value) { |
|
|
|
|
$sql = sprintf($sqlTemplate, $value['iid'], $value['c_id'], $value['id']); |
|
|
|
|
//echo($sql.PHP_EOL); |
|
|
|
|
Database::query($sql); |
|
|
|
|
} |
|
|
|
|
// track_e_attempt, question *AND* answer, question_id and answer fields |
|
|
|
|
$sqlTemplate = "UPDATE $tblTrackAttempt SET answer = '%s' WHERE c_id = %d AND question_id = %d AND answer = '%s'"; |
|
|
|
|
foreach ($answers as $key => $value) { |
|
|
|
|
$sql = sprintf($sqlTemplate, $value['iid'], $value['c_id'], $value['q_id'], $value['id']); |
|
|
|
|
//echo($sql.PHP_EOL); |
|
|
|
|
Database::query($sql); |
|
|
|
|
} |
|
|
|
|
$sqlTemplate = "UPDATE $tblTrackAttempt SET question_id = %d WHERE c_id = %d AND question_id = %d"; |
|
|
|
|
foreach ($questions as $key => $value) { |
|
|
|
|
$sql = sprintf($sqlTemplate, $value['iid'], $value['c_id'], $value['id']); |
|
|
|
|
//echo($sql.PHP_EOL); |
|
|
|
|
Database::query($sql); |
|
|
|
|
} |
|
|
|
|
// track_e_attempt_recording, question, question_id field |
|
|
|
|
// This cannot be done because this table does not contain a c_id field |
|
|
|
|
/* |
|
|
|
|
$sqlTemplate = "UPDATE $tblTrackAttemptRecording SET question_id = %d WHERE AND question_id = %d"; |
|
|
|
|
foreach ($questions as $key => $value) { |
|
|
|
|
$sql = sprintf($sqlTemplate, $value['iid'], $value['c_id'], $value['id']); |
|
|
|
|
echo($sql.PHP_EOL); |
|
|
|
|
//Database::query($sql); |
|
|
|
|
} |
|
|
|
|
*/ |
|
|
|
|
// c_lp_item, exercises, path field |
|
|
|
|
$sqlTemplate = "UPDATE $tblCLpItem SET path = '%s' WHERE c_id = %d AND path = '%s'"; |
|
|
|
|
foreach ($exercises as $key => $value) { |
|
|
|
|
$sql = sprintf($sqlTemplate, $value['iid'], $value['c_id'], $value['id']); |
|
|
|
|
//echo($sql.PHP_EOL); |
|
|
|
|
Database::query($sql); |
|
|
|
|
} |
|
|
|
|
// gradebook_link, exercises, ref_id |
|
|
|
|
$sqlTemplate = "UPDATE $tblGradebookLink SET ref_id = %d WHERE course_code = '%s' AND ref_id = %d"; |
|
|
|
|
foreach ($exercises as $key => $value) { |
|
|
|
|
$sql = sprintf($sqlTemplate, $value['iid'], $courseCodes[$value['c_id']], $value['id']); |
|
|
|
|
//echo($sql.PHP_EOL); |
|
|
|
|
Database::query($sql); |
|
|
|
|
} |
|
|
|
|
// c_quiz_answer, question, question_id field |
|
|
|
|
$sqlTemplate = "UPDATE $tblCQuizAnswer SET question_id = %d WHERE c_id = %d AND question_id = %d"; |
|
|
|
|
foreach ($questions as $key => $value) { |
|
|
|
|
$sql = sprintf($sqlTemplate, $value['iid'], $value['c_id'], $value['id']); |
|
|
|
|
//echo($sql.PHP_EOL); |
|
|
|
|
Database::query($sql); |
|
|
|
|
} |
|
|
|
|
// c_quiz_question_option, quiz_question, question_id field |
|
|
|
|
$sqlTemplate = "UPDATE $tblCQuizQuestionOption SET question_id = %d WHERE c_id = %d AND question_id = %d"; |
|
|
|
|
foreach ($questions as $key => $value) { |
|
|
|
|
$sql = sprintf($sqlTemplate, $value['iid'], $value['c_id'], $value['id']); |
|
|
|
|
//echo($sql.PHP_EOL); |
|
|
|
|
Database::query($sql); |
|
|
|
|
} |
|
|
|
|
// c_quiz_question_rel_category, question, question_id field |
|
|
|
|
$sqlTemplate = "UPDATE $tblCQuizQuestionRelCategory SET question_id = %d WHERE c_id = %d AND question_id = %d"; |
|
|
|
|
foreach ($questions as $key => $value) { |
|
|
|
|
$sql = sprintf($sqlTemplate, $value['iid'], $value['c_id'], $value['id']); |
|
|
|
|
//echo($sql.PHP_EOL); |
|
|
|
|
Database::query($sql); |
|
|
|
|
} |
|
|
|
|
// c_quiz_rel_category, exercises, exercise_id field |
|
|
|
|
$sqlTemplate = "UPDATE $tblCQuizRelCategory SET exercise_id = %d WHERE c_id = %d AND exercise_id = %d"; |
|
|
|
|
foreach ($exercises as $key => $value) { |
|
|
|
|
$sql = sprintf($sqlTemplate, $value['iid'], $value['c_id'], $value['id']); |
|
|
|
|
//echo($sql.PHP_EOL); |
|
|
|
|
Database::query($sql); |
|
|
|
|
} |
|
|
|
|
// c_quiz_rel_question, exercises and question, exercice_id and question_id fields |
|
|
|
|
$sqlTemplate = "UPDATE $tblCQuizRelQuestion SET exercice_id = %d WHERE c_id = %d AND exercice_id = %d"; |
|
|
|
|
foreach ($exercises as $key => $value) { |
|
|
|
|
$sql = sprintf($sqlTemplate, $value['iid'], $value['c_id'], $value['id']); |
|
|
|
|
//echo($sql.PHP_EOL); |
|
|
|
|
Database::query($sql); |
|
|
|
|
} |
|
|
|
|
$sqlTemplate = "UPDATE $tblCQuizRelQuestion SET question_id = %d WHERE c_id = %d AND question_id = %d"; |
|
|
|
|
foreach ($questions as $key => $value) { |
|
|
|
|
$sql = sprintf($sqlTemplate, $value['iid'], $value['c_id'], $value['id']); |
|
|
|
|
//echo($sql.PHP_EOL); |
|
|
|
|
Database::query($sql); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
echo 'finished'; |
|
|
|
|
error_log('finished'); |
|
|
|
|
echo 'Finished'; |
|
|
|
|
error_log('Finished'); |
|
|
|
|
|