diff --git a/main/mySpace/access_details_session.php b/main/mySpace/access_details_session.php index 15638856b5..39fd7d2aa3 100644 --- a/main/mySpace/access_details_session.php +++ b/main/mySpace/access_details_session.php @@ -5,7 +5,6 @@ require_once __DIR__.'/../inc/global.inc.php'; api_block_anonymous_users(); -// Access restrictions. $is_allowedToTrack = api_is_platform_admin(true, true) || api_is_teacher() || api_is_course_tutor(); @@ -24,14 +23,39 @@ if (empty($userInfo)) { api_not_allowed(true); } -$sessions = SessionManager::getSessionsFollowedByUser($userId, - null, +/** + * @param string $dateTime + * @param bool $showTime + * + * @return string + */ +function customDate($dateTime, $showTime = false) +{ + $format = 'd/m/Y'; + if ($showTime) { + $format = 'd/m/Y H:i:s'; + } + $dateTime = api_get_local_time( + $dateTime, null, null, + true, false, - false, - false, - 'ORDER BY s.access_end_date' + true, + $format + ); + + return $dateTime; +} + +$sessions = SessionManager::getSessionsFollowedByUser($userId, + null, + null, + null, + false, + false, + false, + 'ORDER BY s.access_end_date' ); $startDate = ''; @@ -50,33 +74,35 @@ $form = new FormValidator( null, ['id' => 'myform'] ); -$form->addElement('text', 'from', get_lang('From'), ['id' => 'date_from']); -$form->addElement('text', 'to', get_lang('Until'), ['id' => 'date_to']); +$form->addElement('text', 'from', get_lang('From')); +$form->addElement('text', 'to', get_lang('Until')); $form->addElement('hidden', 'user_id', $userId); $form->addRule('from', get_lang('ThisFieldIsRequired'), 'required'); +$form->addRule('from', get_lang('ThisFieldIsRequired').' dd/mm/yyyy', 'callback', 'validateDate'); $form->addRule('to', get_lang('ThisFieldIsRequired'), 'required'); +$form->addRule('to', get_lang('ThisFieldIsRequired').' dd/mm/yyyy', 'callback', 'validateDate'); $form->addButtonSearch(get_lang('GenerateReport')); -function customDate($dateTime) +/** + * @param string $value + * + * @return bool + */ +function validateDate($value) { - $dateTime = api_get_local_time( - $dateTime, - null, - null, - true, - false, - true, - 'd/m/Y' - ); + $value = DateTime::createFromFormat('d/m/Y', $value); - return $dateTime; + if ($value === false) { + return false; + } + + return true; } if ($form->validate()) { $values = $form->getSubmitValues(); $from = $values['from']; $to = $values['to']; - $sessionCategories = UserManager::get_sessions_by_category($userId, false); $from = DateTime::createFromFormat('d/m/Y', $from); $to = DateTime::createFromFormat('d/m/Y', $to); @@ -84,8 +110,9 @@ if ($form->validate()) { $from = api_get_utc_datetime($from->format('Y-m-d')); $to = api_get_utc_datetime($to->format('Y-m-d')); - $sessionCourseList = []; + $sessionCategories = UserManager::get_sessions_by_category($userId, false); $report = []; + $content = ''; foreach ($sessionCategories as $category) { foreach ($category['sessions'] as $session) { $sessionId = $session['session_id']; @@ -94,7 +121,7 @@ if ($form->validate()) { $courseInfo = api_get_course_info_by_id($course['real_id']); $result = MySpace::get_connections_to_course_by_date( $userId, - $course, + $courseInfo, $sessionId, $from, $to @@ -102,13 +129,13 @@ if ($form->validate()) { foreach ($result as $item) { $record = [ - $courseInfo['title'], - $session['session_name'], - customDate($item['login']), - customDate($item['logout']), + //$courseInfo['title'], + customDate($item['login'], true), + customDate($item['logout'], true), api_format_time($item['duration'], 'js'), ]; - $report[] = $record; + $report[$sessionId]['courses'][$course['real_id']][] = $record; + $report[$sessionId]['name'][$course['real_id']] = $courseInfo['title'].'  ('.$session['session_name'].')'; } } } @@ -128,43 +155,48 @@ if ($form->validate()) { foreach ($result as $item) { $record = [ - $course['title'], - '', - customDate($item['login']), - customDate($item['logout']), + customDate($item['login'], true), + customDate($item['logout'], true), api_format_time($item['duration'], 'js'), ]; - $report[] = $record; + $report[0]['courses'][$course['course_id']][] = $record; + $report[0]['name'][$course['course_id']] = $course['title']; } } - $table = new HTML_Table(['class' => 'data_table']); - $headers = [ - get_lang('Course'), - get_lang('Session'), - get_lang('StartDate'), - get_lang('EndDate'), - get_lang('Duration'), - ]; - $row = 0; - $column = 0; - foreach ($headers as $header) { - $table->setHeaderContents($row, $column, $header); - $column++; - } - $row++; - foreach ($report as $record) { - $column = 0; - foreach ($record as $item) { - $table->setCellContents($row, $column++, $item); + foreach ($report as $sessionId => $data) { + foreach ($data['courses'] as $courseId => $courseData) { + $content .= Display::page_subheader3($data['name'][$courseId]); + $table = new HTML_Table(['class' => 'data_table']); + $headers = [ + //get_lang('Course'), + get_lang('StartDate'), + get_lang('EndDate'), + get_lang('Duration'), + ]; + $row = 0; + $column = 0; + foreach ($headers as $header) { + $table->setHeaderContents($row, $column, $header); + $column++; + } + $row++; + foreach ($courseData as $record) { + $column = 0; + foreach ($record as $item) { + $table->setCellContents($row, $column++, $item); + } + $row++; + } + $content .= $table->toHtml(); } - $row++; } $tpl = new Template('', false, false, false, true, false, false); $tpl->assign('title', get_lang('AttestationOfAttendance')); $tpl->assign('student', $userInfo['complete_name']); - $tpl->assign('table_progress', $table->toHtml()); + $tpl->assign('table_progress', $content); + $content = $tpl->fetch($tpl->get_template('my_space/pdf_export_student.tpl')); $params = [ 'pdf_title' => get_lang('Resume'), @@ -178,7 +210,7 @@ if ($form->validate()) { 'orientation' => 'P', ]; - $pdf = @new PDF('A4', $params['orientation'], $params); + @$pdf = new PDF('A4', $params['orientation'], $params); $pdf->setBackground($tpl->theme); @$pdf->content_to_pdf(