Change format date, validate format date, improve UI see BT#15826

pull/2970/head
Julio Montoya 6 years ago
parent 2527d3717e
commit e91021a325
  1. 140
      main/mySpace/access_details_session.php

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

Loading…
Cancel
Save