[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_www.git] / www / plugins-dist / medias / inc / joindre_document.php
index 69d9adb..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
@@ -262,7 +272,7 @@ function joindre_decrire_contenu_zip($zip) {
 \r
 \r
 \r
-// http://doc.spip.org/@joindre_deballes\r
+// http://code.spip.net/@joindre_deballes\r
 function joindre_deballer_lister_zip($path,$tmp_dir) {\r
   include_spip('inc/pclzip');\r
        $archive = new PclZip($path);\r
@@ -291,7 +301,7 @@ if (!function_exists('fixer_extension_document')){
  * @param unknown_type $doc\r
  * @return unknown\r
  */\r
-// http://doc.spip.org/@fixer_extension_document\r
+// http://code.spip.net/@fixer_extension_document\r
 function fixer_extension_document($doc) {\r
        $extension = '';\r
        $name = $doc['name'];\r
@@ -313,7 +323,7 @@ function fixer_extension_document($doc) {
 //\r
 // Gestion des fichiers ZIP\r
 //\r
-// http://doc.spip.org/@accepte_fichier_upload\r
+// http://code.spip.net/@accepte_fichier_upload\r
 \r
 function accepte_fichier_upload ($f) {\r
        if (!preg_match(",.*__MACOSX/,", $f)\r
@@ -326,7 +336,7 @@ function accepte_fichier_upload ($f) {
 \r
 # callback pour le deballage d'un zip telecharge\r
 # http://www.phpconcept.net/pclzip/man/en/?options-pclzip_cb_pre_extractfunction\r
-// http://doc.spip.org/@callback_deballe_fichier\r
+// http://code.spip.net/@callback_deballe_fichier\r
 \r
 function callback_deballe_fichier($p_event, &$p_header) {\r
        if (accepte_fichier_upload($p_header['filename'])) {\r