[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_www.git] / www / plugins-dist / medias / inc / joindre_document.php
index 431cd01..3cca88c 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\\r
  *  SPIP, Systeme de publication pour l'internet                           *\r
  *                                                                         *\r
- *  Copyright (c) 2001-2014                                                *\r
+ *  Copyright (c) 2001-2016                                                *\r
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *\r
  *                                                                         *\r
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *\r
@@ -114,7 +114,13 @@ function joindre_trouver_fichier_envoye(){
                  return $files;\r
                }\r
        }\r
-       elseif (_request('joindre_zip') AND $path = _request('chemin_zip')){\r
+       elseif (_request('joindre_zip') and $token_zip = _request('chemin_zip')) {\r
+\r
+               $zip_to_clean = (isset($GLOBALS['visiteur_session']['zip_to_clean']) ? unserialize($GLOBALS['visiteur_session']['zip_to_clean']) : array());\r
+               if (!$zip_to_clean or !isset($zip_to_clean[$token_zip]) or !$path = $zip_to_clean[$token_zip]){\r
+                       return _T('avis_operation_impossible');\r
+               }\r
+\r
                include_spip('inc/documents'); //pour creer_repertoire_documents\r
                define('_tmp_zip', $path);\r
                define('_tmp_dir', creer_repertoire_documents(md5($path.$GLOBALS['visiteur_session']['id_auteur'])));\r
@@ -214,10 +220,14 @@ function joindre_verifier_zip($files){
                // Est-ce qu'on sait le lire ?\r
                include_spip('inc/pclzip');\r
                if ($zip\r
-                AND $archive = new PclZip($zip)\r
-                AND $contenu = joindre_decrire_contenu_zip($archive)\r
-                AND rename($zip, $tmp = _DIR_TMP.basename($zip))\r
-                ){\r
+                       AND $archive = new PclZip($zip)\r
+                 AND $contenu = joindre_decrire_contenu_zip($archive)\r
+                       AND $tmp = sous_repertoire(_DIR_TMP,"zip")\r
+                 AND rename($zip, $tmp = $tmp.basename($zip))\r
+                 ){\r
+                       $zip_to_clean = (isset($GLOBALS['visiteur_session']['zip_to_clean'])?unserialize($GLOBALS['visiteur_session']['zip_to_clean']):array());\r
+                       $zip_to_clean[md5($tmp)] = $tmp;\r
+                       session_set('zip_to_clean',serialize($zip_to_clean));\r
                        $contenu[] = $tmp;\r
                        return $contenu;\r
                 }\r