[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/';
// 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 '<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
* 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');

View File

@ -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)) ? '<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 {
} 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
*/