Browse Source

Don't show the invited users in the exam tracking - refs BT#9070

Angel Fernando Quiroz Campos 10 years ago
parent
commit
9cff85e7a7
2 changed files with 24 additions and 4 deletions
  1. 16 3
      main/inc/lib/course.lib.php
  2. 8 1
      main/tracking/exams.php

+ 16 - 3
main/inc/lib/course.lib.php

@@ -1752,6 +1752,7 @@ class CourseManager
      *  @param integer $session_id
      *  @param string $date_from
      *  @param string $date_to
+     * @param boolean $includeInvitedUsers Whether include the invited users
      *  @return array with user id
      */
     public static function get_student_list_from_course_code(
@@ -1759,7 +1760,8 @@ class CourseManager
         $with_session = false,
         $session_id = 0,
         $date_from = null,
-        $date_to = null
+        $date_to = null,
+        $includeInvitedUsers = true
     ) {
         $session_id = intval($session_id);
         $course_code = Database::escape_string($course_code);
@@ -1768,8 +1770,14 @@ class CourseManager
 
         if ($session_id == 0) {
             // students directly subscribed to the course
-            $sql = "SELECT * FROM ".Database::get_main_table(TABLE_MAIN_COURSE_USER)."
-                   WHERE course_code = '$course_code' AND status = ".STUDENT;
+            $sql = "SELECT * FROM ".Database::get_main_table(TABLE_MAIN_COURSE_USER)." cu
+                    INNER JOIN user u ON cu.user_id = u.user_id
+                   WHERE course_code = '$course_code' AND cu.status = ".STUDENT;
+
+            if (!$includeInvitedUsers) {
+                $sql .= " AND u.status != " . ROLE_INVITED;
+            }
+
             $rs = Database::query($sql);
             while ($student = Database::fetch_array($rs)) {
                 $students[$student['user_id']] = $student;
@@ -1788,6 +1796,7 @@ class CourseManager
 
             $sql_query = "SELECT * FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)." scu
                           $joinSession
+                          INNER JOIN $userTable u ON scu.id_user = u.user_id
                           WHERE scu.course_code = '$course_code' AND scu.status <> 2";
 
             if (!empty($date_from) && !empty($date_to)) {
@@ -1800,6 +1809,10 @@ class CourseManager
                 $sql_query .= ' AND scu.id_session = '.$session_id;
             }
 
+            if (!$includeInvitedUsers) {
+                $sql .= " AND u.status != " . ROLE_INVITED;
+            }
+
             $rs = Database::query($sql_query);
             while($student = Database::fetch_array($rs)) {
                 $students[$student['id_user']] = $student;

+ 8 - 1
main/tracking/exams.php

@@ -473,13 +473,20 @@ function processStudentList($filter_score, $global, $exercise, $courseInfo, $ses
     if (empty($sessionId)) {
         $students = CourseManager::get_student_list_from_course_code(
             $courseInfo['code'],
+            false,
+            0,
+            null,
+            null,
             false
         );
     } else {
         $students = CourseManager::get_student_list_from_course_code(
             $courseInfo['code'],
             true,
-            $sessionId
+            $sessionId,
+            null,
+            null,
+            false
         );
     }