Plugin data export import WIP

This commit is contained in:
Fred Tempez 2022-10-16 17:35:27 +02:00
parent e6a0b3c84b
commit a6a37a4fc8

View File

@ -569,31 +569,34 @@ class plugin extends common
mkdir($tmpFolder, 0755); mkdir($tmpFolder, 0755);
} }
$target = $this->getUrl(2);
$moduleId = $this->getUrl(3);
// Descripteur de l'archive // Descripteur de l'archive
$infoModule = helper::getModules(); $infoModule = helper::getModules();
//Nom de l'archive //Nom de l'archive
$fileName = $this->getUrl(3) . $infoModule [$this->getUrl(3)]['version'] . '.zip'; $fileName = $moduleId . $infoModule[$moduleId]['version'] . '.zip';
// Création du descripteur si absent // Création du descripteur si absent
if (!file_exists(self::MODULE_DIR . $this->getUrl(3) . '/enum.json')) { if (!file_exists(self::MODULE_DIR . $moduleId . '/enum.json')) {
$success = file_put_contents(self::MODULE_DIR . $this->getUrl(3) . '/enum.json', json_encode([$this->getUrl(3) => $infoModule[$this->getUrl(3)]])); $success = file_put_contents(self::MODULE_DIR . $moduleId . '/enum.json', json_encode([$moduleId => $infoModule[$moduleId]]));
} }
// Construire l'archive // Construire l'archive
$this->makeZip($tmpFolder . '/' . $fileName, self::MODULE_DIR . $this->getUrl(3)); $this->makeZip($tmpFolder . '/' . $fileName, self::MODULE_DIR . $moduleId);
switch ($this->getUrl(2)) { switch ($target) {
case 'filemanager': case 'filemanager':
if (!file_exists(self::FILE_DIR . 'source/modules')) { if (!file_exists(self::FILE_DIR . 'source/modules')) {
mkdir(self::FILE_DIR . 'source/modules'); mkdir(self::FILE_DIR . 'source/modules');
} }
$success .= copy($tmpFolder . '/' . $fileName, self::FILE_DIR . 'source/modules/' . $this->getUrl(3) . '.zip'); $success .= copy($tmpFolder . '/' . $fileName, self::FILE_DIR . 'source/modules/' . $moduleId . '.zip');
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl() . 'plugin', 'redirect' => helper::baseUrl() . 'plugin',
'notification' => $success ? $this->getUrl(3) . helper::translate('Archive copiée dans le dossier Module du gestionnaire de fichier') : helper::translate('Erreur de copie'), 'notification' => $success ? $moduleId . helper::translate('Archive copiée dans le dossier Module du gestionnaire de fichier') : helper::translate('Erreur de copie'),
'state' => $success 'state' => $success
]); ]);
// Nettoyage // Nettoyage
@ -673,22 +676,29 @@ class plugin extends common
mkdir($tmpFolder, 0755); mkdir($tmpFolder, 0755);
} }
$moduleId = $this->getUrl(3);
$pageId = $this->getUrl(4);
// Copie des infos sur le module // DOnnèes du module de la page sléectionnée
$modulesData = json_decode(file_get_contents(self::DATA_DIR . $this->getUrl(2) . '/module.json'), true); $moduleData = $this->getData(['module', $pageId]);
$moduleData = $modulesData['module'][$this->getUrl(4)];
// Descripteur du module
$infoModules = helper::getModules();
$infoModule = $infoModules[$moduleId];
// Copier les données et le descripteur
$success = file_put_contents($tmpFolder . '/module.json', json_encode($moduleData)); $success = file_put_contents($tmpFolder . '/module.json', json_encode($moduleData));
$success .= file_put_contents($tmpFolder . '/enum.json', json_encode([$moduleData]));
// Le dossier du module s'il existe // Le dossier du module s'il existe
if (is_dir(self::DATA_DIR . $this->getUrl(3) . '/' . $this->getUrl(4))) { if (is_dir(self::DATA_DIR . $pageId . '/' . $moduleId)) {
// Copier le dossier des données // Copier le dossier des données
$success .= $this->copyDir(self::DATA_DIR . $this->getUrl(3) . '/' . $this->getUrl(4), $tmpFolder); $success .= $this->copyDir(self::DATA_DIR . $pageId . '/' . $moduleId, $tmpFolder);
} }
// création du zip // création du zip
if ($success) { if ($success) {
$fileName = $this->getUrl(2) . '-' . $this->getUrl(3) . '-' . $this->getUrl(4) . '.zip'; $fileName = $this->getUrl(2) . '-' . $moduleId . '-' . $pageId . '.zip';
$this->makeZip($fileName, $tmpFolder); $this->makeZip($fileName, $tmpFolder);
if (file_exists($fileName)) { if (file_exists($fileName)) {
ob_start(); ob_start();