Bifurcation depuis
spip / medias
400 validations de retard le dépôt en amont.
renseigner_document.php 5,50 Kio
<?php
/***************************************************************************\
* SPIP, Système de publication pour l'internet *
* *
* Copyright © avec tendresse depuis 2001 *
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribué sous licence GNU/GPL. *
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* Fonctions pour compléter les informations connues d'un document
*
* @package SPIP\Medias\Renseigner
**/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Récuperer les infos distantes d'une URL,
* et renseigner pour une insertion en base
*
* Utilise une variable static car appellée plusieurs fois au cours du même hit
* (vérification puis traitement)
*
* Un plugin peut avec le pipeline renseigner_document_distant renseigner
* les informations fichier et mode avant l'analyse et traitement par ce plugin,
* qui dans ce cas ne les fera pas. Exemple : OEmbed
*
* @pipeline_appel renseigner_document_distant
*
* @param string $source
* URL du document
* @return array|string
* Informations sur le fichier distant, sinon message d'erreur.
* Sans erreur, retourne un tableau :
*
* - source : URL du fichier
* - distant : Est-ce un fichier distant ?
* - mode : Mode d'inclusion
* - fichier : Chemin local du fichier s'il a été recopié
*/
function renseigner_source_distante($source) {
static $infos = array();
if (isset($infos[$source])) {
return $infos[$source];
}
include_spip('inc/distant');
// on passe la source dans le pipeline, le premier plugin
// qui est capable de renseigner complete
// fichier et mode + tous les autres champs a son gout
// 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']) or !isset($a['mode'])) {
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';