diff --git a/ecrire/inc/distant.php b/ecrire/inc/distant.php index 9a892884cabfd1d176d5c6f2fa39eae4d57fe1ce..5c9d58c2db1ce5c10f1d984430fbcb1f567c185e 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); }