From 02518b9e3f4448c5fa7892056a1d25066b85e9b5 Mon Sep 17 00:00:00 2001 From: jmontoyaa Date: Fri, 2 Jun 2017 12:39:47 +0200 Subject: [PATCH] Add session id parameter in function get_group_list Fix group/session events see BT#11972 --- main/dropbox/dropbox_functions.inc.php | 4 ++-- main/inc/lib/agenda.lib.php | 9 ++++++++- main/inc/lib/exercise.lib.php | 2 +- main/inc/lib/groupmanager.lib.php | 21 +++++++++++++-------- 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/main/dropbox/dropbox_functions.inc.php b/main/dropbox/dropbox_functions.inc.php index eba4edeadc..21411d8d16 100755 --- a/main/dropbox/dropbox_functions.inc.php +++ b/main/dropbox/dropbox_functions.inc.php @@ -649,7 +649,7 @@ function display_add_form($viewReceivedCategory, $viewSentCategory, $view, $id = if (($dropbox_person->isCourseTutor || $dropbox_person->isCourseAdmin) && $allowGroups == 'true' || $allowStudentToStudent == 'true' ) { - $complete_group_list_for_dropbox = GroupManager::get_group_list(null, $course_info['code']); + $complete_group_list_for_dropbox = GroupManager::get_group_list(null, $course_info); if (count($complete_group_list_for_dropbox) > 0) { foreach ($complete_group_list_for_dropbox as $current_group) { @@ -1443,4 +1443,4 @@ function get_mail_id_base() // allowing enough space for pseudo_ids as uploader_id, dest_user_id, user_id: // mailing pseudo_id = dropbox_cnf('mailingIdBase') + mailing id return 10000000; -} \ No newline at end of file +} diff --git a/main/inc/lib/agenda.lib.php b/main/inc/lib/agenda.lib.php index c168da342a..466664c2c4 100644 --- a/main/inc/lib/agenda.lib.php +++ b/main/inc/lib/agenda.lib.php @@ -1657,7 +1657,14 @@ class Agenda $session_id = intval($session_id); $user_id = intval($user_id); - $groupList = GroupManager::get_group_list(null, $courseInfo['code']); + + $groupList = GroupManager::get_group_list( + null, + $courseInfo, + null, + $session_id + ); + $groupNameList = array(); if (!empty($groupList)) { foreach ($groupList as $group) { diff --git a/main/inc/lib/exercise.lib.php b/main/inc/lib/exercise.lib.php index 45b8c0e6b2..5c8948f029 100644 --- a/main/inc/lib/exercise.lib.php +++ b/main/inc/lib/exercise.lib.php @@ -1923,7 +1923,7 @@ HOTSPOT; $results[] = $rowx; } - $group_list = GroupManager::get_group_list(null, $courseCode); + $group_list = GroupManager::get_group_list(null, $courseInfo); $clean_group_list = array(); if (!empty($group_list)) { diff --git a/main/inc/lib/groupmanager.lib.php b/main/inc/lib/groupmanager.lib.php index 3a7470f429..180622e884 100755 --- a/main/inc/lib/groupmanager.lib.php +++ b/main/inc/lib/groupmanager.lib.php @@ -77,17 +77,22 @@ class GroupManager * Get list of groups for current course. * @param int $categoryId The id of the category from which the groups are * requested - * @param string $course_code Default is current course + * @param array $course_info Default is current course + * @param int $status + * @param int $sessionId * @return array An array with all information about the groups. */ - public static function get_group_list($categoryId = null, $course_code = null, $status = null) - { - $course_info = api_get_course_info($course_code); + public static function get_group_list( + $categoryId = null, + $course_info = [], + $status = null, + $sessionId = 0 + ) { + $course_info = empty($course_info) ? api_get_course_info() : $course_info; if (empty($course_info)) { return []; } - $session_id = api_get_session_id(); - + $sessionId = empty($sessionId) ? api_get_session_id() : (int) $sessionId; $course_id = $course_info['real_id']; $table_group = Database::get_course_table(TABLE_GROUP); @@ -108,12 +113,12 @@ class GroupManager if (!is_null($categoryId)) { $sql .= " AND g.category_id = '".intval($categoryId)."' "; - $session_condition = api_get_session_condition($session_id); + $session_condition = api_get_session_condition($sessionId); if (!empty($session_condition)) { $sql .= $session_condition; } } else { - $session_condition = api_get_session_condition($session_id, true); + $session_condition = api_get_session_condition($sessionId, true); } if (!is_null($status)) {