Pārlūkot izejas kodu

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

Julio Montoya 5 gadi atpakaļ
vecāks
revīzija
e91021a325
1 mainītis faili ar 86 papildinājumiem un 54 dzēšanām
  1. 86 54
      main/mySpace/access_details_session.php

+ 86 - 54
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(