[SPIP] +2.1.12
[velocampus/web/www.git] / www / ecrire / maj / v019.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2011 *
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 /* Nouvelle gestion des MAJ (par tableau) */
17 /*--------------------------------------------------------------------- */
18
19 // on la fait coincider retroactivement avec l'etat de la 1.9.2
20 // => l'index numerique entier est la * par 1000 (resultat < SVN c'est ok)
21
22 // FLV est incrustable, la MAJ precedente l'avait oublie
23 $GLOBALS['maj'][1931] = array(
24 array('spip_query', "UPDATE spip_types_documents SET `inclus`='embed' WHERE `extension`='flv'")
25 );
26
27 // Ajout de spip_forum.date_thread, et on essaie de le remplir
28 // a coup de table temporaire (est-ce autorise partout... sinon
29 // tant pis, ca ne marchera que pour les forums recemment modifies)
30 $GLOBALS['maj'][1932] = array(
31 array('sql_alter', "TABLE spip_forum ADD `date_thread` datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"),
32 array('sql_alter', "TABLE spip_forum ADD INDEX `date_thread` (`date_thread`)"),
33
34 array('spip_query', "DROP TABLE IF EXISTS spip_tmp"),
35 array('spip_query', "CREATE TABLE spip_tmp SELECT `id_thread`,MAX(`date_heure`) AS dt FROM spip_forum GROUP BY `id_thread`"),
36 array('sql_alter', "TABLE spip_tmp ADD INDEX `p` (`id_thread`)"),
37 array('spip_query', "UPDATE spip_forum AS F JOIN spip_tmp AS T ON F.id_thread=T.id_thread SET F.date_thread=T.dt"),
38 array('spip_query', "DROP TABLE spip_tmp"),
39 );
40
41
42 // Retrait de _DIR_IMG dans le champ fichier de la table des doc
43 function maj_1_934 () {
44 // attention, en cas de mutualisation _DIR_IMG contient quelque chose comme sites/urldusite/IMG/
45 // essayons en ne prenant que le dernier segment
46 $dir_img = basename(_DIR_IMG).'/';
47 $res = spip_query("SELECT fichier FROM spip_documents WHERE fichier LIKE " . _q($dir_img . '%') . " LIMIT 0,1");
48 if (!$row = spip_fetch_array($res)){
49 //Êsinon on essaye avec le chemin complet
50 // il faut donc verifier qu'on a bien le bon nom de repertoire
51 $dir_img = substr(_DIR_IMG,strlen(_DIR_RACINE));
52 }
53 $n = strlen($dir_img) + 1;
54 spip_query("UPDATE spip_documents SET `fichier`=substring(fichier,$n) WHERE `fichier` LIKE " . _q($dir_img . '%'));
55 }
56
57 $GLOBALS['maj'][1934] = array(array('maj_1_934'));
58
59 function maj_1_935 () {
60 include_spip('inc/texte');
61 foreach(array('article'=>'id_article','rubrique'=>'id_rubrique','breve'=>'id_breve') as $type => $id_table_objet){
62 $table_objet = "$type"."s";
63 $chapo = $type=='article' ? ",a.chapo":"";
64 $res = spip_query("SELECT a.$id_table_objet,a.texte $chapo FROM spip_documents_$table_objet AS d JOIN spip_$table_objet AS a ON a.$id_table_objet=d.$id_table_objet GROUP BY $id_table_objet");
65 while ($row = sql_fetch($res)){
66 $GLOBALS['doublons_documents_inclus'] = array();
67 traiter_modeles(($chapo?$row['chapo']:"").$row['texte'],true); // detecter les doublons
68 if (count($GLOBALS['doublons_documents_inclus'])){
69 $id = $row[$id_table_objet];
70 $liste = "(".implode(",$id,'oui'),(",$GLOBALS['doublons_documents_inclus']).",$id,'oui')";
71 spip_query("REPLACE INTO spip_documents_$table_objet (`id_document`,`$id_table_objet`,`vu`) VALUES $liste");
72 }
73 }
74 }
75 }
76
77 $GLOBALS['maj'][1935] = array(
78 array('sql_alter', "TABLE spip_documents_articles ADD `vu` ENUM('non', 'oui') DEFAULT 'non' NOT NULL"),
79 array('sql_alter', "TABLE spip_documents_rubriques ADD `vu` ENUM('non', 'oui') DEFAULT 'non' NOT NULL"),
80 array('sql_alter', "TABLE spip_documents_breves ADD `vu` ENUM('non', 'oui') DEFAULT 'non' NOT NULL"),
81 array('maj_1_935')
82 );
83
84
85 // http://doc.spip.org/@convertir_un_champ_blob_en_text
86 function convertir_un_champ_blob_en_text($table,$champ,$type){
87 // precaution : definir le charset par defaut de la table, car c'est lui qui prevaut
88 // et il faut qu'il corresponde au charset de la connexion qui est celui
89 // dans lequel on a ecrit le champ en blob
90 if ($charset = sql_getfetsel('@@character_set_connection')){
91 sql_alter("TABLE $table DEFAULT CHARACTER SET ".$charset);
92 }
93 $res = spip_query("SHOW FULL COLUMNS FROM $table LIKE '$champ'");
94 if ($row = sql_fetch($res)){
95 if (strtolower($row['Type'])!=strtolower($type)) {
96 $default = $row['Default']?(" DEFAULT ".sql_quote($row['Default'])):"";
97 $notnull = ($row['Null']=='YES')?"":" NOT NULL";
98 sql_alter("TABLE $table CHANGE $champ $champ $type $default $notnull");
99 }
100 }
101 }
102
103 $GLOBALS['maj'][1937] = array(
104 // convertir les champs blob des tables spip en champs texte
105 array('convertir_un_champ_blob_en_text',"spip_articles","texte","LONGTEXT"),
106 array('convertir_un_champ_blob_en_text',"spip_articles","extra","LONGTEXT"),
107 array('convertir_un_champ_blob_en_text',"spip_auteurs","extra","LONGTEXT"),
108 array('convertir_un_champ_blob_en_text',"spip_breves","texte","LONGTEXT"),
109 array('convertir_un_champ_blob_en_text',"spip_breves","extra","LONGTEXT"),
110 array('convertir_un_champ_blob_en_text',"spip_messages","texte","LONGTEXT"),
111 array('convertir_un_champ_blob_en_text',"spip_mots","texte","LONGTEXT"),
112 array('convertir_un_champ_blob_en_text',"spip_mots","extra","LONGTEXT"),
113 array('convertir_un_champ_blob_en_text',"spip_groupes_mots","texte","LONGTEXT"),
114 array('convertir_un_champ_blob_en_text',"spip_rubriques","texte","LONGTEXT"),
115 array('convertir_un_champ_blob_en_text',"spip_rubriques","extra","LONGTEXT"),
116 array('convertir_un_champ_blob_en_text',"spip_syndic","nom_site","LONGTEXT"),
117 array('convertir_un_champ_blob_en_text',"spip_syndic","descriptif","TEXT"),
118 array('convertir_un_champ_blob_en_text',"spip_syndic","extra","LONGTEXT"),
119 array('convertir_un_champ_blob_en_text',"spip_syndic_articles","descriptif","LONGTEXT"),
120 array('convertir_un_champ_blob_en_text',"spip_petitions","texte","LONGTEXT"),
121 array('convertir_un_champ_blob_en_text',"spip_ortho_cache","suggest","TEXT"),
122 );
123
124
125 function maj_1_938 () {
126 $res = sql_select('extension','spip_documents',"extension='' OR extension is NULL");
127 if ($n = sql_count($res)) {
128 $repli = false;
129 // verifier que la colonne id_type est toujours la (update post 1.938)
130 $desc = sql_showtable('spip_documents');
131 if (!$desc OR !isset($desc['field']['id_type']))
132 $repli = true;
133
134 $s = sql_select('extension'.($repli?'':',id_type'),'spip_types_documents');
135 while ($t = sql_fetch($s)) {
136 if (isset($t['id_type']))
137 spip_query("UPDATE spip_documents SET `extension`="._q($t['extension']) ." WHERE `id_type`="._q($t['id_type']));
138 else
139 spip_query("UPDATE spip_documents SET `extension`="._q($t['extension']) ." WHERE fichier LIKE "._q("%." . $t['extension']));
140 }
141 $res = sql_select('extension','spip_documents',"extension='' OR extension is NULL");
142 if ($n = sql_count($res))
143 spip_log("Table spip_documents : Colonne extension incomplete : $n lignes vides");
144 }
145 }
146
147 $GLOBALS['maj'][1938] = array(
148 // Des champs NULL a l'installation
149 // Ajouter un champ extension aux spip_documents, et le
150 // remplir avec les valeurs ad hoc
151 array('sql_alter', "TABLE spip_documents ADD `extension` VARCHAR(10) DEFAULT '' NOT NULL "),
152 array('sql_alter', "TABLE spip_documents ADD INDEX `extension` (`extension`)"),
153 array('maj_1_938'),
154
155 array('sql_alter', "TABLE spip_documents DROP INDEX `id_type`, DROP `id_type`"),
156 ## supprimer l'autoincrement avant de supprimer la PRIMARY KEY
157 array('sql_alter', "TABLE spip_types_documents CHANGE `id_type` `id_type` BIGINT( 21 ) NOT NULL ") ,
158 array('sql_alter', "TABLE spip_types_documents DROP PRIMARY KEY"),
159 array('sql_alter', "TABLE spip_types_documents DROP `id_type`"),
160 array('sql_alter', "TABLE spip_types_documents DROP INDEX `extension`"),
161
162 ## recreer la PRIMARY KEY sur spip_types_documents.extension
163 array('sql_alter', "TABLE spip_types_documents ADD PRIMARY KEY (`extension`)"),
164 );
165
166 $GLOBALS['maj'][1939] = array(
167 array('sql_alter', "TABLE spip_visites CHANGE `visites` `visites` INT UNSIGNED DEFAULT '0' NOT NULL"),
168 array('sql_alter', "TABLE spip_visites_articles CHANGE `visites` `visites` INT UNSIGNED DEFAULT '0' NOT NULL"),
169 array('sql_alter', "TABLE spip_referers CHANGE `visites` `visites` INT UNSIGNED DEFAULT '0' NOT NULL"),
170 array('sql_alter', "TABLE spip_referers CHANGE `visites_jour` `visites_jour` INT UNSIGNED DEFAULT '0' NOT NULL"),
171 array('sql_alter', "TABLE spip_referers CHANGE `visites_veille` `visites_veille` INT UNSIGNED DEFAULT '0' NOT NULL"),
172 array('sql_alter', "TABLE spip_referers_articles CHANGE `visites` `visites` INT UNSIGNED DEFAULT '0' NOT NULL")
173 );
174
175 $GLOBALS['maj'][1940] = array(
176 array('spip_query', "DROP TABLE spip_caches"),
177 );
178
179
180 $GLOBALS['maj'][1941] = array(
181 array('spip_query', "UPDATE spip_meta SET `valeur` = '' WHERE `nom`='preview' AND `valeur`='non' "),
182 array('spip_query', "UPDATE spip_meta SET `valeur` = ',0minirezo,1comite,' WHERE `nom`='preview' AND `valeur`='1comite' "),
183 array('spip_query', "UPDATE spip_meta SET `valeur` = ',0minirezo,' WHERE `nom`='preview' AND `valeur`='oui' "),
184 );
185
186 $GLOBALS['maj'][1942] = array(
187 array('sql_alter', "TABLE spip_auteurs CHANGE `statut` `statut` varchar(255) DEFAULT '0' NOT NULL"),
188 array('sql_alter', "TABLE spip_breves CHANGE `statut` `statut` varchar(6) DEFAULT '0' NOT NULL"),
189 array('sql_alter', "TABLE spip_messages CHANGE `statut` `statut` varchar(6) DEFAULT '0' NOT NULL"),
190 array('sql_alter', "TABLE spip_rubriques CHANGE `statut` `statut` varchar(10) DEFAULT '0' NOT NULL"),
191 array('sql_alter', "TABLE spip_rubriques CHANGE `statut_tmp` `statut_tmp` varchar(10) DEFAULT '0' NOT NULL"),
192 array('sql_alter', "TABLE spip_syndic CHANGE `statut` `statut` varchar(10) DEFAULT '0' NOT NULL"),
193 array('sql_alter', "TABLE spip_syndic_articles CHANGE `statut` `statut` varchar(10) DEFAULT '0' NOT NULL"),
194 array('sql_alter', "TABLE spip_forum CHANGE `statut` `statut` varchar(8) DEFAULT '0' NOT NULL"),
195 array('sql_alter', "TABLE spip_signatures CHANGE `statut` `statut` varchar(10) DEFAULT '0' NOT NULL")
196 );
197
198
199 // suppression de l'indexation dans la version standard
200 $GLOBALS['maj'][1943] = array(
201 array('sql_alter', "TABLE spip_articles DROP KEY `idx`"),
202 array('sql_alter', "TABLE spip_articles DROP `idx`"),
203 array('sql_alter', "TABLE spip_auteurs DROP KEY `idx`"),
204 array('sql_alter', "TABLE spip_auteurs DROP `idx`"),
205 array('sql_alter', "TABLE spip_breves DROP KEY `idx`"),
206 array('sql_alter', "TABLE spip_breves DROP `idx`"),
207 array('sql_alter', "TABLE spip_mots DROP KEY `idx`"),
208 array('sql_alter', "TABLE spip_mots DROP `idx`"),
209 array('sql_alter', "TABLE spip_rubriques DROP KEY `idx`"),
210 array('sql_alter', "TABLE spip_rubriques DROP `idx`"),
211 # array('sql_alter', "TABLE spip_documents DROP KEY `idx`"),
212 array('sql_alter', "TABLE spip_documents DROP `idx`"),
213 array('sql_alter', "TABLE spip_syndic DROP KEY `idx`"),
214 array('sql_alter', "TABLE spip_syndic DROP `idx`"),
215 array('sql_alter', "TABLE spip_forum DROP KEY `idx`"),
216 array('sql_alter', "TABLE spip_forum DROP `idx`"),
217 array('sql_alter', "TABLE spip_signatures DROP KEY `idx`"),
218 array('sql_alter', "TABLE spip_signatures DROP `idx`"),
219
220 array('spip_query', "DROP TABLE spip_index"),
221 array('spip_query', "DROP TABLE spip_index_dico"),
222 );
223
224 $GLOBALS['maj'][1944] = array(
225 array('sql_alter', "TABLE spip_documents CHANGE `taille` `taille` integer"),
226 array('sql_alter', "TABLE spip_documents CHANGE `largeur` `largeur` integer"),
227 array('sql_alter', "TABLE spip_documents CHANGE `hauteur` `hauteur` integer")
228 );
229
230 $GLOBALS['maj'][1945] = array(
231 array('sql_alter', "TABLE spip_petitions CHANGE `email_unique` `email_unique` CHAR (3) DEFAULT '' NOT NULL"),
232 array('sql_alter', "TABLE spip_petitions CHANGE `site_obli` `site_obli` CHAR (3) DEFAULT '' NOT NULL"),
233 array('sql_alter', "TABLE spip_petitions CHANGE `site_unique` `site_unique` CHAR (3) DEFAULT '' NOT NULL"),
234 array('sql_alter', "TABLE spip_petitions CHANGE `message` `message` CHAR (3) DEFAULT '' NOT NULL"),
235 array('sql_alter', "TABLE spip_petitions CHANGE `texte` `texte` LONGTEXT DEFAULT '' NOT NULL"),
236 array('sql_alter', "TABLE spip_articles CHANGE `surtitre` `surtitre` text DEFAULT '' NOT NULL"),
237 array('sql_alter', "TABLE spip_articles CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
238 array('sql_alter', "TABLE spip_articles CHANGE `soustitre` `soustitre` text DEFAULT '' NOT NULL"),
239 array('sql_alter', "TABLE spip_articles CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
240 array('sql_alter', "TABLE spip_articles CHANGE `chapo` `chapo` mediumtext DEFAULT '' NOT NULL"),
241 array('sql_alter', "TABLE spip_articles CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"),
242 array('sql_alter', "TABLE spip_articles CHANGE `ps` `ps` mediumtext DEFAULT '' NOT NULL"),
243 array('sql_alter', "TABLE spip_articles CHANGE `accepter_forum` `accepter_forum` CHAR(3) DEFAULT '' NOT NULL"),
244 array('sql_alter', "TABLE spip_articles CHANGE `nom_site` `nom_site` tinytext DEFAULT '' NOT NULL"),
245 array('sql_alter', "TABLE spip_articles CHANGE `url_site` `url_site` VARCHAR(255) DEFAULT '' NOT NULL"),
246 array('sql_alter', "TABLE spip_articles CHANGE `url_propre` `url_propre` VARCHAR(255) DEFAULT '' NOT NULL"),
247 array('sql_alter', "TABLE spip_auteurs CHANGE `nom` `nom` text DEFAULT '' NOT NULL"),
248 array('sql_alter', "TABLE spip_auteurs CHANGE `bio` `bio` text DEFAULT '' NOT NULL"),
249 array('sql_alter', "TABLE spip_auteurs CHANGE `email` `email` tinytext DEFAULT '' NOT NULL"),
250 array('sql_alter', "TABLE spip_auteurs CHANGE `nom_site` `nom_site` tinytext DEFAULT '' NOT NULL"),
251 array('sql_alter', "TABLE spip_auteurs CHANGE `url_site` `url_site` text DEFAULT '' NOT NULL"),
252 array('sql_alter', "TABLE spip_auteurs CHANGE `pass` `pass` tinytext DEFAULT '' NOT NULL"),
253 array('sql_alter', "TABLE spip_auteurs CHANGE `low_sec` `low_sec` tinytext DEFAULT '' NOT NULL"),
254 array('sql_alter', "TABLE spip_auteurs CHANGE `pgp` `pgp` TEXT DEFAULT '' NOT NULL"),
255 array('sql_alter', "TABLE spip_auteurs CHANGE `htpass` `htpass` tinytext DEFAULT '' NOT NULL"),
256 array('sql_alter', "TABLE spip_breves CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
257 array('sql_alter', "TABLE spip_breves CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"),
258 array('sql_alter', "TABLE spip_breves CHANGE `lien_titre` `lien_titre` text DEFAULT '' NOT NULL"),
259 array('sql_alter', "TABLE spip_breves CHANGE `lien_url` `lien_url` text DEFAULT '' NOT NULL"),
260 array('sql_alter', "TABLE spip_messages CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
261 array('sql_alter', "TABLE spip_messages CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"),
262 array('sql_alter', "TABLE spip_messages CHANGE `type` `type` varchar(6) DEFAULT '' NOT NULL"),
263 array('sql_alter', "TABLE spip_messages CHANGE `rv` `rv` varchar(3) DEFAULT '' NOT NULL"),
264 array('sql_alter', "TABLE spip_mots CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
265 array('sql_alter', "TABLE spip_mots CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
266 array('sql_alter', "TABLE spip_mots CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"),
267 array('sql_alter', "TABLE spip_mots CHANGE `type` `type` text DEFAULT '' NOT NULL"),
268 array('sql_alter', "TABLE spip_mots CHANGE `url_propre` `url_propre` VARCHAR(255) DEFAULT '' NOT NULL"),
269 array('sql_alter', "TABLE spip_groupes_mots CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
270 array('sql_alter', "TABLE spip_groupes_mots CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
271 array('sql_alter', "TABLE spip_groupes_mots CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"),
272 array('sql_alter', "TABLE spip_groupes_mots CHANGE `unseul` `unseul` varchar(3) DEFAULT '' NOT NULL"),
273 array('sql_alter', "TABLE spip_groupes_mots CHANGE `obligatoire` `obligatoire` varchar(3) DEFAULT '' NOT NULL"),
274 array('sql_alter', "TABLE spip_groupes_mots CHANGE `articles` `articles` varchar(3) DEFAULT '' NOT NULL"),
275 array('sql_alter', "TABLE spip_groupes_mots CHANGE `breves` `breves` varchar(3) DEFAULT '' NOT NULL"),
276 array('sql_alter', "TABLE spip_groupes_mots CHANGE `rubriques` `rubriques` varchar(3) DEFAULT '' NOT NULL"),
277 array('sql_alter', "TABLE spip_groupes_mots CHANGE `syndic` `syndic` varchar(3) DEFAULT '' NOT NULL"),
278 array('sql_alter', "TABLE spip_groupes_mots CHANGE `minirezo` `minirezo` varchar(3) DEFAULT '' NOT NULL"),
279 array('sql_alter', "TABLE spip_groupes_mots CHANGE `comite` `comite` varchar(3) DEFAULT '' NOT NULL"),
280 array('sql_alter', "TABLE spip_groupes_mots CHANGE `forum` `forum` varchar(3) DEFAULT '' NOT NULL"),
281 array('sql_alter', "TABLE spip_rubriques CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
282 array('sql_alter', "TABLE spip_rubriques CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
283 array('sql_alter', "TABLE spip_rubriques CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"),
284 array('sql_alter', "TABLE spip_rubriques CHANGE `url_propre` `url_propre` VARCHAR(255) DEFAULT '' NOT NULL"),
285 array('sql_alter', "TABLE spip_documents CHANGE `extension` `extension` VARCHAR(10) DEFAULT '' NOT NULL"),
286 array('sql_alter', "TABLE spip_documents CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
287 array('sql_alter', "TABLE spip_documents CHANGE `date` `date` datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"),
288 array('sql_alter', "TABLE spip_documents CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
289 array('sql_alter', "TABLE spip_documents CHANGE `fichier` `fichier` varchar(255) DEFAULT '' NOT NULL"),
290 array('sql_alter', "TABLE spip_types_documents CHANGE `extension` `extension` varchar(10) DEFAULT '' NOT NULL"),
291 array('sql_alter', "TABLE spip_types_documents CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
292 array('sql_alter', "TABLE spip_types_documents CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
293 array('sql_alter', "TABLE spip_types_documents CHANGE `mime_type` `mime_type` varchar(100) DEFAULT '' NOT NULL"),
294 array('sql_alter', "TABLE spip_syndic CHANGE `nom_site` `nom_site` text DEFAULT '' NOT NULL"),
295 array('sql_alter', "TABLE spip_syndic CHANGE `url_site` `url_site` text DEFAULT '' NOT NULL"),
296 array('sql_alter', "TABLE spip_syndic CHANGE `url_syndic` `url_syndic` text DEFAULT '' NOT NULL"),
297 array('sql_alter', "TABLE spip_syndic CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
298 array('sql_alter', "TABLE spip_syndic CHANGE `url_propre` `url_propre` VARCHAR(255) DEFAULT '' NOT NULL"),
299 array('sql_alter', "TABLE spip_syndic CHANGE `syndication` `syndication` VARCHAR(3) DEFAULT '' NOT NULL"),
300 array('sql_alter', "TABLE spip_syndic_articles CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
301 array('sql_alter', "TABLE spip_syndic_articles CHANGE `url` `url` VARCHAR(255) DEFAULT '' NOT NULL"),
302 array('sql_alter', "TABLE spip_syndic_articles CHANGE `lesauteurs` `lesauteurs` text DEFAULT '' NOT NULL"),
303 array('sql_alter', "TABLE spip_syndic_articles CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
304 array('sql_alter', "TABLE spip_forum CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
305 array('sql_alter', "TABLE spip_forum CHANGE `texte` `texte` mediumtext DEFAULT '' NOT NULL"),
306 array('sql_alter', "TABLE spip_forum CHANGE `auteur` `auteur` text DEFAULT '' NOT NULL"),
307 array('sql_alter', "TABLE spip_forum CHANGE `email_auteur` `email_auteur` text DEFAULT '' NOT NULL"),
308 array('sql_alter', "TABLE spip_forum CHANGE `nom_site` `nom_site` text DEFAULT '' NOT NULL"),
309 array('sql_alter', "TABLE spip_forum CHANGE `url_site` `url_site` text DEFAULT '' NOT NULL"),
310 array('sql_alter', "TABLE spip_forum CHANGE `ip` `ip` varchar(16) DEFAULT '' NOT NULL"),
311 array('sql_alter', "TABLE spip_signatures CHANGE `nom_email` `nom_email` text DEFAULT '' NOT NULL"),
312 array('sql_alter', "TABLE spip_signatures CHANGE `ad_email` `ad_email` text DEFAULT '' NOT NULL"),
313 array('sql_alter', "TABLE spip_signatures CHANGE `nom_site` `nom_site` text DEFAULT '' NOT NULL"),
314 array('sql_alter', "TABLE spip_signatures CHANGE `url_site` `url_site` text DEFAULT '' NOT NULL"),
315 array('sql_alter', "TABLE spip_signatures CHANGE `message` `message` mediumtext DEFAULT '' NOT NULL")
316 );
317
318
319 $GLOBALS['maj'][1946] = array(
320 array('sql_alter', "TABLE spip_forum DROP INDEX `id_parent`"),
321 array('sql_alter', "TABLE spip_forum DROP INDEX `id_article`"),
322 array('sql_alter', "TABLE spip_forum DROP INDEX `id_breve`"),
323 array('sql_alter', "TABLE spip_forum DROP INDEX `id_syndic`"),
324 array('sql_alter', "TABLE spip_forum DROP INDEX `id_rubrique`"),
325 array('sql_alter', "TABLE spip_forum DROP INDEX `date_thread`"),
326 array('sql_alter', "TABLE spip_forum DROP INDEX `statut`"),
327 array('sql_alter', "TABLE spip_forum ADD INDEX `optimal` (`statut`,`id_parent`,`id_article`,`date_heure`,`id_breve`,`id_syndic`,`id_rubrique`)")
328 );
329
330
331 $GLOBALS['maj'][1947] = array(
332
333 array('sql_alter', "TABLE spip_articles DROP INDEX `url_site`"),
334 array('sql_alter', "TABLE spip_articles DROP INDEX `date_modif`"),
335 array('sql_alter', "TABLE spip_auteurs DROP INDEX `lang`")
336 );
337
338 // mauvaise manip
339 $GLOBALS['maj'][1949] = array(
340
341 array('sql_alter', "TABLE spip_versions DROP INDEX `date`"),
342 array('sql_alter', "TABLE spip_versions DROP INDEX `id_auteur`")
343 );
344
345
346 function maj_1_950($installee) {
347 // oubli de gerer le prefixe lors l'introduction de l'abstraction
348 // => Relancer les MAJ concernees si la version dont on part les avait fait
349 if ($installee >= 1.946) serie_alter('950a', $GLOBALS['maj'][1946]);
350 if ($installee >= 1.947) serie_alter('950b', $GLOBALS['maj'][1947]);
351 if ($installee >= 1.949) @serie_alter('950c', $GLOBALS['maj'][1949]);
352 global $tables_auxiliaires;
353 include_spip('base/auxiliaires');
354 $v = $tables_auxiliaires[$k='spip_urls'];
355 sql_create($k, $v['field'], $v['key'], false, false);
356
357
358 foreach(array('article'=>'id_article',
359 'rubrique'=>'id_rubrique',
360 'breve'=>'id_breve',
361 'auteur' => 'id_auteur',
362 'mot' => 'id_mot',
363 'syndic' => 'id_syndic') as $type => $id_objet){
364 $table = ($type == 'syndic') ? $type : ($type ."s");
365 $date = ($type == 'breve') ? 'date_heure' :
366 (($type == 'auteur') ? 'maj' :
367 (($type == 'mot') ? 'maj' : 'date'));
368 $q = @sql_select("url_propre AS url, $id_objet AS id_objet, '$type' AS type, $date as date", "spip_$table", "url_propre<>''");
369 if (!$q) return; // anormal, mais ne pas boucler en erreur
370 while ($r = sql_fetch($q)) sql_replace('spip_urls', $r);
371 spip_log("table $table : " . sql_count($q) . " urls propres copiees");
372 sql_alter("TABLE spip_$table DROP INDEX `url_propre`");
373 sql_alter("TABLE spip_$table DROP `url_propre`");
374 }
375 }
376
377 // Donner a la fonction ci-dessus le numero de version installee
378 // AVANT que la mise a jour ait commencee
379 $GLOBALS['maj'][1950] = array(array('maj_1_950', $GLOBALS['meta']['version_installee'] ));
380
381 // Erreur dans maj_1_948():
382 // // http://trac.rezo.net/trac/spip/changeset/10194
383 // // Gestion du verrou SQL par PHP
384
385 $GLOBALS['maj'][1951] = array(
386
387 array('sql_alter', "TABLE spip_versions CHANGE `id_version` `id_version` bigint(21) DEFAULT 0 NOT NULL")
388 );
389
390
391 // Transformation des documents :
392 // - image => mode=image
393 // - vignette => mode=vignette
394
395 function maj_1_952() {
396
397 $ok = sql_alter("TABLE spip_documents CHANGE `mode` `mode` enum('vignette','image','document') DEFAULT NULL");
398
399 if($ok) {
400
401 $s = sql_select("v.id_document as id_document", "spip_documents as d join spip_documents as v ON d.id_vignette=v.id_document");
402
403 $vignettes = array();
404 while ($t = sql_fetch($s))
405 $vignettes[] = intval($t['id_document']);
406
407 $ok &= spip_query("UPDATE spip_documents SET `mode`='image' WHERE `mode`='vignette'");
408 $ok &= spip_query("UPDATE spip_documents SET `mode`='vignette' WHERE `mode`='image' AND ".sql_in('id_document', $vignettes));
409 }
410 if (!$ok) die('echec sur maj_1_952()');
411 }
412
413 $GLOBALS['maj'][1952] = array(array('maj_1_952'));
414
415 $GLOBALS['maj'][1953] = array(array('upgrade_types_documents'));
416
417 $GLOBALS['maj'][1954] = array(
418
419 //pas de psd en <img>
420 array('spip_query', "UPDATE spip_types_documents SET `inclus`='non' WHERE `extension`='psd'"),
421 //ajout csv
422 array('spip_query', "INSERT IGNORE INTO spip_types_documents (`extension`, `titre`) VALUES ('csv', 'CSV')"),
423 array('spip_query', "UPDATE spip_types_documents SET `mime_type`='text/csv' WHERE `extension`='csv'"),
424 //ajout mkv
425 array('spip_query', "INSERT IGNORE INTO spip_types_documents (`extension`, `titre`, `inclus`) VALUES ('mkv', 'Matroska Video', 'embed')"),
426 array('spip_query', "UPDATE spip_types_documents SET `mime_type`='video/x-mkv' WHERE `extension`='mkv'"),
427 //ajout mka
428 array('spip_query', "INSERT IGNORE INTO spip_types_documents (`extension`, `titre`, `inclus`) VALUES ('mka', 'Matroska Audio', 'embed')"),
429 array('spip_query', "UPDATE spip_types_documents SET `mime_type`='audio/x-mka' WHERE `extension`='mka'"),
430 //ajout kml
431 array('spip_query', "INSERT IGNORE INTO spip_types_documents (`extension`, `titre`) VALUES ('kml', 'Keyhole Markup Language')"),
432 array('spip_query', "UPDATE spip_types_documents SET `mime_type`='application/vnd.google-earth.kml+xml' WHERE `extension`='kml'"),
433 //ajout kmz
434 array('spip_query', "INSERT IGNORE INTO spip_types_documents (`extension`, `titre`) VALUES ('kmz', 'Google Earth Placemark File')"),
435 array('spip_query', "UPDATE spip_types_documents SET `mime_type`='application/vnd.google-earth.kmz' WHERE `extension`='kmz'")
436 );
437
438 if ($GLOBALS['meta']['version_installee'] > 1.950)
439 // 1.950 lisait un bug dans auxiliaires.php corrige a present
440 $GLOBALS['maj'][1955] = array(
441 array('sql_alter', "TABLE spip_urls CHANGE `maj` date DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL")
442 );
443
444 // la mise a jour vers 1.938 contient une erreur
445 // il faut supprimer l'autoincrement avant de supprimer la PRIMARY KEY
446
447 $GLOBALS['maj'][1938] = array(
448
449 # creer un champ plus informatif, et son index
450 array('sql_alter', "TABLE spip_documents ADD `extension` VARCHAR(10) DEFAULT '' NOT NULL "),
451 # recopier l'ancien champ dans le nouveau
452 array('maj_1_938'),
453 # supprimer l'ancien champ et son index
454 array('sql_alter', "TABLE spip_documents DROP INDEX `id_type`, DROP `id_type`"),
455 ## supprimer l'autoincrement avant de supprimer la PRIMARY KEY
456 array('sql_alter', "TABLE spip_types_documents CHANGE `id_type` `id_type` BIGINT( 21 ) NOT NULL ") ,
457 # le champ id_type devient superflu
458 array('sql_alter', "TABLE spip_types_documents DROP `id_type`"),
459 array('sql_alter', "TABLE spip_types_documents ADD PRIMARY KEY (`extension`)")
460 );
461
462
463 // PG veut une valeur par defaut a l'insertion
464 // http://trac.rezo.net/trac/spip/changeset/10482
465
466 $GLOBALS['maj'][1957] = array(
467 array('sql_alter', "TABLE spip_mots CHANGE `id_groupe` `id_groupe` bigint(21) DEFAULT 0 NOT NULL"),
468 array('sql_alter', "TABLE spip_documents CHANGE `mode` `mode` ENUM('vignette', 'image', 'document') DEFAULT 'document' NOT NULL")
469 );
470
471 // Ce champ est inutile et provoque une erreur a l'insertion qui l'oublie
472 $GLOBALS['maj'][1958] = array(
473 array('sql_alter', "TABLE spip_referers_articles DROP date")
474 );
475 ?>