From a906c2ec11d35f1373adc739857174f35437feeb Mon Sep 17 00:00:00 2001
From: "cedric@yterium.com" <>
Date: Wed, 30 Mar 2011 19:09:01 +0000
Subject: [PATCH] =?UTF-8?q?Un=20pipeline=20renseigner=5Fdocument=5Fdistant?=
 =?UTF-8?q?=20permet=20a=20un=20plugin=20de=20d=C3=A9couvrir=20un=20docume?=
 =?UTF-8?q?nt=20se=20cachant=20derriere=20une=20url=20avec=20sa=20propre?=
 =?UTF-8?q?=20methode=20(ex=20:oembed,=20mais=20non=20limitatif).=20Les=20?=
 =?UTF-8?q?plugins=20qui=20se=20branchent=20dessus=20cherchent=20a=20rense?=
 =?UTF-8?q?igner=20si=20si=20$flux['fichier']=20n'est=20pas=20encore=20ren?=
 =?UTF-8?q?seign=C3=A9=20En=20sortie=20du=20pipeline,=20si=20$flux['fichie?=
 =?UTF-8?q?r']=20n'est=20pas=20present,=20on=20se=20rabat=20sur=20la=20m?=
 =?UTF-8?q?=C3=A9thode=20traditionnelle.=20Tout=20le=20contenu=20du=20pipe?=
 =?UTF-8?q?line=20alimente=20directement=20la=20base,=20tous=20les=20champ?=
 =?UTF-8?q?s=20de=20la=20table=20spip=5Fdocuments=20peuvent=20donc=20?=
 =?UTF-8?q?=C3=AAtre=20renseign=C3=A9s.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 inc/renseigner_document.php | 31 ++++++++++++++++++++++---------
 plugin.xml                  |  1 +
 2 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/inc/renseigner_document.php b/inc/renseigner_document.php
index f1d72c5e..578ec4eb 100644
--- a/inc/renseigner_document.php
+++ b/inc/renseigner_document.php
@@ -28,20 +28,33 @@ function renseigner_source_distante($source){
 		return $infos[$source];
 	
 	include_spip('inc/distant');
-	if ($a = recuperer_infos_distantes($source)) {
-
+	// on passe la source dans le pipeline, le premier plugin
+	// qui est capable de renseigner complete
+	// et enleve l'entree source
+	// ex : oembed
+	$a = pipeline('renseigner_document_distant',array('source'=>$source));
+	// si la source est encore la, en revenir a la
+	// methode traditionnelle : chargement de l'url puis analyse
+	if (!isset($a['fichier'])){
+		if (!$a = recuperer_infos_distantes($a['source'])) {
+			return _T('medias:erreur_chemin_distant',array('nom'=>$source));
+		}
 		# NB: dans les bonnes conditions (fichier autorise et pas trop gros)
 		# $a['fichier'] est une copie locale du fichier
 		unset($a['body']);
-
-		$a['distant'] = 'oui';
-		$a['mode'] = 'document';
-		$a['fichier'] = set_spip_doc($source);
-		$infos[$source] = $a;
-		return $infos[$source];
 	}
 
-	return _T('medias:erreur_chemin_distant',array('nom'=>$source));
+	// completer les entrees manquantes
+	$infos[$source] = array_merge(
+		array(
+		'distant'=>'oui',
+		'mode'=>'document',
+		'fichier'=>set_spip_doc($source),
+		),
+		$a);
+
+	// stocker pour la seconde demande
+	return $infos[$source];
 }
 
 /**
diff --git a/plugin.xml b/plugin.xml
index 29289184..8b598adc 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -61,6 +61,7 @@
 	</pipeline>
 	<pipeline><nom>document_desc_actions</nom><action></action></pipeline>
 	<pipeline><nom>editer_document_actions</nom><action></action></pipeline>
+	<pipeline><nom>renseigner_document_distant</nom><action></action></pipeline>
 
 	<bouton id='documents' parent='bando_edition'>
 		<titre>medias:documents</titre>
-- 
GitLab