source: spip-zone/_plugins_/spipmotion/base/spipmotion_upgrade.php @ 53157

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

Ajouter le format y4m

File size: 11.0 KB
Line 
1<?php
2/**
3 * SPIPmotion
4 * Gestion de l'encodage et des métadonnées de vidéos directement dans spip
5 *
6 * Auteurs :
7 * Quentin Drouet (kent1)
8 * 2008-2011 - Distribué sous licence GNU/GPL
9 *
10 */
11
12if (!defined("_ECRIRE_INC_VERSION")) return;
13
14include_spip('inc/meta');
15
16function spipmotion_upgrade($nom_meta_base_version,$version_cible){
17        $current_version = 0.0;
18        if ((!isset($GLOBALS['meta'][$nom_meta_base_version]))
19                || (($current_version = $GLOBALS['meta'][$nom_meta_base_version])!=$version_cible)){
20                include_spip('base/spipmotion');
21                include_spip('base/create');
22                include_spip('base/abstract_sql');
23                include_spip('inc/acces');
24                if (version_compare($current_version,'0.0','<=')){
25                        creer_base();
26                        maj_tables('spip_documents');
27                        $ffmpeg_infos = charger_fonction('ffmpeg_infos','inc');
28                        $ffmpeg_infos(true);
29
30                        $ffmpeg_binaires = charger_fonction('spipmotion_verifier_binaires','inc');
31                        $ffmpeg_binaires('',true);
32                       
33                        global $tables_images, $tables_sequences, $tables_documents, $tables_mime;
34                        $tables_mime['m2p'] = 'video/MP2P';
35                        $tables_mime['ts'] = 'video/MP2T';
36                        $tables_mime['mts'] = 'video/MP2T';
37                        $tables_mime['m2ts'] = 'video/MP2T';
38                       
39                        $tables_sequences['m2p'] = 'MPEG-PS';
40                        $tables_sequences['ts'] = 'MPEG transport stream';
41                        $tables_sequences['mts'] = 'AVCHD MPEG-2 transport stream';
42                        $tables_sequences['m2ts'] = 'BDAV MPEG-2 Transport Stream';
43                       
44                        // Init ou Re-init ==> replace pas insert
45               
46                        $freplace = sql_serveur('replace', $serveur);
47                        foreach ($tables_mime as $extension => $type_mime) {
48                                if (isset($tables_images[$extension])) {
49                                        $titre = $tables_images[$extension];
50                                        $inclus='image';
51                                }
52                                else if (isset($tables_sequences[$extension])) {
53                                        $titre = $tables_sequences[$extension];
54                                        $inclus='embed';
55                                }
56                                else {
57                                        $inclus='non';
58                                        if (isset($tables_documents[$extension]))
59                                                $titre = $tables_documents[$extension];
60                                        else
61                                                $titre = '';
62                                }
63               
64                                $freplace('spip_types_documents',
65                                        array('mime_type' => $type_mime,
66                                                'titre' => $titre,
67                                                'inclus' => $inclus,
68                                                'extension' => $extension,
69                                                'upload' => 'oui'
70                                        ),
71                                        '', $serveur);
72                        }
73
74                        /**
75                         * On change le champs taille en bigint pour avoir des tailles de documents en base > 2Go
76                         */
77                        sql_alter("TABLE spip_documents CHANGE `taille` `taille` bigint");
78                        ecrire_meta($nom_meta_base_version,$current_version=$version_cible,'non');
79                }
80                if (version_compare($current_version,'0.2','<')){
81                        sql_alter("TABLE spip_spipmotion_attentes ADD `id_auteur` BIGINT(21) NOT NULL DEFAULT '0' AFTER `id_article`");
82                        sql_alter("TABLE spip_spipmotion_attentes ADD INDEX ( `id_auteur` )");
83                        ecrire_meta($nom_meta_base_version,$current_version=0.2);
84                }
85                if (version_compare($current_version,'0.3','<')){
86                        maj_tables('spip_documents');
87                        ecrire_meta($nom_meta_base_version,$current_version=0.3);
88                }
89                if (version_compare($current_version,'0.4','<')){
90                        sql_alter("TABLE spip_spipmotion_attentes CHANGE `id_article` `id_objet` BIGINT(21) NOT NULL DEFAULT '0'");
91                        sql_alter("TABLE spip_spipmotion_attentes ADD `objet` VARCHAR(25) AFTER `id_objet`");
92                        ecrire_meta($nom_meta_base_version,$current_version=0.4);
93                }
94                if (version_compare($current_version,'0.5','<')){
95                        maj_tables('spip_documents');
96                        ecrire_meta($nom_meta_base_version,$current_version=0.5);
97                }
98                if (version_compare($current_version,'0.6','<')){
99                        maj_tables('spip_spipmotion_attentes');
100                        ecrire_meta($nom_meta_base_version,$current_version=0.6);
101                }
102                if (version_compare($current_version,'0.7','<')){
103                        maj_tables('spip_documents');
104                        ecrire_meta($nom_meta_base_version,$current_version=0.7);
105                }
106                if (version_compare($current_version,'0.7.1','<')){
107                        /**
108                         * Récupérer la configuration de FFMPEG sur le système et la mettre dans les métas
109                         */
110                        $ffmpeg_infos = charger_fonction('ffmpeg_infos','inc');
111                        $ffmpeg_infos(true);
112                        ecrire_meta($nom_meta_base_version,$current_version='0.7.1');
113                }
114                if (version_compare($current_version,'0.7.2','<')){
115                        /**
116                         * On change le champs pixelformat
117                         */
118                        sql_alter("TABLE spip_documents CHANGE `pixelformat` `pixelformat` VARCHAR(255) DEFAULT '' NOT NULL");
119                        ecrire_meta($nom_meta_base_version,$current_version='0.7.2');
120                }
121                if (version_compare($current_version,'0.7.3','<')){
122                        /**
123                         * On récupère les informations de spipmotion si possible
124                         */
125                        $ffmpeg_infos = charger_fonction('ffmpeg_infos','inc');
126                        $ffmpeg_infos(true);
127
128                        $ffmpeg_binaires = charger_fonction('spipmotion_verifier_binaires','inc');
129                        $ffmpeg_binaires('',true);
130
131                        maj_tables('spip_spipmotion_attentes');
132                        /**
133                         * On invalide le cache
134                         */
135                        include_spip('inc/invalideur');
136                        suivre_invalideur("1");
137                        ecrire_meta($nom_meta_base_version,$current_version='0.7.3');
138                }
139                if (version_compare($current_version,'0.7.4','<')){
140                        sql_alter("TABLE spip_documents CHANGE `framerate` `framerate` FLOAT");
141                        ecrire_meta($nom_meta_base_version,$current_version='0.7.4');
142                }
143                if (version_compare($current_version,'0.7.5','<')){
144                        global $tables_images, $tables_sequences, $tables_documents, $tables_mime;
145                        $tables_mime['ts'] = 'video/MP2T';
146                        $tables_mime['mts'] = 'video/MP2T';
147                        $tables_mime['m2ts'] = 'video/MP2T';
148                       
149                        $tables_sequences['ts'] = 'MPEG transport stream';
150                        $tables_sequences['mts'] = 'AVCHD MPEG-2 transport stream';
151                        $tables_sequences['m2ts'] = 'BDAV MPEG-2 Transport Stream';
152                       
153                        // Init ou Re-init ==> replace pas insert
154               
155                        $freplace = sql_serveur('replace', $serveur);
156                        foreach ($tables_mime as $extension => $type_mime) {
157                                if (isset($tables_images[$extension])) {
158                                        $titre = $tables_images[$extension];
159                                        $inclus='image';
160                                }
161                                else if (isset($tables_sequences[$extension])) {
162                                        $titre = $tables_sequences[$extension];
163                                        $inclus='embed';
164                                }
165                                else {
166                                        $inclus='non';
167                                        if (isset($tables_documents[$extension]))
168                                                $titre = $tables_documents[$extension];
169                                        else
170                                                $titre = '';
171                                }
172               
173                                $freplace('spip_types_documents',
174                                        array('mime_type' => $type_mime,
175                                                'titre' => $titre,
176                                                'inclus' => $inclus,
177                                                'extension' => $extension,
178                                                'upload' => 'oui'
179                                        ),
180                                        '', $serveur);
181                        }
182                        ecrire_meta($nom_meta_base_version,$current_version='0.7.5');
183                }
184                if (version_compare($current_version,'0.7.6','<')){
185                        maj_tables('spip_documents');
186                        ecrire_meta($nom_meta_base_version,$current_version='0.7.6');
187                }
188                if (version_compare($current_version,'0.7.7','<')){
189                        maj_tables('spip_documents');
190                        ecrire_meta($nom_meta_base_version,$current_version='0.7.7');
191                }
192                if (version_compare($current_version,'0.7.8','<')){
193                        global $tables_images, $tables_sequences, $tables_documents, $tables_mime;
194                        $tables_mime['m2p'] = 'video/MP2P';
195                       
196                        $tables_sequences['m2p'] = 'MPEG-PS';
197                       
198                        // Init ou Re-init ==> replace pas insert
199               
200                        $freplace = sql_serveur('replace', $serveur);
201                        foreach ($tables_mime as $extension => $type_mime) {
202                                if (isset($tables_images[$extension])) {
203                                        $titre = $tables_images[$extension];
204                                        $inclus='image';
205                                }
206                                else if (isset($tables_sequences[$extension])) {
207                                        $titre = $tables_sequences[$extension];
208                                        $inclus='embed';
209                                }
210                                else {
211                                        $inclus='non';
212                                        if (isset($tables_documents[$extension]))
213                                                $titre = $tables_documents[$extension];
214                                        else
215                                                $titre = '';
216                                }
217               
218                                $freplace('spip_types_documents',
219                                        array('mime_type' => $type_mime,
220                                                'titre' => $titre,
221                                                'inclus' => $inclus,
222                                                'extension' => $extension,
223                                                'upload' => 'oui'
224                                        ),
225                                        '', $serveur);
226                        }
227                        ecrire_meta($nom_meta_base_version,$current_version='0.7.8');
228                }if (version_compare($current_version,'0.7.9','<')){
229                        creer_base();
230                        effacer_meta('spipmotion_formats');
231                        effacer_meta('spipmotion_codecs');
232                        effacer_meta('spipmotion_codecs_audio_decode');
233                        effacer_meta('spipmotion_codecs_video_decode');
234                        effacer_meta('spipmotion_codecs_audio_encode');
235                        effacer_meta('spipmotion_codecs_video_encode');
236                        effacer_meta('spipmotion_bitstream_filters');
237                        effacer_meta('spipmotion_protocols');
238                        effacer_meta('spipmotion_avfilters');
239                        effacer_meta('spipmotion_compiler');
240                        effacer_meta('spipmotion_ffmpeg2theora');
241                        effacer_meta('spipmotion_flvtool2');
242                        effacer_meta('spipmotion_flvtoolplus');
243                        effacer_meta('spipmotion_mediainfo');
244                        effacer_meta('spipmotion_ffmpeg_casse');
245                        effacer_meta('spipmotion_ffmpeg2theora_casse');
246                        effacer_meta('spipmotion_flvtool_casse');
247                        effacer_meta('spipmotion_flvtoolplus_casse');
248                        effacer_meta('spipmotion_qt-faststart_casse');
249                        effacer_meta('spipmotion_spipmotionsh_casse');
250                        effacer_meta('spipmotion_ffmpeg-php_casse');
251                        effacer_meta('safe_mode');
252                        effacer_meta('spipmotion_safe_mode_exec_dir');
253                        $ffmpeg_infos = charger_fonction('ffmpeg_infos','inc');
254                        $ffmpeg_infos(true);
255                        ecrire_meta($nom_meta_base_version,$current_version='0.7.9');
256                }
257                if (version_compare($current_version,'0.8.0','<')){
258                        /**
259                         * On change le champs metas en metadatas
260                         */
261                        sql_alter("TABLE spip_documents CHANGE `metas` `metadatas` TEXT DEFAULT '' NOT NULL");
262                        /**
263                         * Génération d'un htaccess dans le répertoire script_bash
264                         */
265                       
266                        ecrire_meta($nom_meta_base_version,$current_version='0.8.0');
267                }
268                if (version_compare($current_version,'0.8.1','<')){
269                        /**
270                         * On change le champs taille en bigint pour avoir des tailles de documents en base > 2Go
271                         */
272                        sql_alter("TABLE spip_documents CHANGE `taille` `taille` bigint");
273                        ecrire_meta($nom_meta_base_version,$current_version='0.8.1');
274                }
275                if (version_compare($current_version,'0.8.2','<')){
276                        global $tables_images, $tables_sequences, $tables_documents, $tables_mime;
277                        $tables_mime['y4m'] = 'video/x-raw-yuv';
278                       
279                        $tables_sequences['y4m'] = 'YUV4MPEG2';
280                       
281                        // Init ou Re-init ==> replace pas insert
282               
283                        $freplace = sql_serveur('replace', $serveur);
284                        foreach ($tables_mime as $extension => $type_mime) {
285                                if (isset($tables_images[$extension])) {
286                                        $titre = $tables_images[$extension];
287                                        $inclus='image';
288                                }
289                                else if (isset($tables_sequences[$extension])) {
290                                        $titre = $tables_sequences[$extension];
291                                        $inclus='embed';
292                                }
293                                else {
294                                        $inclus='non';
295                                        if (isset($tables_documents[$extension]))
296                                                $titre = $tables_documents[$extension];
297                                        else
298                                                $titre = '';
299                                }
300               
301                                $freplace('spip_types_documents',
302                                        array('mime_type' => $type_mime,
303                                                'titre' => $titre,
304                                                'inclus' => $inclus,
305                                                'extension' => $extension,
306                                                'upload' => 'oui'
307                                        ),
308                                        '', $serveur);
309                        }
310                        ecrire_meta($nom_meta_base_version,$current_version='0.8.2');
311                }
312                /**
313                 * TODO : générer un htaccess dans le répertoire script_bash/
314                 * TODO : insérer une préconfiguration par défaut
315                 */
316        }
317}
318
319/**
320 *
321 * Désinstallation du plugin
322 *
323 * On supprime :
324 * -* Les metas de configuration
325 * -* Les metas de vérification des programmes
326 * -* La table spip_spipmotion_attentes
327 *
328 * On laisse :
329 * -* Les nouveaux champs sur la table spip_documents
330 *
331 * @param float $nom_meta_base_version
332 */
333function spipmotion_vider_tables($nom_meta_base_version) {
334        include_spip('base/abstract_sql');
335        sql_drop_table("spip_spipmotion_attentes");
336        sql_drop_table("spip_spipmotion_metas");
337        effacer_meta($nom_meta_base_version);
338}
339?>
Note: See TracBrowser for help on using the repository browser.