Skip to content

Commit

Permalink
Fixed bad regular expression logic in short answer
Browse files Browse the repository at this point in the history
  • Loading branch information
moodler committed Jul 27, 2004
1 parent b435823 commit cc03ed4
Showing 1 changed file with 20 additions and 12 deletions.
32 changes: 20 additions & 12 deletions mod/quiz/lib.php
Expand Up @@ -1846,25 +1846,33 @@ function quiz_grade_attempt_question_result($question,
$correct[] = $answer->answer;
}
if (!$answer->usecase) { // Don't compare case
$answer->answer = strtolower($answer->answer);
$question->answer = strtolower($question->answer);
$answer->answer = moodle_strtolower($answer->answer);
$question->answer = moodle_strtolower($question->answer);
}

$potentialgrade = (float)$answer->fraction * $question->grade;

if ($potentialgrade >= $grade and (strpos(' '.$answer->answer, '*'))) {
$answer->answer = str_replace('\*','@@@@@@',$answer->answer);
$answer->answer = str_replace('*','.*',$answer->answer);
$answer->answer = str_replace('@@@@@@', '\*',$answer->answer);
$answer->answer = str_replace('+', '\+',$answer->answer);
if (eregi('^'.$answer->answer.'$', $question->answer)) {
if ($potentialgrade >= $grade) {
if ((strpos(' '.$answer->answer, '*'))) {
$search = array('\\', '+', '(', ')', '[', ']', '-');
$replace = array('\\\\', '\+', '\(', '\)', '\[', '\]', '\-');

$answer->answer = str_replace('\*','@@@@@@',$answer->answer);
$answer->answer = str_replace('*','.*',$answer->answer);

$answer->answer = str_replace($search, $replace, $answer->answer);

$answer->answer = str_replace('@@@@@@', '\*',$answer->answer);

if (eregi('^'.$answer->answer.'$', $question->answer)) {
$feedback[0] = $answer->feedback;
$grade = $potentialgrade;
}

} else if ($answer->answer == $question->answer) {
$feedback[0] = $answer->feedback;
$grade = $potentialgrade;
}

} else if ($answer->answer == $question->answer) {
$feedback[0] = $answer->feedback;
$grade = $potentialgrade;
}
}

Expand Down

0 comments on commit cc03ed4

Please sign in to comment.