diff --git a/mod/lesson/pagetypes/matching.php b/mod/lesson/pagetypes/matching.php
index 82bfdb2dcc2..3bd45b0e6b3 100644
--- a/mod/lesson/pagetypes/matching.php
+++ b/mod/lesson/pagetypes/matching.php
@@ -72,17 +72,15 @@ class lesson_page_type_matching extends lesson_page {
foreach ($answers as $answer) {
// get all the response
if ($answer->response != null) {
- $responses[$answer->id] = trim($answer->response);
+ $responses[] = trim($answer->response);
}
}
$responseoptions = array(''=>get_string('choosedots'));
if (!empty($responses)) {
- $shuffleresponses = $responses;
- shuffle($shuffleresponses);
- foreach ($shuffleresponses as $response) {
- $key = array_search($response, $responses);
- $responseoptions[$key] = $response;
+ shuffle($responses);
+ foreach ($responses as $response) {
+ $responseoptions[htmlspecialchars($response)] = $response;
}
}
if (isset($USER->modattempts[$this->lesson->id]) && !empty($attempt->useranswer)) {
@@ -167,12 +165,12 @@ class lesson_page_type_matching extends lesson_page {
$wrong = array_shift($getanswers);
$answers = array();
- foreach ($getanswers as $key=>$answer) {
+ foreach ($getanswers as $key => $answer) {
if ($answer->answer !== '' or $answer->response !== '') {
$answers[$answer->id] = $answer;
}
- unset($getanswers[$key]);
}
+
// get the user's exact responses for record keeping
$hits = 0;
$userresponse = array();
@@ -181,12 +179,13 @@ class lesson_page_type_matching extends lesson_page {
$result->noanswer = true;
return $result;
}
- $userresponse[] = $value;
+ $value = htmlspecialchars_decode($value);
+ $userresponse[] = htmlspecialchars_decode($value);
// Make sure the user's answer exists in question's answer
if (array_key_exists($id, $answers)) {
$answer = $answers[$id];
- $result->studentanswer .= '
'.format_text($answer->answer, $answer->answerformat, $formattextdefoptions).' = '.$answers[$value]->response;
- if ($id == $value) {
+ $result->studentanswer .= '
'.format_text($answer->answer, $answer->answerformat, $formattextdefoptions).' = '.$value;
+ if (trim($answer->response) == trim($value)) {
$hits++;
}
}
@@ -401,13 +400,13 @@ class lesson_page_type_matching extends lesson_page {
}
} elseif ($n > 1) {
$data = '';
- $data .= "";
+ $data .= strip_tags(format_string($answer->answer)) . ' ';
if ($useranswer != null) {
$userresponse = explode(",", $useranswer->useranswer);
$data .= '';
$data .= "";
} else {
@@ -519,19 +518,21 @@ class lesson_display_answer_form_matching extends moodleform {
$mform->setType('pageid', PARAM_INT);
$i = 0;
+
foreach ($answers as $answer) {
$mform->addElement('html', '