From 0b77b663fed8ad899355d20b7c32b30114c33416 Mon Sep 17 00:00:00 2001 From: Imanol Losada Date: Mon, 30 Mar 2015 10:58:06 -0500 Subject: [PATCH 1/2] 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, From 91c2f25db619d122268f56b5cd3c5d84122c7e29 Mon Sep 17 00:00:00 2001 From: Imanol Losada Date: Mon, 30 Mar 2015 11:22:22 -0500 Subject: [PATCH 2/2] Add group column for student boss - refs BT#9431 --- main/inc/ajax/model.ajax.php | 13 +++++++++++++ main/inc/lib/course.lib.php | 1 + main/mySpace/company_reports.php | 5 +++++ 3 files changed, 19 insertions(+) diff --git a/main/inc/ajax/model.ajax.php b/main/inc/ajax/model.ajax.php index 0e6e328a44..344648adf4 100755 --- a/main/inc/ajax/model.ajax.php +++ b/main/inc/ajax/model.ajax.php @@ -602,6 +602,12 @@ switch ($action) { $column_names[] = $extra['3']; } } + + if (api_is_student_boss()) { + $columns[] = 'group'; + $column_names[] = get_lang('Group'); + } + if (!in_array($sidx, array('title'))) { $sidx = 'title'; } @@ -621,6 +627,13 @@ switch ($action) { null, $sessionIdList ); + if (api_is_student_boss()) { + foreach ($result as &$item) { + $userGroups = GroupPortalManager::get_groups_by_user($item['user_id']); + $item['group'] = implode(", ", array_column($userGroups, 'name')); + unset($item['user_id']); + } + } break; case 'get_user_skill_ranking': diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index 51517d7f96..25f2d107af 100755 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -1556,6 +1556,7 @@ class CourseManager $user_data = UserManager::get_extra_user_data_by_field($user['user_id'], $extra['1']); $report_info[$extra['1']] = $user_data[$extra['1']]; } + $report_info['user_id'] = $user['user_id']; $users[] = $report_info; } } else { diff --git a/main/mySpace/company_reports.php b/main/mySpace/company_reports.php index 3dfe117ff2..4eeaeb8aea 100755 --- a/main/mySpace/company_reports.php +++ b/main/mySpace/company_reports.php @@ -64,6 +64,11 @@ if (!empty($extra_fields)) { } } +if (api_is_student_boss()) { + $column_model[] = array('name'=>'group', 'index'=>'group', 'width'=>'50', 'align'=>'left','sortable'=>'false'); + $columns[] = get_lang('Group'); +} + // Autowidth $extra_params['autowidth'] = 'true'; // height auto