source: spip-zone/_plugins_/spipmotion/spipmotion_pipelines.php @ 30332

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

On passe la génération de la file d'attente et donc des inserts en base dans l'action spipmotion_ajouter_file

On ajoute un suffixe au nom de fichier -encoded pour éviter de boucler sur les encodages

On clean aussi un chouilla

File size: 4.5 KB
Line 
1<?php
2/**
3 * Insertion dans le pipeline editer_contenu_objet
4 *
5 * Affiche les boutons supplémentaires de :
6 * - récupération de logo dans le cas d'une vidéo
7 * - récupération d'informations spécifiques dans le cas d'une video
8 * (Dans le cas d'un son, c'est le plugin getID3 qui s'en charge)
9 * - bouton de demande d'encodage / de réencodage du son ou de la vidéo
10 *
11 * @param array $flux Le contexte du pipeline
12 * @return $flux Le contexte du pipeline complété
13 */
14function spipmotion_editer_contenu_objet($flux){
15        if(is_array($flux['args']) && ($flux['args']['type']=='case_document')){
16                $id_document = $flux['args']['id'];
17                $document = sql_fetsel("docs.id_document, docs.id_orig, docs.extension, L.vu,L.objet,L.id_objet", "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));
18                $extension = $document['extension'];
19                $type = $document['objet'];
20                $id = $document['id_objet'];
21                if(in_array($extension,lire_config('spipmotion/fichiers_videos',array()))){
22                        if($document['id_orig'] > 0){
23                                $flux['data'] .= '<p>'._T('spipmotion:version_encodee_de',array('id_orig'=>$document['id_orig'])).'</p>';
24                        }
25                        else if(extension_loaded('ffmpeg')){
26                                $infos_videos = charger_fonction('spipmotion_infos_videos', 'inc');
27                                $flux['data'] .= $infos_videos($id,$id_document,$type);
28                        }
29                }
30                if(in_array($extension,lire_config('spipmotion/fichiers_audios',array()))){
31                        if($document['id_orig'] > 0){
32                                $flux['data'] .= '<p>'._T('spipmotion:version_encodee_de',array('id_orig'=>$document['id_orig'])).'</p>';
33                        }else{
34                                $infos_audios = charger_fonction('spipmotion_infos_audios', 'inc');
35                                $flux['data'] .= $infos_audios($id,$id_document,$type);
36                        }
37                }
38        }
39        return $flux;
40}
41/**
42 * Pipeline Cron de SPIPmotion
43 *
44 * Vérifie la présence à intervalle régulier de fichiers à encoder
45 * dans la file d'attente
46 *
47 * @return L'array des taches complété
48 * @param array $taches_generales Un array des tâches du cron de SPIP
49 */
50function spipmotion_taches_generales_cron($taches_generales){
51        $taches_generales['spipmotion_file'] = 60 * 4; 
52        return $taches_generales;
53}
54
55/**
56 * Insertion dans le pipeline post-edition
57 *
58 * Intervient à chaque modification d'un objet de SPIP
59 * notamment lors de l'ajout d'un document
60 *
61 * @return $flux Le contexte de pipeline complété
62 * @param array $flux Le contexte du pipeline
63 */
64function spipmotion_post_edition($flux){       
65        spip_log("pipeline post_edition","spipmotion");
66        spip_log($flux['args'],'spipmotion');
67        $id_document = $flux['args']['id_objet'];
68       
69        /**
70         * Il n'est pas nécessaire de récupérer la vignette d'une vignette
71         */
72        $infos_doc = sql_fetsel('fichier,mode','spip_documents','id_document='.intval($id_document));
73        $mode = $infos_doc['mode'];
74        $fichier = $infos_doc['fichier'];
75        spip_log("mode = $mode","spipmotion");
76       
77        if($mode != 'vignette'){
78                if($flux['args']['operation'] == 'ajouter_document'){
79                        spip_log("operation = ajouter_docs","spipmotion");
80                        $document = sql_fetsel("docs.id_document, docs.extension,docs.fichier,docs.id_orig,docs.mode,docs.distant, L.vu, L.objet, L.id_objet", "spip_documents AS docs INNER JOIN spip_documents_liens AS L ON L.id_document=docs.id_document","L.id_document=".intval($id_document));
81                        spip_log('id_origine = '.$document['id_orig'],'emballe_medias');
82                        $extension = $document['extension'];
83                       
84                        /**
85                         * Si nous sommes dans un format vidéo que SPIPmotion peut traiter,
86                         * on lui applique certains traitements
87                         */
88                        if(in_array($extension,lire_config('spipmotion/fichiers_videos',array()))){
89                                if (class_exists('ffmpeg_movie')) {
90                                        spip_log("id_document=$id_document - extension = ".$document['extension'],"spipmotion");
91
92                                        /**
93                                         * Récupération des informations de la vidéo
94                                         */
95                                        $recuperer_infos = charger_fonction('spipmotion_recuperer_infos','inc');
96                                        $infos = $recuperer_infos($id_document);
97
98                                        /**
99                                         * Récupération d'un logo de la vidéo
100                                         */
101                                        $recuperer_logo = charger_fonction("spipmotion_recuperer_logo","inc");
102                                        $logo = $recuperer_logo($id_document);
103
104                                        $invalider = true;
105                                }
106                        }
107                       
108                        /**
109                         * On l'ajoute dans la file d'attente d'encodage si nécessaire
110                         */
111                        if(!preg_match('/encoded/',$fichier)){
112                                include_spip('action/spipmotion_ajouter_file_encodage');
113                                spipmotion_genere_file($id_document,$document['objet'],$document['id_objet']);
114                        }
115                        if($invalider){
116                                /**
117                                 * On invalide le cache de cet élément si nécessaire
118                                 */
119                                include_spip('inc/invalideur');
120                                suivre_invalideur("id='id_$type/$id'");
121                        }
122                }
123        }
124        return $flux;
125}
126       
127?>
Note: See TracBrowser for help on using the repository browser.