|
|
|
@ -59,8 +59,8 @@ class SpipArchives
|
|
|
|
|
$code = in_array($this->codeErreur, array_keys($this->erreurs)) ? $this->codeErreur : 1;
|
|
|
|
|
|
|
|
|
|
$this->codeErreur = $code;
|
|
|
|
|
if ($this->codeErreur!==1 or !$this->messageErreur) {
|
|
|
|
|
$this->messageErreur = 'archives:'.$this->erreurs[$code];
|
|
|
|
|
if ($this->codeErreur !== 1 or !$this->messageErreur) {
|
|
|
|
|
$this->messageErreur = 'archives:' . $this->erreurs[$code];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $code;
|
|
|
|
@ -174,9 +174,11 @@ class SpipArchives
|
|
|
|
|
|
|
|
|
|
$total = $paths[0][''];
|
|
|
|
|
$i = 0;
|
|
|
|
|
while (isset($paths[$i])
|
|
|
|
|
while (
|
|
|
|
|
isset($paths[$i])
|
|
|
|
|
and count($paths[$i]) <= 1
|
|
|
|
|
and array_values($paths[$i]) == [$total]) {
|
|
|
|
|
and array_values($paths[$i]) == [$total]
|
|
|
|
|
) {
|
|
|
|
|
$i++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -225,9 +227,11 @@ class SpipArchives
|
|
|
|
|
$ok = $zip->extract(
|
|
|
|
|
PCLZIP_OPT_PATH,
|
|
|
|
|
$destination,
|
|
|
|
|
PCLZIP_OPT_SET_CHMOD, _SPIP_CHMOD,
|
|
|
|
|
PCLZIP_OPT_SET_CHMOD,
|
|
|
|
|
_SPIP_CHMOD,
|
|
|
|
|
PCLZIP_OPT_REPLACE_NEWER,
|
|
|
|
|
PCLZIP_OPT_REMOVE_PATH, $infos['proprietes']['racine']
|
|
|
|
|
PCLZIP_OPT_REMOVE_PATH,
|
|
|
|
|
$infos['proprietes']['racine']
|
|
|
|
|
);
|
|
|
|
|
if (!$ok or $zip->error_code < 0) {
|
|
|
|
|
$errors[] = 'deballer() erreur zip ' . $zip->error_code . ' pour paquet: ' . $this->fichierArchive;
|
|
|
|
@ -239,10 +243,13 @@ class SpipArchives
|
|
|
|
|
$ok = $zip->extract(
|
|
|
|
|
PCLZIP_OPT_PATH,
|
|
|
|
|
$destination,
|
|
|
|
|
PCLZIP_OPT_SET_CHMOD, _SPIP_CHMOD,
|
|
|
|
|
PCLZIP_OPT_SET_CHMOD,
|
|
|
|
|
_SPIP_CHMOD,
|
|
|
|
|
PCLZIP_OPT_REPLACE_NEWER,
|
|
|
|
|
PCLZIP_OPT_REMOVE_PATH, $infos['proprietes']['racine'],
|
|
|
|
|
PCLZIP_OPT_BY_NAME, $fichier
|
|
|
|
|
PCLZIP_OPT_REMOVE_PATH,
|
|
|
|
|
$infos['proprietes']['racine'],
|
|
|
|
|
PCLZIP_OPT_BY_NAME,
|
|
|
|
|
$fichier
|
|
|
|
|
);
|
|
|
|
|
if (!$ok or $zip->error_code < 0) {
|
|
|
|
|
$errors[] = "deballer() Fichier $fichier: erreur zip " . $zip->error_code . ' pour paquet: ' . $this->fichierArchive;
|
|
|
|
@ -256,15 +263,15 @@ class SpipArchives
|
|
|
|
|
case 'tar':
|
|
|
|
|
case 'tgz':
|
|
|
|
|
include_spip('inc/pcltar');
|
|
|
|
|
if (!$fichiers){
|
|
|
|
|
if (!$fichiers) {
|
|
|
|
|
$ok = PclTarExtract($this->fichierArchive, $destination, $infos['proprietes']['racine'], $this->modeCompression);
|
|
|
|
|
if ($ok === 0){
|
|
|
|
|
if ($ok === 0) {
|
|
|
|
|
$errors[] = 'deballer() erreur tar ' . PclErrorString() . ' pour paquet: ' . $this->fichierArchive;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
$ok = PclTarExtractList($this->fichierArchive, $fichiers, $destination, $infos['proprietes']['racine'], $this->modeCompression);
|
|
|
|
|
if ($ok === 0){
|
|
|
|
|
if ($ok === 0) {
|
|
|
|
|
$errors[] = 'deballer() erreur tar ' . PclErrorString() . ' pour paquet: ' . $this->fichierArchive;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -323,7 +330,7 @@ class SpipArchives
|
|
|
|
|
);
|
|
|
|
|
if (!$v_list or $zip->error_code < 0) {
|
|
|
|
|
$this->codeErreur = 1;
|
|
|
|
|
$this->messageErreur = "emballer() : Echec creation du zip " . $zip->error_code . ' pour paquet: ' . $this->fichierArchive;
|
|
|
|
|
$this->messageErreur = 'emballer() : Echec creation du zip ' . $zip->error_code . ' pour paquet: ' . $this->fichierArchive;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -333,13 +340,12 @@ class SpipArchives
|
|
|
|
|
case 'tgz':
|
|
|
|
|
include_spip('inc/pcltar');
|
|
|
|
|
|
|
|
|
|
$ok = PclTarCreate($this->fichierArchive, $fichiers, $this->modeCompression, "", $racine);
|
|
|
|
|
if ($ok === 0){
|
|
|
|
|
$ok = PclTarCreate($this->fichierArchive, $fichiers, $this->modeCompression, '', $racine);
|
|
|
|
|
if ($ok === 0) {
|
|
|
|
|
$this->codeErreur = 1;
|
|
|
|
|
$this->messageErreur = "emballer() : Echec creation du ".$this->modeCompression. " " . PclErrorString() . ' pour paquet: ' . $this->fichierArchive;
|
|
|
|
|
$this->messageErreur = 'emballer() : Echec creation du ' . $this->modeCompression . ' ' . PclErrorString() . ' pour paquet: ' . $this->fichierArchive;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// verifier que le fichier existe bien
|
|
|
|
@ -376,7 +382,7 @@ class SpipArchives
|
|
|
|
|
$ok = $zip->delete(PCLZIP_OPT_BY_NAME, $fichiers);
|
|
|
|
|
if (!$ok or $zip->error_code < 0) {
|
|
|
|
|
$this->codeErreur = 1;
|
|
|
|
|
$this->messageErreur = "retirer() : Echec retirer fichiers ".json_encode($fichiers). " " . $zip->error_code . ' pour paquet: ' . $this->fichierArchive;
|
|
|
|
|
$this->messageErreur = 'retirer() : Echec retirer fichiers ' . json_encode($fichiers) . ' ' . $zip->error_code . ' pour paquet: ' . $this->fichierArchive;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
@ -385,9 +391,9 @@ class SpipArchives
|
|
|
|
|
case 'tgz':
|
|
|
|
|
include_spip('inc/pcltar');
|
|
|
|
|
$ok = PclTarDelete($this->fichierArchive, $fichiers, $this->modeCompression);
|
|
|
|
|
if ($ok === 0){
|
|
|
|
|
if ($ok === 0) {
|
|
|
|
|
$this->codeErreur = 1;
|
|
|
|
|
$this->messageErreur = "retirer() : Echec retirer fichiers ".json_encode($fichiers). " " . PclErrorString() . ' pour paquet: ' . $this->fichierArchive;
|
|
|
|
|
$this->messageErreur = 'retirer() : Echec retirer fichiers ' . json_encode($fichiers) . ' ' . PclErrorString() . ' pour paquet: ' . $this->fichierArchive;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|