Prechádzať zdrojové kódy

Avoid send announcement/survey/dropbox to inactive user

Angel Fernando Quiroz Campos 6 rokov pred
rodič
commit
887aa7bbe8

+ 19 - 2
main/dropbox/dropbox_functions.inc.php

@@ -564,7 +564,14 @@ function display_add_form($viewReceivedCategory, $viewSentCategory, $view, $id =
                 api_get_session_id(),
                 null,
                 null,
-                0
+                0,
+                false,
+                false,
+                false,
+                [],
+                [],
+                [],
+                true
             );
         }
 
@@ -602,7 +609,17 @@ function display_add_form($viewReceivedCategory, $viewSentCategory, $view, $id =
         if (api_get_setting('dropbox_allow_student_to_student') == 'true' || $_user['status'] != STUDENT) {
             $complete_user_list_for_dropbox = CourseManager::get_user_list_from_course_code(
                 $course_info['code'],
-                api_get_session_id()
+                api_get_session_id(),
+                null,
+                null,
+                null,
+                false,
+                false,
+                false,
+                [],
+                [],
+                [],
+                true
             );
         } else {
             $complete_user_list_for_dropbox = CourseManager::get_teacher_list_from_course_code(

+ 2 - 2
main/inc/lib/AnnouncementManager.php

@@ -1213,7 +1213,7 @@ class AnnouncementManager
             // outputting the name of the groups
             if (is_array($sent_to_array['groups'])) {
                 foreach ($sent_to_array['groups'] as $group_id) {
-                    $users = GroupManager::getStudents($group_id);
+                    $users = GroupManager::getStudents($group_id, true);
                     $userToArray = [];
                     foreach ($users as $student) {
                         $userToArray[] = $student['complete_name_with_username'];
@@ -1248,7 +1248,7 @@ class AnnouncementManager
             ) {
                 $group_id = $sent_to_array['groups'][0];
 
-                $users = GroupManager::getStudents($group_id);
+                $users = GroupManager::getStudents($group_id, true);
                 $userToArray = [];
                 foreach ($users as $student) {
                     $userToArray[] = $student['complete_name_with_username'];

+ 12 - 8
main/inc/lib/groupmanager.lib.php

@@ -1320,21 +1320,26 @@ class GroupManager
     /**
      * Get only students from a group (not tutors).
      *
-     * @param int $group_id iid
+     * @param int  $group_id iid
+     * @param bool $filterOnlyActive
      *
      * @return array
      */
-    public static function getStudents($group_id)
+    public static function getStudents($group_id, $filterOnlyActive = false)
     {
+        $activeCondition = $filterOnlyActive ? 'AND u.active = 1' : '';
+
         $em = Database::getManager();
         $subscriptions = $em
-            ->createQuery('
-                SELECT gu
-                FROM ChamiloCourseBundle:CGroupRelUser gu
+            ->createQuery("
+                SELECT u.id FROM ChamiloUserBundle:User u
+                INNER JOIN ChamiloCourseBundle:CGroupRelUser gu
+                    WITH u.id = gu.userId
                 INNER JOIN ChamiloCourseBundle:CGroupInfo g
                 WITH gu.groupId = g.id AND g.cId = gu.cId
                 WHERE gu.cId = :course AND g.id = :group
-            ')
+                    $activeCondition
+            ")
             ->setParameters([
                 'course' => api_get_course_int_id(),
                 'group' => intval($group_id),
@@ -1343,9 +1348,8 @@ class GroupManager
 
         $users = [];
 
-        /** @var CGroupRelUser $subscription */
         foreach ($subscriptions as $subscription) {
-            $users[] = api_get_user_info($subscription->getUser()->getId());
+            $users[] = api_get_user_info($subscription['id']);
         }
 
         return $users;

+ 1 - 1
main/survey/surveyUtil.class.php

@@ -2223,7 +2223,7 @@ class SurveyUtil
             $users_array = $result['users'];
 
             foreach ($groupList as $groupId) {
-                $userGroupList = GroupManager::getStudents($groupId);
+                $userGroupList = GroupManager::getStudents($groupId, true);
                 $userGroupIdList = array_column($userGroupList, 'user_id');
                 $users_array = array_merge($users_array, $userGroupIdList);