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
*/