From 157fc38f24fd2637ba81608f4fc8f73ad3d7409a Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Wed, 17 Jan 2007 09:49:21 +0000
Subject: [PATCH] se baser d'abord sur la table spip_documents pour attraper le
 vrai type si il est connu (plus fiable que l'extension)

---
 ecrire/inc/distant.php | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/ecrire/inc/distant.php b/ecrire/inc/distant.php
index 9a892884ca..5c9d58c2db 100644
--- a/ecrire/inc/distant.php
+++ b/ecrire/inc/distant.php
@@ -277,24 +277,25 @@ function fichier_copie_locale($source) {
 	}
 
 	$extension = "";
-	$path_parts = pathinfo($source);
-	if (isset($path_parts['extension']) && strlen($path_parts['extension'])){
-		// verifier que c'est un type autorise
-		$t = spip_fetch_array(spip_query("SELECT extension FROM spip_types_documents WHERE extension="._q($path_parts['extension'])));
+	// Chercher d'abord le doc dans la table des documents, pour se baser sur son type reel
+	$t = spip_fetch_array(spip_query("SELECT id_type FROM spip_documents WHERE fichier=" . _q($source) . " AND distant='oui'"));
+	if ($t) {
+		$t = spip_fetch_array(spip_query("SELECT extension FROM spip_types_documents WHERE id_type=".$t['id_type']));
 		if ($t)
 			$extension = $t['extension'];
 	}
-	else {
-		// Si l'extension n'est pas precisee, aller la chercher dans la table
-		// des documents -- si la source n'est pas dans la table des documents,
-		// on ne fait rien
-		$t = spip_fetch_array(spip_query("SELECT id_type FROM spip_documents WHERE fichier=" . _q($source) . " AND distant='oui'"));
-		if ($t) {
-			$t = spip_fetch_array(spip_query("SELECT extension FROM spip_types_documents WHERE id_type=".$t['id_type']));
+	
+	// si la source n'est pas dans la table des documents, on regarde si son extension est connue et autorisee
+	if (!strlen($extension)) {
+		$path_parts = pathinfo($source);
+		if (isset($path_parts['extension']) && strlen($path_parts['extension'])){
+			// verifier que c'est un type autorise
+			$t = spip_fetch_array(spip_query("SELECT extension FROM spip_types_documents WHERE extension="._q($path_parts['extension'])));
 			if ($t)
 				$extension = $t['extension'];
 		}
 	}
+	
 	if (strlen($extension))
 		return nom_fichier_copie_locale($source, $extension);
 }
-- 
GitLab