forked from ZwiiCMS-Team/ZwiiCampus
Backup ok
This commit is contained in:
parent
921dff5a82
commit
2abc9812dc
@ -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,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user