diff --git a/question/type/multichoice/question.php b/question/type/multichoice/question.php index c73969c2588..0542f5c27cf 100644 --- a/question/type/multichoice/question.php +++ b/question/type/multichoice/question.php @@ -212,7 +212,8 @@ class qtype_multichoice_single_question extends qtype_multichoice_base { if (!isset($postdata['answer'])) { return array(); } else { - return array('answer' => $this->answers[$this->order[$postdata['answer']]]->answer); + $answer = $this->answers[$this->order[$postdata['answer']]]; + return array('answer' => clean_param($answer->answer, PARAM_NOTAGS)); } } diff --git a/question/type/multichoice/tests/question_single_test.php b/question/type/multichoice/tests/question_single_test.php index ca09489f6f2..7b6b6b19238 100644 --- a/question/type/multichoice/tests/question_single_test.php +++ b/question/type/multichoice/tests/question_single_test.php @@ -165,4 +165,21 @@ class qtype_multichoice_single_question_test extends advanced_testcase { $this->assertEquals('Frog', $mc->make_html_inline('
Frog
')); $this->assertEquals('FrogFrog
†
')); } + + public function test_simulated_post_data() { + $mc = test_question_maker::make_a_multichoice_single_question(); + $mc->shuffleanswers = false; + $mc->answers[13]->answer = 'A
'; + $mc->answers[14]->answer = 'B
'; + $mc->answers[15]->answer = 'C
'; + $mc->start_attempt(new question_attempt_step(), 1); + + $originalresponse = array('answer' => 1); + + $simulated = $mc->get_student_response_values_for_simulation($originalresponse); + $this->assertEquals(array('answer' => 'B'), $simulated); + + $reconstucted = $mc->prepare_simulated_post_data($simulated); + $this->assertEquals($originalresponse, $reconstucted); + } }