Minor: Improve and clean code - refs BT#19250

pull/4026/head
Christian 4 years ago
parent 7090df40c6
commit 5493380f05
  1. 63
      main/exercise/exercise.class.php

@ -7431,68 +7431,13 @@ class Exercise
*/ */
public function fill_in_blank_answer_to_array($answer) public function fill_in_blank_answer_to_array($answer)
{ {
$allowedSeparator = [ $listStudentResults = FillBlanks::getAnswerInfo(
['[', ']'],
['{', '}'],
['(', ')'],
['*', '*'],
['#', '#'],
['%', '%'],
['$', '$'],
];
$teacherAnswerList = [];
foreach ($allowedSeparator as $separator) {
$blankStartSeparator = $separator[0];
$blankEndSeparator = $separator[1];
$blanks = $this->fbAnswerMatchAll($answer, $blankStartSeparator, $blankEndSeparator);
if (!empty($blanks)) {
$teacherAnswerList = $blanks;
break;
}
}
return $teacherAnswerList;
}
/**
* Get Answer matching all by separator
*
* @param $answer
* @param $blankStartSeparator
* @param $blankEndSeparator
* @return mixed
*/
public function fbAnswerMatchAll($answer, $blankStartSeparator, $blankEndSeparator)
{
$blankStartSeparatorRegexp = '\\'.$blankStartSeparator;
$blankEndSeparatorRegexp = '\\'.$blankEndSeparator;
$answer = preg_replace_callback(
"/".$blankStartSeparatorRegexp."[^".$blankEndSeparatorRegexp."]*".$blankEndSeparatorRegexp."/",
function ($matches) use ($blankStartSeparator, $blankEndSeparator) {
$matchingResult = $matches[0];
$matchingResult = trim($matchingResult, $blankStartSeparator);
$matchingResult = trim($matchingResult, $blankEndSeparator);
$matchingResult = trim($matchingResult);
// remove forbidden chars
$matchingResult = str_replace("/\\/", "", $matchingResult);
$matchingResult = str_replace('/"/', "", $matchingResult);
return $blankStartSeparator.$matchingResult.$blankEndSeparator;
},
$answer
);
// get the blanks weightings
$nb = preg_match_all(
'#'.$blankStartSeparatorRegexp.'([^'.$blankEndSeparatorRegexp.']*)'.$blankEndSeparatorRegexp.'#',
$answer, $answer,
$blanks true
); );
$teacherAnswerList = $listStudentResults['student_answer'];
$answerList = $blanks[1]; return $teacherAnswerList;
return $answerList;
} }
/** /**

Loading…
Cancel
Save