MDL-64941 qtype_multianswer: keep order of existing wrapped questions

This commit is contained in:
Martin Gauk
2019-03-01 09:50:05 +00:00
parent b38eb7882b
commit 5320dc6722
+11 -5
View File
@@ -91,12 +91,18 @@ class qtype_multianswer extends question_type {
// will also create difficulties if questiontype specific tables reference the id.
// First we get all the existing wrapped questions.
if (!$oldwrappedids = $DB->get_field('question_multianswer', 'sequence',
$oldwrappedquestions = [];
if ($oldwrappedids = $DB->get_field('question_multianswer', 'sequence',
array('question' => $question->id))) {
$oldwrappedquestions = array();
} else {
$oldwrappedquestions = $DB->get_records_list('question', 'id',
explode(',', $oldwrappedids), 'id ASC');
$oldwrappedidsarray = explode(',', $oldwrappedids);
$unorderedquestions = $DB->get_records_list('question', 'id', $oldwrappedidsarray);
// Keep the order as given in the sequence field.
foreach ($oldwrappedidsarray as $questionid) {
if (isset($unorderedquestions[$questionid])) {
$oldwrappedquestions[] = $unorderedquestions[$questionid];
}
}
}
$sequence = array();