Browse Source

Ticket #4845 : contrairement à l’ancien pclzip ou pcltar (avec les options qu’on leur passait),

les archives se déballent avec l’arborescence dans laquelle elles sont emballées.

Du coup les zip des plugins tombaient dans plugins/auto/{prefixe}/{version}/{prefixe}
au lieu de plugins/auto/{prefixe}/{version} précédemment.

On rétablit en déplaçant le répertoire désiré une fois l’archive décompressée
(dans un répertoire temporaire) si elle a une racine spécifiée.
pull/4846/head
Matthieu Marcillaud 8 months ago
parent
commit
25dbb0b37b
  1. 17
      teleporter/http_deballe_tgz.php
  2. 17
      teleporter/http_deballe_zip.php

17
teleporter/http_deballe_tgz.php

@ -130,10 +130,21 @@ function teleporter_http_charger_tgz($quoi = []) {
if (is_dir($target)) {
supprimer_repertoire($target);
}
// mais creer le repertoire vide
$target = sous_repertoire(dirname($target), basename($target));
if (!$zip->deballer($target)) {
if (!$racine) {
// mais creer le repertoire vide
$target = sous_repertoire(dirname($target), basename($target));
$ok = $zip->deballer($target);
} else {
$tmp = sous_repertoire(dirname($target), '_tmp');
$ok = $zip->deballer($tmp);
if ($ok) {
rename($tmp . $racine, $target);
supprimer_repertoire($tmp);
}
}
if (!$ok) {
spip_log(
'charger_decompresser erreur tar ' . $zip->erreur() . ' ' . $zip->message() . ' pour paquet: ' . $quoi['archive'],
'teleport' . _LOG_ERREUR

17
teleporter/http_deballe_zip.php

@ -130,10 +130,21 @@ function teleporter_http_charger_zip($quoi = []) {
if (is_dir($target)) {
supprimer_repertoire($target);
}
// mais creer le repertoire vide
$target = sous_repertoire(dirname($target), basename($target));
if (!$zip->deballer($target)) {
if (!$racine) {
// mais creer le repertoire vide
$target = sous_repertoire(dirname($target), basename($target));
$ok = $zip->deballer($target);
} else {
$tmp = sous_repertoire(dirname($target), '_tmp');
$ok = $zip->deballer($tmp);
if ($ok) {
rename($tmp . $racine, $target);
supprimer_repertoire($tmp);
}
}
if (!$ok) {
spip_log(
'charger_decompresser erreur zip ' . $zip->erreur() . ' ' . $zip->message() . ' pour paquet: ' . $quoi['archive'],
'teleport' . _LOG_ERREUR

Loading…
Cancel
Save