source: spip-zone/_plugins_/getID3/trunk/inc/getid3_ecrire_infos.php @ 62814

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

Une chaine de langue manquante

Moins de logs

De simples quotas au lieu de doubles, il parait que c'est plus rapide

File size: 4.3 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
12if (!defined('_ECRIRE_INC_VERSION')) return;
13
14/**
15 * Enregistre dans les fichiers sons les tags ID3
16 *
17 * @param int $id_document
18 *              L'identifiant numérique du document
19 * @param array $infos
20 *              Un array des informations à écrire dans le fichier
21 * @param array $images
22 *              Un array correspondant à la cover à ajouter au fichier
23 * @param array $formats
24 *              Un array correspondant aux types de tags à écrire
25 */
26
27function inc_getid3_ecrire_infos($id_document,$infos=array(),$images=null,$formats = array('id3v1', 'id3v2.3')){
28        if(!intval($id_document)){
29                return;
30        }
31       
32        $document = sql_fetsel("fichier,distant,extension", "spip_documents","id_document=".intval($id_document));
33       
34        if($document['distant'] != 'oui'){
35
36                if($document['extension'] == 'ogg'){
37                        $formats = array('vorbiscomment');
38                        $infos['date'] = $infos['year'];
39                }else if($document['extension'] == 'flac'){
40                        $formats = array('metaflac');
41                        $infos['date'] = $infos['year'];
42                }
43               
44                $err = array();
45                $TagData = array();
46               
47                include_spip('inc/documents');
48                $document_chemin = get_spip_doc($document['fichier']);
49
50                include_spip('getid3/getid3');
51                $getid3 = new getID3;
52                if(!$getid3){
53                        return false;
54                }
55               
56                include_spip('getid3/write');
57                $getid3->encoding         = 'UTF-8';
58                $getid3->encoding_id3v1   = 'ISO-8859-1';
59                $getid3->option_tags_html = false;
60       
61                $ecrire = new getid3_writetags;
62                $ecrire->filename                       = $document_chemin;
63                $ecrire->tagformats                     = $formats;
64                $ecrire->tag_encoding           = 'UTF-8';
65                $ecrire->overwrite_tags         = true;
66                $ecrire->remove_other_tags      = false;
67       
68                /**
69                 * On utilise nos valeurs
70                 */
71                foreach ($infos as $info => $value) {
72                        $TagData[$info][] = $value;
73                }
74               
75                /**
76                 * Ajout des images
77                 */
78                if(is_array($images)){
79                        foreach ($images as $image){
80                                if(!is_array($image) && strlen($image) > 0){
81                                        $image_finale['chemin'] = $image;
82                                        $image_finale['picturetypeid'] = '3';
83                                        $image_finale['description'] = 'Front Cover';
84                                        $image_infos = getimagesize($image_finale['chemin']);
85                                        $image_finale['mime'] = image_type_to_mime_type($image_infos[2]);
86                                        $image = $image_finale;
87                                }
88                                if(is_array($image)){
89                                        if($formats[0] != 'metaflac'){
90                                                $TagData['attached_picture'][] = array(
91                                                        'data' => file_get_contents($image['chemin']),
92                                                        'picturetypeid' => $image['picturetypeid'],
93                                                        'description' => $image['description'],
94                                                        'mime' => $image['mime']
95                                                );
96                                        }else{
97                                                $TagData['attached_picture'][] = array(
98                                                        'file' => $image['chemin'],
99                                                        'picturetypeid' => $image['picturetypeid'],
100                                                        'description' => $image['description'],
101                                                        'mime' => $image['mime']
102                                                );
103                                        }
104                                }
105                        }
106                }
107               
108                /**
109                 * Le pipeline de pre_edition
110                 * Avant l'écriture des tags dans le fichier
111                 */
112                $TagData = pipeline('pre_edition',
113                        array(
114                                'args' => array(
115                                        'table' => 'spip_documents', // compatibilite
116                                        'table_objet' => 'documents',
117                                        'spip_table_objet' => 'spip_documents',
118                                        'type' =>'document',
119                                        'id_objet' => $id_document,
120                                        'action' => 'getid3_ecrire_infos'
121                                ),
122                                'data' => $TagData
123                        )
124                );
125               
126                /**
127                 * On écrit le tout
128                 */
129                $ecrire->tag_data = $TagData;
130                $ecrire->WriteTags();
131       
132                /**
133                 * Les warnings
134                 */
135                if (!empty($ecrire->warnings)) {
136                $err = array_merge($err,$ecrire->warnings);
137                }
138       
139                /**
140                 * Les erreurs
141                 */
142                if (!empty($ecrire->errors)) {
143                        $err = array_merge($err,$ecrire->errors);
144                }
145               
146                /**
147                 * Modification de la taille du document en base
148                 * car elle peut être modifiée par l'ajout de tags ou de cover
149                 */
150                $taille = filesize($document_chemin);
151                include_spip('action/editer_document');
152                document_modifier($id_document, array('taille'=>$taille));
153               
154                /**
155                 * Le pipeline de post_edition du document
156                 */
157                pipeline('post_edition',
158                        array(
159                                'args' => array(
160                                        'table' => 'spip_documents', // compatibilite
161                                        'table_objet' => 'documents',
162                                        'spip_table_objet' => 'spip_documents',
163                                        'type' =>'document',
164                                        'id_objet' => $id_document,
165                                        'action' => 'getid3_ecrire_infos'
166                                ),
167                                'data' => $infos
168                        )
169                );
170        }
171        return $err;
172}
173?>
Note: See TracBrowser for help on using the repository browser.