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