Browse Source

Fix Exercise result if was added inside a LP see BT#9494

Julio Montoya 10 years ago
parent
commit
96ab630c17
1 changed files with 26 additions and 7 deletions
  1. 26 7
      main/gradebook/lib/be/exerciselink.class.php

+ 26 - 7
main/gradebook/lib/be/exerciselink.class.php

@@ -192,15 +192,34 @@ class ExerciseLink extends AbstractLink
         /* the following query should be similar (in conditions) to the one used
         in exercice/exercice.php, look for note-query-exe-results marker*/
         $session_id = api_get_session_id();
+
+        $exercise = new Exercise();
+        $exercise->read($this->get_ref_id());
+
         if (!$this->is_hp) {
-            $sql = "SELECT * FROM $tblStats
-                    WHERE
-                        exe_exo_id      = ".intval($this->get_ref_id())." AND
-                        orig_lp_id      = 0 AND
-                        orig_lp_item_id = 0 AND
-                        status      <> 'incomplete' AND
-                        session_id = $session_id";
+            if ($exercise->exercise_was_added_in_lp == false) {
+                $sql = "SELECT * FROM $tblStats
+                        WHERE
+                            exe_exo_id      = ".intval($this->get_ref_id())." AND
+                            orig_lp_id      = 0 AND
+                            orig_lp_item_id = 0 AND
+                            status      <> 'incomplete' AND
+                            session_id = $session_id";
+            } else {
+                $lpId = null;
+                if (!empty($exercise->lpList)) {
+                    // Taking only the first LP
+                    $lpId = current($exercise->lpList);
+                    $lpId = $lpId['lp_id'];
+                }
 
+                $sql = "SELECT * FROM $tblStats
+                        WHERE
+                            exe_exo_id      = ".intval($this->get_ref_id())." AND
+                            orig_lp_id      = $lpId AND
+                            status      <> 'incomplete' AND
+                            session_id = $session_id";
+            }
             if (isset($stud_id)) {
                 $course_code_exe = $this->get_course_code();
                 $sql .= " AND exe_cours_id = '$course_code_exe' AND exe_user_id = '$stud_id' ";