[10.0.73.dev] nouvel algo d'importation en test

This commit is contained in:
fredtempez 2019-11-06 19:08:59 +01:00
parent 96d16b5f7b
commit ec15740d23
2 changed files with 57 additions and 49 deletions

View File

@ -31,7 +31,7 @@ class common {
const TEMP_DIR = 'site/tmp/'; const TEMP_DIR = 'site/tmp/';
// Numéro de version // Numéro de version
const ZWII_VERSION = '10.0.72.dev'; const ZWII_VERSION = '10.0.73.dev';
public static $actions = []; public static $actions = [];
public static $coreModuleIds = [ public static $coreModuleIds = [
@ -168,7 +168,8 @@ class common {
// Import version 9 // Import version 9
if (file_exists(self::DATA_DIR . 'core.json') === true && 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(); $this->importData();
common::$importNotices [] = "Importation réalisée avec succès" ; common::$importNotices [] = "Importation réalisée avec succès" ;
//echo '<script>window.location.replace("' . helper::baseUrl() . $this->getData(['config','homePageId']) . '")</script>'; //echo '<script>window.location.replace("' . helper::baseUrl() . $this->getData(['config','homePageId']) . '")</script>';
@ -615,8 +616,7 @@ class common {
* Import des données de la version 9 * Import des données de la version 9
* Convertit un fichier de données data.json puis le renomme * Convertit un fichier de données data.json puis le renomme
*/ */
public function importData() { public function importData($keepUsers = false) {
// Trois tentatives de lecture // Trois tentatives de lecture
for($i = 0; $i < 3; $i++) { for($i = 0; $i < 3; $i++) {
$tempData=json_decode(file_get_contents(self::DATA_DIR.'core.json'), true); $tempData=json_decode(file_get_contents(self::DATA_DIR.'core.json'), true);
@ -643,28 +643,23 @@ class common {
rmdir (self::DATA_DIR . $itemKey); rmdir (self::DATA_DIR . $itemKey);
} }
} }
// Dossier de langues // Dossier de langues
if (!file_exists(self::DATA_DIR . '/' . 'fr')) { if (!file_exists(self::DATA_DIR . '/' . 'fr')) {
mkdir (self::DATA_DIR . '/' . 'fr'); mkdir (self::DATA_DIR . '/' . 'fr');
} }
// Ecriture des données // Ecriture des données
$this->setData(['config',$tempData['config']]); $this->setData(['config',$tempData['config']]);
$this->setData(['core',$tempData['core']]); $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(['page',$tempData['page']]);
$this->setData(['module',$tempData['module']]); $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 // 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 if (!file_exists(self::DATA_DIR . '/theme.css')) { // On ne sait jamais
unlink (self::DATA_DIR . '/theme.css'); unlink (self::DATA_DIR . '/theme.css');

View File

@ -290,48 +290,60 @@ class config extends common {
$stat = $zip->statIndex( $i ); $stat = $zip->statIndex( $i );
$files [] = ( basename( $stat['name'] )); $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) } elseif (in_array('theme.json',$files) === true &&
if (in_array('theme.json',$files) === true && in_array('core.json',$files) === true &&
in_array('core.json',$files) === true) { in_array ('user.json', $files) === true &&
in_array ('config.json', $files) === true ) {
// Users d'une version 10 conservés si option cochée // V10 valide
if (in_array('user.json',$files) === true && $version = '10';
$this->getInput('configManageImportUser', helper::FILTER_BOOLEAN) === true ) { // Option active, les users sont stockées
if ($this->getInput('configManageImportUser', helper::FILTER_BOOLEAN) === true ) {
$users = $this->getData(['user']); $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 } else { // Version invalide
$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)) ? '<br> Comptes utilisateurs préservés' : '<br> Comptes utilisateurs importés';
// Valeurs en sortie erreur
$this->addOutput([
'notification' => $notification,
'redirect' => helper::baseUrl(),
'state' => $success
]);
} else {
// Valeurs en sortie erreur // Valeurs en sortie erreur
$this->addOutput([ $this->addOutput([
'notification' => 'Cette archive n\'est pas une sauvegarde valide', 'notification' => 'Cette archive n\'est pas une sauvegarde valide',
'redirect' => helper::baseUrl() . 'config/manage', 'redirect' => helper::baseUrl() . 'config/manage',
'state' => false '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 // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'title' => 'Exporter / Importer', 'title' => 'Exporter / Importer',
@ -339,6 +351,7 @@ class config extends common {
]); ]);
} }
/** /**
* Configuration * Configuration
*/ */