From aca040eb3d7356831dc6322764d12e780d47ed1f Mon Sep 17 00:00:00 2001 From: "cedric@yterium.com" <> Date: Sat, 25 Oct 2014 13:25:28 +0000 Subject: [PATCH] Fix http://core.spip.org/issues/2938 : quand on met un zip dans tmp/ le memoriser dans la session pour le nettoyer au hit suivant si ce n'est pas un $_POST (ie si on a abandonne l'upload/deballage). Au passage on met les zip dans un sous dossier tmp/zip/ plutot que directement dans tmp/ --- inc/joindre_document.php | 12 ++++++++---- medias_fonctions.php | 13 +++++++++++++ paquet.xml | 2 +- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/inc/joindre_document.php b/inc/joindre_document.php index 69d9adb3..347c7c72 100644 --- a/inc/joindre_document.php +++ b/inc/joindre_document.php @@ -214,10 +214,14 @@ function joindre_verifier_zip($files){ // Est-ce qu'on sait le lire ? include_spip('inc/pclzip'); if ($zip - AND $archive = new PclZip($zip) - AND $contenu = joindre_decrire_contenu_zip($archive) - AND rename($zip, $tmp = _DIR_TMP.basename($zip)) - ){ + AND $archive = new PclZip($zip) + AND $contenu = joindre_decrire_contenu_zip($archive) + AND $tmp = sous_repertoire(_DIR_TMP,"zip") + AND rename($zip, $tmp = $tmp.basename($zip)) + ){ + $zip_to_clean = (isset($GLOBALS['visiteur_session']['zip_to_clean'])?unserialize($GLOBALS['visiteur_session']['zip_to_clean']):array()); + $zip_to_clean[] = $tmp; + session_set('zip_to_clean',serialize($zip_to_clean)); $contenu[] = $tmp; return $contenu; } diff --git a/medias_fonctions.php b/medias_fonctions.php index 68882443..796ee7ee 100644 --- a/medias_fonctions.php +++ b/medias_fonctions.php @@ -20,6 +20,19 @@ // sécurité if (!defined('_ECRIRE_INC_VERSION')) return; +// nettoyer les zip abandonnes par l'utilisateur +if (isset($GLOBALS['visiteur_session']['zip_to_clean']) + AND test_espace_prive() + AND $_SERVER['REQUEST_METHOD']!=='POST'){ + $zip_to_clean = unserialize($GLOBALS['visiteur_session']['zip_to_clean']); + if ($zip_to_clean){ + foreach ($zip_to_clean as $zip){ + if (@file_exists($zip)) + @unlink($zip); + } + } + session_set('zip_to_clean'); +} /** * Afficher la puce de statut pour les documents diff --git a/paquet.xml b/paquet.xml index 04d34993..0a40b039 100644 --- a/paquet.xml +++ b/paquet.xml @@ -1,7 +1,7 @@ <paquet prefix="medias" categorie="multimedia" - version="2.9.12" + version="2.9.13" etat="stable" compatibilite="[3.0.0;3.1.*]" logo="prive/themes/spip/images/portfolio-32.png" -- GitLab