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

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

Des locutions plus nécessaires et petites modifications

File size: 6.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-2012 - Distribué sous licence GNU/GPL
9 *
10 */
11
12/**
13 * Insertion dans le pipeline post_edition
14 * Récupération d'informations sur le document lors de son insertion en base
15 *
16 * @param array $flux Le contexte du pipeline
17 * @return $flux le $flux modifié
18 */
19function getid3_post_edition($flux){
20        $id_document = $flux['args']['id_objet'];
21        $son_modif_id3 = array("mp3");
22        $son_recup_id3 = array("mp3","ogg","flac","aiff","aif","wav","m4a","oga");
23        $extensions_vignettes = array("png","gif","jpg");
24        $conf_id3 = lire_config('getid3/reecriture_tags',array());
25        $document_orig = sql_fetsel('*','spip_documents','id_vignette='.intval($id_document));
26       
27        if($flux['args']['operation'] == 'ajouter_document'){
28                $document = sql_fetsel("*", "spip_documents","id_document=".intval($id_document));
29                $extension = $document['extension'];
30                /**
31                 * Récupération automatique des infos des fichiers sons à leur insertion
32                 */
33                if(in_any($extension,$son_recup_id3)){
34                        $recuperer_infos = charger_fonction('getid3_recuperer_infos','inc');
35                        $infos = $recuperer_infos($id_document);
36                }
37                /**
38                 * L'ajout est une vignette
39                 * Insertion de la vignette automatiquement dans le mp3 si changement
40                 */
41                else if(in_any($extension,$extensions_vignettes) 
42                        && ($document_orig = sql_fetsel('*','spip_documents','id_vignette='.intval($id_document)))
43                        && ($document_orig['distant'] != 'oui')
44                        && in_array($document_orig['extension'],$son_modif_id3)
45                ){
46                        include_spip('inc/documents');
47                       
48                        $fichier_orig = get_spip_doc($document_orig['fichier']);
49                        $recuperer_id3 = charger_fonction('recuperer_id3','inc');
50                        $valeurs = $recuperer_id3($fichier_orig);
51                       
52                        $files[] = get_spip_doc($document['fichier']);
53                       
54                        foreach($valeurs as $valeur => $info){
55                                if(preg_match('/cover/',$valeur) && (count($files) == 0)){
56                                        $files[] = $info;
57                                }else{
58                                        $valeurs[$valeur] = filtrer_entites($info);
59                                }
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                $document = sql_fetsel("*", "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));
74                $extension = $document['extension'];
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        return $flux;
121}
122
123/**
124 * Ajouter le lien vers la modifs des id3
125 *
126 * @param array $flux
127 * @return array
128 */
129function getid3_document_desc_actions($flux){
130        $infos = sql_fetsel('distant,extension','spip_documents','id_document='.intval($flux['args']['id_document']));
131        $son_recup_id3 = array("mp3","ogg","flac","aiff","aif","wav","m4a","oga");
132        $son_modif_id3 = lire_config('getid3_write',array('mp3'));
133        $id_document = $flux['args']['id_document'];
134        if(($infos['distant'] == 'non') && in_array($infos['extension'],$son_modif_id3)){
135                $redirect = self();
136                $url = parametre_url(generer_url_ecrire('document_id3_editer','id_document='.intval($id_document)),'redirect',$redirect);
137                $texte = _T('getid3:lien_modifier_id3');
138                if($flux['args']['position'] == 'galerie'){
139                        $flux['data'] .= "[<a href='$url'>$texte</a>]";
140                }else{
141                        $flux['data'] .= "<span class='sep'> | </span><a href='$url' target='_blank' class='editbox'>$texte</a>";
142                }
143        }if(($infos['distant'] == 'non') && in_array($infos['extension'],$son_recup_id3)){
144                $texte2 = _T('getid3:lien_recuperer_infos');
145                $action2 = generer_action_auteur('getid3_infos', "0/article/$id_document", $redirect);
146                $flux['data'] .= "<span class='sep'> | </span><a href='$action2'>$texte2</a>";
147        }
148        return $flux;
149}
150
151/**
152 * Pipeline Cron de GetID3
153 *
154 * Vérifie chaque jour que les logiciels nécessaires sont présents
155 *
156 * @return L'array des taches complété
157 * @param array $taches_generales Un array des tâches du cron de SPIP
158 */
159function getid3_taches_generales_cron($taches_generales){
160        $taches_generales['getid3_taches_generales'] = 24*60*60;
161        return $taches_generales;
162}
163
164/**
165 * Insertion dans le pipeline recuperer_fond (SPIP)
166 *
167 * On affiche les informations du document
168 *
169 * @param array $flux
170 *              Le contexte du pipeline
171 * @return array $flux
172 *              Le contexte du pipeline modifié
173 */
174function getid3_recuperer_fond($flux){
175        if ($flux['args']['fond']=='modeles/document_desc'){
176                if(isset($flux['args']['contexte']['id_document']) && ($flux['args']['contexte']['id_document'] > 0)){
177                        $son_recup_id3 = array("mp3","ogg","flac","aiff","aif","wav","m4a","oga");
178                        $extension = sql_getfetsel("extension", "spip_documents","id_document=".intval($flux['args']['contexte']['id_document']));
179                        if(in_array($extension,$son_recup_id3))
180                                $flux['data']['texte'] .= recuperer_fond('prive/inclure/prive_infos_son',$flux['args']['contexte']);
181                }
182        }
183        return $flux;
184}
185?>
Note: See TracBrowser for help on using the repository browser.