bug restauration d'un fichier vide
This commit is contained in:
parent
776d85895c
commit
711f702c7c
|
@ -1,8 +1,10 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## Version 11.2.00
|
## Version 11.2.00
|
||||||
|
- Correction :
|
||||||
|
Configuration, restauration d'une archive : La validation du formulaire sans avoir sélectionné de fichier de sauvegarde provoque le crash du site.
|
||||||
- Modifications :
|
- Modifications :
|
||||||
Thème :
|
- Thème :
|
||||||
- Disposition des options de configuration du site.
|
- Disposition des options de configuration du site.
|
||||||
- Bannière : le contenu peut être personnalisé à l'aide d'un éditeur. La bannière au-dessus du site peut s'étendre sur la largeur de la page.
|
- Bannière : le contenu peut être personnalisé à l'aide d'un éditeur. La bannière au-dessus du site peut s'étendre sur la largeur de la page.
|
||||||
- Pages : il est désormais possible de donner un nom de page court qui sera utilisé dans le menu du site, dans les abrres latérales et dans les sélecteurs de page (éditeur / lien). En revanche le nom de la page affiché en haut de celle-ci est inchangé. Dans la plupart des cas le titre court sera identique au titre.
|
- Pages : il est désormais possible de donner un nom de page court qui sera utilisé dans le menu du site, dans les abrres latérales et dans les sélecteurs de page (éditeur / lien). En revanche le nom de la page affiché en haut de celle-ci est inchangé. Dans la plupart des cas le titre court sera identique au titre.
|
||||||
|
|
|
@ -283,91 +283,96 @@ class config extends common {
|
||||||
*/
|
*/
|
||||||
public function restore() {
|
public function restore() {
|
||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if($this->isPost() ) {
|
||||||
//if ($this->getInput('configRestoreImportFile'))
|
|
||||||
$fileZip = $this->getInput('configRestoreImportFile');
|
$success = false;
|
||||||
$file_parts = pathinfo($fileZip);
|
|
||||||
$folder = date('Y-m-d-h-i-s', time());
|
|
||||||
$zip = new ZipArchive();
|
|
||||||
if ($file_parts['extension'] !== 'zip') {
|
|
||||||
// Valeurs en sortie erreur
|
|
||||||
$this->addOutput([
|
|
||||||
'notification' => 'Le fichier n\'est pas une archive valide',
|
|
||||||
'redirect' => helper::baseUrl() . 'config/restore',
|
|
||||||
'state' => false
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
$successOpen = $zip->open(self::FILE_DIR . 'source/' . $fileZip);
|
|
||||||
if ($successOpen === FALSE) {
|
|
||||||
// Valeurs en sortie erreur
|
|
||||||
$this->addOutput([
|
|
||||||
'notification' => 'Impossible de lire l\'archive',
|
|
||||||
'redirect' => helper::baseUrl() . 'config/restore',
|
|
||||||
'state' => false
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
// Lire le contenu de l'archive dans le tableau files
|
|
||||||
for( $i = 0; $i < $zip->numFiles; $i++ ){
|
|
||||||
$stat = $zip->statIndex( $i );
|
|
||||||
$files [] = ( basename( $stat['name'] ));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Lire la dataversion
|
if ($this->getInput('configRestoreImportFile', null, true) ) {
|
||||||
$tmpDir = uniqid(4);
|
|
||||||
$success = $zip->extractTo( self::TEMP_DIR . $tmpDir );
|
|
||||||
$data = file_get_contents( self::TEMP_DIR . $tmpDir . '/data/core.json');
|
|
||||||
$obj = json_decode($data);
|
|
||||||
$dataVersion = strval ($obj->core->dataVersion);
|
|
||||||
switch (strlen($dataVersion)) {
|
|
||||||
case 4:
|
|
||||||
if (substr($dataVersion,0,1) === '9' ) {
|
|
||||||
$version = 9;
|
|
||||||
} else {
|
|
||||||
$version = 0;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
$version = substr($dataVersion,0,2);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$version = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
$this->removeDir(self::TEMP_DIR . $tmpDir );
|
|
||||||
|
|
||||||
if ($version >= 10 ) {
|
$fileZip = $this->getInput('configRestoreImportFile');
|
||||||
// Option active, les users sont stockées
|
$file_parts = pathinfo($fileZip);
|
||||||
if ($this->getInput('configRestoreImportUser', helper::FILTER_BOOLEAN) === true ) {
|
$folder = date('Y-m-d-h-i-s', time());
|
||||||
$users = $this->getData(['user']);
|
$zip = new ZipArchive();
|
||||||
|
if ($file_parts['extension'] !== 'zip') {
|
||||||
|
// Valeurs en sortie erreur
|
||||||
|
$this->addOutput([
|
||||||
|
'notification' => 'Le fichier n\'est pas une archive valide',
|
||||||
|
'redirect' => helper::baseUrl() . 'config/restore',
|
||||||
|
'state' => false
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
} elseif ($version === 0) { // Version invalide
|
$successOpen = $zip->open(self::FILE_DIR . 'source/' . $fileZip);
|
||||||
// Valeurs en sortie erreur
|
if ($successOpen === FALSE) {
|
||||||
$this->addOutput([
|
// Valeurs en sortie erreur
|
||||||
'notification' => 'Cette archive n\'est pas une sauvegarde valide',
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'config/restore',
|
'notification' => 'Impossible de lire l\'archive',
|
||||||
'state' => false
|
'redirect' => helper::baseUrl() . 'config/restore',
|
||||||
]);
|
'state' => false
|
||||||
}
|
]);
|
||||||
// Préserver les comptes des utilisateurs d'une version 9 si option cochée
|
}
|
||||||
// Positionnement d'une variable de session lue au constructeurs
|
// Lire le contenu de l'archive dans le tableau files
|
||||||
if ($version === 9) {
|
for( $i = 0; $i < $zip->numFiles; $i++ ){
|
||||||
$_SESSION['KEEP_USERS'] = $this->getInput('configRestoreImportUser', helper::FILTER_BOOLEAN);
|
$stat = $zip->statIndex( $i );
|
||||||
}
|
$files [] = ( basename( $stat['name'] ));
|
||||||
// Extraire le zip ou 'site/'
|
}
|
||||||
$this->removeDir(self::DATA_DIR);
|
|
||||||
$success = $zip->extractTo( 'site/' );
|
// Lire la dataversion
|
||||||
// Fermer l'archive
|
$tmpDir = uniqid(4);
|
||||||
$zip->close();
|
$success = $zip->extractTo( self::TEMP_DIR . $tmpDir );
|
||||||
|
$data = file_get_contents( self::TEMP_DIR . $tmpDir . '/data/core.json');
|
||||||
|
$obj = json_decode($data);
|
||||||
|
$dataVersion = strval ($obj->core->dataVersion);
|
||||||
|
switch (strlen($dataVersion)) {
|
||||||
|
case 4:
|
||||||
|
if (substr($dataVersion,0,1) === '9' ) {
|
||||||
|
$version = 9;
|
||||||
|
} else {
|
||||||
|
$version = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$version = substr($dataVersion,0,2);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$version = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$this->removeDir(self::TEMP_DIR . $tmpDir );
|
||||||
|
|
||||||
|
if ($version >= 10 ) {
|
||||||
|
// Option active, les users sont stockées
|
||||||
|
if ($this->getInput('configRestoreImportUser', helper::FILTER_BOOLEAN) === true ) {
|
||||||
|
$users = $this->getData(['user']);
|
||||||
|
}
|
||||||
|
} elseif ($version === 0) { // Version invalide
|
||||||
|
// Valeurs en sortie erreur
|
||||||
|
$this->addOutput([
|
||||||
|
'notification' => 'Cette archive n\'est pas une sauvegarde valide',
|
||||||
|
'redirect' => helper::baseUrl() . 'config/restore',
|
||||||
|
'state' => false
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
// Préserver les comptes des utilisateurs d'une version 9 si option cochée
|
||||||
|
// Positionnement d'une variable de session lue au constructeurs
|
||||||
|
if ($version === 9) {
|
||||||
|
$_SESSION['KEEP_USERS'] = $this->getInput('configRestoreImportUser', helper::FILTER_BOOLEAN);
|
||||||
|
}
|
||||||
|
// Extraire le zip ou 'site/'
|
||||||
|
$this->removeDir(self::DATA_DIR);
|
||||||
|
$success = $zip->extractTo( 'site/' );
|
||||||
|
// Fermer l'archive
|
||||||
|
$zip->close();
|
||||||
|
|
||||||
|
|
||||||
// Restaurer les users originaux d'une v10 si option cochée
|
// Restaurer les users originaux d'une v10 si option cochée
|
||||||
if (!empty($users) &&
|
if (!empty($users) &&
|
||||||
$version >= 10 &&
|
$version >= 10 &&
|
||||||
$this->getInput('configRestoreImportUser', helper::FILTER_BOOLEAN) === true) {
|
$this->getInput('configRestoreImportUser', helper::FILTER_BOOLEAN) === true) {
|
||||||
$this->setData(['user',$users]);
|
$this->setData(['user',$users]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Message de notification
|
// Message de notification
|
||||||
$notification = $success === true ? 'Restauration réalisée avec succès' : 'Erreur inconnue';
|
$notification = $success === true ? 'Restauration effectuée avec succès' : 'Erreur inconnue';
|
||||||
$redirect = $this->getInput('configRestoreImportUser', helper::FILTER_BOOLEAN) === true ? helper::baseUrl() . 'config/restore' : helper::baseUrl() . 'user/login/';
|
$redirect = $this->getInput('configRestoreImportUser', helper::FILTER_BOOLEAN) === true ? helper::baseUrl() . 'config/restore' : helper::baseUrl() . 'user/login/';
|
||||||
// Valeurs en sortie erreur
|
// Valeurs en sortie erreur
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
|
|
|
@ -14,11 +14,6 @@ $( document).ready(function() {
|
||||||
$("#configBackupForm").submit( function(e){
|
$("#configBackupForm").submit( function(e){
|
||||||
$("#configBackupSubmit").addClass("disabled").prop("disabled", true);
|
$("#configBackupSubmit").addClass("disabled").prop("disabled", true);
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
/**
|
|
||||||
if ($("input[name=configBackupOption]").is(':checked')) {
|
|
||||||
$('body').css('cursor', 'wait');
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
var url = "<?php echo helper::baseUrl() . $this->getUrl(0); ?>/backup";
|
var url = "<?php echo helper::baseUrl() . $this->getUrl(0); ?>/backup";
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "POST",
|
type: "POST",
|
||||||
|
@ -38,11 +33,19 @@ $( document).ready(function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Aspect de la souris
|
* Confirmation de sauvegarde complète
|
||||||
*/
|
*/
|
||||||
$("#configBackupSubmit").click(function(event) {
|
$("#configBackupSubmit").on("click", function() {
|
||||||
$('body').css('cursor', 'wait');
|
if ($("input[name=configBackupOption]").is(':checked')) {
|
||||||
|
return core.confirm("Une sauvegarde avec le contenu du gestionnaire de fichier peut prendre du temps à générer. Confirmez-vous ?", function() {
|
||||||
|
//$(location).attr("href", _this.attr("href"));
|
||||||
|
$('body').css('cursor', 'wait');
|
||||||
|
$('form#configBackupForm').submit();
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue