[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / ecrire / maj / v018.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2017 *
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.8*
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°018
24 *
25 * @param float $version_installee Version actuelle
26 * @param float $version_cible Version de destination
27 **/
28 function maj_v018_dist($version_installee, $version_cible) {
29 if (upgrade_vers(1.801, $version_installee, $version_cible)) {
30 spip_query("ALTER TABLE spip_rubriques ADD statut_tmp VARCHAR(10) NOT NULL, ADD date_tmp datetime DEFAULT '0000-00-00 00:00:00' NOT NULL");
31 include_spip('inc/rubriques');
32 calculer_rubriques();
33 maj_version(1.801);
34 }
35
36 // Nouvelles tables d'invalidation
37 if (upgrade_vers(1.802, $version_installee, $version_cible)) {
38 spip_query("DROP TABLE spip_id_article_caches");
39 spip_query("DROP TABLE spip_id_auteur_caches");
40 spip_query("DROP TABLE spip_id_breve_caches");
41 spip_query("DROP TABLE spip_id_document_caches");
42 spip_query("DROP TABLE spip_id_forum_caches");
43 spip_query("DROP TABLE spip_id_groupe_caches");
44 spip_query("DROP TABLE spip_id_message_caches");
45 spip_query("DROP TABLE spip_id_mot_caches");
46 spip_query("DROP TABLE spip_id_rubrique_caches");
47 spip_query("DROP TABLE spip_id_signature_caches");
48 spip_query("DROP TABLE spip_id_syndic_article_caches");
49 spip_query("DROP TABLE spip_id_syndic_caches");
50 spip_query("DROP TABLE spip_id_type_caches");
51 spip_query("DROP TABLE spip_inclure_caches");
52 maj_version(1.802);
53 }
54 if (upgrade_vers(1.803, $version_installee, $version_cible)) {
55
56 # 27 AOUT 2004 : conservons cette table pour autoriser les retours
57 # de SPIP 1.8a6 CVS vers 1.7.2
58 # spip_query("DROP TABLE spip_forum_cache");
59
60 spip_query("DROP TABLE spip_inclure_caches");
61 maj_version(1.803);
62 }
63 if (upgrade_vers(1.804, $version_installee, $version_cible)) {
64 // recreer la table spip_caches
65 spip_query("DROP TABLE spip_caches");
66 creer_base();
67 maj_version(1.804);
68 }
69
70 /**
71 * Recalculer tous les threads
72 *
73 * Fonction du plugin forum recopiee ici pour assurer la montee
74 * de version dans tous les cas de figure
75 **/
76 function maj_v018_calculer_threads() {
77 // fixer les id_thread des debuts de discussion
78 sql_update('spip_forum', array('id_thread' => 'id_forum'), "id_parent=0");
79 // reparer les messages qui n'ont pas l'id_secteur de leur parent
80 do {
81 $discussion = "0";
82 $precedent = 0;
83 $r = sql_select("fille.id_forum AS id, maman.id_thread AS thread", 'spip_forum AS fille, spip_forum AS maman',
84 "fille.id_parent = maman.id_forum AND fille.id_thread <> maman.id_thread", '', "thread");
85 while ($row = sql_fetch($r)) {
86 if ($row['thread'] == $precedent) {
87 $discussion .= "," . $row['id'];
88 } else {
89 if ($precedent) {
90 sql_updateq("spip_forum", array("id_thread" => $precedent), "id_forum IN ($discussion)");
91 }
92 $precedent = $row['thread'];
93 $discussion = $row['id'];
94 }
95 }
96 sql_updateq("spip_forum", array("id_thread" => $precedent), "id_forum IN ($discussion)");
97 } while ($discussion != "0");
98 }
99
100 if (upgrade_vers(1.805, $version_installee, $version_cible)) {
101 spip_query("ALTER TABLE spip_forum ADD id_thread bigint(21) DEFAULT '0' NOT NULL");
102 maj_v018_calculer_threads();
103 maj_version(1.805);
104 }
105
106 // tables d'orthographe
107 #if ($version_installee < 1.806)
108 # maj_version(1.806);
109
110 // URLs propres (inc_version = 0.12)
111 if (upgrade_vers(1.807, $version_installee, $version_cible)) {
112 foreach (array('articles', 'breves', 'rubriques', 'mots') as $objets) {
113 spip_query("ALTER TABLE spip_$objets ADD url_propre VARCHAR(255) NOT NULL");
114 spip_query("ALTER TABLE spip_$objets ADD INDEX url_propre (url_propre)");
115 }
116 maj_version(1.807);
117 }
118
119 // referers de la veille
120 if (upgrade_vers(1.808, $version_installee, $version_cible)) {
121 spip_query("ALTER TABLE spip_referers ADD visites_veille INT UNSIGNED NOT NULL");
122 maj_version(1.808);
123 }
124
125
126 // corrections diverses
127 if (upgrade_vers(1.809, $version_installee, $version_cible)) {
128 // plus de retour possible vers 1.7.2
129 spip_query("DROP TABLE spip_forum_cache");
130
131 // les requetes ci-dessous ne s'appliqueront que si on est passe
132 // par une certaine version de developpement - oublie de le faire
133 // plus tot, car le code d'alors recreait purement et simplement
134 // cette table
135 spip_query("ALTER TABLE spip_versions DROP chapo");
136 spip_query("ALTER TABLE spip_versions DROP texte");
137 spip_query("ALTER TABLE spip_versions DROP ps");
138 spip_query("ALTER TABLE spip_versions DROP extra");
139 spip_query("ALTER TABLE spip_versions ADD champs text NOT NULL");
140
141 maj_version(1.809);
142 }
143
144 // Annuler les brouillons de forum jamais valides
145 if (upgrade_vers(1.810, $version_installee, $version_cible)) {
146 sql_delete("spip_forum", "statut='redac'");
147 maj_version(1.810);
148 }
149
150 if (upgrade_vers(1.811, $version_installee, $version_cible)) {
151 spip_query("ALTER TABLE spip_syndic ADD extra longblob NULL");
152 maj_version(1.811);
153 }
154
155 if (upgrade_vers(1.812, $version_installee, $version_cible)) {
156 spip_query("ALTER TABLE spip_documents ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL");
157 maj_version(1.812);
158 }
159
160 // Mise a jour des types MIME
161 if (upgrade_vers(1.813, $version_installee, $version_cible)) {
162 # rien a faire car c'est creer_base() qui s'en charge
163 maj_version(1.813);
164 }
165
166 // URLs propres auteurs
167 if (upgrade_vers(1.814, $version_installee, $version_cible)) {
168 spip_query("ALTER TABLE spip_auteurs ADD url_propre VARCHAR(255) NOT NULL");
169 spip_query("ALTER TABLE spip_auteurs ADD INDEX url_propre (url_propre)");
170 maj_version(1.814);
171 }
172
173 // Mots-cles sur les documents
174 // + liens documents <-> sites et articles syndiques (podcasting)
175 if (upgrade_vers(1.815, $version_installee, $version_cible)) {
176 spip_query("ALTER TABLE spip_documents ADD distant VARCHAR(3) DEFAULT 'non'");
177 maj_version(1.815);
178 }
179
180 // Indexation des documents (rien a faire sauf reinstaller inc_auxbase)
181 if (upgrade_vers(1.816, $version_installee, $version_cible)) {
182 maj_version(1.816);
183 }
184
185 // Texte et descriptif des groupes de mots-cles
186 if (upgrade_vers(1.817, $version_installee, $version_cible)) {
187 spip_query("ALTER TABLE spip_groupes_mots ADD descriptif text NOT NULL AFTER titre");
188 spip_query("ALTER TABLE spip_groupes_mots ADD COLUMN texte longblob NOT NULL AFTER descriptif");
189 maj_version(1.817);
190 }
191
192 // Conformite des noms de certains champs (0minirezo => minirezo)
193 if (upgrade_vers(1.818, $version_installee, $version_cible)) {
194 spip_query("ALTER TABLE spip_groupes_mots CHANGE COLUMN 0minirezo minirezo char(3) NOT NULL");
195 spip_query("ALTER TABLE spip_groupes_mots CHANGE COLUMN 1comite comite char(3) NOT NULL");
196 spip_query("ALTER TABLE spip_groupes_mots CHANGE COLUMN 6forum forum char(3) NOT NULL");
197 maj_version(1.818);
198 }
199
200 // Options de syndication : miroir + oubli
201 if (upgrade_vers(1.819, $version_installee, $version_cible)) {
202 spip_query("ALTER TABLE spip_syndic ADD miroir VARCHAR(3) DEFAULT 'non'");
203 spip_query("ALTER TABLE spip_syndic ADD oubli VARCHAR(3) DEFAULT 'non'");
204 maj_version(1.819);
205 }
206
207 // Un bug dans les 1.730 (il manquait le "ADD")
208 if (upgrade_vers(1.820, $version_installee, $version_cible)) {
209 spip_query("ALTER TABLE spip_articles ADD INDEX idx (idx)");
210 spip_query("ALTER TABLE spip_auteurs ADD INDEX idx (idx)");
211 spip_query("ALTER TABLE spip_breves ADD INDEX idx (idx)");
212 spip_query("ALTER TABLE spip_mots ADD INDEX idx (idx)");
213 spip_query("ALTER TABLE spip_rubriques ADD INDEX idx (idx)");
214 spip_query("ALTER TABLE spip_syndic ADD INDEX idx (idx)");
215 spip_query("ALTER TABLE spip_forum ADD INDEX idx (idx)");
216 spip_query("ALTER TABLE spip_signatures ADD INDEX idx (idx)");
217 maj_version(1.820);
218 }
219
220 // reindexer les articles (on avait oublie les auteurs)
221 if (upgrade_vers(1.821, $version_installee, $version_cible)) {
222 spip_query("UPDATE spip_articles SET idx='1' WHERE idx='oui'");
223 maj_version(1.821);
224 }
225 // le 'type' des mots doit etre du texte, sinon on depasse en champ multi
226 if (upgrade_vers(1.822, $version_installee, $version_cible)) {
227 spip_query("ALTER TABLE spip_mots DROP INDEX type");
228 spip_query("ALTER TABLE spip_mots CHANGE type type TEXT NOT NULL");
229 maj_version(1.822);
230 }
231 // ajouter une table de fonctions pour ajax
232 if (upgrade_vers(1.825, $version_installee, $version_cible)) {
233 maj_version(1.825);
234 }
235 if (upgrade_vers(1.826, $version_installee, $version_cible)) {
236 spip_query("ALTER TABLE spip_ajax_fonc DROP fonction");
237 maj_version(1.826);
238 }
239 }