[SPIP] v3.2.1-->v3.2.2
[lhc/web/www.git] / www / ecrire / maj / v014.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2019 *
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 /**
14 * Gestion des mises à jour de SPIP, versions 1.4*
15 *
16 * @package SPIP\Core\SQL\Upgrade
17 **/
18 if (!defined('_ECRIRE_INC_VERSION')) {
19 return;
20 }
21
22 /**
23 * Mises à jour de SPIP n°014
24 *
25 * @param float $version_installee Version actuelle
26 * @param float $version_cible Version de destination
27 **/
28 function maj_v014_dist($version_installee, $version_cible) {
29 if (upgrade_vers(1.404, $version_installee, $version_cible)) {
30 spip_query("UPDATE spip_mots SET type='Mots sans groupe...' WHERE type=''");
31
32 $result = spip_query("SELECT * FROM spip_mots GROUP BY type");
33 while ($row = sql_fetch($result)) {
34 $type = addslashes($row['type']);
35 // Old style, doit echouer
36 spip_log('ne pas tenir compte de l erreur spip_groupes_mots ci-dessous:', 'mysql');
37 spip_query("INSERT INTO spip_groupes_mots (titre, unseul, obligatoire, articles, breves, rubriques, syndic, 0minirezo, 1comite, 6forum) VALUES (\"$type\", 'non', 'non', 'oui', 'oui', 'non', 'oui', 'oui', 'oui', 'non')");
38 // New style, devrait marcher
39 spip_query("INSERT INTO spip_groupes_mots (titre, unseul, obligatoire, articles, breves, rubriques, syndic, minirezo, comite, forum) VALUES (\"$type\", 'non', 'non', 'oui', 'oui', 'non', 'oui', 'oui', 'oui', 'non')");
40 }
41 sql_delete("spip_mots", "titre='kawax'");
42 maj_version(1.404);
43 }
44
45 if (upgrade_vers(1.405, $version_installee, $version_cible)) {
46 spip_query("ALTER TABLE spip_mots ADD id_groupe bigint(21) NOT NULL");
47
48 $result = spip_query("SELECT * FROM spip_groupes_mots");
49 while ($row = sql_fetch($result)) {
50 $id_groupe = addslashes($row['id_groupe']);
51 $type = addslashes($row['titre']);
52 spip_query("UPDATE spip_mots SET id_groupe = '$id_groupe' WHERE type='$type'");
53 }
54 maj_version(1.405);
55 }
56
57 if (upgrade_vers(1.408, $version_installee, $version_cible)) {
58 // Images articles passent dans spip_documents
59 $result = spip_query("SELECT id_article, images FROM spip_articles WHERE LENGTH(images) > 0");
60
61
62 $types = array('jpg' => 1, 'png' => 2, 'gif' => 3);
63
64 while ($row = @sql_fetch($result)) {
65 $id_article = $row['id_article'];
66 $images = $row['images'];
67 $images = explode(",", $images);
68 reset($images);
69 $replace = '_orig_';
70 foreach ($images as $val) {
71 $image = explode("|", $val);
72 $fichier = $image[0];
73 $largeur = $image[1];
74 $hauteur = $image[2];
75 preg_match(",-([0-9]+)\.(gif|jpg|png)$,i", $fichier, $match);
76 $id_type = intval($types[$match[2]]);
77 $num_img = $match[1];
78 $fichier = _DIR_IMG . $fichier;
79 $taille = @filesize($fichier);
80 // ici on n'a pas les fonctions absctract !
81 spip_query("INSERT INTO spip_documents (titre, id_type, fichier, mode, largeur, hauteur, taille) VALUES ('image $largeur x $hauteur', $id_type, '$fichier', 'vignette', '$largeur', '$hauteur', '$taille')");
82 $id_document = mysqli_insert_id(_mysql_link());
83 if ($id_document > 0) {
84 spip_query("INSERT INTO spip_documents_articles (id_document, id_article) VALUES ($id_document, $id_article)");
85 $replace = "REPLACE($replace, '<IMG$num_img|', '<IM_$id_document|')";
86 } else {
87 echo _T('texte_erreur_mise_niveau_base', array('fichier' => $fichier, 'id_article' => $id_article));
88 exit;
89 }
90 }
91 $replace = "REPLACE($replace, '<IM_', '<IMG')";
92 $replace_chapo = str_replace('_orig_', 'chapo', $replace);
93 $replace_descriptif = str_replace('_orig_', 'descriptif', $replace);
94 $replace_texte = str_replace('_orig_', 'texte', $replace);
95 $replace_ps = str_replace('_orig_', 'ps', $replace);
96 spip_query("UPDATE spip_articles SET chapo=$replace_chapo, descriptif=$replace_descriptif, texte=$replace_texte, ps=$replace_ps WHERE id_article=$id_article");
97
98 }
99 spip_query("ALTER TABLE spip_articles DROP images");
100 maj_version(1.408);
101 }
102
103 if (upgrade_vers(1.414, $version_installee, $version_cible)) {
104 // Forum par defaut "en dur" dans les spip_articles
105 // -> non, prio (priori), pos (posteriori), abo (abonnement)
106 $accepter_forum = substr($GLOBALS['meta']["forums_publics"], 0, 3);
107 $result = spip_query("ALTER TABLE spip_articles CHANGE accepter_forum accepter_forum CHAR(3) NOT NULL");
108
109 $result = spip_query("UPDATE spip_articles SET accepter_forum='$accepter_forum' WHERE accepter_forum != 'non'");
110
111 maj_version(1.414);
112 }
113
114 /*
115 if ($version_installee == 1.415) {
116 spip_query("ALTER TABLE spip_documents DROP inclus");
117 maj_version (1.415);
118 }
119 */
120
121 if (upgrade_vers(1.417, $version_installee, $version_cible)) {
122 spip_query("ALTER TABLE spip_syndic_articles DROP date_index");
123 maj_version(1.417);
124 }
125
126 if (upgrade_vers(1.418, $version_installee, $version_cible)) {
127 $result = spip_query("SELECT * FROM spip_auteurs WHERE statut = '0minirezo' AND email != '' ORDER BY id_auteur LIMIT 1");
128
129 if ($webmaster = sql_fetch($result)) {
130 ecrire_meta('email_webmaster', $webmaster['email']);
131 }
132 maj_version(1.418);
133 }
134
135 if (upgrade_vers(1.419, $version_installee, $version_cible)) {
136 spip_query("ALTER TABLE spip_auteurs ADD alea_actuel TINYTEXT DEFAULT ''");
137 spip_query("ALTER TABLE spip_auteurs ADD alea_futur TINYTEXT DEFAULT ''");
138 spip_query("UPDATE spip_auteurs SET alea_futur = FLOOR(32000*RAND())");
139 maj_version(1.419);
140 }
141
142 if (upgrade_vers(1.420, $version_installee, $version_cible)) {
143 spip_query("UPDATE spip_auteurs SET alea_actuel='' WHERE statut='nouveau'");
144 maj_version(1.420);
145 }
146
147 if (upgrade_vers(1.421, $version_installee, $version_cible)) {
148 spip_query("ALTER TABLE spip_articles ADD auteur_modif bigint(21) DEFAULT '0' NOT NULL");
149 spip_query("ALTER TABLE spip_articles ADD date_modif datetime DEFAULT '0000-00-00 00:00:00' NOT NULL");
150 maj_version(1.421);
151 }
152
153 if (upgrade_vers(1.432, $version_installee, $version_cible)) {
154 spip_query("ALTER TABLE spip_articles DROP referers");
155 spip_query("ALTER TABLE spip_articles ADD referers INTEGER DEFAULT '0' NOT NULL");
156 spip_query("ALTER TABLE spip_articles ADD popularite INTEGER DEFAULT '0' NOT NULL");
157 maj_version(1.432);
158 }
159
160 if (upgrade_vers(1.436, $version_installee, $version_cible)) {
161 spip_query("ALTER TABLE spip_documents ADD date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL");
162 maj_version(1.436);
163 }
164
165 if (upgrade_vers(1.437, $version_installee, $version_cible)) {
166 spip_query("ALTER TABLE spip_visites ADD maj TIMESTAMP");
167 spip_query("ALTER TABLE spip_visites_referers ADD maj TIMESTAMP");
168 maj_version(1.437);
169 }
170
171 if (upgrade_vers(1.438, $version_installee, $version_cible)) {
172 spip_query("ALTER TABLE spip_articles ADD INDEX id_secteur (id_secteur)");
173 spip_query("ALTER TABLE spip_articles ADD INDEX statut (statut, date)");
174 maj_version(1.438);
175 }
176
177 if (upgrade_vers(1.439, $version_installee, $version_cible)) {
178 spip_query("ALTER TABLE spip_syndic ADD INDEX statut (statut, date_syndic)");
179 spip_query("ALTER TABLE spip_syndic_articles ADD INDEX statut (statut)");
180 spip_query("ALTER TABLE spip_syndic_articles CHANGE url url VARCHAR(255) NOT NULL");
181 spip_query("ALTER TABLE spip_syndic_articles ADD INDEX url (url)");
182 maj_version(1.439);
183 }
184
185 if (upgrade_vers(1.440, $version_installee, $version_cible)) {
186 spip_query("ALTER TABLE spip_visites_temp CHANGE ip ip INTEGER UNSIGNED NOT NULL");
187 maj_version(1.440);
188 }
189
190 if (upgrade_vers(1.441, $version_installee, $version_cible)) {
191 spip_query("ALTER TABLE spip_visites_temp CHANGE date date DATE NOT NULL");
192 spip_query("ALTER TABLE spip_visites CHANGE date date DATE NOT NULL");
193 spip_query("ALTER TABLE spip_visites_referers CHANGE date date DATE NOT NULL");
194 maj_version(1.441);
195 }
196
197 if (upgrade_vers(1.442, $version_installee, $version_cible)) {
198 spip_query("ALTER TABLE spip_auteurs ADD prefs TINYTEXT NOT NULL");
199 maj_version(1.442);
200 }
201
202 if (upgrade_vers(1.443, $version_installee, $version_cible)) {
203 spip_query("ALTER TABLE spip_auteurs CHANGE login login VARCHAR(255) BINARY NOT NULL");
204 spip_query("ALTER TABLE spip_auteurs CHANGE statut statut VARCHAR(255) NOT NULL");
205 spip_query("ALTER TABLE spip_auteurs ADD INDEX login (login)");
206 spip_query("ALTER TABLE spip_auteurs ADD INDEX statut (statut)");
207 maj_version(1.443);
208 }
209
210 if (upgrade_vers(1.444, $version_installee, $version_cible)) {
211 spip_query("ALTER TABLE spip_syndic ADD moderation VARCHAR(3) NOT NULL");
212 maj_version(1.444);
213 }
214
215 if (upgrade_vers(1.457, $version_installee, $version_cible)) {
216 spip_query("DROP TABLE spip_visites");
217 spip_query("DROP TABLE spip_visites_temp");
218 spip_query("DROP TABLE spip_visites_referers");
219 creer_base(); // crade, a ameliorer :-((
220 maj_version(1.457);
221 }
222
223 if (upgrade_vers(1.458, $version_installee, $version_cible)) {
224 spip_query("ALTER TABLE spip_auteurs ADD cookie_oubli TINYTEXT NOT NULL");
225 maj_version(1.458);
226 }
227
228 if (upgrade_vers(1.459, $version_installee, $version_cible)) {
229 $result = spip_query("SELECT type FROM spip_mots GROUP BY type");
230 while ($row = sql_fetch($result)) {
231 $type = addslashes($row['type']);
232 $res = spip_query("SELECT * FROM spip_groupes_mots WHERE titre='$type'");
233 if (sql_count($res) == 0) {
234 spip_query("INSERT INTO spip_groupes_mots (titre, unseul, obligatoire, articles, breves, rubriques, syndic, minirezo, comite, forum) VALUES ('$type', 'non', 'non', 'oui', 'oui', 'non', 'oui', 'oui', 'oui', 'non')");
235 if ($id_groupe = mysqli_insert_id(_mysql_link())) {
236 spip_query("UPDATE spip_mots SET id_groupe = '$id_groupe' WHERE type='$type'");
237 }
238 }
239 }
240 spip_query("UPDATE spip_articles SET popularite=0");
241 maj_version(1.459);
242 }
243
244 if (upgrade_vers(1.460, $version_installee, $version_cible)) {
245 // remettre les mots dans les groupes dupliques par erreur
246 // dans la precedente version du paragraphe de maj 1.459
247 // et supprimer ceux-ci
248 $result = spip_query("SELECT * FROM spip_groupes_mots ORDER BY id_groupe");
249 while ($row = sql_fetch($result)) {
250 $titre = addslashes($row['titre']);
251 if (!$vu[$titre]) {
252 $vu[$titre] = true;
253 $id_groupe = $row['id_groupe'];
254 spip_query("UPDATE spip_mots SET id_groupe=$id_groupe WHERE type='$titre'");
255 sql_delete("spip_groupes_mots", "titre='$titre' AND id_groupe<>$id_groupe");
256 }
257 }
258 maj_version(1.460);
259 }
260
261 if (upgrade_vers(1.462, $version_installee, $version_cible)) {
262 spip_query("UPDATE spip_types_documents SET inclus='embed' WHERE inclus!='non' AND extension IN ('aiff', 'asf', 'avi', 'mid', 'mov', 'mp3', 'mpg', 'ogg', 'qt', 'ra', 'ram', 'rm', 'swf', 'wav', 'wmv')");
263 maj_version(1.462);
264 }
265
266 if (upgrade_vers(1.463, $version_installee, $version_cible)) {
267 spip_query("ALTER TABLE spip_articles CHANGE popularite popularite DOUBLE");
268 spip_query("ALTER TABLE spip_visites_temp ADD maj TIMESTAMP");
269 spip_query("ALTER TABLE spip_referers_temp ADD maj TIMESTAMP");
270 maj_version(1.463);
271 }
272
273 // l'upgrade < 1.462 ci-dessus etait fausse, d'ou correctif
274 if (upgrade_vers(1.464, $version_installee, $version_cible) and ($version_installee >= 1.462)) {
275 $res = spip_query("SELECT id_type, extension FROM spip_types_documents WHERE id_type NOT IN (1,2,3)");
276 while ($row = sql_fetch($res)) {
277 $extension = $row['extension'];
278 $id_type = $row['id_type'];
279 spip_query("UPDATE spip_documents SET id_type=$id_type WHERE fichier like '%.$extension'");
280 }
281 maj_version(1.464);
282 }
283
284 if (upgrade_vers(1.465, $version_installee, $version_cible)) {
285 spip_query("ALTER TABLE spip_articles CHANGE popularite popularite DOUBLE NOT NULL");
286 maj_version(1.465);
287 }
288
289 if (upgrade_vers(1.466, $version_installee, $version_cible)) {
290 spip_query("ALTER TABLE spip_auteurs ADD source VARCHAR(10) DEFAULT 'spip' NOT NULL");
291 maj_version(1.466);
292 }
293
294 if (upgrade_vers(1.468, $version_installee, $version_cible)) {
295 spip_query("ALTER TABLE spip_auteurs ADD INDEX en_ligne (en_ligne)");
296 spip_query("ALTER TABLE spip_forum ADD INDEX statut (statut, date_heure)");
297 maj_version(1.468);
298 }
299
300 if (upgrade_vers(1.470, $version_installee, $version_cible)) {
301 if ($version_installee >= 1.467) { // annule les "listes de diff"
302 spip_query("DROP TABLE spip_listes");
303 spip_query("ALTER TABLE spip_auteurs DROP abonne");
304 spip_query("ALTER TABLE spip_auteurs DROP abonne_pass");
305 }
306 maj_version(1.470);
307 }
308
309 if (upgrade_vers(1.471, $version_installee, $version_cible)) {
310 if ($version_installee >= 1.470) { // annule les "maj"
311 spip_query("ALTER TABLE spip_auteurs_articles DROP maj TIMESTAMP");
312 spip_query("ALTER TABLE spip_auteurs_rubriques DROP maj TIMESTAMP");
313 spip_query("ALTER TABLE spip_auteurs_messages DROP maj TIMESTAMP");
314 spip_query("ALTER TABLE spip_documents_articles DROP maj TIMESTAMP");
315 spip_query("ALTER TABLE spip_documents_rubriques DROP maj TIMESTAMP");
316 spip_query("ALTER TABLE spip_documents_breves DROP maj TIMESTAMP");
317 spip_query("ALTER TABLE spip_mots_articles DROP maj TIMESTAMP");
318 spip_query("ALTER TABLE spip_mots_breves DROP maj TIMESTAMP");
319 spip_query("ALTER TABLE spip_mots_rubriques DROP maj TIMESTAMP");
320 spip_query("ALTER TABLE spip_mots_syndic DROP maj TIMESTAMP");
321 spip_query("ALTER TABLE spip_mots_forum DROP maj TIMESTAMP");
322 }
323 maj_version(1.471);
324 }
325
326 if (upgrade_vers(1.472, $version_installee, $version_cible)) {
327 spip_query("ALTER TABLE spip_referers ADD visites_jour INTEGER UNSIGNED NOT NULL");
328 maj_version(1.472);
329 }
330
331 if (upgrade_vers(1.473, $version_installee, $version_cible)) {
332 spip_query("UPDATE spip_syndic_articles SET url = REPLACE(url, '&amp;', '&')");
333 spip_query("UPDATE spip_syndic SET url_site = REPLACE(url_site, '&amp;', '&')");
334 maj_version(1.473);
335 }
336 }