From ec15740d23113cbdaac2756c5f2aa3e28a113ddd Mon Sep 17 00:00:00 2001 From: fredtempez Date: Wed, 6 Nov 2019 19:08:59 +0100 Subject: [PATCH] [10.0.73.dev] nouvel algo d'importation en test --- core/core.php | 29 ++++++------- core/module/config/config.php | 77 ++++++++++++++++++++--------------- 2 files changed, 57 insertions(+), 49 deletions(-) diff --git a/core/core.php b/core/core.php index 332c3c10..3ad1dd78 100644 --- a/core/core.php +++ b/core/core.php @@ -31,7 +31,7 @@ class common { const TEMP_DIR = 'site/tmp/'; // Numéro de version - const ZWII_VERSION = '10.0.72.dev'; + const ZWII_VERSION = '10.0.73.dev'; public static $actions = []; public static $coreModuleIds = [ @@ -168,7 +168,8 @@ class common { // Import version 9 if (file_exists(self::DATA_DIR . 'core.json') === true && - $this->getData(['core','dataVersion']) < 10000) { + $this->getData(['core','dataVersion']) < 10000 && + $this->getData(['core','dataVersion']) !== 0) { // Retour d'importation ne pas déclencher l'import $this->importData(); common::$importNotices [] = "Importation réalisée avec succès" ; //echo ''; @@ -615,8 +616,7 @@ class common { * Import des données de la version 9 * Convertit un fichier de données data.json puis le renomme */ - public function importData() { - + public function importData($keepUsers = false) { // Trois tentatives de lecture for($i = 0; $i < 3; $i++) { $tempData=json_decode(file_get_contents(self::DATA_DIR.'core.json'), true); @@ -643,28 +643,23 @@ class common { rmdir (self::DATA_DIR . $itemKey); } } + // Dossier de langues if (!file_exists(self::DATA_DIR . '/' . 'fr')) { mkdir (self::DATA_DIR . '/' . 'fr'); } + // Ecriture des données $this->setData(['config',$tempData['config']]); $this->setData(['core',$tempData['core']]); - - // Import des users - if (isset($_POST['configManageImportUser']) === true ) { - if ($_POST['configManageImportUser'] === false) { // user non préservés - $this->setData(['user',$tempData['user']]); // On importe les nouveaux - } - unset($_POST['configManageImportUser']); - } else { - $this->setData(['user',$tempData['user']]); - } - - $this->setData(['page',$tempData['page']]); $this->setData(['module',$tempData['module']]); - $this->setData(['theme',$tempTheme['theme']]); + // Import des users sauvegardés si option active + if ($keepUsers === false) { + $this->setData(['user',$tempData['user']]); + } + $this->setData(['theme',$tempTheme['theme']]); + // Nettoyage du fichier de thème pour forcer une régénération if (!file_exists(self::DATA_DIR . '/theme.css')) { // On ne sait jamais unlink (self::DATA_DIR . '/theme.css'); diff --git a/core/module/config/config.php b/core/module/config/config.php index 352f5c80..d911a4e8 100755 --- a/core/module/config/config.php +++ b/core/module/config/config.php @@ -290,48 +290,60 @@ class config extends common { $stat = $zip->statIndex( $i ); $files [] = ( basename( $stat['name'] )); } + + // Détermination de la version à installer + if (in_array('theme.json',$files) === true && + in_array('core.json',$files) === true && + in_array ('user.json', $files) === false ) { + // V9 pas de fichier user dans l'archive + // Stocker le choix de conserver les users installées + $version = '9'; - // Vérifier la présence des fichiers à minima theme et core (v9) - if (in_array('theme.json',$files) === true && - in_array('core.json',$files) === true) { - - // Users d'une version 10 conservés si option cochée - if (in_array('user.json',$files) === true && - $this->getInput('configManageImportUser', helper::FILTER_BOOLEAN) === true ) { + } elseif (in_array('theme.json',$files) === true && + in_array('core.json',$files) === true && + in_array ('user.json', $files) === true && + in_array ('config.json', $files) === true ) { + // V10 valide + $version = '10'; + // Option active, les users sont stockées + if ($this->getInput('configManageImportUser', helper::FILTER_BOOLEAN) === true ) { $users = $this->getData(['user']); - } else { - // V9 on transmets l'option à la fonction importData appelée par core - $_POST['configManageImportUser'] = $this->getInput('configManageImportUser', helper::FILTER_BOOLEAN); } - // Extraire le zip - $success = $zip->extractTo( '.' ); - // Fermer l'archive - $zip->close(); - // Restaurer les users originaux d'une v10 si option cochée - if (!empty($users)) { - $this->setData(['user',$users]); - } - // Message de notification - $notification = $success === true ? 'Sauvegarde importée avec succès' : 'Erreur d\'extraction'; - $notification .= ($success === true && !empty($users)) ? '
Comptes utilisateurs préservés' : '
Comptes utilisateurs importés'; - // Valeurs en sortie erreur - $this->addOutput([ - 'notification' => $notification, - 'redirect' => helper::baseUrl(), - 'state' => $success - ]); - - } else { + } else { // Version invalide // Valeurs en sortie erreur $this->addOutput([ 'notification' => 'Cette archive n\'est pas une sauvegarde valide', 'redirect' => helper::baseUrl() . 'config/manage', 'state' => false - ]); + ]); } + + // Extraire le zip + $success = $zip->extractTo( '.' ); + // Fermer l'archive + $zip->close(); + + // Restaurer les users originaux d'une v10 si option cochée + if (!empty($users) && + $version === '10' && + $this->getInput('configManageImportUser', helper::FILTER_BOOLEAN) === true) { + $this->setData(['user',$users]); + } + if ($version === '9' ) { + $this->importData($this->getInput('configManageImportUser', helper::FILTER_BOOLEAN)); + $this->setData(['core','dataVersion',0]); + } + // Message de notification + $notification = $success === true ? 'Sauvegarde importée avec succès' : 'Erreur d\'extraction'; + $redirect = $this->getInput('configManageImportUser', helper::FILTER_BOOLEAN) === true ? helper::baseUrl() : helper::baseUrl() . 'user/login/'; + // Valeurs en sortie erreur + $this->addOutput([ + 'notification' => $notification, + 'redirect' =>$redirect, + 'state' => $success + ]); } - - + // Valeurs en sortie $this->addOutput([ 'title' => 'Exporter / Importer', @@ -339,6 +351,7 @@ class config extends common { ]); } + /** * Configuration */