source: spip-zone/_plugins_/videos/formulaires/insertion_video.php @ 46249

Last change on this file since 46249 was 46249, checked in by xdjuj@…, 10 years ago
  • Publier les vidéos par défaut
File size: 4.8 KB
Line 
1<?php
2function formulaires_insertion_video_charger_dist($id_objet,$objet){
3        $valeurs = array(
4                'id_objet' => $id_objet,
5                'objet' => $objet,
6                'video_url' => ''
7                );
8        return $valeurs;
9}
10
11function formulaires_insertion_video_verifier_dist($id_objet,$objet){
12        $erreurs = array();
13        // Retirer les trucs qui emmerdent : tous les arguments d'ancre / les espaces foireux les http:// et les www. éventuels
14        $url = preg_replace('%(#.*$|http://|www.)%', '', trim(_request('video_url')));
15
16        // ToDo : blinder un peu le controle des url
17        if(preg_match('/dailymotion/',$url)){
18                set_request('type','dist_daily');
19                $lavideo = preg_replace('#dailymotion\.com/video/#','',$url);
20        }
21        else if(preg_match('/vimeo/',$url)){
22                set_request('type','dist_vimeo');
23                $lavideo = preg_replace('#vimeo\.com/#','',$url);
24        }
25        else if(preg_match('/(youtube|youtu\.be)/',$url)){
26                set_request('type','dist_youtu');
27                $lavideo = preg_replace('#(youtu\.be/|youtube\.com/watch\?v=|&.*$|\?hd=1)#','',$url);
28        }
29        else if(preg_match('/culturebox/',$url)){
30                set_request('type','dist_cubox');
31                // Lien de type http://culturebox.france3.fr/#/roman/32428/l_or-et-la-toise-le-nouveau-roman-de-brice-tarvel
32                // On explode sur les slash et on recupere l'avant dernier element
33                $result=explode("/",_request('video_url'));
34                if(sizeof($result)>2)
35                        $lavideo = $result[sizeof($result)-2];
36        }
37
38        if(!$lavideo) $erreurs['message_erreur'] = _T('videos:erreur_adresse_invalide');
39        else set_request('lavideo',$lavideo);
40
41        return $erreurs;
42}
43
44function formulaires_insertion_video_traiter_dist($id_objet,$objet){
45        include_spip('inc/acces');     
46        $type = _request('type');
47        $fichier = _request('lavideo');
48        $url = _request('video_url');
49
50        $titre = ""; $descriptif = ""; $id_vignette = "";
51
52        // On tente de récupérer titre et description à l'aide de Videopian
53        if(!preg_match('/culture/',$url) && (version_compare(PHP_VERSION, '5.2') >= 0)) {
54                /*
55                        TODO
56                        Question ouverte : pourquoi ne pas utiliser => http://oohembed.com/ ? Nécessite quand même PHP5 (json) et semble faire pareil (mieux ?)
57                        - Inconvénient : dépend d'un service distant alors que là, c'est dans le plugin, ça marche direct
58                        - Avantage : sûrement mieux maintenu à jour, utilise JSON donc boucle DATA envisageables, réponse plus propre
59                */
60
61                include_spip('lib/Videopian'); // http://www.upian.com/upiansource/videopian/
62                $Videopian = new Videopian();
63                try {
64                        $infosVideo = $Videopian->get($url);
65                        $titre = $infosVideo->title;
66                        $descriptif = $infosVideo->description;
67                        $logoDocument = $infosVideo->thumbnails[0]->url;
68                } catch (Exception $e) {
69                        //echo 'Exception reçue : ',  $e->getMessage(), "\n";
70                        spip_log("L'ajout automatique du titre et de la description a echoué","Plugin Vidéo(s)");
71                }
72        }
73
74       
75        // On va pour l'instant utiliser le champ extension pour stocker le type de source
76        $champs = array(
77                'titre'=>$titre,
78                'extension'=>$type,
79                'date' => date("Y-m-d H:i:s",time()),
80                'descriptif' => $descriptif,
81                'fichier'=>$fichier,
82                'distant'=>'oui'
83        );
84       
85        /** 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é) **/
86        $trouver_table=charger_fonction('trouver_table','base');       
87        $desc = $trouver_table('spip_documents');
88        if(array_key_exists('taille',$desc['field'])) if($infosVideo) $champs['taille'] = $infosVideo->duration;
89        if(array_key_exists('credits',$desc['field'])) if($infosVideo) $champs['credits'] = $infosVideo->author;
90        if(array_key_exists('statut',$desc['field'])) $champs['statut'] = 'publie';
91
92        /* Cas de la présence d'une vignette à attacher */
93        if($logoDocument){
94                include_spip('inc/distant');
95                if($fichier = preg_replace("#IMG/#", '', copie_locale($logoDocument))){ // set_spip_doc ne fonctionne pas... Je ne sais pas pourquoi
96                        $champsVignette['fichier'] = $fichier;
97                        $champsVignette['mode'] = 'vignette';
98                       
99                        // Recuperer les tailles
100                        $champsVignette['taille'] = @intval(filesize($fichier));
101                        $size_image = @getimagesize($fichier);
102                        $champsVignette['largeur'] = intval($size_image[0]);
103                        $champsVignette['hauteur'] = intval($size_image[1]);
104                        // $infos['type_image'] = decoder_type_image($size_image[2]);
105                       
106                        // Ajouter
107                        $id_vignette = sql_insertq('spip_documents',$champsVignette);
108                        if($id_vignette) $champs['id_vignette'] = $id_vignette;
109                }
110                else{ spip_log("Echec du lien vers le document $logoDocument, abandon"); return $champs; }
111        }
112       
113        $document = sql_insertq('spip_documents',$champs);
114        if($document){
115                $document_lien = sql_insertq(
116                        'spip_documents_liens',
117                        array(
118                                'id_document'=>$document,
119                                'id_objet'=>$id_objet,
120                                'objet'=>$objet,
121                                'vu'=>'non'
122                        )
123                );
124        }
125       
126        $message_ok = _T('videos:confirmation_ajout', array('type'=>$type,'titre'=>$titre));
127        return array("message_ok" => $message_ok);
128}
Note: See TracBrowser for help on using the repository browser.