From 192fdb5ead7c2c0998334daf009aa504e5ed22a5 Mon Sep 17 00:00:00 2001 From: Imanol Losada Date: Mon, 30 Mar 2015 10:58:06 -0500 Subject: [PATCH] Company reports for student boss - refs BT#9431 --- main/inc/ajax/model.ajax.php | 89 ++++++++++++++++++++++++------------ 1 file changed, 59 insertions(+), 30 deletions(-) diff --git a/main/inc/ajax/model.ajax.php b/main/inc/ajax/model.ajax.php index 5d43ac4aef..0e6e328a44 100755 --- a/main/inc/ajax/model.ajax.php +++ b/main/inc/ajax/model.ajax.php @@ -151,6 +151,8 @@ switch ($action) { $courseCodeList = array(); $userIdList = array(); + $sessionIdList = []; + $searchByGroups = false; if (api_is_drh()) { if (api_drh_can_access_all_session_content()) { $userList = SessionManager::getAllUsersFromCoursesFromAllSessionFromStatus( @@ -188,44 +190,45 @@ switch ($action) { exit; } } elseif (api_is_student_boss()) { - $users = UserManager::getUsersFollowedByStudentBoss($userId); - $userIdList = array_keys($users); - } - - $sessionIdList = []; - if ($sessionId == -1) { - $userIdList = SessionManager::getAllUsersFromCoursesFromAllSessionFromStatus( - 'admin', - null - ); - $userIdList = array_column($userIdList, 'user_id'); - $sessionList = SessionManager::get_sessions_list(); - $sessionIdList = array_column($sessionList, 'id'); - - $courseCodeList = array(); - foreach ($sessionList as $session) { - $courses = SessionManager::get_course_list_by_session_id($session['id']); - $courseCodeList = array_merge($courseCodeList, array_column($courses, 'code')); + $searchByGroups = true; + } elseif (api_is_platform_admin()) { + if ($sessionId == -1) { + $userIdList = SessionManager::getAllUsersFromCoursesFromAllSessionFromStatus( + 'admin', + null + ); + $userIdList = array_column($userIdList, 'user_id'); + $sessionList = SessionManager::get_sessions_list(); + $sessionIdList = array_column($sessionList, 'id'); + + $courseCodeList = array(); + foreach ($sessionList as $session) { + $courses = SessionManager::get_course_list_by_session_id($session['id']); + $courseCodeList = array_merge($courseCodeList, array_column($courses, 'code')); + } } + $searchByGroups = true; } - $groups = GroupPortalManager::get_groups_by_user(api_get_user_id(), GROUP_USER_PERMISSION_ADMIN); - $groupsId = array_keys($groups); - - if (is_array($groupsId)) { - foreach ($groupsId as $groupId) { - $groupUsers = GroupPortalManager::get_users_by_group($groupId); + if ($searchByGroups) { + $groups = GroupPortalManager::get_groups_by_user(api_get_user_id(), GROUP_USER_PERMISSION_ADMIN); + $groupsId = array_keys($groups); - if (!is_array($groupUsers)) { - continue; - } + if (is_array($groupsId)) { + foreach ($groupsId as $groupId) { + $groupUsers = GroupPortalManager::get_users_by_group($groupId); - foreach ($groupUsers as $memberId => $member) { - if ($member['user_id'] == $userId ) { + if (!is_array($groupUsers)) { continue; } - $userIdList[] = intval($member['user_id']); + foreach ($groupUsers as $memberId => $member) { + if ($member['user_id'] == $userId ) { + continue; + } + + $userIdList[] = intval($member['user_id']); + } } } } @@ -234,6 +237,32 @@ switch ($action) { $userIdList = array_unique($userIdList); } + if (api_is_student_boss()) { + $userCourses = []; + foreach ($userIdList as $userId) { + $userCourses = array_merge( + $userCourses, + CourseManager::get_courses_list_by_user_id($userId, true) + ); + + $userSessions = SessionManager::getSessionsFollowedByUser($userId); + + $sessionIdList = array_merge( + $sessionIdList, + array_column($userSessions, 'id') + ); + } + $courseCodeList = array_column($userCourses, 'code'); + } + + if (!empty($courseCodeList)) { + $courseCodeList = array_unique($courseCodeList); + } + + if (!empty($sessionIdList)) { + $sessionIdList = array_unique($sessionIdList); + } + if ($action == 'get_user_course_report') { $count = CourseManager::get_count_user_list_from_course_code( false,