From 6ece2b4fb2e2b1a18307eb9cee7b3c36f7a5fc3f Mon Sep 17 00:00:00 2001 From: Angel Fernando Quiroz Campos Date: Mon, 18 Feb 2019 17:20:24 -0500 Subject: [PATCH] Avoid send announcement/survey/dropbox to inactive user --- main/dropbox/dropbox_functions.inc.php | 21 +++++++++++++++++++-- main/inc/lib/AnnouncementManager.php | 4 ++-- main/inc/lib/groupmanager.lib.php | 20 ++++++++++++-------- main/survey/surveyUtil.class.php | 2 +- 4 files changed, 34 insertions(+), 13 deletions(-) diff --git a/main/dropbox/dropbox_functions.inc.php b/main/dropbox/dropbox_functions.inc.php index 1676056830..224460b08e 100755 --- a/main/dropbox/dropbox_functions.inc.php +++ b/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( diff --git a/main/inc/lib/AnnouncementManager.php b/main/inc/lib/AnnouncementManager.php index 97af3c6f02..294352d807 100755 --- a/main/inc/lib/AnnouncementManager.php +++ b/main/inc/lib/AnnouncementManager.php @@ -1214,7 +1214,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']; @@ -1249,7 +1249,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']; diff --git a/main/inc/lib/groupmanager.lib.php b/main/inc/lib/groupmanager.lib.php index e0c216ca15..ada112d6fe 100755 --- a/main/inc/lib/groupmanager.lib.php +++ b/main/inc/lib/groupmanager.lib.php @@ -1313,21 +1313,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), @@ -1336,9 +1341,8 @@ class GroupManager $users = []; - /** @var CGroupRelUser $subscription */ foreach ($subscriptions as $subscription) { - $users[] = api_get_user_info($subscription->getUserId()); + $users[] = api_get_user_info($subscription['id']); } return $users; diff --git a/main/survey/surveyUtil.class.php b/main/survey/surveyUtil.class.php index 00b894fba3..8d2123ef3a 100755 --- a/main/survey/surveyUtil.class.php +++ b/main/survey/surveyUtil.class.php @@ -2238,7 +2238,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);