120102 bug zip folder + modules enum

This commit is contained in:
Fred Tempez 2023-01-31 22:52:07 +01:00
parent 87f65862fb
commit e0d47d68c4
6 changed files with 91 additions and 78 deletions

View File

@ -1285,7 +1285,7 @@ class common
if (!$file->isDir()) { if (!$file->isDir()) {
$filePath = $file->getRealPath(); $filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen(realpath($folder)) + 1); $relativePath = substr($filePath, strlen(realpath($folder)) + 1);
$zip->addFile($filePath, $relativePath); $zip->addFile($filePath, str_replace("\\", "/", $relativePath));
} }
} }
$zip->close(); $zip->close();

View File

@ -628,6 +628,7 @@ class config extends common
$fileName = self::DATA_DIR . 'journal.log'; $fileName = self::DATA_DIR . 'journal.log';
if (file_exists($fileName)) { if (file_exists($fileName)) {
ob_start(); ob_start();
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream'); header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $fileName . '"'); header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Content-Length: ' . filesize($fileName)); header('Content-Length: ' . filesize($fileName));
@ -663,7 +664,9 @@ class config extends common
$data .= $key . ';' . $item['ip'] . ';' . $item['connectFail'] . PHP_EOL; $data .= $key . ';' . $item['ip'] . ';' . $item['connectFail'] . PHP_EOL;
} }
file_put_contents($fileName, $data, FILE_APPEND); file_put_contents($fileName, $data, FILE_APPEND);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream'); header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
header('Content-Disposition: attachment; filename="' . $fileName . '"'); header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Content-Length: ' . filesize($fileName)); header('Content-Length: ' . filesize($fileName));
ob_clean(); ob_clean();

View File

@ -20,13 +20,18 @@ class plugin extends common
public static $actions = [ public static $actions = [
'index' => self::GROUP_ADMIN, 'index' => self::GROUP_ADMIN,
'delete' => self::GROUP_ADMIN, 'delete' => self::GROUP_ADMIN,
'save' => self::GROUP_ADMIN, // Sauvegarde le module dans un fichier ZIP ou dans le gestionnaire 'save' => self::GROUP_ADMIN,
'dataExport' => self::GROUP_ADMIN, // Fonction muette d'exportation // Sauvegarde le module dans un fichier ZIP ou dans le gestionnaire
'dataImport' => self::GROUP_ADMIN, // les données d'un module 'dataExport' => self::GROUP_ADMIN,
// Fonction muette d'exportation
'dataImport' => self::GROUP_ADMIN,
// les données d'un module
'dataDelete' => self::GROUP_ADMIN, 'dataDelete' => self::GROUP_ADMIN,
'store' => self::GROUP_ADMIN, 'store' => self::GROUP_ADMIN,
'item' => self::GROUP_ADMIN, // détail d'un objet 'item' => self::GROUP_ADMIN,
'upload' => self::GROUP_ADMIN, // Téléverser catalogue // détail d'un objet
'upload' => self::GROUP_ADMIN,
// Téléverser catalogue
'uploadItem' => self::GROUP_ADMIN // Téléverser par archive 'uploadItem' => self::GROUP_ADMIN // Téléverser par archive
]; ];
@ -370,7 +375,8 @@ class plugin extends common
implode(', ', array_keys($pagesInfos, $key)), implode(', ', array_keys($pagesInfos, $key)),
template::button('moduleExport' . $key, [ template::button('moduleExport' . $key, [
'class' => $class, 'class' => $class,
'href' => helper::baseUrl() . $this->getUrl(0) . '/uploadItem/' . $key . '/' . $_SESSION['csrf'], // appel de fonction vaut exécution, utiliser un paramètre 'href' => helper::baseUrl() . $this->getUrl(0) . '/uploadItem/' . $key . '/' . $_SESSION['csrf'],
// appel de fonction vaut exécution, utiliser un paramètre
'value' => $ico, 'value' => $ico,
'help' => $help 'help' => $help
]) ])
@ -515,17 +521,20 @@ class plugin extends common
$infoModules[$pagesInfos[$keyi18n][$keyPage]['moduleId']]['version'], $infoModules[$pagesInfos[$keyi18n][$keyPage]['moduleId']]['version'],
template::flag($keyi18n, '20px') . '&nbsp<a href ="' . helper::baseUrl() . $keyPage . '" target="_blank">' . $pagesInfos[$keyi18n][$keyPage]['title'] . ' (' . $keyPage . ')</a>', template::flag($keyi18n, '20px') . '&nbsp<a href ="' . helper::baseUrl() . $keyPage . '" target="_blank">' . $pagesInfos[$keyi18n][$keyPage]['title'] . ' (' . $keyPage . ')</a>',
template::button('dataExport' . $keyPage, [ template::button('dataExport' . $keyPage, [
'href' => helper::baseUrl() . $this->getUrl(0) . '/dataExport/filemanager/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'], // appel de fonction vaut exécution, utiliser un paramètre 'href' => helper::baseUrl() . $this->getUrl(0) . '/dataExport/filemanager/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'],
// appel de fonction vaut exécution, utiliser un paramètre
'value' => template::ico('download-cloud'), 'value' => template::ico('download-cloud'),
'help' => 'Sauvegarder les données du module dans le gestionnaire de fichiers' 'help' => 'Sauvegarder les données du module dans le gestionnaire de fichiers'
]), ]),
template::button('dataExport' . $keyPage, [ template::button('dataExport' . $keyPage, [
'href' => helper::baseUrl() . $this->getUrl(0) . '/dataExport/download/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'], // appel de fonction vaut exécution, utiliser un paramètre 'href' => helper::baseUrl() . $this->getUrl(0) . '/dataExport/download/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'],
// appel de fonction vaut exécution, utiliser un paramètre
'value' => template::ico('download'), 'value' => template::ico('download'),
'help' => 'Sauvegarder et télécharger les données du module' 'help' => 'Sauvegarder et télécharger les données du module'
]), ]),
template::button('dataDelete' . $keyPage, [ template::button('dataDelete' . $keyPage, [
'href' => helper::baseUrl() . $this->getUrl(0) . '/dataDelete/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'], // appel de fonction vaut exécution, utiliser un paramètre 'href' => helper::baseUrl() . $this->getUrl(0) . '/dataDelete/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'],
// appel de fonction vaut exécution, utiliser un paramètre
'value' => template::ico('trash'), 'value' => template::ico('trash'),
'class' => 'buttonRed dataDelete', 'class' => 'buttonRed dataDelete',
'help' => 'Détacher le module de la page', 'help' => 'Détacher le module de la page',
@ -599,15 +608,16 @@ class plugin extends common
break; break;
case 'download': case 'download':
default: default:
// Téléchargement du ZIP
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream'); header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
header('Content-Disposition: attachment; filename="' . $fileName . '"'); header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Content-Length: ' . filesize(self::TEMP_DIR . $fileName)); header('Content-Length: ' . filesize(self::TEMP_DIR . $fileName));
ob_clean();
ob_end_flush();
readfile(self::TEMP_DIR . $fileName); readfile(self::TEMP_DIR . $fileName);
// Nettoyage // Nettoyage du dossier
unlink(self::TEMP_DIR . $fileName); unlink(self::TEMP_DIR . $fileName);
$this->removeDir($tmpFolder);
exit(); exit();
} }
} }
@ -675,7 +685,7 @@ class plugin extends common
$moduleId = $this->getUrl(4); $moduleId = $this->getUrl(4);
$pageId = $this->getUrl(5); $pageId = $this->getUrl(5);
// DOnnèes du module de la page sléectionnée // DOnnèes du module de la page sélectionnée
$moduleData = $this->getData(['module', $pageId]); $moduleData = $this->getData(['module', $pageId]);
// Descripteur du module // Descripteur du module
@ -696,7 +706,7 @@ class plugin extends common
$fileName = $lang . '-' . $moduleId . '-' . $pageId . '.zip'; $fileName = $lang . '-' . $moduleId . '-' . $pageId . '.zip';
$this->makeZip(self::TEMP_DIR . $fileName, $tmpFolder); $this->makeZip(self::TEMP_DIR . $fileName, $tmpFolder);
// Gestin de l'action // Gestion de l'action
if ($success) { if ($success) {
switch ($action) { switch ($action) {
case 'filemanager': case 'filemanager':
@ -719,15 +729,15 @@ class plugin extends common
case 'download': case 'download':
default: default:
if (file_exists(self::TEMP_DIR . $fileName)) { if (file_exists(self::TEMP_DIR . $fileName)) {
ob_start(); // Téléchargement du ZIP
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream'); header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . self::TEMP_DIR . $fileName . '"'); header('Content-Transfer-Encoding: binary');
header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Content-Length: ' . filesize(self::TEMP_DIR . $fileName)); header('Content-Length: ' . filesize(self::TEMP_DIR . $fileName));
ob_clean();
ob_end_flush();
readfile(self::TEMP_DIR . $fileName); readfile(self::TEMP_DIR . $fileName);
// Nettoyage du dossier
unlink(self::TEMP_DIR . $fileName); unlink(self::TEMP_DIR . $fileName);
$this->removeDir($tmpFolder);
exit(); exit();
} }
} }

View File

@ -1 +1 @@
{"name":"form","realName":"Formulaire","version":"3.3","update":"0.0","delete":true,"dataDirectory":""} {"name":"form","realName":"Formulaire","version":"3.4","update":"0.0","delete":true,"dataDirectory":""}

View File

@ -1 +1 @@
{"name":"gallery","realName":"Galerie","version":"3.61","update":"0.0","delete":true,"dataDirectory":"site\/data\/gallery\/"} {"name":"gallery","realName":"Galerie","version":"3.7","update":"0.0","delete":true,"dataDirectory":"site\/data\/gallery\/"}

View File

@ -1 +1 @@
{"name":"redirection","realName":"Redirection","version":"1.5","update":"0.0","delete":true,"dataDirectory":""} {"name":"redirection","realName":"Redirection","version":"1.6","update":"0.0","delete":true,"dataDirectory":""}