Browse Source

Fix params saveExerciseAttemptHotspot

jmontoyaa 8 years ago
parent
commit
d22ddd98ee
2 changed files with 39 additions and 16 deletions
  1. 38 16
      main/exercise/exercise.class.php
  2. 1 0
      main/inc/lib/events.lib.php

+ 38 - 16
main/exercise/exercise.class.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
+                        );
                     }
                 }
 

+ 1 - 0
main/inc/lib/events.lib.php

@@ -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(