Backup ok

This commit is contained in:
Fred Tempez 2024-01-04 16:24:00 +01:00
parent 921dff5a82
commit 2abc9812dc

View File

@ -35,7 +35,7 @@ class course extends common
'userHistory' => self::GROUP_EDITOR, 'userHistory' => self::GROUP_EDITOR,
'usersHistoryExport' => self::GROUP_EDITOR, 'usersHistoryExport' => self::GROUP_EDITOR,
'userHistoryExport' => self::GROUP_EDITOR, 'userHistoryExport' => self::GROUP_EDITOR,
'courseBackup' =>self::GROUP_ADMIN, 'courseBackup' => self::GROUP_ADMIN,
]; ];
public static $courseAccess = [ public static $courseAccess = [
@ -96,7 +96,7 @@ class course extends common
self::$courses[] = [ self::$courses[] = [
$courseValue['title'], $courseValue['title'],
//$author, //$author,
'<a href="' . $categorieUrl . '" target="_blank">' . $description. '</a>', '<a href="' . $categorieUrl . '" target="_blank">' . $description . '</a>',
template::button('categoryUser' . $courseId, [ template::button('categoryUser' . $courseId, [
'href' => helper::baseUrl() . 'course/users/' . $courseId, 'href' => helper::baseUrl() . 'course/users/' . $courseId,
'value' => template::ico('users'), 'value' => template::ico('users'),
@ -320,7 +320,7 @@ class course extends common
} }
// Dossier du gestionnaire de fichier // 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); $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 // Liste des pages contenues dans cet espace et exclure les barres et les pages masquées
$sumPages = 0; $sumPages = 0;
$pages = json_decode(file_get_contents(self::DATA_DIR . $courseId . '/page.json'), true); $pages = json_decode(file_get_contents(self::DATA_DIR . $courseId . '/page.json'), true);
$pages = $pages ['page']; $pages = $pages['page'];
foreach ($pages as $pageId => $pageData) { foreach ($pages as $pageId => $pageData) {
if ($pageData['position'] > 0) { if ($pageData['position'] > 0) {
$sumPages++; $sumPages++;
@ -1002,7 +1002,7 @@ class course extends common
]; ];
} }
} }
$floorTime = 99999999999; $floorTime = 99999999999;
$topTime = 0; $topTime = 0;
@ -1026,16 +1026,16 @@ class course extends common
helper::dateUTF8('%d %B %Y %H:%M', $times) helper::dateUTF8('%d %B %Y %H:%M', $times)
]; ];
$floorTime = $floorTime < $times ? $floorTime : $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['floor'] = helper::dateUTF8('%d %B %Y %H:%M', $floorTime);
self::$userStat['top'] = helper::dateUTF8('%d %B %Y %H:%M',$topTime); self::$userStat['top'] = helper::dateUTF8('%d %B %Y %H:%M', $topTime);
$d = $topTime - $floorTime; $d = $topTime - $floorTime;
$d_hours = floor($d / 3600); $d_hours = floor($d / 3600);
$d_minutes = floor(($d % 3600) / 60); $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 // Valeurs en sortie
$this->addOutput([ $this->addOutput([
@ -1054,7 +1054,7 @@ class course extends common
$courseId = $this->getUrl(2); $courseId = $this->getUrl(2);
self::$courseUsers = [ 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 // 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'])], $pages[$this->getData(['enrolment', $courseId, $userId, 'lastPageView'])],
helper::dateUTF8('%d/%d/%Y', $this->getData(['enrolment', $courseId, $userId, 'datePageView'])), helper::dateUTF8('%d/%d/%Y', $this->getData(['enrolment', $courseId, $userId, 'datePageView'])),
helper::dateUTF8('%H:%M', $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 // Synthèse des historiques
@ -1149,7 +1149,7 @@ class course extends common
$courseId = $this->getUrl(2); $courseId = $this->getUrl(2);
$userId = $this->getUrl(3); $userId = $this->getUrl(3);
$history = $this->getData(['enrolment', $courseId, $userId, 'history']); $history = $this->getData(['enrolment', $courseId, $userId, 'history']);
self::$userHistory= [ self::$userHistory = [
0 => ['Ordre', 'PageId', 'Page Titre', 'Consultation Date', 'Consultation Heure'] 0 => ['Ordre', 'PageId', 'Page Titre', 'Consultation Date', 'Consultation Heure']
]; ];
@ -1330,33 +1330,52 @@ class course extends common
* Sauvegarde d'un cours sans option * Sauvegarde d'un cours sans option
*/ */
public function courseBackup() { public function courseBackup()
{
$courseId = $this->getUrl(2); $courseId = $this->getUrl(2);
// Participants avec historiques // Participants avec historiques
$enrolment = $this->getData(['enrolment', $courseId]); $enrolment = $this->getData(['enrolment', $courseId]);
// Générer un fichier dans le dossier de l'espace // 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 // 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 // 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 // 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); $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'); 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 // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl() . 'course', 'redirect' => helper::baseUrl() . 'course',
'state' => true, 'state' => $success,
'notification' => helper::translate('Sauvegarde générée avec succès'), 'notification' => $message,
]); ]);
} }