source: spip-zone/_plugins_/spipmotion/trunk/inc/spipmotion_recuperer_logo.php @ 62702

Last change on this file since 62702 was 62702, checked in by kent1@…, 7 years ago

On affiche les boutons supplémentaires que si l'utilisateur a le droit de modifier le document.

On remet en place la génération de vignettes

File size: 5.6 KB
Line 
1<?php
2/**
3 * SPIPmotion
4 * Gestion de l'encodage et des métadonnées de vidéos directement dans spip
5 *
6 * Auteurs :
7 * kent1 (http://www.kent1.info - kent1@arscenic.info)
8 * 2008-2012 - Distribué sous licence GNU/GPL
9 *
10 */
11
12if (!defined("_ECRIRE_INC_VERSION")) return;
13
14/**
15 * Fonction de récupération de vignette depuis un document video
16 * On utilise un script bash pour cela spipmotion_vignette.sh
17 *
18 * @param int $id_document
19 *              L'id numérique du document
20 * @param int $frame
21 *              La frame à capturer
22 */
23function inc_spipmotion_recuperer_logo($id_document,$seconde=2){
24        spip_log("SPIPMOTION : recuperation d un logo du document $id_document","spipmotion");
25        /**
26         * Pas d'id_document, on retourne false
27         */
28        if(!intval($id_document)){
29                spip_log('SPIPMOTION Erreur : pas de bon id_document fourni pour la génération de vignette','spipmotion'._LOG_CRITIQUE);
30                return false;
31        }
32       
33        include_spip('inc/autoriser');
34        if(!autoriser('modifier','document',$id_document)){
35                spip_log('SPIPMOTION Erreur : tentative de récupération de logo sans autorisation de modification du document','spipmotion'._LOG_CRITIQUE);
36                return false;
37        }
38        /**
39         * Le script de génération de vignette n'est pas là, on retourne false
40         */
41        if($GLOBALS['meta']['spipmotion_spipmotion_vignette_sh_casse'] == 'oui'){
42                spip_log('SPIPMOTION Erreur : le script de génération de vignette n\'est pas disponible','spipmotion'._LOG_CRITIQUE);
43                return false;
44        }
45        include_spip('inc/documents');
46        include_spip('inc/filtres_images_mini');
47        $retour = 0;
48        $document = sql_fetsel("docs.hasvideo,docs.id_document,docs.fichier,docs.duree,docs.id_vignette,docs.mode", "spip_documents AS docs INNER JOIN spip_documents_liens AS L ON L.id_document=docs.id_document","L.id_document=".sql_quote($id_document));
49        $chemin_court = $document['fichier'];
50        $chemin = get_spip_doc($chemin_court);
51       
52        if($document['hasvideo'] == 'oui'){
53                $vignette = false;
54                if($GLOBALS['spipmotion_metas']['spipmotion_safe_mode'] == 'oui'){
55                        $spipmotion_sh = $GLOBALS['spipmotion_metas']['spipmotion_safe_mode_exec_dir'].'/spipmotion_vignette.sh'; 
56                }else{
57                        $spipmotion_sh = find_in_path('script_bash/spipmotion_vignette.sh');
58                }
59                $string_temp = "$id-$type-$id_document";
60                $query = md5($string_temp);
61                $dossier_temp = _DIR_VAR;
62                $fichier_temp = "$dossier_temp$query.jpg";
63                while(!$vignette && ($seconde < $document['duree'])){
64                        $cmd_vignette = $spipmotion_sh.' --e '.$chemin.' --s '.$fichier_temp.' --ss '.$seconde;
65                        $lancement_vignette = exec($cmd_vignette,$retour_vignette,$retour_int);
66                        if($retour_int >= 126){
67                                $erreur = _T('spipmotion:erreur_script_spipmotion_non_executable');
68                                spip_log("SPIPMOTION Erreur : $erreur",'spipmotion'._LOG_CRITIQUE);
69                                return false;
70                        }
71                       
72                        if($retour_int == 0){
73                                $vignette = true;
74                                if(!file_exists($fichier_temp) OR (filesize($fichier_temp) == 0)){
75                                        spip_log("SPIPMOTION Erreur : le fichier $fichier_temp n'existe pas",'spipmotion'._LOG_CRITIQUE);
76                                        return false;
77                                }else{
78                                        $img_finale = $fichier_temp;
79                                        $mode = 'vignette';
80                                        $ajouter_documents = charger_fonction('ajouter_documents', 'action');
81                                        include_spip('action/editer_document');
82                                        if(defined('_DIR_PLUGIN_FONCTIONS_IMAGES')){
83                                                include_spip('fonctions_images_fonctions');
84                                                /**
85                                                 * Si on se retrouve avec 10 images monochromes d'affilée,
86                                                 * on tente de récupérer la vignette du document original
87                                                 */
88                                                if($retour>10){
89                                                        if($document['mode'] != 'conversion'){
90                                                                $original = sql_fetsel('id_document,id_vignette','spip_documents','id_document='.intval($document['id_document']));
91                                                        }
92                                                        else{
93                                                                $id_original = sql_getfetsel('doc.id_document','spip_documents as doc LEFT JOIN spip_documents_liens as lien ON doc.id_document=lien.id_document','lien.objet="document" AND lien.id_document='.intval($id_document));
94                                                                $original = sql_fetsel('id_document,id_vignette','spip_documents','id_document='.intval($id_original));
95                                                        }
96                                                        if(intval($original['id_vignette']) > 0){
97                                                                $vignette = sql_getfetsel('fichier','spip_documents','id_document='.intval($original['id_vignette']));
98                                                                $vignette = get_spip_doc($vignette);
99                                                                $x = $ajouter_documents($document['id_vignette']?$document['id_vignette']:'new',
100                                                                                                array(array('tmp_name'=>$img_finale,'name'=> $img_finale)),
101                                                                                        '', 0, 'vignette');
102                                                                $x = reset($x);
103                                                                if(intval($x)){
104                                                                        $vignette = true;
105                                                                        $id_vignette = $x;
106                                                                        document_modifier($id_document, array('id_vignette'=>$x));
107                                                                }
108                                                            return $x;
109                                                        }
110                                                        return false;
111                                                }else if(!filtrer('image_monochrome',$fichier_temp)){
112                                                                unlink($img_finale);
113                                                                $frame = $frame+50;
114                                                                $retour++;
115                                                        }else if(file_exists($img_finale)){
116                                                                $x = $ajouter_documents($document['id_vignette']?$document['id_vignette']:'new',
117                                                                                                        array(array('tmp_name'=>$img_finale,'name'=> $img_finale)),
118                                                                                                '', 0, 'vignette');
119                                                                $x = reset($x);
120                                                                if(intval($x)){
121                                                                        $vignette = true;
122                                                                        $id_vignette = $x;
123                                                                        document_modifier($id_document, array('id_vignette'=>$x));
124                                                                }
125                                                                unlink($img_finale);
126                                                        }else{
127                                                                return false;
128                                                        }
129                                                }else{
130                                                        if(file_exists($img_finale)){
131                                                                $x = $ajouter_documents($document['id_vignette']?$document['id_vignette']:'new',
132                                                                                                        array(array('tmp_name'=>$img_finale,'name'=> $img_finale)),
133                                                                                                '', 0, 'vignette');
134                                                                $x = reset($x);
135                                                                if(intval($x)){
136                                                                        $vignette = true;
137                                                                        $id_vignette = $x;
138                                                                        document_modifier($id_document, array('id_vignette'=>$x));
139                                                                }
140                                                        }
141                                                }
142                                        }
143                                }
144                        else{
145                                return false;   
146                        }
147                }
148        }
149        return $x;
150}
151?>
Note: See TracBrowser for help on using the repository browser.