api_get_path(WEB_CODE_PATH).'mySpace/index.php', 'name' => get_lang('Reporting'), ]; $interbreadcrumb[] = [ 'url' => api_get_path(WEB_CODE_PATH).'mySpace/session.php', 'name' => get_lang('FollowedSessions'), ]; $sessionId = isset($_GET['session_id']) ? (int) $_GET['session_id'] : 0; $script = ''; $actions = null; $actions .= Display::url( Display::return_icon('back.png', get_lang('Back'), null, ICON_SIZE_MEDIUM ), '../mySpace/session.php' ); if (api_is_platform_admin()) { $sessionList = SessionManager::get_sessions_list(); } elseif (api_is_drh()) { $sessionList = SessionManager::get_sessions_followed_by_drh(api_get_user_id()); } elseif (api_is_session_admin()) { $sessionList = SessionManager::getSessionsFollowedByUser(api_get_user_id(), SESSIONADMIN); } else { $sessionList = Tracking::get_sessions_coached_by_user(api_get_user_id()); } $form = new FormValidator('session_progress_report'); $selectSession = $form->addSelect('session_id', get_lang('Session'), [0 => get_lang('None')]); foreach ($sessionList as $sessionInfo) { $selectSession->addOption($sessionInfo['name'], $sessionInfo['id']); } $form->addDateRangePicker( 'date_range', get_lang('DateRange'), false, ['id' => 'date_range'] ); $form->addButtonFilter(get_lang('Filter'), 'submitReport'); if (!empty($sessionId)) { $form->setDefaults(['session_id' => $sessionId]); } $users = []; $courses = []; $sessionName = ''; if ($form->validate()) { $formValues = $form->getSubmitValues(); $sessionId = $formValues['session_id']; $startDate = $formValues['date_range_start']; $endDate = $formValues['date_range_end']; $accessSessionCourse = CourseManager::getAccessCourse( 0, 1, 0, $startDate, $endDate, $sessionId ); if (!empty($accessSessionCourse)) { $session = api_get_session_entity($sessionId); $sessionName = $session->getName(); foreach ($accessSessionCourse as $access) { $user = api_get_user_entity($access['user_id']); $studentLink = Display::url( UserManager::formatUserFullName($user), api_get_path(WEB_CODE_PATH).'mySpace/myStudents.php?student='.$user->getId().'&origin=session_report' ); $users[$user->getId()] = [ 'complete_name' => $studentLink, 'time_in_platform' => api_time_to_hms( Tracking::get_time_spent_on_the_course($user->getId(), $access['c_id'], $sessionId, $startDate, $endDate) ), ]; $course = api_get_course_entity($access['c_id']); $courses[$course->getCode()] = $course->getCode(); } if (!empty($courses)) { foreach ($courses as $courseCode => $name) { foreach ($users as $userId => $user) { $progress = Tracking::get_avg_student_progress( $userId, $courseCode, [], $sessionId, false, false, false, $startDate, $endDate ); $infoGradeCertificate = UserManager::get_info_gradebook_certificate( $courseCode, $sessionId, $userId, $startDate, $endDate ); $users[$userId][$courseCode.'_progress'] = is_numeric($progress) ? "$progress %" : '0 %'; $users[$userId][$courseCode.'_certificate'] = $infoGradeCertificate ? get_lang('Yes') : get_lang('No'); } } } } } if (isset($_GET['export']) && !empty($users)) { $fileName = 'progress_in_session_'.api_get_local_time(); $dataToExport = []; $dataToExport['headers'][] = get_lang('StudentName'); $dataToExport['headers'][] = get_lang('TimeSpentOnThePlatform'); foreach ($courses as $courseCode) { $dataToExport['headers'][] = get_lang('Progress').' '.$courseCode; $dataToExport['headers'][] = get_lang('Certificate').' '.$courseCode; } foreach ($users as $user) { $dataToExport[] = $user; } switch ($_GET['export']) { case 'xls': Export::export_table_xls_html($dataToExport, $fileName); break; case 'csv': Export::arrayToCsv($dataToExport, $fileName); break; } } $view = new Template($toolName); $view->assign('form', $form->returnForm()); $view->assign('script', $script); if (!empty($users)) { $view->assign('sessionName', $sessionName); $view->assign('courses', $courses); $view->assign('users', $users); $actions .= Display::url( Display::return_icon('export_csv.png', get_lang('ExportAsCSV'), [], 32), api_get_self().'?export=csv', ['class' => 'export'] ); $actions .= Display::url( Display::return_icon('export_excel.png', get_lang('ExportAsXLS'), [], ICON_SIZE_MEDIUM), api_get_self().'?export=xls', ['class' => 'export'] ); } $template = $view->get_template('my_space/progress_in_session_report.tpl'); $content = $view->fetch($template); $view->assign( 'actions', Display::toolbarAction('toolbar', [$actions]) ); $view->assign('header', $toolName); $view->assign('content', $content); $view->display_one_col_template();