Skip to content
Extraits de code Groupes Projets
Valider a906c2ec rédigé par cedric@yterium.com's avatar cedric@yterium.com
Parcourir les fichiers

Un pipeline renseigner_document_distant permet a un plugin de découvrir un...

Un pipeline renseigner_document_distant permet a un plugin de découvrir un document se cachant derriere une url avec sa propre methode (ex :oembed, mais non limitatif).
Les plugins qui se branchent dessus cherchent a renseigner si si $flux['fichier'] n'est pas encore renseigné
En sortie du pipeline, si $flux['fichier'] n'est pas present, on se rabat sur la méthode traditionnelle.
Tout le contenu du pipeline alimente directement la base, tous les champs de la table spip_documents peuvent donc être renseignés.
parent 97f99fb6
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -28,20 +28,33 @@ function renseigner_source_distante($source){ ...@@ -28,20 +28,33 @@ function renseigner_source_distante($source){
return $infos[$source]; return $infos[$source];
include_spip('inc/distant'); 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) # NB: dans les bonnes conditions (fichier autorise et pas trop gros)
# $a['fichier'] est une copie locale du fichier # $a['fichier'] est une copie locale du fichier
unset($a['body']); 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];
} }
/** /**
......
...@@ -61,6 +61,7 @@ ...@@ -61,6 +61,7 @@
</pipeline> </pipeline>
<pipeline><nom>document_desc_actions</nom><action></action></pipeline> <pipeline><nom>document_desc_actions</nom><action></action></pipeline>
<pipeline><nom>editer_document_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'> <bouton id='documents' parent='bando_edition'>
<titre>medias:documents</titre> <titre>medias:documents</titre>
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter