source: spip-zone/_plugins_/getID3/trunk/getid3_pipelines.php @ 71866

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

Surcharge de metadata/flv du plugin medias pour utiliser la version générique de video

On simplifie le pipeline document_desc_actions pour éviter des requêtes MySQL inutiles et des test PHP à rallonge

On inclu un fichier au nom plus générique pour le surcharger plus facilement

Un cache sur prive/inclure/prive_infos_son

version 1.3.3

File size: 5.2 KB
Line 
1<?php
2/**
3 * GetID3
4 * Gestion des métadonnées de fichiers sonores directement dans SPIP
5 *
6 * Auteurs :
7 * kent1 (http://www.kent1.info - kent1@arscenic.info), BoOz
8 * 2008-2013 - Distribué sous licence GNU/GPL
9 *
10 * @package SPIP\GetID3\Pipelines
11 */
12
13if (!defined('_ECRIRE_INC_VERSION')) return;
14
15/**
16 * Insertion dans le pipeline post_edition (SPIP)
17 *
18 * Récupération d'informations sur le document lors de son insertion en base
19 *
20 * @param array $flux
21 *              Le contexte du pipeline
22 * @return array $flux
23 *              Le contexte du pipeline ($flux) modifié
24 */
25function getid3_post_edition($flux){
26        if(in_array($flux['args']['operation'],array('ajouter_document','modifier'))){
27                static $getid3_done = false;
28                if(!$getid3_done){
29                        $id_document = $flux['args']['id_objet'];
30                        $son_modif_id3 = array("mp3,ogg,oga,flac");
31                        $extensions_vignettes = array("png","gif","jpg");
32                        $conf_id3 = lire_config('getid3/reecriture_tags',array());
33                        $document = sql_fetsel("*", "spip_documents","id_document=".sql_quote($id_document));
34                        $mode = $document['mode'];
35                        if($flux['args']['operation'] == 'ajouter_document'){
36                                $getid3_done = true;
37                                /**
38                                 * L'ajout est une vignette
39                                 * Insertion de la vignette automatiquement dans le mp3 si changement
40                                 */
41                                if( 
42                                        $mode == 'vignette'
43                                        && ($document_orig = sql_fetsel('*','spip_documents','id_vignette='.intval($id_document)))
44                                        && ($document_orig['distant'] != 'oui')
45                                        && in_array($document_orig['extension'],$son_modif_id3)
46                                ){
47                                        include_spip('inc/documents');
48                                       
49                                        $fichier_orig = get_spip_doc($document_orig['fichier']);
50                                        $recuperer_id3 = charger_fonction('recuperer_id3','inc');
51                                        $valeurs = $recuperer_id3($fichier_orig);
52                                       
53                                        $files[] = get_spip_doc($document['fichier']);
54                                       
55                                        foreach($valeurs as $valeur => $info){
56                                                if(preg_match('/cover/',$valeur) && (count($files) == 0))
57                                                        $files[] = $info;
58                                                else
59                                                        $valeurs[$valeur] = filtrer_entites($info);
60                                        }
61                                       
62                                        /**
63                                         * On écrit les tags
64                                         */
65                                        $ecrire_id3 = charger_fonction('getid3_ecrire_infos','inc');
66                                        $err = $ecrire_id3($document_orig['id_document'],$valeurs,$files);
67                                }
68                        }
69                        /**
70                         * Mise à jour des tags des mp3 si besoin
71                         */
72                        if($flux['args']['action'] == 'modifier'){
73                        $getid3_done = true;
74                               
75                                if(in_any($extension,$son_modif_id3)){
76                                        $update = false;
77                                        foreach($flux['data'] as $key => $value){
78                                                if(in_array($key,$conf_id3))
79                                                        $update = true;
80                                        }
81                                        if(is_numeric($flux['data']['id_vignette'])){
82                                                $update = true;
83                                        }
84                                        if($update){
85                                                $files = null;
86                                               
87                                                /**
88                                                 * On récupère tout d'abord les anciens tags
89                                                 */     
90                                                include_spip('inc/documents');
91                                                $fichier = get_spip_doc($document['fichier']);
92                                                $recuperer_id3 = charger_fonction('recuperer_id3','inc');
93                                                $valeurs = $recuperer_id3($fichier);
94                                               
95                                                if(is_numeric($flux['data']['id_vignette'])){
96                                                        $files[] = get_spip_doc(sql_getfetsel('fichier','spip_documents','id_document='.intval($flux['data']['id_vignette'])));
97                                                }
98                                                foreach($valeurs as $valeur => $info){
99                                                        if(preg_match('/cover/',$valeur) && (count($files) == 0)){
100                                                                $files[] = $info;
101                                                        }else{
102                                                                $valeurs[$valeur] = filtrer_entites($info);
103                                                        }
104                                                }
105                                               
106                                                if(isset($flux['data']['titre']) && in_array('titre',$conf_id3))
107                                                        $valeurs['title'] = $flux['data']['titre'];
108                                                       
109                                                if(isset($flux['data']['descriptif']) && in_array('descriptif',$conf_id3))
110                                                        $valeurs['comment'] = $flux['data']['descriptif'];
111                                                       
112                                                /**
113                                                 * On écrit les tags
114                                                 */
115                                                $ecrire_id3 = charger_fonction('getid3_ecrire_infos','inc');
116                                                $err = $ecrire_id3($id_document,$valeurs,$files);
117                                        }
118                                }
119                        }
120                }
121        }
122        return $flux;
123}
124
125/**
126 * Insertion dans le pipeline post_edition (plugin medias)
127 *
128 * Ajouter le lien vers la récupération et la modif des id3
129 *
130 * @param array $flux
131 *              Le contexte du pipeline
132 * @return array $flux
133 *              Le contexte du pipeline modifié
134 */
135function getid3_document_desc_actions($flux){
136        $flux['data'] .= recuperer_fond('prive/squelettes/inclure/metadatas_document_desc_action',$flux['args']);
137        return $flux;
138}
139
140/**
141 * Pipeline Cron de GetID3
142 *
143 * Vérifie chaque jour que les logiciels nécessaires sont présents
144 *
145 * @return L'array des taches complété
146 * @param array $taches_generales Un array des tâches du cron de SPIP
147 */
148function getid3_taches_generales_cron($taches_generales){
149        $taches_generales['getid3_taches_generales'] = 24*60*60;
150        return $taches_generales;
151}
152
153/**
154 * Insertion dans le pipeline recuperer_fond (SPIP)
155 *
156 * On affiche les informations du document
157 *
158 * @param array $flux
159 *              Le contexte du pipeline
160 * @return array $flux
161 *              Le contexte du pipeline modifié
162 */
163function getid3_recuperer_fond($flux){
164        if ($flux['args']['fond']=='modeles/document_desc'){
165                if(isset($flux['args']['contexte']['id_document']) && ($flux['args']['contexte']['id_document'] > 0)){
166                        $mode = sql_getfetsel("media", "spip_documents","id_document=".intval($flux['args']['contexte']['id_document']));
167                        if(in_array($mode,array('audio','video')))
168                                $flux['data']['texte'] .= recuperer_fond('prive/inclure/prive_infos_son',$flux['args']['contexte']);
169                }
170        }
171        return $flux;
172}
173?>
Note: See TracBrowser for help on using the repository browser.