From 13c293fabd35e2c152379522c29432423936cbba Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Thu, 21 Oct 2021 11:18:15 +0200 Subject: [PATCH] Quand on ajoute un document distant ne pas perdre la trace de la copie_locale eventuellement faite au passage, l'utiliser pour avoir les infos du document (plus rapide) et la sanitizer si besoin --- action/ajouter_documents.php | 14 ++++++++++++-- inc/renseigner_document.php | 3 +++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/action/ajouter_documents.php b/action/ajouter_documents.php index 61643192..5654c9c6 100644 --- a/action/ajouter_documents.php +++ b/action/ajouter_documents.php @@ -127,9 +127,19 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet, if (is_array($a = renseigner_source_distante($source))) { $champs = $a; # NB: dans les bonnes conditions (fichier autorise et pas trop gros) - # $a['fichier'] est une copie locale du fichier + # $a['copie_locale'] est une copie locale du fichier + + spip_ray("Retour renseigner_source_distante : ",$champs); + // voir si le document a besoin d'un nettoyage et le cas echeant relire ses infos apres + if (!empty($champs['copie_locale']) and file_exists($champs['copie_locale'])) { + $res_sanitize = sanitizer_document($champs['copie_locale'], $champs['extension']); + spip_ray("Retour sanitize : ",$res_sanitize); + $infos = renseigner_taille_dimension_image($champs['copie_locale'], $champs['extension']); + } + else { + $infos = renseigner_taille_dimension_image($champs['fichier'], $champs['extension'], true); + } - $infos = renseigner_taille_dimension_image($champs['fichier'], $champs['extension'], true); // on ignore erreur eventuelle sur $infos car on est distant, ca ne marche pas forcement if (is_array($infos)) { foreach ($infos as $k => $v) { diff --git a/inc/renseigner_document.php b/inc/renseigner_document.php index b0474de3..55eed2aa 100644 --- a/inc/renseigner_document.php +++ b/inc/renseigner_document.php @@ -68,6 +68,9 @@ function renseigner_source_distante($source) { unset($a['body']); $a['distant'] = 'oui'; $a['mode'] = 'document'; + if (!empty($a['fichier'])) { + $a['copie_locale'] = $a['fichier']; + } $a['fichier'] = set_spip_doc($source); } -- GitLab