From 30d96fb24cacd6eaa26462c08f6929d19a13e3c6 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Sat, 9 Dec 2023 13:25:18 +0100 Subject: [PATCH] users avec stats okay --- core/class/router.class.php | 4 + core/module/course/course.php | 77 ++++++++++--------- .../course/view/userHistory/userHistory.php | 4 +- 3 files changed, 48 insertions(+), 37 deletions(-) diff --git a/core/class/router.class.php b/core/class/router.class.php index 27f5895..c6c42f8 100644 --- a/core/class/router.class.php +++ b/core/class/router.class.php @@ -499,10 +499,14 @@ class core extends common || $this->getUser('id') !== $this->getData(['course', self::$siteContent, 'author']) ) ) { + // Stocke l'historique des pages vues $data = is_array($this->getData(['enrolment', self::$siteContent, $this->getUser('id'), 'history', $this->getUrl(0)])) ? array_merge([time()], $this->getData(['enrolment', self::$siteContent, $this->getUser('id'), 'history', $this->getUrl(0)])) : [time()]; $this->setData(['enrolment', self::$siteContent, $this->getUser('id'), 'history', $this->getUrl(0), $data]); + // Stocke la dernière page vue et sa date de consultation + $this->setData(['enrolment', self::$siteContent, $this->getUser('id'), 'lastPageView', $this->getUrl(0)]); + $this->setData(['enrolment', self::$siteContent, $this->getUser('id'), 'datePageView', time()]); } // Journalisation diff --git a/core/module/course/course.php b/core/module/course/course.php index 5d5ed98..186e9a9 100644 --- a/core/module/course/course.php +++ b/core/module/course/course.php @@ -469,11 +469,11 @@ class course extends common // Statistiques du contenu sélectionné calcul du nombre de pages $sumPages = 0; $data = json_decode(file_get_contents(self::DATA_DIR . $courseId . '/page.json'), true); - // Exclure les barres et les pages masquées + + // Compter les pages et exclure les barres et les pages masquées foreach ($data['page'] as $pageId => $pageData) { if ($pageData['position'] > 0) { $sumPages++; - $pages[$pageId] = $pageData['title']; } } @@ -486,25 +486,20 @@ class course extends common foreach ($users as $userId => $userValue) { // Date et heure de la dernière page vue - $history = $userValue['history']; - $maxTime = 0; - foreach ($userValue['history'] as $pageId => $times) { - if (is_array($times)) { - foreach ($times as $time) { - if ($time > $maxTime) { - $maxTime = $time; - $lastPageId = $pageId; - } - } - } else { - // Compatibilité anciennes versions - if ($times > $maxTime) { - $maxTime = $times; - $lastPageId = $pageId; - } + // Compatibilité anciennes versions + if ( + $this->getData(['enrolment', $courseId, $userId, 'lastPageView']) === null + or $this->getData(['enrolment', $courseId, $userId, 'datePageView']) === null + ) { + if (!empty($userValue['history'])) { + $maxTime = max($userValue['history']); + $lastPageId = array_search($maxTime, $userValue['history']); + $this->setData(['enrolment', $courseId, $userId, 'lastPageView', $lastPageId]); + $this->setData(['enrolment', $courseId, $userId, 'datePageView', $maxTime]); } } + // Compte les rôles valides if (isset($profils[$this->getData(['user', $userId, 'group']) . $this->getData(['user', $userId, 'profil'])])) { $profils[$this->getData(['user', $userId, 'group']) . $this->getData(['user', $userId, 'profil'])]++; @@ -537,19 +532,20 @@ class course extends common } // Taux de parcours - $viewPages = count($this->getData(['enrolment', $courseId, $userId, 'history'])); - + $viewPages = $this->getData(['enrolment', $courseId, $userId, 'history']) !== null ? + count(array_keys($this->getData(['enrolment', $courseId, $userId, 'history']))) : + 0; // Construction du tableau self::$courseUsers[] = [ $userId, $this->getData(['user', $userId, 'firstname']) . ' ' . $this->getData(['user', $userId, 'lastname']), - !empty($history) ? $pages[$lastPageId] : '-', - !empty($history) ? helper::dateUTF8('%d %B %Y - %H:%M', $maxTime) : '-', + $this->getData(['enrolment', $courseId, $userId, 'lastPageView']), + helper::dateUTF8('%d %B %Y - %H:%M', $this->getData(['enrolment', $courseId, $userId, 'datePageView'])), $this->getData(['user', $userId, 'tags']), template::button('userHistory' . $userId, [ 'href' => helper::baseUrl() . 'course/userHistory/' . $courseId . '/' . $userId, - 'value' => !empty($history) ? round(($viewPages * 100) / $sumPages, 1) . ' %' : '0%', - 'disable' => empty($history) + 'value' => !empty($userValue['history']) ? round(($viewPages * 100) / $sumPages, 1) . ' %' : '0%', + 'disable' => empty($userValue['history']) ]), template::button('userDelete' . $userId, [ 'class' => 'userDelete buttonRed', @@ -871,18 +867,19 @@ class course extends common && $this->courseIsAvailable($courseId) ) { // Récupérer la dernière page visitée par cet utilisateur si elle existe - $maxTime = $this->getData(['enrolment', $courseId, $userId, 'history']) ? max($this->getData(['enrolment', $courseId, $userId, 'history'])) : null; - if (is_int($maxTime)) { - $redirect = helper::baseUrl() . array_search($maxTime, $this->getData(['enrolment', $courseId, $userId, 'history'])); - } else { - // Sinon la page d'accueil par défaut du module - $redirect = helper::baseUrl() . $this->getData(['course', $courseId, 'homePageId']); - } + $redirect = $this->getData(['enrolment', $courseId, $userId, 'lastPageView']) + ? helper::baseUrl() . $this->getData(['enrolment', $courseId, $userId, 'lastPageView']) + : helper::baseUrl() . $this->getData(['course', $courseId, 'homePageId']); + /* + $essage = $this->getData(['enrolment', $courseId, $userId, 'datePageView']) + ? $this->getData(['enrolment', $courseId, $userId, 'datePageView']) + : ''; + */ if ($this->getData(['course', $courseId, 'access']) === self::COURSE_ACCESS_DATE) { $to = helper::dateUTF8('%d %B %Y', $this->getData(['course', $courseId, 'closingDate']), self::$i18nUI) . helper::translate(' à ') . helper::dateUTF8('%H:%M', $this->getData(['course', $courseId, 'closingDate']), self::$i18nUI); - $message = sprintf(helper::translate('Ce contenu ferme le %s'), $to); + $message .= sprintf(helper::translate('Ce contenu ferme le %s'), $to); } else { - $message = sprintf(helper::translate('Bienvenue dans l\'espace %s'), $this->getData(['course', $courseId, 'title'])); + $message .= sprintf(helper::translate('Bienvenue dans l\'espace %s'), $this->getData(['course', $courseId, 'title'])); } $_SESSION['ZWII_SITE_CONTENT'] = $courseId; } @@ -968,11 +965,21 @@ class course extends common } } - foreach ($history['history'] as $pageId => $time) { + foreach ($history as $pageId => $times) { + if (is_array($times)) { + $d = array(); + foreach ($times as $time) { + $d[] = helper::dateUTF8('%d %B %Y - %H:%M:%S', $time); + } + $dates = implode('
', $d); + } else { + $dates = helper::dateUTF8('%d %B %Y - %H:%M:%S', $history); + } + self::$userHistory[$pageId] = [ $pages[$pageId]['number'], - helper::dateUTF8('%d %B %Y - %H:%M:%S', $time), $pages[$pageId]['title'], + $dates, ]; } diff --git a/core/module/course/view/userHistory/userHistory.php b/core/module/course/view/userHistory/userHistory.php index a22b58c..020e8c4 100644 --- a/core/module/course/view/userHistory/userHistory.php +++ b/core/module/course/view/userHistory/userHistory.php @@ -2,7 +2,7 @@
'buttonGrey', - 'href' => helper::baseUrl() . 'course/user/' . $this->getUrl(2), + 'href' => helper::baseUrl() . 'course/users/' . $this->getUrl(2), 'value' => template::ico('left') ]); ?>
@@ -17,7 +17,7 @@
- 'dataTables']); ?> + 'dataTables']); ?>