source: spip-zone/_core_/branches/spip-3.0/plugins/medias/medias_administrations.php @ 80059

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

Report de r80040 et r80058 : ajout de la prise en charge des documents .json

File size: 7.5 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2014                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13if (!defined('_ECRIRE_INC_VERSION')) return;
14
15/**
16 * verifier et maj le statut des documents
17 * @param bool $affiche
18 * @return
19 */
20function medias_check_statuts($affiche = false){
21        $trouver_table = charger_fonction('trouver_table','base');
22        $desc = $trouver_table('documents');
23        # securite, si jamais on arrive ici avant un upgrade de base
24        if (!isset($desc['field']['statut']))
25                return;
26
27        // utiliser sql_allfetsel pour clore la requete avant la mise a jour en base sur chaque doc (sqlite)
28        // iterer par groupe de 100 pour ne pas exploser sur les grosses bases
29        $docs = array_map('reset',sql_allfetsel('id_document','spip_documents',"statut='0'",'','',"0,100"));
30        while (count($docs)){
31                include_spip('action/editer_document');
32                foreach($docs as $id_document)
33                        // mettre a jour le statut si necessaire
34                        instituer_document($id_document);
35                if ($affiche) echo " .";
36          $docs = array_map('reset',sql_allfetsel('id_document','spip_documents',"statut='0'",'','',"0,100"));
37        }
38}
39
40/**
41 * Mise a jour de la BDD
42 * @param string $nom_meta_base_version
43 * @param string $version_cible
44 */
45function medias_upgrade($nom_meta_base_version,$version_cible){
46
47        // ne pas installer tant qu'on est pas a jour sur version base SPIP
48        // cas typique d'un upgrade qui commence par suppression de connect.php
49        // SPIP lance la maj des plugins lors de la connexion, alors que l'upgrade SPIP
50        // a pas encore ete joue : ca casse cet upgrade quand on migre depuis un tres vieux SPIP
51        if (isset($GLOBALS['meta']['version_installee'])
52                AND ($GLOBALS['spip_version_base'] != (str_replace(',','.',$GLOBALS['meta']['version_installee']))))
53                return;
54
55        if (!isset($GLOBALS['meta'][$nom_meta_base_version])){
56                $trouver_table = charger_fonction('trouver_table','base');
57                if ($desc = $trouver_table('spip_documents')
58                  AND !isset($desc['field']['statut']))
59                        ecrire_meta($nom_meta_base_version,'0.1.0');
60        }
61
62        $maj = array();
63        $maj['create'] = array(
64                array('maj_tables',array('spip_documents','spip_documents_liens','spip_types_documents')),
65                array('creer_base_types_doc')
66        );
67        $maj['0.2.0'] = array(
68                array('sql_alter',"TABLE spip_documents ADD statut varchar(10) DEFAULT '0' NOT NULL"),
69        );
70        $maj['0.3.0'] = array(
71                array('sql_alter',"TABLE spip_documents ADD date_publication datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"),
72        );
73        $maj['0.4.0'] = array(
74                // recalculer tous les statuts en tenant compte de la date de publi des articles...
75                array('medias_check_statuts',true),
76        );
77        $maj['0.5.0'] = array(
78                array('sql_alter',"TABLE spip_documents ADD brise tinyint DEFAULT 0"),
79        );
80        $maj['0.6.0'] = array(
81                array('sql_alter',"TABLE spip_types_documents ADD media varchar(10) DEFAULT 'file' NOT NULL"),
82                array('creer_base_types_doc','','media'),
83        );
84        $maj['0.7.0'] = array(
85                array('sql_alter',"TABLE spip_documents ADD credits varchar(255) DEFAULT '' NOT NULL"),
86        );
87        $maj['0.10.0'] = array(
88                array('sql_alter',"TABLE spip_documents CHANGE fichier fichier TEXT NOT NULL DEFAULT ''"),
89        );
90        $maj['0.11.0'] = array(
91                array('sql_alter',"TABLE spip_documents CHANGE mode mode varchar(10) DEFAULT 'document' NOT NULL"),
92        );
93        $maj['0.14.0'] = array(
94                array('medias_maj_meta_documents'),
95                array('creer_base_types_doc','','media'),
96        );
97        $maj['0.15.0'] = array(
98                array('creer_base_types_doc','','media'),
99        );
100        $maj['0.15.1'] = array(
101                array('sql_alter',"TABLE spip_documents CHANGE taille taille bigint"),
102        );
103        $maj['0.16.0'] = array(
104                array('creer_base_types_doc','','media'),
105        );
106
107        $maj['1.0.0'] = array(
108                // on cree le champ en defaut '?' pour reperer les nouveaux a peupler
109                array('sql_alter',"TABLE spip_documents ADD media varchar(10) DEFAULT '?' NOT NULL"),
110                array('medias_peuple_media_document', 'media'),
111                // puis on retablit le bon defaut
112                array('sql_alter',"TABLE spip_documents CHANGE media media varchar(10) DEFAULT 'file' NOT NULL"),
113        );
114        $maj['1.0.1'] = array(
115                // puis on retablit le bon defaut
116                array('sql_alter',"TABLE spip_types_documents CHANGE media media_defaut varchar(10) DEFAULT 'file' NOT NULL"),
117        );
118
119        $maj['1.1.0'] = array(
120                array('sql_alter',"TABLE spip_documents_liens ADD INDEX id_objet (id_objet)"),
121                array('sql_alter',"TABLE spip_documents_liens ADD INDEX objet (objet)"),
122        );
123        $maj['1.1.1'] = array(
124                array('creer_base_types_doc'),
125        );
126        // reparer les media sur les file suite a upgrade rate depuis SPIP 2.x
127        $maj['1.2.0'] = array(
128                // on remet en ? tous les media=file
129                array('sql_updateq',"spip_documents",array('media'=>'?'),"media='file'"),
130                // et on repeuple
131                array('medias_peuple_media_document'),
132        );
133        $maj['1.2.1'] = array(
134                array('creer_base_types_doc'),
135        );
136        $maj['1.2.3'] = array(
137                // ajout de mbtiles
138                array('creer_base_types_doc'),
139                // reparer les clauses DEFAULT manquantes de maniere reccurente sur cette table
140                array('sql_alter',"TABLE spip_documents CHANGE extension extension VARCHAR(10) DEFAULT '' NOT NULL"),
141                array('sql_alter',"TABLE spip_documents CHANGE credits credits varchar(255) DEFAULT '' NOT NULL"),
142                array('sql_alter',"TABLE spip_documents CHANGE statut statut varchar(10) DEFAULT '0' NOT NULL"),
143        );
144        $maj['1.2.4'] = array(
145                // ajout de tar
146                array('creer_base_types_doc')
147        );
148        $maj['1.2.5'] = array(
149                // ajout de tar
150                array('creer_base_types_doc')
151        );
152        include_spip('base/upgrade');
153        include_spip('base/medias');
154        maj_plugin($nom_meta_base_version, $version_cible, $maj);
155
156        medias_check_statuts();
157}
158
159/**
160 * Maj des meta documents
161 */
162function medias_maj_meta_documents(){
163        $config = array();
164        if (isset($GLOBALS['meta']['documents_article']) AND $GLOBALS['meta']['documents_article']!=='non')
165                $config[] = 'spip_articles';
166        if (isset($GLOBALS['meta']['documents_rubrique']) AND $GLOBALS['meta']['documents_rubrique']!=='non')
167                $config[] = 'spip_rubriques';
168        ecrire_meta('documents_objets',implode(',',$config));
169}
170
171function medias_peuple_media_document($champ_media="media_defaut"){
172        $res = sql_select("DISTINCT extension","spip_documents","media=".sql_quote('?'));
173        while($row = sql_fetch($res)){
174                // attention ici c'est encore le champ media, car on le renomme juste apres
175                $media = sql_getfetsel($champ_media,'spip_types_documents','extension='.sql_quote($row['extension']));
176                sql_updateq('spip_documents',array('media'=>$media),"media=".sql_quote('?').' AND extension='.sql_quote($row['extension']));
177                if (time() >= _TIME_OUT)
178                        return;
179        }
180}
181
182/*
183function medias_install($action,$prefix,$version_cible){
184        $version_base = $GLOBALS[$prefix."_base_version"];
185        switch ($action){
186                case 'test':
187                        # plus necessaire si pas de bug :p
188                        # medias_check_statuts();
189                        return (isset($GLOBALS['meta'][$prefix."_base_version"])
190                                AND version_compare($GLOBALS['meta'][$prefix."_base_version"],$version_cible,">="));
191                        break;
192                case 'install':
193                        medias_upgrade('medias_base_version',$version_cible);
194                        break;
195                case 'uninstall':
196                        # pas de deinstallation sur les documents pour le moment, trop dangereux
197                        # medias_vider_tables();
198                        break;
199        }
200}
201*/
Note: See TracBrowser for help on using the repository browser.