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

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

Premier tour de compatibilité SPIP 3.0 :

-* paquet.xml et ses fichiers de langue
-* getid3_administrations
-* on met à jour les entêtes de fichier PHP

File size: 3.9 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 * @param array $infos
19 * @param array $images
20 * @param array $formats
21 */
22
23function inc_getid3_ecrire_infos($id_document,$infos=array(),$images=null,$formats = array('id3v1', 'id3v2.3')){
24        if(!intval($id_document)){
25                return;
26        }
27        $document = sql_fetsel("fichier,distant,extension", "spip_documents","id_document=".intval($id_document));
28       
29        if($document['extension'] == 'ogg'){
30                $formats = array('vorbiscomment');
31                $infos['date'] = $infos['year'];
32        }else if($document['extension'] == 'flac'){
33                $formats = array('metaflac');
34                $infos['date'] = $infos['year'];
35        }
36       
37        if($document['distant'] != 'oui'){
38                $err = array();
39                $TagData = array();
40                include_spip('inc/documents');
41                $document_chemin = get_spip_doc($document['fichier']);
42
43                include_spip('getid3/getid3');
44                $getid3 = new getID3;
45                if(!$getid3){
46                        return false;
47                }
48                include_spip('getid3/write');
49                $getid3->encoding         = 'UTF-8';
50                $getid3->encoding_id3v1   = 'ISO-8859-1';
51                $getid3->option_tags_html = false;
52       
53                $ecrire = new getid3_writetags;
54                $ecrire->filename                       = $document_chemin;
55                $ecrire->tagformats                     = $formats;
56                $ecrire->tag_encoding           = 'UTF-8';
57                $ecrire->overwrite_tags         = true;
58                $ecrire->remove_other_tags      = false;
59       
60                /**
61                 * On utilise nos valeurs
62                 */
63                foreach ($infos as $info => $value) {
64                        $TagData[$info][] = $value;
65                }
66               
67                $TagData = pipeline('pre_edition',
68                        array(
69                                'args' => array(
70                                        'table' => 'spip_documents', // compatibilite
71                                        'table_objet' => 'documents',
72                                        'spip_table_objet' => 'spip_documents',
73                                        'type' =>'document',
74                                        'id_objet' => $id_document,
75                                        'action' => 'getid3_ecrire_infos',
76                                        'operation' => 'getid3_ecrire_infos', // compat <= v2.0
77                                ),
78                                'data' => $TagData
79                        )
80                );
81                /**
82                 * Ajout des images
83                 */
84                if(is_array($images)){
85                        foreach ($images as $image){
86                                if(!is_array($image) && strlen($image) > 0){
87                                        $image_finale['chemin'] = $image;
88                                        $image_finale['picturetypeid'] = '3';
89                                        $image_finale['description'] = 'Front Cover';
90                                        $image_infos = getimagesize($image_finale['chemin']);
91                                        $image_finale['mime'] = image_type_to_mime_type($image_infos[2]);
92                                        $image = $image_finale;
93                                }
94                                if(is_array($image)){
95                                        if($formats[0] != 'metaflac'){
96                                                $TagData['attached_picture'][] = array(
97                                                        'data' => file_get_contents($image['chemin']),
98                                                        'picturetypeid' => $image['picturetypeid'],
99                                                        'description' => $image['description'],
100                                                        'mime' => $image['mime']
101                                                );
102                                        }else{
103                                                $TagData['attached_picture'][] = array(
104                                                        'file' => $image['chemin'],
105                                                        'picturetypeid' => $image['picturetypeid'],
106                                                        'description' => $image['description'],
107                                                        'mime' => $image['mime']
108                                                );
109                                        }
110                                }
111                        }
112                }
113                $ecrire->tag_data = $TagData;
114               
115                /**
116                 * On écrit le tout
117                 */
118                $ecrire->WriteTags();
119       
120                /**
121                 * Les warnings
122                 */
123                if (!empty($ecrire->warnings)) {
124                $err = array_merge($err,$ecrire->warnings);
125                }
126       
127                /**
128                 * Les erreurs
129                 */
130                if (!empty($ecrire->errors)) {
131                        $err = array_merge($err,$ecrire->errors);
132                }
133               
134                $taille = filesize($document_chemin);
135                include_spip('inc/modifier');
136                revision_document($id_document, array('taille'=>$taille));
137               
138                pipeline('post_edition',
139                        array(
140                                'args' => array(
141                                        'table' => 'spip_documents', // compatibilite
142                                        'table_objet' => 'documents',
143                                        'spip_table_objet' => 'spip_documents',
144                                        'type' =>'document',
145                                        'id_objet' => $id_document,
146                                        'action' => 'getid3_ecrire_infos',
147                                        'operation' => 'getid3_ecrire_infos', // compat <= v2.0
148                                ),
149                                'data' => $infos
150                        )
151                );
152        }
153        return $err;
154}
155?>
Note: See TracBrowser for help on using the repository browser.