X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fplugins-dist%2Fmedias%2Finc%2Fjoindre_document.php;h=3cca88caa9cb0738940af332b91fed145d55186e;hb=cc641eb476987612f6d6df1a5417c1c5582a8ab8;hp=69d9adb37128f684cb1818a4268333c84913a97e;hpb=a33c2ba9d919664b3bb0f565f8e9a8b9d8530cdb;p=lhc%2Fweb%2Fclavette_www.git diff --git a/www/plugins-dist/medias/inc/joindre_document.php b/www/plugins-dist/medias/inc/joindre_document.php index 69d9adb..3cca88c 100644 --- a/www/plugins-dist/medias/inc/joindre_document.php +++ b/www/plugins-dist/medias/inc/joindre_document.php @@ -3,7 +3,7 @@ /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * - * Copyright (c) 2001-2014 * + * Copyright (c) 2001-2016 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * @@ -114,7 +114,13 @@ function joindre_trouver_fichier_envoye(){ return $files; } } - elseif (_request('joindre_zip') AND $path = _request('chemin_zip')){ + elseif (_request('joindre_zip') and $token_zip = _request('chemin_zip')) { + + $zip_to_clean = (isset($GLOBALS['visiteur_session']['zip_to_clean']) ? unserialize($GLOBALS['visiteur_session']['zip_to_clean']) : array()); + if (!$zip_to_clean or !isset($zip_to_clean[$token_zip]) or !$path = $zip_to_clean[$token_zip]){ + return _T('avis_operation_impossible'); + } + include_spip('inc/documents'); //pour creer_repertoire_documents define('_tmp_zip', $path); define('_tmp_dir', creer_repertoire_documents(md5($path.$GLOBALS['visiteur_session']['id_auteur']))); @@ -214,10 +220,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[md5($tmp)] = $tmp; + session_set('zip_to_clean',serialize($zip_to_clean)); $contenu[] = $tmp; return $contenu; } @@ -262,7 +272,7 @@ function joindre_decrire_contenu_zip($zip) { -// http://doc.spip.org/@joindre_deballes +// http://code.spip.net/@joindre_deballes function joindre_deballer_lister_zip($path,$tmp_dir) { include_spip('inc/pclzip'); $archive = new PclZip($path); @@ -291,7 +301,7 @@ if (!function_exists('fixer_extension_document')){ * @param unknown_type $doc * @return unknown */ -// http://doc.spip.org/@fixer_extension_document +// http://code.spip.net/@fixer_extension_document function fixer_extension_document($doc) { $extension = ''; $name = $doc['name']; @@ -313,7 +323,7 @@ function fixer_extension_document($doc) { // // Gestion des fichiers ZIP // -// http://doc.spip.org/@accepte_fichier_upload +// http://code.spip.net/@accepte_fichier_upload function accepte_fichier_upload ($f) { if (!preg_match(",.*__MACOSX/,", $f) @@ -326,7 +336,7 @@ function accepte_fichier_upload ($f) { # callback pour le deballage d'un zip telecharge # http://www.phpconcept.net/pclzip/man/en/?options-pclzip_cb_pre_extractfunction -// http://doc.spip.org/@callback_deballe_fichier +// http://code.spip.net/@callback_deballe_fichier function callback_deballe_fichier($p_event, &$p_header) { if (accepte_fichier_upload($p_header['filename'])) {