|
|
|
@ -3492,6 +3492,7 @@ class Exercise |
|
|
|
|
break; |
|
|
|
|
case FILL_IN_BLANKS: |
|
|
|
|
$str = ''; |
|
|
|
|
$answerFromDatabase = ''; |
|
|
|
|
if ($from_database) { |
|
|
|
|
$sql = "SELECT answer |
|
|
|
|
FROM $TBL_TRACK_ATTEMPT |
|
|
|
@ -3499,7 +3500,7 @@ class Exercise |
|
|
|
|
exe_id = $exeId AND |
|
|
|
|
question_id= ".intval($questionId); |
|
|
|
|
$result = Database::query($sql); |
|
|
|
|
$str = Database::result($result, 0, 'answer'); |
|
|
|
|
$str = $answerFromDatabase = Database::result($result, 0, 'answer'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($saved_results == false && strpos($str, 'font color') !== false) { |
|
|
|
@ -3552,12 +3553,7 @@ class Exercise |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
if ($from_database) { |
|
|
|
|
$queryfill = "SELECT answer FROM ".$TBL_TRACK_ATTEMPT." |
|
|
|
|
WHERE |
|
|
|
|
exe_id = '".$exeId."' AND |
|
|
|
|
question_id= ".intval($questionId).""; |
|
|
|
|
$resfill = Database::query($queryfill); |
|
|
|
|
$str = Database::result($resfill, 0, 'answer'); |
|
|
|
|
$str = $answerFromDatabase; |
|
|
|
|
api_preg_match_all('#\[([^[]*)\]#', $str, $arr); |
|
|
|
|
$str = str_replace('\r\n', '', $str); |
|
|
|
|
|
|
|
|
@ -3649,15 +3645,8 @@ class Exercise |
|
|
|
|
|
|
|
|
|
// get existing user data in n the BDD |
|
|
|
|
if ($from_database) { |
|
|
|
|
$sql = "SELECT answer |
|
|
|
|
FROM $TBL_TRACK_ATTEMPT |
|
|
|
|
WHERE |
|
|
|
|
exe_id = $exeId AND |
|
|
|
|
question_id= ".intval($questionId); |
|
|
|
|
$result = Database::query($sql); |
|
|
|
|
$str = Database::result($result, 0, 'answer'); |
|
|
|
|
$listStudentResults = FillBlanks::getAnswerInfo( |
|
|
|
|
$str, |
|
|
|
|
$answerFromDatabase, |
|
|
|
|
true |
|
|
|
|
); |
|
|
|
|
$choice = $listStudentResults['studentanswer']; |
|
|
|
@ -3672,10 +3661,14 @@ class Exercise |
|
|
|
|
|
|
|
|
|
// This value is the user input, not escaped while correct answer is escaped by fckeditor |
|
|
|
|
// Works with cyrillic alphabet and when using ">" chars see #7718 #7610 #7618 |
|
|
|
|
// ENT_QUOTES is used in order to transform ' to ' |
|
|
|
|
if (!$from_database) { |
|
|
|
|
$studentAnswer = htmlentities( |
|
|
|
|
api_utf8_encode($studentAnswer) |
|
|
|
|
api_utf8_encode($studentAnswer), |
|
|
|
|
ENT_QUOTES |
|
|
|
|
); |
|
|
|
|
// fix apostrophe |
|
|
|
|
$studentAnswer = str_replace(''', ''', $studentAnswer); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$isAnswerCorrect = 0; |
|
|
|
@ -3695,9 +3688,7 @@ class Exercise |
|
|
|
|
$listTeacherAnswerTemp = $listCorrectAnswers['tabwords']; |
|
|
|
|
// for every teacher answer, check if there is a student answer |
|
|
|
|
for ($i = 0; $i < count($listStudentAnswerTemp); $i++) { |
|
|
|
|
$studentAnswer = trim( |
|
|
|
|
$listStudentAnswerTemp[$i] |
|
|
|
|
); |
|
|
|
|
$studentAnswer = trim($listStudentAnswerTemp[$i]); |
|
|
|
|
$found = false; |
|
|
|
|
for ($j = 0; $j < count($listTeacherAnswerTemp); $j++) { |
|
|
|
|
$correctAnswer = $listTeacherAnswerTemp[$j]; |
|
|
|
@ -3709,7 +3700,7 @@ class Exercise |
|
|
|
|
) { |
|
|
|
|
$questionScore += $answerWeighting[$i]; |
|
|
|
|
$totalScore += $answerWeighting[$i]; |
|
|
|
|
$listTeacherAnswerTemp[$j] = ""; |
|
|
|
|
$listTeacherAnswerTemp[$j] = ''; |
|
|
|
|
$found = true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -3839,9 +3830,11 @@ class Exercise |
|
|
|
|
break; |
|
|
|
|
case FREE_ANSWER: |
|
|
|
|
if ($from_database) { |
|
|
|
|
$query = "SELECT answer, marks FROM ".$TBL_TRACK_ATTEMPT." |
|
|
|
|
WHERE exe_id = '".$exeId."' AND question_id= '".$questionId."'"; |
|
|
|
|
$resq = Database::query($query); |
|
|
|
|
$sql = "SELECT answer, marks FROM $TBL_TRACK_ATTEMPT |
|
|
|
|
WHERE |
|
|
|
|
exe_id = $exeId AND |
|
|
|
|
question_id= ".$questionId; |
|
|
|
|
$resq = Database::query($sql); |
|
|
|
|
$data = Database::fetch_array($resq); |
|
|
|
|
|
|
|
|
|
$choice = $data['answer']; |
|
|
|
@ -5014,7 +5007,6 @@ class Exercise |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//save the score attempts |
|
|
|
|
|
|
|
|
|
if (1) { |
|
|
|
|
//getting the answer 1 or 0 comes from exercise_submit_modal.php |
|
|
|
|
$final_answer = $hotspot_delineation_result[1]; |
|
|
|
|