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

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

simplification du fichier de fonctions, plus qu'une seule fonction, une a été supprimée, l'autre mise dans le fichier de fonction du squelette qui l'utilisait

Petite simplification des pipelines

Version 1.3.4

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("mode,fichier", "spip_documents","id_document=".sql_quote($id_document));
34                        if($flux['args']['operation'] == 'ajouter_document'){
35                                $getid3_done = true;
36                                /**
37                                 * L'ajout est une vignette
38                                 * Insertion de la vignette automatiquement dans le mp3 si changement
39                                 */
40                                if( 
41                                        $document['mode'] == 'vignette'
42                                        && ($document_orig = sql_fetsel('distant,extension,fichier','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                                         * On écrit les tags
63                                         */
64                                        $ecrire_id3 = charger_fonction('getid3_ecrire_infos','inc');
65                                        $err = $ecrire_id3($document_orig['id_document'],$valeurs,$files);
66                                }
67                        }
68                        /**
69                         * Mise à jour des tags des mp3 si besoin
70                         */
71                        if($flux['args']['action'] == 'modifier'){
72                        $getid3_done = true;
73                               
74                                if(in_any($extension,$son_modif_id3)){
75                                        $update = false;
76                                        foreach($flux['data'] as $key => $value){
77                                                if(in_array($key,$conf_id3))
78                                                        $update = true;
79                                        }
80                                        if(is_numeric($flux['data']['id_vignette']))
81                                                $update = true;
82                                        if($update){
83                                                $files = null;
84                                               
85                                                /**
86                                                 * On récupère tout d'abord les anciens tags
87                                                 */     
88                                                include_spip('inc/documents');
89                                                $fichier = get_spip_doc($document['fichier']);
90                                                $recuperer_id3 = charger_fonction('recuperer_id3','inc');
91                                                $valeurs = $recuperer_id3($fichier);
92                                               
93                                                if(is_numeric($flux['data']['id_vignette']))
94                                                        $files[] = get_spip_doc(sql_getfetsel('fichier','spip_documents','id_document='.intval($flux['data']['id_vignette'])));
95                                               
96                                                foreach($valeurs as $valeur => $info){
97                                                        if(preg_match('/cover/',$valeur) && (count($files) == 0))
98                                                                $files[] = $info;
99                                                        else
100                                                                $valeurs[$valeur] = $info;
101                                                }
102                                               
103                                                if(isset($flux['data']['titre']) && in_array('titre',$conf_id3))
104                                                        $valeurs['title'] = $flux['data']['titre'];
105                                                       
106                                                if(isset($flux['data']['descriptif']) && in_array('descriptif',$conf_id3))
107                                                        $valeurs['comment'] = $flux['data']['descriptif'];
108                                                       
109                                                /**
110                                                 * On écrit les tags
111                                                 */
112                                                $ecrire_id3 = charger_fonction('getid3_ecrire_infos','inc');
113                                                $err = $ecrire_id3($id_document,$valeurs,$files);
114                                        }
115                                }
116                        }
117                }
118        }
119        return $flux;
120}
121
122/**
123 * Insertion dans le pipeline post_edition (plugin medias)
124 *
125 * Ajouter le lien vers la récupération et la modif des id3
126 *
127 * @param array $flux
128 *              Le contexte du pipeline
129 * @return array $flux
130 *              Le contexte du pipeline modifié
131 */
132function getid3_document_desc_actions($flux){
133        $flux['data'] .= recuperer_fond('prive/squelettes/inclure/metadatas_document_desc_action',$flux['args']);
134        return $flux;
135}
136
137/**
138 * Pipeline Cron de GetID3
139 *
140 * Vérifie chaque jour que les logiciels nécessaires sont présents
141 *
142 * @return L'array des taches complété
143 * @param array $taches_generales Un array des tâches du cron de SPIP
144 */
145function getid3_taches_generales_cron($taches_generales){
146        $taches_generales['getid3_taches_generales'] = 24*60*60;
147        return $taches_generales;
148}
149
150/**
151 * Insertion dans le pipeline recuperer_fond (SPIP)
152 *
153 * On affiche les informations du document
154 *
155 * @param array $flux
156 *              Le contexte du pipeline
157 * @return array $flux
158 *              Le contexte du pipeline modifié
159 */
160function getid3_recuperer_fond($flux){
161        if ($flux['args']['fond']=='modeles/document_desc'){
162                if(isset($flux['args']['contexte']['id_document']) && ($flux['args']['contexte']['id_document'] > 0)){
163                        $mode = sql_getfetsel("media", "spip_documents","id_document=".intval($flux['args']['contexte']['id_document']));
164                        if(in_array($mode,array('audio','video')))
165                                $flux['data']['texte'] .= recuperer_fond('prive/inclure/prive_infos_son',$flux['args']['contexte']);
166                }
167        }
168        return $flux;
169}
170?>
Note: See TracBrowser for help on using the repository browser.