diff --git a/inc/renseigner_document.php b/inc/renseigner_document.php index f1d72c5e548728a826bf4169a2d377fb25c21ff3..578ec4eb0d3f42d7e01d6b9ddd0cb93628c01bcd 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 29289184955d6b8ab745d3dde31204b3228455dc..8b598adca05573a8d87bdf946eff548e5e1c24ee 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>