Fix params saveExerciseAttemptHotspot

pull/2487/head
jmontoyaa 9 years ago
parent b8b8090a4e
commit d22ddd98ee
  1. 54
      main/exercise/exercise.class.php
  2. 1
      main/inc/lib/events.lib.php

@ -4026,7 +4026,7 @@ class Exercise
$studentChoice = Database::result(
$result,
0,
"hotspot_correct"
'hotspot_correct'
);
if ($studentChoice) {
@ -4047,7 +4047,7 @@ class Exercise
$studentChoice = Database::result(
$result,
0,
"hotspot_correct"
'hotspot_correct'
);
if ($studentChoice) {
@ -4068,7 +4068,7 @@ class Exercise
$studentChoice = Database::result(
$result,
0,
"hotspot_correct"
'hotspot_correct'
);
if ($studentChoice) {
@ -4079,10 +4079,14 @@ class Exercise
}
}
} else {
if (!isset($choice[$answerAutoId])) {
if (!isset($choice[$answerAutoId]) && !isset($choice[$answerIid])) {
$choice[$answerAutoId] = 0;
$choice[$answerIid] = 0;
} else {
$studentChoice = $choice[$answerAutoId];
if (empty($studentChoice)) {
$studentChoice = $choice[$answerIid];
}
$choiceIsValid = false;
if (!empty($studentChoice)) {
$hotspotType = $objAnswerTmp->selectHotspotType($answerId);
@ -4094,12 +4098,10 @@ class Exercise
$hotspotProperties = Geometry::decodeSquare($hotspotCoordinates);
$choiceIsValid = Geometry::pointIsInSquare($hotspotProperties, $choicePoint);
break;
case 'circle':
$hotspotProperties = Geometry::decodeEllipse($hotspotCoordinates);
$choiceIsValid = Geometry::pointIsInEllipse($hotspotProperties, $choicePoint);
break;
case 'poly':
$hotspotProperties = Geometry::decodePolygon($hotspotCoordinates);
$choiceIsValid = Geometry::pointIsInPolygon($hotspotProperties, $choicePoint);
@ -4108,11 +4110,11 @@ class Exercise
}
$choice[$answerAutoId] = 0;
if ($choiceIsValid) {
$questionScore += $answerWeighting;
$totalScore += $answerWeighting;
$questionScore += $answerWeighting;
$totalScore += $answerWeighting;
$choice[$answerAutoId] = 1;
$choice[$answerIid] = 1;
}
}
}
@ -4278,7 +4280,6 @@ class Exercise
);
} elseif ($answerType == HOT_SPOT) {
foreach ($orderedHotspots as $correctAnswerId => $hotspot) {
if ($hotspot->getHotspotAnswerId() == $answerAutoId) {
break;
}
@ -4997,11 +4998,12 @@ class Exercise
// we always insert the answer_id 1 = delineation
Event::saveQuestionAttempt($questionScore, 1, $quesId, $exeId, 0);
//in delineation mode, get the answer from $hotspot_delineation_result[1]
$hotspotValue = (int) $hotspot_delineation_result[1] === 1 ? 1 : 0;
Event::saveExerciseAttemptHotspot(
$exeId,
$quesId,
1,
$hotspot_delineation_result[1],
$hotspotValue,
$exerciseResultCoordinates[$quesId]
);
} else {
@ -5011,14 +5013,27 @@ class Exercise
Event::saveQuestionAttempt($questionScore, $answer, $quesId, $exeId, 0);
if (is_array($exerciseResultCoordinates[$quesId])) {
foreach($exerciseResultCoordinates[$quesId] as $idx => $val) {
Event::saveExerciseAttemptHotspot($exeId,$quesId,$idx,0,$val);
Event::saveExerciseAttemptHotspot(
$exeId,
$quesId,
$idx,
0,
$val
);
}
}
} else {
Event::saveQuestionAttempt($questionScore, $answer, $quesId, $exeId, 0);
if (is_array($exerciseResultCoordinates[$quesId])) {
foreach($exerciseResultCoordinates[$quesId] as $idx => $val) {
Event::saveExerciseAttemptHotspot($exeId,$quesId,$idx,$choice[$idx],$val);
$hotspotValue = (int) $choice[$idx] === 1 ? 1 : 0;
Event::saveExerciseAttemptHotspot(
$exeId,
$quesId,
$idx,
$hotspotValue,
$val
);
}
}
}
@ -5148,7 +5163,6 @@ class Exercise
// } elseif ($answerType == HOT_SPOT || $answerType == HOT_SPOT_DELINEATION) {
} elseif ($answerType == HOT_SPOT) {
$answer = [];
if (isset($exerciseResultCoordinates[$questionId]) && !empty($exerciseResultCoordinates[$questionId])) {
Database::delete(
Database::get_main_table(TABLE_STATISTIC_TRACK_E_HOTSPOT),
@ -5163,8 +5177,16 @@ class Exercise
foreach ($exerciseResultCoordinates[$questionId] as $idx => $val) {
$answer[] = $val;
Event::saveExerciseAttemptHotspot($exeId, $quesId, $idx, $choice[$idx], $val, false, $this->id);
$hotspotValue = (int) $choice[$idx] === 1 ? 1 : 0;
Event::saveExerciseAttemptHotspot(
$exeId,
$quesId,
$idx,
$hotspotValue,
$val,
false,
$this->id
);
}
}

@ -608,6 +608,7 @@ class Event
$correct = 0;
}
}
$tbl_track_e_hotspot = Database :: get_main_table(TABLE_STATISTIC_TRACK_E_HOTSPOT);
if ($updateResults) {
$params = array(

Loading…
Cancel
Save