forked from ZwiiCMS-Team/ZwiiCMS
bug restauration d'un fichier vide
This commit is contained in:
parent
776d85895c
commit
711f702c7c
@ -1,8 +1,10 @@
|
||||
# Changelog
|
||||
|
||||
## 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 :
|
||||
Thème :
|
||||
- Thème :
|
||||
- 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.
|
||||
- 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() {
|
||||
// Soumission du formulaire
|
||||
if($this->isPost()) {
|
||||
//if ($this->getInput('configRestoreImportFile'))
|
||||
$fileZip = $this->getInput('configRestoreImportFile');
|
||||
$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'] ));
|
||||
}
|
||||
if($this->isPost() ) {
|
||||
|
||||
$success = false;
|
||||
|
||||
// Lire la dataversion
|
||||
$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 ($this->getInput('configRestoreImportFile', null, true) ) {
|
||||
|
||||
if ($version >= 10 ) {
|
||||
// Option active, les users sont stockées
|
||||
if ($this->getInput('configRestoreImportUser', helper::FILTER_BOOLEAN) === true ) {
|
||||
$users = $this->getData(['user']);
|
||||
$fileZip = $this->getInput('configRestoreImportFile');
|
||||
$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
|
||||
]);
|
||||
}
|
||||
} 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();
|
||||
$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
|
||||
$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 ) {
|
||||
// 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
|
||||
if (!empty($users) &&
|
||||
$version >= 10 &&
|
||||
$this->getInput('configRestoreImportUser', helper::FILTER_BOOLEAN) === true) {
|
||||
$this->setData(['user',$users]);
|
||||
// Restaurer les users originaux d'une v10 si option cochée
|
||||
if (!empty($users) &&
|
||||
$version >= 10 &&
|
||||
$this->getInput('configRestoreImportUser', helper::FILTER_BOOLEAN) === true) {
|
||||
$this->setData(['user',$users]);
|
||||
}
|
||||
}
|
||||
// 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/';
|
||||
// Valeurs en sortie erreur
|
||||
$this->addOutput([
|
||||
|
@ -14,11 +14,6 @@ $( document).ready(function() {
|
||||
$("#configBackupForm").submit( function(e){
|
||||
$("#configBackupSubmit").addClass("disabled").prop("disabled", true);
|
||||
e.preventDefault();
|
||||
/**
|
||||
if ($("input[name=configBackupOption]").is(':checked')) {
|
||||
$('body').css('cursor', 'wait');
|
||||
}
|
||||
*/
|
||||
var url = "<?php echo helper::baseUrl() . $this->getUrl(0); ?>/backup";
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
@ -38,11 +33,19 @@ $( document).ready(function() {
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Aspect de la souris
|
||||
*/
|
||||
$("#configBackupSubmit").click(function(event) {
|
||||
$('body').css('cursor', 'wait');
|
||||
* Confirmation de sauvegarde complète
|
||||
*/
|
||||
$("#configBackupSubmit").on("click", function() {
|
||||
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
Block a user