From 76f78d4365483e4231f7254259aa65a8f624c4d8 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Wed, 18 Oct 2023 13:41:16 +0200 Subject: [PATCH] fix bad user stat --- core/module/course/course.php | 78 +++++++++++++++++++++++++---------- 1 file changed, 56 insertions(+), 22 deletions(-) diff --git a/core/module/course/course.php b/core/module/course/course.php index 8b1ebd6..88f1582 100644 --- a/core/module/course/course.php +++ b/core/module/course/course.php @@ -30,6 +30,7 @@ class course extends common 'userAdd' => self::GROUP_ADMIN, 'userDelete' => self::GROUP_ADMIN, 'userDeleteAll' => self::GROUP_ADMIN, + 'userHistory' => self::GROUP_ADMIN, ]; public static $courseAccess = [ @@ -65,6 +66,8 @@ class course extends common public static $pagesList = ['accueil' => 'Accueil']; + public static $userHistory = []; + public function index() { $courseIdShortTitle = helper::arrayColumn($this->getData(['course']), 'shortTitle'); @@ -381,6 +384,10 @@ class course extends common public function user() { + + // Cours sélectionné + $courseId = $this->getUrl(2); + // Liste des groupes et des profils $courseGroups = $this->getData(['profil']); foreach ($courseGroups as $groupId => $groupValue) { @@ -409,19 +416,18 @@ class course extends common self::$alphabet = array_combine($alphabet, self::$alphabet); self::$alphabet = array_merge(['all' => 'Tout'], self::$alphabet); - // Cours sélectionné - $courseId = $this->getUrl(2); - // Statistiques du cours sélectionné calcul du nombre de pages - $currentSite = self::$siteContent; - $this->initDB('page', $courseId); - $sumPages = $this->countPages($this->getHierarchy(null, false)); - // Supprimer les barres - $sumPages = $sumPages - count($this->getHierarchy(null, false, true)); - self::$siteContent = $currentSite; + $sumPages = 0; + $data = json_decode(file_get_contents(self::DATA_DIR . $courseId . '/page.json'), true); + foreach($data['page'] as $pageId => $pageData) { + if ($pageData['block'] !== 'bar') { + $sumPages ++; + } + } // Liste des inscrits dans le cours sélectionné. $users = $this->getData(['enrolment', $courseId]); + // Tri du tableau par défaut par $userId ksort($users); @@ -654,6 +660,33 @@ class course extends common } + /** + * Liste les pages consultées par un utilisateur + */ + public function userHistory() + { + + $courseId = $this->getUrl(2); + $userId = $this->getUrl(3); + foreach ($this->getData(['history', $courseId, $userId]) as $pageId => $time) { + self::$userHistory[$pageId] = [ + $this->getData(['page', $pageId, 'shortTitle']), + helper::dateUTF8('%d %B %Y - %H:%M', $time) + ] + ; + } + + // Valeurs en sortie + $this->addOutput([ + 'title' => helper::translate('Historique'), + 'view' => 'userHistory', + 'vendor' => [ + 'datatables' + ] + ]); + + } + // Génération du message d'inscription public function enrol() { @@ -734,13 +767,14 @@ class course extends common } } + /** * Autorise l'accès à un cours * @param @return bool le user a le droit d'entrée dans le cours * @param string $userId identifiant de l'utilisateur * @param string $courseId identifiant du cours sollicité */ - public function courseIsUserEnroled($courseId) + private function courseIsUserEnroled($courseId) { $userId = $this->getUser('id'); $group = $userId ? $this->getData(['user', $userId, 'group']) : null; @@ -765,18 +799,6 @@ class course extends common return $r; } - public function courseEnrolUser($courseId, $userId) - { - $this->setData([ - 'enrolment', - $courseId, - $userId, - [ - 'history' => [], - ] - ]); - } - /** * Autorise l'accès à un cours * @param @return bool le user a le droit d'entrée dans le cours @@ -822,4 +844,16 @@ class course extends common return $count; } + private function courseEnrolUser($courseId, $userId) + { + $this->setData([ + 'enrolment', + $courseId, + $userId, + [ + 'history' => [], + ] + ]); + } + } \ No newline at end of file