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