'table table-hover table-striped data_table']); $column = 0; $row = 0; $headers = [ get_lang('TimeSpent'), get_lang('NumberOfVisits'), get_lang('GlobalProgress'), get_lang('FirstLogin'), get_lang('LastConnexionDate'), ]; foreach ($headers as $header) { $table->setHeaderContents($row, $column, $header); $column++; } $table->setCellContents(1, 0, api_time_to_hms($timeSpent)); $table->setCellContents(1, 1, $numberVisits); $table->setCellContents(1, 2, $average); $table->setCellContents(1, 3, $first); $table->setCellContents(1, 4, $last); $timeSpentContent = $table->toHtml(); } else { $pdfTitle = get_lang('CertificateOfAchievement'); } $courseTable = ''; if (!empty($courses)) { $courseTable .= ''; $courseTable .= ''; $courseTable .= ''; if (!$hideConnectionTime) { $courseTable .= ''; } $courseTable .= ''; if ('attendance' === $type) { $courseTable .= ''; } $courseTable .= ''; $courseTable .= ''; $courseTable .= ''; $totalCourseTime = 0; $totalAttendance = [0, 0]; $totalScore = 0; $totalProgress = 0; $gradeBookTotal = [0, 0]; $totalEvaluations = '0/0 (0%)'; foreach ($courses as $course) { $courseId = $course['c_id']; $courseInfoItem = api_get_course_info_by_id($courseId); $courseId = $courseInfoItem['real_id']; $courseCodeItem = $courseInfoItem['code']; $isSubscribed = CourseManager::is_user_subscribed_in_course( $studentId, $courseCodeItem, true, $sessionToExport ); if ($isSubscribed) { $timeInSeconds = $timeSpentPerCourse[$courseId]; $totalCourseTime += $timeInSeconds; $time_spent_on_course = api_time_to_hms($timeInSeconds); $progress = $progressPerCourse[$courseId]; $totalProgress += $progress; $bestScore = Tracking::get_avg_student_score( $studentId, $courseCodeItem, [], $sessionToExport, false, false, true ); if (is_numeric($bestScore)) { $totalScore += $bestScore; } $progress = empty($progress) ? '0%' : $progress.'%'; $score = empty($bestScore) ? '0%' : $bestScore.'%'; $courseTable .= ''; if (!$hideConnectionTime) { $courseTable .= ''; } $courseTable .= ''; if ('attendance' === $type) { $courseTable .= ''; } $courseTable .= ''; } } $totalAttendanceFormatted = $scoreDisplay->display_score($totalAttendance); $totalScoreFormatted = $scoreDisplay->display_score([$totalScore / $totalCourses, 100], SCORE_AVERAGE); $totalProgressFormatted = $scoreDisplay->display_score( [$totalProgress / $totalCourses, 100], SCORE_AVERAGE ); $totalEvaluations = $scoreDisplay->display_score($gradeBookTotal); $totalTimeFormatted = api_time_to_hms($totalCourseTime); $courseTable .= ' '; if (!$hideConnectionTime) { $courseTable .= ''; } $courseTable .= ''; if ('attendance' === $type) { $courseTable .= ''; } $courseTable .= ''; $courseTable .= '
'.get_lang('FormationUnit').''.get_lang('ConnectionTime').''.get_lang('Progress').''.get_lang('Score').'
'. $courseInfoItem['title'].' '.$time_spent_on_course.''.$progress.''.$score.'
'.get_lang('Total').''.$totalTimeFormatted.''.$totalProgressFormatted.''.$totalScoreFormatted.'
'; } $tpl = new Template('', false, false, false, true, false, false); $tpl->assign('title', $pdfTitle); $tpl->assign('session_title', $sessionInfo['name']); $tpl->assign('session_info', $sessionInfo); $sessionCategoryTitle = ''; if (isset($sessionInfo['session_category_id'])) { $sessionCategory = SessionManager::get_session_category($sessionInfo['session_category_id']); if ($sessionCategory) { $sessionCategoryTitle = $sessionCategory['name']; } } $dateData = SessionManager::parseSessionDates($sessionInfo, false); $dateToString = $dateData['access']; $tpl->assign('session_display_dates', $dateToString); $tpl->assign('session_category_title', $sessionCategoryTitle); $tpl->assign('student', $studentInfo['complete_name']); $tpl->assign('student_info', $studentInfo); $tpl->assign('student_info_extra_fields', UserManager::get_extra_user_data($studentInfo['user_id'])); $tpl->assign('table_progress', $timeSpentContent); $tpl->assign( 'subtitle', sprintf( get_lang('InSessionXYouHadTheFollowingResults'), $sessionInfo['name'] ) ); $tpl->assign('table_course', $courseTable); $template = 'pdf_export_student.tpl'; if ('achievement' === $type) { $template = 'certificate_achievement.tpl'; } $content = $tpl->fetch($tpl->get_template('my_space/'.$template)); $params = [ 'pdf_title' => get_lang('Resume'), 'session_info' => $sessionInfo, 'course_info' => '', 'pdf_date' => '', 'student_info' => $studentInfo, 'show_grade_generated_date' => true, 'show_real_course_teachers' => false, 'show_teacher_as_myself' => false, 'orientation' => 'P', ]; @$pdf = new PDF('A4', $params['orientation'], $params); $pdf->setBackground($tpl->theme); $mode = 'D'; $pdfName = $sessionInfo['name'].'_'.$studentInfo['complete_name']; if ($allStudents) { $mode = 'F'; $pdfName = $studentInfo['complete_name']; } $pdf->set_footer(); $result = @$pdf->content_to_pdf( $content, '', $pdfName, null, $mode, false, null, false, true, false ); $pdfList[] = $result; } if (empty($pdfList)) { api_not_allowed(true); } // Creating a ZIP file. $tempZipFile = api_get_path(SYS_ARCHIVE_PATH).uniqid('report_session_'.$sessionToExport, true).'.zip'; $zip = new PclZip($tempZipFile); foreach ($pdfList as $file) { $zip->add( $file, PCLZIP_OPT_REMOVE_PATH, api_get_path(SYS_ARCHIVE_PATH) ); } $name = $sessionInfo['name'].'_'.api_get_utc_datetime().'.zip'; DocumentManager::file_send_for_download($tempZipFile, true, $name); exit; break; } $htmlHeadXtra[] = api_get_jqgrid_js(); $interbreadcrumb[] = ['url' => 'index.php', 'name' => get_lang('MySpace')]; Display::display_header(get_lang('Sessions')); if (api_is_platform_admin(true, true)) { $a_sessions = SessionManager::get_sessions_followed_by_drh(api_get_user_id()); if (!api_is_session_admin()) { $menu_items[] = Display::url( Display::return_icon('statistics.png', get_lang('MyStats'), '', ICON_SIZE_MEDIUM), api_get_path(WEB_CODE_PATH).'auth/my_progress.php' ); $menu_items[] = Display::url( Display::return_icon('user.png', get_lang('Students'), [], ICON_SIZE_MEDIUM), 'index.php?view=drh_students&display=yourstudents' ); $menu_items[] = Display::url( Display::return_icon('teacher.png', get_lang('Trainers'), [], ICON_SIZE_MEDIUM), 'teachers.php' ); $menu_items[] = Display::url( Display::return_icon('course.png', get_lang('Courses'), [], ICON_SIZE_MEDIUM), 'course.php' ); $menu_items[] = Display::url( Display::return_icon('session_na.png', get_lang('Sessions'), [], ICON_SIZE_MEDIUM), '#' ); } else { $menu_items[] = Display::url( Display::return_icon('teacher.png', get_lang('Trainers'), [], ICON_SIZE_MEDIUM), 'session_admin_teachers.php' ); } $menu_items[] = Display::url( Display::return_icon('works.png', get_lang('WorksReport'), [], ICON_SIZE_MEDIUM), api_get_path(WEB_CODE_PATH).'mySpace/works_in_session_report.php' ); $menu_items[] = Display::url( Display::return_icon('attendance_list.png', get_lang('ProgressInSessionReport'), [], ICON_SIZE_MEDIUM), api_get_path(WEB_CODE_PATH).'mySpace/progress_in_session_report.php' ); $menu_items[] = Display::url( Display::return_icon('clock.png', get_lang('TeacherTimeReportBySession'), [], ICON_SIZE_MEDIUM), api_get_path(WEB_CODE_PATH).'admin/teachers_time_by_session_report.php' ); if (!api_is_session_admin()) { $menu_items[] = Display::url( Display::return_icon('1day.png', get_lang('SessionsPlanCalendar'), [], ICON_SIZE_MEDIUM), api_get_path(WEB_CODE_PATH)."calendar/planification.php" ); } if (api_is_drh()) { $menu_items[] = Display::url( Display::return_icon('session.png', get_lang('SessionFilterReport'), [], ICON_SIZE_MEDIUM), api_get_path(WEB_CODE_PATH).'mySpace/session_filter.php' ); } $actionsLeft = ''; $nb_menu_items = count($menu_items); if ($nb_menu_items > 1) { foreach ($menu_items as $key => $item) { $actionsLeft .= $item; } } $actionsRight = ''; if (count($a_sessions) > 0) { $actionsRight = Display::url( Display::return_icon('printer.png', get_lang('Print'), [], 32), 'javascript: void(0);', ['onclick' => 'javascript: window.print();'] ); $actionsRight .= Display::url( Display::return_icon('export_csv.png', get_lang('ExportAsCSV'), [], 32), api_get_self().'?export=csv' ); } $toolbar = Display::toolbarAction( 'toolbar-session', [$actionsLeft, $actionsRight] ); echo $toolbar; echo Display::page_header(get_lang('YourSessionsList')); } elseif (api_is_teacher()) { $actionsRight = Display::url( Display::return_icon('clock.png', get_lang('TeacherTimeReportBySession'), [], ICON_SIZE_MEDIUM), api_get_path(WEB_CODE_PATH).'admin/teachers_time_by_session_report.php' ); $toolbar = Display::toolbarAction( 'toolbar-session', ['', $actionsRight] ); echo $toolbar; echo Display::page_header(get_lang('YourSessionsList')); } else { $a_sessions = Tracking::get_sessions_coached_by_user($id_coach); } $form = new FormValidator( 'search_course', 'post', api_get_path(WEB_CODE_PATH).'mySpace/session.php' ); $form->addElement('text', 'keyword', get_lang('Keyword')); $extraFieldSession = new ExtraField('session'); $extraFieldSession->addElements( $form, null, [], true ); $form->addButtonSearch(get_lang('Search')); $keyword = ''; $result = SessionManager::getGridColumns('my_space'); $columns = $result['columns']; $columnModel = $result['column_model']; $filterToString = ''; if ($form->validate()) { $values = $form->getSubmitValues(); $keyword = Security::remove_XSS($form->getSubmitValue('keyword')); $extraField = new ExtraField('session'); $extraFields = $extraField->get_all(null, 'option_order'); $extraFields = array_column($extraFields, 'variable'); $filter = new stdClass(); foreach ($columnModel as $col) { if (isset($values[$col['index']]) && !empty($values[$col['index']]) && in_array(str_replace('extra_', '', $col['index']), $extraFields) ) { $rule = new stdClass(); $index = $col['index']; $rule->field = $index; $rule->op = 'in'; $data = $values[$index]; if (is_array($data) && array_key_exists($index, $data)) { $data = $data[$index]; } $rule->data = Security::remove_XSS($data); $filter->rules[] = $rule; $filter->groupOp = 'AND'; } } $filterToString = json_encode($filter); } $form->setDefaults(['keyword' => $keyword]); $url = api_get_path(WEB_AJAX_PATH). 'model.ajax.php?a=get_sessions_tracking&_search=true&_force_search=true&filters='.$filterToString.'&keyword='.$keyword; // Column config $extraParams = [ 'autowidth' => 'true', 'height' => 'auto', ]; /*$extraParams['postData'] = [ 'filters' => [ 'groupOp' => 'AND', 'rules' => $result['rules'], ], ];*/ $urlAjaxExtraField = api_get_path(WEB_AJAX_PATH).'extra_field.ajax.php?1=1'; $allowOrder = api_get_configuration_value('session_list_order'); $orderUrl = api_get_path(WEB_AJAX_PATH).'session.ajax.php?a=order'; ?> display(); echo Display::grid_html('sessions'); Display::display_footer();