Browse Source

Add classroom activity column in main/admin/usergroup_users.php

BT#14608
Julio Montoya 6 years ago
parent
commit
062d560834

+ 2 - 1
main/inc/lib/usergroup.lib.php

@@ -141,7 +141,8 @@ class UserGroup extends Model
                     );
                     );
 
 
                     $stats = $calendarPlugin->getUserStats($userId, $courseAndSessionList);
                     $stats = $calendarPlugin->getUserStats($userId, $courseAndSessionList);
-                    $data['gradebook_items'] = '@todo';
+                    $evaluations = $calendarPlugin->getGradebookEvaluationListToString($userId, $courseAndSessionList);
+                    $data['gradebook_items'] = $evaluations;
                     $totalTime = 0;
                     $totalTime = 0;
                     foreach ($courseAndSessionList as $sessionId => $course) {
                     foreach ($courseAndSessionList as $sessionId => $course) {
                         foreach ($course as $courseId) {
                         foreach ($course as $courseId) {

+ 85 - 1
plugin/learning_calendar/LearningCalendarPlugin.php

@@ -624,6 +624,91 @@ class LearningCalendarPlugin extends Plugin
     }
     }
 
 
     /**
     /**
+     * @param int   $userId
+     * @param array $coursesAndSessions
+     *
+     * @return string
+     */
+    public function getGradebookEvaluationListToString($userId, $coursesAndSessions)
+    {
+        $list = $this->getGradebookEvaluationList($userId, $coursesAndSessions);
+
+        $html = '';
+        if (!empty($list)) {
+            $html = implode('<br />', array_column($list, 'name'));
+        }
+
+        return $html;
+    }
+
+    /**
+     * @param int   $userId
+     * @param array $coursesAndSessions
+     *
+     * @return array
+     */
+    public function getGradebookEvaluationList($userId, $coursesAndSessions)
+    {
+        $userId = (int) $userId;
+
+        if (empty($coursesAndSessions)) {
+            return 0;
+        }
+
+        $courseSessionConditionToString = '';
+        foreach ($coursesAndSessions as $sessionId => $courseList) {
+            if (isset($courseList['course_list'])) {
+                $courseList = array_keys($courseList['course_list']);
+            }
+            if (empty($courseList)) {
+                continue;
+            }
+            //$courseListToString = implode("','", $courseList);
+            /*if (empty($sessionId)) {
+                $courseAndSessionCondition[] =
+                    " c.id IN ('$courseListToString') ";
+            } else {
+                $courseAndSessionCondition[] = "
+                    (
+                        c.id IN ('$courseListToString')
+                    )";
+            }*/
+            $courseSessionConditionToString = " AND c.id IN ('".implode("','", $courseList)."') ";
+        }
+
+        if (empty($courseSessionConditionToString)) {
+
+            return 0;
+        }
+
+        $tableEvaluation = Database::get_main_table(TABLE_MAIN_GRADEBOOK_EVALUATION);
+        $tableCourse = Database::get_main_table(TABLE_MAIN_COURSE);
+        $tableResult = Database::get_main_table(TABLE_MAIN_GRADEBOOK_RESULT);
+        $sql = "SELECT DISTINCT e.name, e.id
+                FROM $tableEvaluation e 
+                INNER JOIN $tableCourse c
+                ON (course_code = c.code)
+                INNER JOIN $tableResult r
+                ON (r.evaluation_id = e.id)
+                WHERE 
+                  e.type = 'evaluation' AND
+                  r.score > 0 AND
+                  r.user_id = $userId   
+                  $courseSessionConditionToString                  
+        ";
+        $result = Database::query($sql);
+        $list = [];
+        if (Database::num_rows($result)) {
+            while ($row = Database::fetch_array($result, 'ASSOC')) {
+                $list[$row['id']] = $row;
+            }
+        }
+
+        return $list;
+    }
+
+    /**
+     * @param int   $userId
      * @param array $coursesAndSessions
      * @param array $coursesAndSessions
      *
      *
      * @return int
      * @return int
@@ -673,7 +758,6 @@ class LearningCalendarPlugin extends Plugin
         }
         }
 
 
         $courseSessionConditionToString = 'AND ('.implode(' OR ', $courseAndSessionCondition).') ';
         $courseSessionConditionToString = 'AND ('.implode(' OR ', $courseAndSessionCondition).') ';
-
         $sql = "SELECT count(*) as count 
         $sql = "SELECT count(*) as count 
                 FROM $tableItem i INNER JOIN $tableLp l
                 FROM $tableItem i INNER JOIN $tableLp l
                 ON (i.c_id = l.c_id AND i.lp_id = l.iid) 
                 ON (i.c_id = l.c_id AND i.lp_id = l.iid)