diff --git a/main/calendar/agenda.php b/main/calendar/agenda.php index 594af9fb8f..6e15be940d 100755 --- a/main/calendar/agenda.php +++ b/main/calendar/agenda.php @@ -110,7 +110,7 @@ if (api_is_allowed_to_edit(false, true) || (api_get_course_setting('allow_user_edit_agenda') && !api_is_anonymous() && api_is_allowed_to_session_edit(false, true)) || - GroupManager::user_has_access(api_get_user_id(), $group_id, GroupManager::GROUP_TOOL_CALENDAR) && + GroupManager::user_has_access(api_get_user_id(), $groupInfo['iid'], GroupManager::GROUP_TOOL_CALENDAR) && GroupManager::is_tutor_of_group(api_get_user_id(), $groupInfo['iid']) ) { switch ($action) { diff --git a/main/document/document.php b/main/document/document.php index c0e50b93e2..ce554c9fb9 100755 --- a/main/document/document.php +++ b/main/document/document.php @@ -1533,7 +1533,7 @@ if (isset($_GET['keyword']) && !empty($_GET['keyword'])) { if ($groupId != 0) { $userAccess = GroupManager::user_has_access( api_get_user_id(), - $groupId, + $groupIid, GroupManager::GROUP_TOOL_DOCUMENTS ); if ($userAccess) { @@ -1714,7 +1714,7 @@ if (isset($documentAndFolders) && is_array($documentAndFolders)) { if ($groupId == 0 || GroupManager::user_has_access( $userId, - $groupId, + $groupIid, GroupManager::GROUP_TOOL_DOCUMENTS ) ) { diff --git a/main/forum/editthread.php b/main/forum/editthread.php index b8ec8fcd63..5d63173736 100644 --- a/main/forum/editthread.php +++ b/main/forum/editthread.php @@ -80,7 +80,7 @@ if (!api_is_allowed_to_edit(false, true) && api_not_allowed(); } // 4. anonymous posts are not allowed and the user is not logged in -if (!$_user['user_id'] AND $currentForum['allow_anonymous'] <> 1) { +if (!$_user['user_id'] && $currentForum['allow_anonymous'] <> 1) { api_not_allowed(); } diff --git a/main/forum/viewforum.php b/main/forum/viewforum.php index c1c677c315..aa4699f9b6 100755 --- a/main/forum/viewforum.php +++ b/main/forum/viewforum.php @@ -82,8 +82,15 @@ if (!empty($groupId)) { //Group info & group category info $group_properties = GroupManager::get_group_properties($groupId); //User has access in the group? - $user_has_access_in_group = GroupManager::user_has_access($userId, $groupId, GroupManager::GROUP_TOOL_FORUM); - $is_group_tutor = GroupManager::is_tutor_of_group(api_get_user_id(), $group_properties['iid']); + $user_has_access_in_group = GroupManager::user_has_access( + $userId, + $group_properties['iid'], + GroupManager::GROUP_TOOL_FORUM + ); + $is_group_tutor = GroupManager::is_tutor_of_group( + api_get_user_id(), + $group_properties['iid'] + ); // Course if ( diff --git a/main/group/group_edit.php b/main/group/group_edit.php index 89931d1ee4..dba27e47f3 100755 --- a/main/group/group_edit.php +++ b/main/group/group_edit.php @@ -333,7 +333,7 @@ if ($form->validate()) { // Storing the users (we first remove all users and then add only those who were selected) GroupManager :: unsubscribe_all_users($current_group['iid']); - if (isset ($_POST['group_members']) && count($_POST['group_members']) > 0) { + if (isset($_POST['group_members']) && count($_POST['group_members']) > 0) { GroupManager :: subscribe_users($values['group_members'], $current_group['iid']); } diff --git a/main/group/member_settings.php b/main/group/member_settings.php index 2dcd9be6e4..079848597c 100755 --- a/main/group/member_settings.php +++ b/main/group/member_settings.php @@ -134,7 +134,6 @@ if ($subscribedTutors) { $subscribedTutors = array_column($subscribedTutors, 'user_id'); } - $orderUserListByOfficialCode = api_get_setting('order_user_list_by_official_code'); $possible_users = array(); $userGroup = new UserGroup(); diff --git a/main/inc/lib/agenda.lib.php b/main/inc/lib/agenda.lib.php index 21d0759f89..a38ad732f8 100644 --- a/main/inc/lib/agenda.lib.php +++ b/main/inc/lib/agenda.lib.php @@ -2572,6 +2572,7 @@ class Agenda { $courseInfo = api_get_course_info(); $groupInfo = GroupManager::get_group_properties(api_get_group_id()); + $groupIid = isset($groupInfo['iid']) ? $groupInfo['iid'] : 0; $actionsLeft = ''; $actionsLeft .= "". @@ -2589,8 +2590,8 @@ class Agenda if (api_is_allowed_to_edit(false, true) || (api_get_course_setting('allow_user_edit_agenda') && !api_is_anonymous()) && api_is_allowed_to_session_edit(false, true) || - (GroupManager::user_has_access(api_get_user_id(), api_get_group_id(), GroupManager::GROUP_TOOL_CALENDAR) && - isset($groupInfo['iid']) && GroupManager::is_tutor_of_group(api_get_user_id(), $groupInfo['iid'])) + (GroupManager::user_has_access(api_get_user_id(), $groupIid, GroupManager::GROUP_TOOL_CALENDAR) && + GroupManager::is_tutor_of_group(api_get_user_id(), $groupIid)) ) { $actionsLeft .= Display::url( Display::return_icon('new_event.png', get_lang('AgendaAdd'), '', ICON_SIZE_MEDIUM), @@ -2633,7 +2634,6 @@ class Agenda if ($this->type == 'personal') { $form = null; if (!isset($_GET['action'])) { - $form = new FormValidator( 'form-search', 'get', @@ -2654,9 +2654,6 @@ class Agenda $sessions, ['id' => 'session_id', 'onchange' => 'submit();'] ); - //$form->addButtonFilter(get_lang('Filter')); - //$renderer = $form->defaultRenderer(); - //$renderer->setCustomElementTemplate('
{element}
'); $form->addButtonReset(get_lang('Reset')); $form = $form->returnForm(); diff --git a/main/inc/lib/api.lib.php b/main/inc/lib/api.lib.php index bb163957f6..372f30b0b9 100644 --- a/main/inc/lib/api.lib.php +++ b/main/inc/lib/api.lib.php @@ -7964,11 +7964,12 @@ function api_protect_course_group($tool, $showHeader = true) { $userId = api_get_user_id(); $groupId = api_get_group_id(); + $groupInfo = GroupManager::get_group_properties($groupId); - if (!empty($groupId)) { + if (!empty($groupInfo)) { $allow = GroupManager::user_has_access( $userId, - $groupId, + $groupInfo['iid'], $tool ); diff --git a/main/inc/lib/attendance.lib.php b/main/inc/lib/attendance.lib.php index 061048ed57..592a2b2ae8 100755 --- a/main/inc/lib/attendance.lib.php +++ b/main/inc/lib/attendance.lib.php @@ -642,7 +642,8 @@ class Attendance } if (!empty($groupId)) { - $students = GroupManager::getStudents($groupId); + $groupInfo = GroupManager::get_group_properties($groupId); + $students = GroupManager::getStudents($groupInfo['iid']); if (!empty($students)) { foreach ($students as $student) { $studentInGroup[$student['user_id']] = true; diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index 602b912566..b916278f58 100755 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -2251,8 +2251,11 @@ class CourseManager // Cleaning groups $groups = GroupManager::get_groups($courseId); if (!empty($groups)) { - $groupList = array_column($groups, 'id'); - GroupManager::delete_groups($groupList, $course['code']); + $groupList = array_column($groups, 'iid'); + foreach ($groupList as $groupId) { + GroupManager::delete_groups($groupId, $course['code']); + } + } // Cleaning c_x tables diff --git a/main/inc/lib/groupmanager.lib.php b/main/inc/lib/groupmanager.lib.php index 0b6796dc19..f9851b63bc 100755 --- a/main/inc/lib/groupmanager.lib.php +++ b/main/inc/lib/groupmanager.lib.php @@ -369,12 +369,11 @@ class GroupManager * @author Christophe Gesche * @author Hugues Peeters * @author Bart Mollet - * @param mixed $groupIdList - group(s) to delete. It can be a single id - * (int) or a list of id (array). + * @param int $groupId iid * @param string $course_code Default is current course * @return integer - number of groups deleted. */ - public static function delete_groups($group_ids, $course_code = null) + public static function delete_groups($groupId, $course_code = null) { $course_info = api_get_course_info($course_code); $course_id = $course_info['real_id']; @@ -382,32 +381,15 @@ class GroupManager // Database table definitions $group_table = Database:: get_course_table(TABLE_GROUP); $forum_table = Database:: get_course_table(TABLE_FORUM); - - $group_ids = is_array($group_ids) ? $group_ids : array ($group_ids); - $group_ids = array_map('intval', $group_ids); - - if (api_is_course_coach()) { - //a coach can only delete courses from his session - for ($i = 0; $i < count($group_ids); $i++) { - if (!api_is_element_in_the_session(TOOL_GROUP, $group_ids[$i])) { - array_splice($group_ids, $i, 1); - $i--; - } - } - if (count($group_ids) == 0) { - return 0; - } - } - + $groupId = (int) $groupId; $sql = "SELECT id, iid, secret_directory, session_id FROM $group_table - WHERE c_id = $course_id AND id IN (".implode(' , ', $group_ids).")"; + WHERE c_id = $course_id AND iid = $groupId"; $db_result = Database::query($sql); - while ($group = Database::fetch_object($db_result)) { - $groupId = $group->iid; - + $group = Database::fetch_object($db_result); + if ($group) { // Unsubscribe all users self::unsubscribe_all_users($groupId); self::unsubscribe_all_tutors($groupId); @@ -421,7 +403,7 @@ class GroupManager DocumentManager::delete_document($course_info, $group->secret_directory, $source_directory); if (file_exists($source_directory)) { - if (api_get_setting('permanently_remove_deleted_files') == 'true') { + if (api_get_setting('permanently_remove_deleted_files') === 'true') { // Delete my_delete($source_directory); } else { @@ -457,16 +439,21 @@ class GroupManager * name, tutor_id, description, maximum_number_of_students, * directory and visibility of tools */ - public static function get_group_properties($group_id) + public static function get_group_properties($group_id, $useIid = false) { $course_id = api_get_course_int_id(); - if (empty($group_id) or !is_integer(intval($group_id))) { + if (empty($group_id) || !is_integer(intval($group_id))) { return null; } $table_group = Database :: get_course_table(TABLE_GROUP); $sql = "SELECT * FROM $table_group WHERE c_id = $course_id AND id = ".intval($group_id); + + if ($useIid) { + $sql = "SELECT * FROM $table_group + WHERE c_id = $course_id AND iid = ".intval($group_id); + } $db_result = Database::query($sql); $db_object = Database::fetch_object($db_result); @@ -736,6 +723,8 @@ class GroupManager $table_group = Database:: get_course_table(TABLE_GROUP); $table_group_cat = Database:: get_course_table(TABLE_GROUP_CATEGORY); + $group_id = intval($group_id); + if (empty($group_id)) { return array(); } @@ -747,7 +736,6 @@ class GroupManager } $course_id = $course_info['real_id']; - $group_id = intval($group_id); $sql = "SELECT gc.* FROM $table_group_cat gc, $table_group g WHERE gc.c_id = $course_id AND @@ -777,15 +765,13 @@ class GroupManager $table_group = Database:: get_course_table(TABLE_GROUP); $table_group_cat = Database:: get_course_table(TABLE_GROUP_CATEGORY); $cat_id = intval($cat_id); - $sql = "SELECT id FROM $table_group + $sql = "SELECT iid FROM $table_group WHERE c_id = $course_id AND category_id='".$cat_id."'"; $res = Database::query($sql); if (Database::num_rows($res) > 0) { - $groups_to_delete = array(); while ($group = Database::fetch_object($res)) { - $groups_to_delete[] = $group->id; + self::delete_groups($group->iid, $course_code); } - self::delete_groups($groups_to_delete, $course_code); } $sql = "DELETE FROM $table_group_cat WHERE c_id = $course_id AND id='".$cat_id."'"; @@ -956,7 +942,7 @@ class GroupManager FROM '.$group_user_table.' gu, '.$group_table.' g WHERE g.c_id = '.$course_info['real_id'].' AND gu.c_id = g.c_id - AND gu.group_id = g.id '; + AND gu.group_id = g.iid '; if ($category_id != null) { $category_id = intval($category_id); $sql .= ' AND g.category_id = '.$category_id; @@ -1119,7 +1105,7 @@ class GroupManager /** * Get only students from a group (not tutors) - * @param int $group_id + * @param int $group_id iid * @return array */ public static function getStudents($group_id) @@ -1195,13 +1181,13 @@ class GroupManager $groupId = (int) $groupId; $category = self::get_category_from_group($groupId); - $groups_per_user = (isset($category['groups_per_user']) ? $category['groups_per_user'] : self::GROUP_PER_MEMBER_NO_LIMIT); + $groups_per_user = isset($category['groups_per_user']) ? $category['groups_per_user'] : self::GROUP_PER_MEMBER_NO_LIMIT; $group_table = Database:: get_course_table(TABLE_GROUP); $group_user_table = Database:: get_course_table(TABLE_GROUP_USER); $session_id = api_get_session_id(); $complete_user_list = CourseManager :: get_real_and_linked_user_list($_course['code'], true, $session_id); - $number_groups_per_user = ($groups_per_user == self::GROUP_PER_MEMBER_NO_LIMIT ? self::INFINITE : $groups_per_user); + $number_groups_per_user = $groups_per_user == self::GROUP_PER_MEMBER_NO_LIMIT ? self::INFINITE : $groups_per_user; /* * Retrieve all the groups where enrollment is still allowed @@ -1209,7 +1195,7 @@ class GroupManager */ $course_id = api_get_course_int_id(); - $sql = "SELECT g.id gid, g.iid g.max_student-count(ug.user_id) nbPlaces, g.max_student + $sql = "SELECT g.id gid, g.iid, g.max_student-count(ug.user_id) nbPlaces, g.max_student FROM $group_table g LEFT JOIN $group_user_table ug ON g.c_id = $course_id AND @@ -1240,11 +1226,13 @@ class GroupManager $complete_user_list[$i]['number_groups_left'] = $number_groups_per_user - $number_of_groups; } + //first sort by user_id to filter out duplicates $complete_user_list = TableSort :: sort_table($complete_user_list, 'user_id'); $complete_user_list = self :: filter_duplicates($complete_user_list, 'user_id'); $complete_user_list = self :: filter_only_students($complete_user_list); + //now sort by # of group left $complete_user_list = TableSort :: sort_table($complete_user_list, 'number_groups_left', SORT_DESC); $userToken = array (); @@ -1342,10 +1330,11 @@ class GroupManager $sql = "SELECT COUNT(*) AS number_of_groups FROM $table_group_user gu, $table_group g WHERE - gu.c_id = $course_id AND - g.c_id = $course_id AND - gu.user_id = $user_id AND - g.id = gu.group_id $cat_condition"; + gu.c_id = $course_id AND + g.c_id = $course_id AND + gu.user_id = $user_id AND + g.iid = gu.group_id + $cat_condition"; $result = Database::query($sql); $db_object = Database::fetch_object($result); @@ -1393,14 +1382,14 @@ class GroupManager $table_group = Database :: get_course_table(TABLE_GROUP); $group_id = intval($group_id); $course_id = api_get_course_int_id(); - $db_result = Database::query( - 'SELECT self_unregistration_allowed - FROM '.$table_group.' - WHERE c_id = '.$course_id.' AND iid = '.$group_id - ); + + $sql = "SELECT self_unregistration_allowed + FROM $table_group + WHERE c_id = $course_id AND iid = $group_id"; + $db_result = Database::query($sql); $db_object = Database::fetch_object($db_result); - return $db_object->self_unregistration_allowed == 1 && self :: can_user_unsubscribe($user_id, $group_id); + return $db_object->self_unregistration_allowed == 1 && self :: is_subscribed($user_id, $group_id); } /** @@ -1411,13 +1400,14 @@ class GroupManager */ public static function is_subscribed($user_id, $group_id) { - if (empty($user_id) || empty($group_id)) { + $course_id = api_get_course_int_id(); + if (empty($user_id) || empty($group_id) || empty($course_id)) { return false; } $table_group_user = Database :: get_course_table(TABLE_GROUP_USER); $group_id = intval($group_id); $user_id = intval($user_id); - $course_id = api_get_course_int_id(); + $sql = "SELECT 1 FROM $table_group_user WHERE c_id = $course_id AND @@ -1473,20 +1463,6 @@ class GroupManager return true; } - /** - * Can a user unsubscribe to a specified group in a course - * @param int $user_id - * @param int $group_id iid - * @return bool TRUE if given user can be unsubscribed from given group - * @internal for now, same as GroupManager::is_subscribed($user_id,$group_id) - */ - public static function can_user_unsubscribe($user_id, $group_id) - { - $result = self :: is_subscribed($user_id, $group_id); - - return $result; - } - /** * Get all subscribed users (members) from a group * @param int $group_id (iid) @@ -1835,7 +1811,7 @@ class GroupManager /** * Check if a user has access to a certain group tool * @param int $user_id The user id - * @param int $group_id The group id + * @param int $group_id The group iid * @param string $tool The tool to check the access rights. This should be * one of constants: GROUP_TOOL_DOCUMENTS * @return bool True if the given user has access to the given tool in the @@ -1854,25 +1830,25 @@ class GroupManager } switch ($tool) { - case self::GROUP_TOOL_FORUM : + case self::GROUP_TOOL_FORUM: $key = 'forum_state'; break; - case self::GROUP_TOOL_DOCUMENTS : + case self::GROUP_TOOL_DOCUMENTS: $key = 'doc_state'; break; - case self::GROUP_TOOL_CALENDAR : + case self::GROUP_TOOL_CALENDAR: $key = 'calendar_state'; break; - case self::GROUP_TOOL_ANNOUNCEMENT : + case self::GROUP_TOOL_ANNOUNCEMENT: $key = 'announcements_state'; break; - case self::GROUP_TOOL_WORK : + case self::GROUP_TOOL_WORK: $key = 'work_state'; break; - case self::GROUP_TOOL_WIKI : + case self::GROUP_TOOL_WIKI: $key = 'wiki_state'; break; - case self::GROUP_TOOL_CHAT : + case self::GROUP_TOOL_CHAT: $key = 'chat_state'; break; default: @@ -1880,7 +1856,7 @@ class GroupManager } // Check group properties - $groupInfo = self::get_group_properties($group_id); + $groupInfo = self::get_group_properties($group_id, true); if (empty($groupInfo)) { return false; @@ -1939,8 +1915,8 @@ class GroupManager return true; } - $groupId = $groupInfo['id']; - $tutors = self::get_subscribed_tutors($groupInfo['iid'], true); + $groupId = $groupInfo['iid']; + $tutors = self::get_subscribed_tutors($groupId, true); if (in_array($userId, $tutors)) { return true; @@ -1983,8 +1959,9 @@ class GroupManager $user_id = intval($user_id); $course_id = api_get_course_int_id(); $sql = "SELECT name - FROM $table_group g INNER JOIN $table_group_user gu - ON (gu.group_id=g.id) + FROM $table_group g + INNER JOIN $table_group_user gu + ON (gu.group_id = g.iid) WHERE gu.c_id= $course_id AND g.c_id= $course_id AND @@ -2012,9 +1989,9 @@ class GroupManager $sql = "SELECT DISTINCT g.* FROM $table_group g LEFT JOIN $table_group_user gu - ON (gu.group_id = g.id AND g.c_id = gu.c_id) + ON (gu.group_id = g.iid AND g.c_id = gu.c_id) LEFT JOIN $table_tutor_user tu - ON (tu.group_id = g.id AND g.c_id = tu.c_id) + ON (tu.group_id = g.iid AND g.c_id = tu.c_id) WHERE g.c_id = $course_id AND (gu.user_id = $user_id OR tu.user_id = $user_id) "; @@ -2054,10 +2031,10 @@ class GroupManager $categoryId = $category['id']; } - $group_table = Database :: get_course_table(TABLE_GROUP); - $group_user_table = Database :: get_course_table(TABLE_GROUP_USER); + $group_table = Database::get_course_table(TABLE_GROUP); + $group_user_table = Database::get_course_table(TABLE_GROUP_USER); $session_id = api_get_session_id(); - $complete_user_list = CourseManager :: get_real_and_linked_user_list($_course['code'], true, $session_id); + $complete_user_list = CourseManager::get_real_and_linked_user_list($_course['code'], true, $session_id); $course_id = api_get_course_int_id(); /* @@ -2068,9 +2045,10 @@ class GroupManager FROM $group_table g LEFT JOIN $group_user_table ug ON g.iid = ug.group_id - WHERE g.c_id = $course_id AND - ug.c_id = $course_id AND - g.iid = $groupId + WHERE + g.c_id = $course_id AND + ug.c_id = $course_id AND + g.iid = $groupId GROUP BY (g.iid)"; $sql_result = Database::query($sql); @@ -2126,7 +2104,6 @@ class GroupManager $hideGroup = api_get_setting('hide_course_group_if_no_tools_available'); foreach ($group_list as $this_group) { - // Validation when belongs to a session $session_img = api_get_session_image($this_group['session_id'], $user_info['status']); @@ -2176,7 +2153,7 @@ class GroupManager foreach ($tutorsids_of_group as $tutor_id) { $tutor = api_get_user_info($tutor_id); $username = api_htmlentities(sprintf(get_lang('LoginX'), $tutor['username']), ENT_QUOTES); - if (api_get_setting('show_email_addresses') == 'true') { + if (api_get_setting('show_email_addresses') === 'true') { $tutor_info .= Display::tag( 'span', Display::encrypted_mailto_link($tutor['mail'], api_get_person_name($tutor['firstName'], $tutor['lastName'])), @@ -2184,9 +2161,17 @@ class GroupManager ).', '; } else { if (api_is_allowed_to_edit()) { - $tutor_info .= Display::tag('span', Display::encrypted_mailto_link($tutor['mail'], api_get_person_name($tutor['firstName'], $tutor['lastName'])), array('title'=>$username)).', '; + $tutor_info .= Display::tag( + 'span', + Display::encrypted_mailto_link($tutor['mail'], api_get_person_name($tutor['firstName'], $tutor['lastName'])), + array('title'=>$username) + ).', '; } else { - $tutor_info .= Display::tag('span', api_get_person_name($tutor['firstName'], $tutor['lastName']), array('title'=>$username)).', '; + $tutor_info .= Display::tag( + 'span', + api_get_person_name($tutor['firstName'], $tutor['lastName']), + array('title'=>$username) + ).', '; } } } @@ -2196,7 +2181,7 @@ class GroupManager $row[] = $tutor_info; // Max number of members in group - $max_members = ($this_group['maximum_number_of_members'] == self::MEMBER_PER_GROUP_NO_LIMIT ? ' ' : ' / '.$this_group['maximum_number_of_members']); + $max_members = $this_group['maximum_number_of_members'] == self::MEMBER_PER_GROUP_NO_LIMIT ? ' ' : ' / '.$this_group['maximum_number_of_members']; // Number of members in group $row[] = $this_group['number_of_members'].$max_members; @@ -2234,9 +2219,6 @@ class GroupManager $edit_actions .= '
'. Display::return_icon('export_excel.png', get_lang('Export'), '', ICON_SIZE_SMALL).' '; - /*$edit_actions .= ''. - Display::return_icon('clean.png',get_lang('EmptyGroup'),'',ICON_SIZE_SMALL).' ';*/ - $edit_actions .= ''. Display::return_icon('fill.png',get_lang('FillGroup'),'',ICON_SIZE_SMALL).' '; @@ -2468,8 +2450,8 @@ class GroupManager $groups = GroupManager::get_groups(); foreach ($groups as $group) { - if (!in_array($group['id'], $elementsFound['groups'])) { - GroupManager::delete_groups(array($group['id'])); + if (!in_array($group['iid'], $elementsFound['groups'])) { + GroupManager::delete_groups($group['iid']); $group['group'] = $group['name']; $result['deleted']['group'][] = $group; } @@ -2547,14 +2529,14 @@ class GroupManager $categoryTitle = $categoryInfo['title']; } - $users = GroupManager::getStudents($groupInfo['id']); + $users = GroupManager::getStudents($groupInfo['iid']); $userList = array(); foreach ($users as $user) { $user = api_get_user_info($user['user_id']); $userList[] = $user['username']; } - $tutors = GroupManager::getTutors($groupInfo['id']); + $tutors = GroupManager::getTutors($groupInfo['iid']); $tutorList = array(); foreach ($tutors as $user) { $user = api_get_user_info($user['user_id']); @@ -2677,8 +2659,7 @@ class GroupManager foreach ($groups as $group) { $content .= '
  • '; $content .= Display::tag('h3', Security::remove_XSS($group['name'])); - - $users = GroupManager::getTutors($group['id']); + $users = GroupManager::getTutors($group['iid']); if (!empty($users)) { $content .= '