[SPIP] ~maj v3.0.14-->v3.0.17
[ptitvelo/web/www.git] / www / plugins-dist / medias / medias_administrations.php
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
13 if (!defined('_ECRIRE_INC_VERSION')) return;
14
15 /**
16 * verifier et maj le statut des documents
17 * @param bool $affiche
18 * @return
19 */
20 function 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 */
45 function 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 json
150 array('creer_base_types_doc')
151 );
152 $maj['1.2.6'] = array(
153 // ajout du champ titre pour json cf oubli dans http://zone.spip.org/trac/spip-zone/changeset/80059
154 array("sql_updateq","spip_types_documents",array('titre'=>'JSON'),"extension='json'"),
155
156 );
157 include_spip('base/upgrade');
158 include_spip('base/medias');
159 maj_plugin($nom_meta_base_version, $version_cible, $maj);
160
161 medias_check_statuts();
162 }
163
164 /**
165 * Maj des meta documents
166 */
167 function medias_maj_meta_documents(){
168 $config = array();
169 if (isset($GLOBALS['meta']['documents_article']) AND $GLOBALS['meta']['documents_article']!=='non')
170 $config[] = 'spip_articles';
171 if (isset($GLOBALS['meta']['documents_rubrique']) AND $GLOBALS['meta']['documents_rubrique']!=='non')
172 $config[] = 'spip_rubriques';
173 ecrire_meta('documents_objets',implode(',',$config));
174 }
175
176 function medias_peuple_media_document($champ_media="media_defaut"){
177 $res = sql_select("DISTINCT extension","spip_documents","media=".sql_quote('?'));
178 while($row = sql_fetch($res)){
179 // attention ici c'est encore le champ media, car on le renomme juste apres
180 $media = sql_getfetsel($champ_media,'spip_types_documents','extension='.sql_quote($row['extension']));
181 sql_updateq('spip_documents',array('media'=>$media),"media=".sql_quote('?').' AND extension='.sql_quote($row['extension']));
182 if (time() >= _TIME_OUT)
183 return;
184 }
185 }
186
187 /*
188 function medias_install($action,$prefix,$version_cible){
189 $version_base = $GLOBALS[$prefix."_base_version"];
190 switch ($action){
191 case 'test':
192 # plus necessaire si pas de bug :p
193 # medias_check_statuts();
194 return (isset($GLOBALS['meta'][$prefix."_base_version"])
195 AND version_compare($GLOBALS['meta'][$prefix."_base_version"],$version_cible,">="));
196 break;
197 case 'install':
198 medias_upgrade('medias_base_version',$version_cible);
199 break;
200 case 'uninstall':
201 # pas de deinstallation sur les documents pour le moment, trop dangereux
202 # medias_vider_tables();
203 break;
204 }
205 }
206 */