From d39bc60cbbdc420ddd549208943700944de226ac Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Thu, 27 Nov 2014 11:59:14 +0800 Subject: [PATCH] MDL-47712: PoC for alternative fix --- question/type/multianswer/questiontype.php | 10 ---------- question/type/multianswer/renderer.php | 24 ++++++++++++++++-------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/question/type/multianswer/questiontype.php b/question/type/multianswer/questiontype.php index 147ed20..ca46d4f 100644 --- a/question/type/multianswer/questiontype.php +++ b/question/type/multianswer/questiontype.php @@ -197,16 +197,6 @@ class qtype_multianswer extends question_type { protected function initialise_question_instance(question_definition $question, $questiondata) { parent::initialise_question_instance($question, $questiondata); - $bits = preg_split('/\{#(\d+)\}/', $question->questiontext, - null, PREG_SPLIT_DELIM_CAPTURE); - $question->textfragments[0] = array_shift($bits); - $i = 1; - while (!empty($bits)) { - $question->places[$i] = array_shift($bits); - $question->textfragments[$i] = array_shift($bits); - $i += 1; - } - foreach ($questiondata->options->questions as $key => $subqdata) { $subqdata->contextid = $questiondata->contextid; $subqdata->options->shuffleanswers = !isset($questiondata->options->shuffleanswers) || diff --git a/question/type/multianswer/renderer.php b/question/type/multianswer/renderer.php index d9f8a8a..9c49ea5 100644 --- a/question/type/multianswer/renderer.php +++ b/question/type/multianswer/renderer.php @@ -45,14 +45,22 @@ class qtype_multianswer_renderer extends qtype_renderer { $question = $qa->get_question(); $output = ''; - foreach ($question->textfragments as $i => $fragment) { - if ($i > 0) { - $index = $question->places[$i]; - $output .= $this->subquestion($qa, $options, $index, - $question->subquestions[$index]); - } - $output .= $question->format_text($fragment, $question->questiontextformat, - $qa, 'question', 'questiontext', $question->id); + $question->questiontext = $question->format_text($question->questiontext, $question->questiontextformat, + $qa, 'question', 'questiontext', $question->id); + + $bits = preg_split('/\{#(\d+)\}/', $question->questiontext, + null, PREG_SPLIT_DELIM_CAPTURE); + $output .= array_shift($bits); + $i = 1; + while (!empty($bits)) { + $question->places[$i] = array_shift($bits); + $fragment = array_shift($bits); + + $index = $question->places[$i]; + $output .= $this->subquestion($qa, $options, $index, + $question->subquestions[$index]); + $output .= $fragment; + $i++; } $this->page->requires->js_init_call('M.qtype_multianswer.init', -- 2.1.2