$id_objet,
'objet' => $objet,
'video_url' => ''
);
return $valeurs;
}
function formulaires_insertion_video_verifier_dist($id_objet,$objet){
$erreurs = array();
// Retirer les trucs qui emmerdent : tous les arguments d'ancre / les espaces foireux les http:// et les www. éventuels
$url = preg_replace('%(#.*$|http://|www.)%', '', trim(_request('video_url')));
// ToDo : blinder un peu le controle des url
if(preg_match('/dailymotion/',$url)){
set_request('type','dist_daily');
$lavideo = preg_replace('#dailymotion\.com/video/#','',$url);
}
else if(preg_match('/vimeo/',$url)){
set_request('type','dist_vimeo');
$lavideo = preg_replace('#vimeo\.com/#','',$url);
}
else if(preg_match('/(youtube|youtu\.be)/',$url)){
set_request('type','dist_youtu');
$lavideo = preg_replace('#(youtu\.be/|youtube\.com/watch\?v=|&.*$|\?hd=1)#','',$url);
}
/* On ne peut plus inserer les videos culture box
else if(preg_match('/culturebox/',$url)){
set_request('type','dist_cubox');
// Lien de type http://culturebox.france3.fr/#/roman/32428/l_or-et-la-toise-le-nouveau-roman-de-brice-tarvel
// On explode sur les slash et on recupere l'avant dernier element
$result=explode("/",_request('video_url'));
if(sizeof($result)>2)
$lavideo = $result[sizeof($result)-2];
}*/
if(!$lavideo) $erreurs['message_erreur'] = _T('videos:erreur_adresse_invalide');
else set_request('lavideo',$lavideo);
return $erreurs;
}
function formulaires_insertion_video_traiter_dist($id_objet,$objet){
include_spip('inc/acces');
$type = _request('type');
$fichier = _request('lavideo');
$url = _request('video_url');
$titre = ""; $descriptif = ""; $id_vignette = "";
// On tente de récupérer titre et description à l'aide de Videopian
if(!preg_match('/culture/',$url) && (version_compare(PHP_VERSION, '5.2') >= 0)) {
/*
TODO
Question ouverte : pourquoi ne pas utiliser => http://oohembed.com/ ? Nécessite quand même PHP5 (json) et semble faire pareil (mieux ?)
- Inconvénient : dépend d'un service distant alors que là, c'est dans le plugin, ça marche direct
- Avantage : sûrement mieux maintenu à jour, utilise JSON donc boucle DATA envisageables, réponse plus propre
*/
include_spip('lib/Videopian'); // http://www.upian.com/upiansource/videopian/
$Videopian = new Videopian();
if($Videopian) {
$infosVideo = $Videopian->get($url);
$titre = $infosVideo->title;
$descriptif = $infosVideo->description;
$logoDocument = $infosVideo->thumbnails[0]->url;
} else {
//echo 'Exception reçue : ', $e->getMessage(), "\n";
spip_log("L'ajout automatique du titre et de la description a echoué","Plugin Vidéo(s)");
}
}
// On va pour l'instant utiliser le champ extension pour stocker le type de source
$champs = array(
'titre'=>$titre,
'extension'=>$type,
'date' => date("Y-m-d H:i:s",time()),
'descriptif' => $descriptif,
'fichier'=>$fichier,
'distant'=>'oui'
);
/** Gérer le cas de la présence des champs de Médiathèque (parce que Mediatheque c'est le BIEN mais c'est pas toujours activé) **/
$trouver_table=charger_fonction('trouver_table','base');
$desc = $trouver_table('spip_documents');
if(array_key_exists('taille',$desc['field'])) if($infosVideo) $champs['taille'] = $infosVideo->duration;
if(array_key_exists('credits',$desc['field'])) if($infosVideo) $champs['credits'] = $infosVideo->author;
if(array_key_exists('statut',$desc['field'])) $champs['statut'] = 'publie';
/* Cas de la présence d'une vignette à attacher */
if($logoDocument){
include_spip('inc/distant');
if($fichier = preg_replace("#IMG/#", '', copie_locale($logoDocument))){ // set_spip_doc ne fonctionne pas... Je ne sais pas pourquoi
$champsVignette['fichier'] = $fichier;
$champsVignette['mode'] = 'vignette';
// Recuperer les tailles
$champsVignette['taille'] = @intval(filesize($fichier));
$size_image = @getimagesize($fichier);
$champsVignette['largeur'] = intval($size_image[0]);
$champsVignette['hauteur'] = intval($size_image[1]);
// $infos['type_image'] = decoder_type_image($size_image[2]);
// Ajouter
$id_vignette = sql_insertq('spip_documents',$champsVignette);
if($id_vignette) $champs['id_vignette'] = $id_vignette;
}
else{ spip_log("Echec de l'insertion du logo $logoDocument pour la video $document","Plugin Vidéo(s)"); }
}
$document = sql_insertq('spip_documents',$champs);
if($document){
$document_lien = sql_insertq(
'spip_documents_liens',
array(
'id_document'=>$document,
'id_objet'=>$id_objet,
'objet'=>$objet,
'vu'=>'non'
)
);
}
$message_ok = _T('videos:confirmation_ajout', array('type'=>$type,'titre'=>$titre));
return array("message_ok" => $message_ok);
}
ob_start();
?>