diff --git a/core/module/course/course.php b/core/module/course/course.php index 627c3ad..1f31c33 100644 --- a/core/module/course/course.php +++ b/core/module/course/course.php @@ -35,7 +35,7 @@ class course extends common 'userHistory' => self::GROUP_EDITOR, 'usersHistoryExport' => self::GROUP_EDITOR, 'userHistoryExport' => self::GROUP_EDITOR, - 'courseBackup' =>self::GROUP_ADMIN, + 'courseBackup' => self::GROUP_ADMIN, ]; public static $courseAccess = [ @@ -96,7 +96,7 @@ class course extends common self::$courses[] = [ $courseValue['title'], //$author, - '' . $description. '', + '' . $description . '', template::button('categoryUser' . $courseId, [ 'href' => helper::baseUrl() . 'course/users/' . $courseId, 'value' => template::ico('users'), @@ -320,7 +320,7 @@ class course extends common } // Dossier du gestionnaire de fichier - if (is_dir(self::FILE_DIR . 'source/' . $courseId)) { + if (is_dir(self::FILE_DIR . 'source/' . $courseId)) { $this->deleteDir(self::FILE_DIR . 'source/' . $courseId); } @@ -493,7 +493,7 @@ class course extends common // Liste des pages contenues dans cet espace et exclure les barres et les pages masquées $sumPages = 0; $pages = json_decode(file_get_contents(self::DATA_DIR . $courseId . '/page.json'), true); - $pages = $pages ['page']; + $pages = $pages['page']; foreach ($pages as $pageId => $pageData) { if ($pageData['position'] > 0) { $sumPages++; @@ -1002,7 +1002,7 @@ class course extends common ]; } } - + $floorTime = 99999999999; $topTime = 0; @@ -1026,16 +1026,16 @@ class course extends common helper::dateUTF8('%d %B %Y %H:%M', $times) ]; $floorTime = $floorTime < $times ? $floorTime : $times; - $topTime = $topTime > $times ?$topTime : $times; + $topTime = $topTime > $times ? $topTime : $times; } } - self::$userStat['floor'] = helper::dateUTF8('%d %B %Y %H:%M',$floorTime); - self::$userStat['top'] = helper::dateUTF8('%d %B %Y %H:%M',$topTime); + self::$userStat['floor'] = helper::dateUTF8('%d %B %Y %H:%M', $floorTime); + self::$userStat['top'] = helper::dateUTF8('%d %B %Y %H:%M', $topTime); $d = $topTime - $floorTime; $d_hours = floor($d / 3600); $d_minutes = floor(($d % 3600) / 60); - self::$userStat['time'] = $d_hours . ' heures, ' . $d_minutes . ' minutes ' ; + self::$userStat['time'] = $d_hours . ' heures, ' . $d_minutes . ' minutes '; // Valeurs en sortie $this->addOutput([ @@ -1054,7 +1054,7 @@ class course extends common $courseId = $this->getUrl(2); self::$courseUsers = [ - 0 => ['UserId', 'Prénom', 'Nom', 'Page Titre', 'Consultation Date', 'Consultation Heure', 'Progression'] + 0 => ['UserId', 'Prénom', 'Nom', 'Page Titre', 'Consultation Date', 'Consultation Heure', 'Progression'] ]; // Statistiques du contenu sélectionné calcul du nombre de pages @@ -1114,7 +1114,7 @@ class course extends common $pages[$this->getData(['enrolment', $courseId, $userId, 'lastPageView'])], helper::dateUTF8('%d/%d/%Y', $this->getData(['enrolment', $courseId, $userId, 'datePageView'])), helper::dateUTF8('%H:%M', $this->getData(['enrolment', $courseId, $userId, 'datePageView'])), - number_format(round(($viewPages * 100) / $sumPages, 1) / 100, 2, ',') + number_format(round(($viewPages * 100) / $sumPages, 1) / 100, 2, ',') ]; // Synthèse des historiques @@ -1149,7 +1149,7 @@ class course extends common $courseId = $this->getUrl(2); $userId = $this->getUrl(3); $history = $this->getData(['enrolment', $courseId, $userId, 'history']); - self::$userHistory= [ + self::$userHistory = [ 0 => ['Ordre', 'PageId', 'Page Titre', 'Consultation Date', 'Consultation Heure'] ]; @@ -1330,33 +1330,52 @@ class course extends common * Sauvegarde d'un cours sans option */ - public function courseBackup() { + public function courseBackup() + { $courseId = $this->getUrl(2); // Participants avec historiques $enrolment = $this->getData(['enrolment', $courseId]); // Générer un fichier dans le dossier de l'espace - file_put_contents(self::DATA_DIR . $courseId . '/enrolment.json', json_encode($enrolment, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)); + file_put_contents(self::DATA_DIR . $courseId . '/enrolment.json', json_encode([$courseId => $enrolment], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)); + + // Idem pour les données du cours + $course = $this->getData(['course', $courseId]); + // Générer un fichier dans le dossier de l'espace + file_put_contents(self::DATA_DIR . $courseId . '/course.json', json_encode([$courseId => $course], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)); // Idem pour la catégorie - $enrolment = $this->getData(['category']); + $category = $this->getData(['category', $this->getData(['course', $courseId, 'category'])]); // Générer un fichier dans le dossier de l'espace - file_put_contents(self::DATA_DIR . $courseId . '/enrolment.json', json_encode($enrolment, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)); + file_put_contents(self::DATA_DIR . $courseId . '/category.json', json_encode([$this->getData(['course', $courseId, 'category']) => $category], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)); + // Génère une archive ZIP $this->makeZip(self::TEMP_DIR . $courseId . '-' . date('Y-m-d-H-i-s', time()) . '.zip', self::DATA_DIR . $courseId); - if (!is_dir(self::FILE_DIR . 'source/backup')){ + if (!is_dir(self::FILE_DIR . 'source/backup')) { mkdir(self::FILE_DIR . 'source/backup'); } - copy (self::TEMP_DIR . $courseId . '-' . date('Y-m-d-H-i-s', time()) . '.zip', self::FILE_DIR . 'source/backup/' . $courseId . '-' . date('Y-m-d-H-i-s', time()) . '.zip' ); + $success = false; + $message = helper::translate('Erreur : sauvegarde non générée !'); + // Transférer dans RFM + if (file_exists(self::TEMP_DIR . $courseId . '-' . date('Y-m-d-H-i-s', time()) . '.zip')) { + if (!is_dir(self::FILE_DIR . 'source/' . $courseId . '/backup/')) { + mkdir(self::FILE_DIR . 'source/' . $courseId . '/backup/'); + + } + copy(self::TEMP_DIR . $courseId . '-' . date('Y-m-d-H-i-s', time()) . '.zip', self::FILE_DIR . 'source/' . $courseId . '/backup/' . $courseId . '-' . date('Y-m-d-H-i-s', time()) . '.zip'); + unlink(self::TEMP_DIR . $courseId . '-' . date('Y-m-d-H-i-s', time()) . '.zip'); + $success = true; + $message = helper::translate('Sauvegarde générée avec succès'); + } // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . 'course', - 'state' => true, - 'notification' => helper::translate('Sauvegarde générée avec succès'), + 'state' => $success, + 'notification' => $message, ]); }