Completed
Push — master ( 3e6f39...ee2ef7 )
by cam
04:21
created

v019.php ➔ maj_1_950()   D

Complexity

Conditions 11
Paths 392

Size

Total Lines 43

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 11
nc 392
nop 1
dl 0
loc 43
rs 4.0833
c 0
b 0
f 0

How to fix   Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
/***************************************************************************\
4
 *  SPIP, Système de publication pour l'internet                           *
5
 *                                                                         *
6
 *  Copyright © avec tendresse depuis 2001                                 *
7
 *  Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James  *
8
 *                                                                         *
9
 *  Ce programme est un logiciel libre distribué sous licence GNU/GPL.     *
10
 *  Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne.   *
11
\***************************************************************************/
12
13
/**
14
 * Gestion des mises à jour de SPIP, versions >= 1.9.3-dev
15
 *
16
 * Cette version de SPIP introduit une nouvelle gestion des
17
 * mises à jour par tableau
18
 *
19
 * On la fait coincider rétroactivement avec l'état de la 1.9.2
20
 * L'index numérique entier est multiplié par 1000 (resultat < SVN c'est ok)
21
 *
22
 * @package SPIP\Core\SQL\Upgrade
23
 **/
24
if (!defined('_ECRIRE_INC_VERSION')) {
25
	return;
26
}
27
28
29
// FLV est incrustable, la MAJ precedente l'avait oublie
30
$GLOBALS['maj'][1931] = array(
31
	array('sql_query', "UPDATE spip_types_documents SET `inclus`='embed' WHERE `extension`='flv'")
32
);
33
34
// Ajout de spip_forum.date_thread, et on essaie de le remplir
35
// a coup de table temporaire (est-ce autorise partout... sinon
36
// tant pis, ca ne marchera que pour les forums recemment modifies)
37
$GLOBALS['maj'][1932] = array(
38
	array('sql_alter', "TABLE spip_forum ADD `date_thread` datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"),
39
	array('sql_alter', "TABLE spip_forum ADD INDEX `date_thread` (`date_thread`)"),
40
41
	array('sql_query', "DROP TABLE IF EXISTS spip_tmp"),
42
	array(
43
		'sql_query',
44
		"CREATE TABLE spip_tmp SELECT `id_thread`,MAX(`date_heure`) AS dt FROM spip_forum GROUP BY `id_thread`"
45
	),
46
	array('sql_alter', "TABLE spip_tmp ADD INDEX `p` (`id_thread`)"),
47
	array('sql_query', "UPDATE spip_forum AS F JOIN spip_tmp AS T ON F.id_thread=T.id_thread SET F.date_thread=T.dt"),
48
	array('sql_query', "DROP TABLE spip_tmp"),
49
);
50
51
/**
52
 * Mise à jour 1_934 : Retrait de `_DIR_IMG` dans le champ fichier de la table des doc
53
 **/
54
function maj_1_934() {
55
	// attention, en cas de mutualisation _DIR_IMG contient quelque chose comme sites/urldusite/IMG/
56
	// essayons en ne prenant que le dernier segment
57
	$dir_img = basename(_DIR_IMG) . '/';
58
	$res = sql_query("SELECT fichier FROM spip_documents WHERE fichier LIKE " . sql_quote($dir_img . '%') . " LIMIT 0,1");
59
	if (!$row = sql_fetch($res)) {
60
		// sinon on essaye avec le chemin complet
61
		// il faut donc verifier qu'on a bien le bon nom de repertoire
62
		$dir_img = substr(_DIR_IMG, strlen(_DIR_RACINE));
63
	}
64
	$n = strlen($dir_img) + 1;
65
	sql_query("UPDATE spip_documents SET `fichier`=substring(fichier,$n) WHERE `fichier` LIKE " . sql_quote($dir_img . '%'));
66
}
67
68
$GLOBALS['maj'][1934] = array(array('maj_1_934'));
69
70
/**
71
 * Mise à jour 1_935 : calcul du nouveau champ 'vu' sur les associations documents_xx
72
 **/
73
function maj_1_935() {
74
	include_spip('inc/texte');
75
	foreach (array(
76
		         'article' => 'id_article',
77
		         'rubrique' => 'id_rubrique',
78
		         'breve' => 'id_breve'
79
	         ) as $type => $id_table_objet) {
80
		$table_objet = "$type" . "s";
81
		$chapo = $type == 'article' ? ",a.chapo" : "";
82
		$res = sql_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");
83
		while ($row = sql_fetch($res)) {
84
			$GLOBALS['doublons_documents_inclus'] = array();
85
			traiter_modeles(($chapo ? $row['chapo'] : "") . $row['texte'], true); // detecter les doublons
86
			if (count($GLOBALS['doublons_documents_inclus'])) {
87
				$id = $row[$id_table_objet];
88
				$liste = "(" . implode(",$id,'oui'),(", $GLOBALS['doublons_documents_inclus']) . ",$id,'oui')";
89
				sql_query("REPLACE INTO spip_documents_$table_objet (`id_document`,`$id_table_objet`,`vu`) VALUES $liste");
90
			}
91
		}
92
	}
93
}
94
95
$GLOBALS['maj'][1935] = array(
96
	array('sql_alter', "TABLE spip_documents_articles ADD `vu` ENUM('non', 'oui') DEFAULT 'non' NOT NULL"),
97
	array('sql_alter', "TABLE spip_documents_rubriques ADD `vu` ENUM('non', 'oui') DEFAULT 'non' NOT NULL"),
98
	array('sql_alter', "TABLE spip_documents_breves ADD `vu` ENUM('non', 'oui') DEFAULT 'non' NOT NULL"),
99
	array('maj_1_935')
100
);
101
102
103
/**
104
 * Convertit un champ de type `blob` en champ de type `text`
105
 *
106
 * @param string $table Nom de la table
107
 * @param string $champ Nom du champ dans la table
108
 * @param string $type Type de champ de destination, par exemple `LONGTEXT`
109
 **/
110
function convertir_un_champ_blob_en_text($table, $champ, $type) {
111
	// precaution : definir le charset par defaut de la table, car c'est lui qui prevaut
112
	// et il faut qu'il corresponde au charset de la connexion qui est celui
113
	// dans lequel on a ecrit le champ en blob
114
	if ($charset = sql_getfetsel('@@character_set_connection')) {
115
		sql_alter("TABLE $table DEFAULT CHARACTER SET " . $charset);
116
	}
117
	$res = sql_query("SHOW FULL COLUMNS FROM $table LIKE '$champ'");
118
	if ($row = sql_fetch($res)) {
119
		if (strtolower($row['Type']) != strtolower($type)) {
120
			$default = $row['Default'] ? (" DEFAULT " . sql_quote($row['Default'])) : "";
121
			$notnull = ($row['Null'] == 'YES') ? "" : " NOT NULL";
122
			sql_alter("TABLE $table CHANGE $champ $champ $type $default $notnull");
123
		}
124
	}
125
}
126
127
$GLOBALS['maj'][1937] = array(
128
	// convertir les champs blob des tables spip en champs texte
129
	array('convertir_un_champ_blob_en_text', "spip_articles", "texte", "LONGTEXT"),
130
	array('convertir_un_champ_blob_en_text', "spip_articles", "extra", "LONGTEXT"),
131
	array('convertir_un_champ_blob_en_text', "spip_auteurs", "extra", "LONGTEXT"),
132
	array('convertir_un_champ_blob_en_text', "spip_breves", "texte", "LONGTEXT"),
133
	array('convertir_un_champ_blob_en_text', "spip_breves", "extra", "LONGTEXT"),
134
	array('convertir_un_champ_blob_en_text', "spip_messages", "texte", "LONGTEXT"),
135
	array('convertir_un_champ_blob_en_text', "spip_mots", "texte", "LONGTEXT"),
136
	array('convertir_un_champ_blob_en_text', "spip_mots", "extra", "LONGTEXT"),
137
	array('convertir_un_champ_blob_en_text', "spip_groupes_mots", "texte", "LONGTEXT"),
138
	array('convertir_un_champ_blob_en_text', "spip_rubriques", "texte", "LONGTEXT"),
139
	array('convertir_un_champ_blob_en_text', "spip_rubriques", "extra", "LONGTEXT"),
140
	array('convertir_un_champ_blob_en_text', "spip_syndic", "nom_site", "LONGTEXT"),
141
	array('convertir_un_champ_blob_en_text', "spip_syndic", "descriptif", "TEXT"),
142
	array('convertir_un_champ_blob_en_text', "spip_syndic", "extra", "LONGTEXT"),
143
	array('convertir_un_champ_blob_en_text', "spip_syndic_articles", "descriptif", "LONGTEXT"),
144
	array('convertir_un_champ_blob_en_text', "spip_petitions", "texte", "LONGTEXT"),
145
	array('convertir_un_champ_blob_en_text', "spip_ortho_cache", "suggest", "TEXT"),
146
);
147
148
/**
149
 * Mise à jour 1_938 : suppression des id_type de documents, remplacés par extension
150
 **/
151
function maj_1_938() {
152
	$res = sql_select('extension', 'spip_documents', "extension='' OR extension is NULL");
153
	if ($n = sql_count($res)) {
0 ignored issues
show
Unused Code introduced by
$n is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
154
		$repli = false;
155
		// verifier que la colonne id_type est toujours la (update post 1.938)
156
		$desc = sql_showtable('spip_documents');
157
		if (!$desc or !isset($desc['field']['id_type'])) {
158
			$repli = true;
159
		}
160
161
		$s = sql_select('extension' . ($repli ? '' : ',id_type'), 'spip_types_documents');
162
		while ($t = sql_fetch($s)) {
163
			if (isset($t['id_type'])) {
164
				sql_query("UPDATE spip_documents	SET `extension`=" . sql_quote($t['extension']) . " WHERE `id_type`=" . sql_quote($t['id_type']));
165
			} else {
166
				sql_query("UPDATE spip_documents	SET `extension`=" . sql_quote($t['extension']) . " WHERE fichier LIKE " . sql_quote("%." . $t['extension']));
167
			}
168
		}
169
		$res = sql_select('extension', 'spip_documents', "extension='' OR extension is NULL");
170
		if ($n = sql_count($res)) {
171
			spip_log("Table spip_documents : Colonne extension incomplete : $n lignes vides");
172
		}
173
	}
174
}
175
176
$GLOBALS['maj'][1938] = array(
177
	// Des champs NULL a l'installation
178
	// Ajouter un champ extension aux spip_documents, et le
179
	// remplir avec les valeurs ad hoc
180
	array('sql_alter', "TABLE spip_documents ADD `extension` VARCHAR(10) DEFAULT ''  NOT NULL "),
181
	array('sql_alter', "TABLE spip_documents ADD INDEX `extension` (`extension`)"),
182
	array('maj_1_938'),
183
184
	array('sql_alter', "TABLE spip_documents DROP INDEX `id_type`, DROP `id_type`"),
185
	## supprimer l'autoincrement avant de supprimer la PRIMARY KEY
186
	array('sql_alter', "TABLE spip_types_documents CHANGE `id_type` `id_type` BIGINT( 21 ) NOT NULL "),
187
	array('sql_alter', "TABLE spip_types_documents DROP PRIMARY KEY"),
188
	array('sql_alter', "TABLE spip_types_documents DROP `id_type`"),
189
	array('sql_alter', "TABLE spip_types_documents DROP INDEX `extension`"),
190
191
	## recreer la PRIMARY KEY sur spip_types_documents.extension
192
	array('sql_alter', "TABLE spip_types_documents ADD PRIMARY KEY (`extension`)"),
193
);
194
195
$GLOBALS['maj'][1939] = array(
196
	array('sql_alter', "TABLE spip_visites CHANGE `visites` `visites` INT UNSIGNED DEFAULT '0' NOT NULL"),
197
	array('sql_alter', "TABLE spip_visites_articles CHANGE `visites` `visites` INT UNSIGNED DEFAULT '0' NOT NULL"),
198
	array('sql_alter', "TABLE spip_referers CHANGE `visites` `visites` INT UNSIGNED DEFAULT '0' NOT NULL"),
199
	array('sql_alter', "TABLE spip_referers CHANGE `visites_jour` `visites_jour` INT UNSIGNED DEFAULT '0' NOT NULL"),
200
	array('sql_alter', "TABLE spip_referers CHANGE `visites_veille` `visites_veille` INT UNSIGNED DEFAULT '0' NOT NULL"),
201
	array('sql_alter', "TABLE spip_referers_articles CHANGE `visites` `visites` INT UNSIGNED DEFAULT '0' NOT NULL")
202
);
203
204
$GLOBALS['maj'][1940] = array(
205
	array('sql_query', "DROP TABLE spip_caches"),
206
);
207
208
209
$GLOBALS['maj'][1941] = array(
210
	array('sql_query', "UPDATE spip_meta SET `valeur` = '' WHERE `nom`='preview' AND `valeur`='non' "),
211
	array(
212
		'sql_query',
213
		"UPDATE spip_meta SET `valeur` = ',0minirezo,1comite,' WHERE `nom`='preview' AND `valeur`='1comite' "
214
	),
215
	array('sql_query', "UPDATE spip_meta SET `valeur` = ',0minirezo,' WHERE `nom`='preview' AND `valeur`='oui' "),
216
);
217
218
$GLOBALS['maj'][1942] = array(
219
	array('sql_alter', "TABLE spip_auteurs CHANGE `statut` `statut` varchar(255)  DEFAULT '0' NOT NULL"),
220
	array('sql_alter', "TABLE spip_breves CHANGE `statut` `statut` varchar(6)  DEFAULT '0' NOT NULL"),
221
	array('sql_alter', "TABLE spip_messages CHANGE `statut` `statut` varchar(6)  DEFAULT '0' NOT NULL"),
222
	array('sql_alter', "TABLE spip_rubriques CHANGE `statut` `statut` varchar(10) DEFAULT '0' NOT NULL"),
223
	array('sql_alter', "TABLE spip_rubriques CHANGE `statut_tmp` `statut_tmp` varchar(10) DEFAULT '0' NOT NULL"),
224
	array('sql_alter', "TABLE spip_syndic CHANGE `statut` `statut` varchar(10) DEFAULT '0' NOT NULL"),
225
	array('sql_alter', "TABLE spip_syndic_articles CHANGE `statut` `statut` varchar(10) DEFAULT '0' NOT NULL"),
226
	array('sql_alter', "TABLE spip_forum CHANGE `statut` `statut` varchar(8) DEFAULT '0' NOT NULL"),
227
	array('sql_alter', "TABLE spip_signatures CHANGE `statut` `statut` varchar(10) DEFAULT '0' NOT NULL")
228
);
229
230
231
// suppression de l'indexation dans la version standard
232
$GLOBALS['maj'][1943] = array(
233
	array('sql_alter', "TABLE spip_articles DROP KEY `idx`"),
234
	array('sql_alter', "TABLE spip_articles DROP `idx`"),
235
	array('sql_alter', "TABLE spip_auteurs DROP KEY `idx`"),
236
	array('sql_alter', "TABLE spip_auteurs DROP `idx`"),
237
	array('sql_alter', "TABLE spip_breves DROP KEY `idx`"),
238
	array('sql_alter', "TABLE spip_breves DROP `idx`"),
239
	array('sql_alter', "TABLE spip_mots DROP KEY `idx`"),
240
	array('sql_alter', "TABLE spip_mots DROP `idx`"),
241
	array('sql_alter', "TABLE spip_rubriques DROP KEY `idx`"),
242
	array('sql_alter', "TABLE spip_rubriques DROP `idx`"),
243
#	array('sql_alter', "TABLE spip_documents DROP KEY `idx`"),
244
	array('sql_alter', "TABLE spip_documents DROP `idx`"),
245
	array('sql_alter', "TABLE spip_syndic DROP KEY `idx`"),
246
	array('sql_alter', "TABLE spip_syndic DROP `idx`"),
247
	array('sql_alter', "TABLE spip_forum DROP KEY `idx`"),
248
	array('sql_alter', "TABLE spip_forum DROP `idx`"),
249
	array('sql_alter', "TABLE spip_signatures DROP KEY `idx`"),
250
	array('sql_alter', "TABLE spip_signatures DROP `idx`"),
251
252
	array('sql_query', "DROP TABLE spip_index"),
253
	array('sql_query', "DROP TABLE spip_index_dico"),
254
);
255
256
$GLOBALS['maj'][1944] = array(
257
	array('sql_alter', "TABLE spip_documents CHANGE `taille` `taille` integer"),
258
	array('sql_alter', "TABLE spip_documents CHANGE `largeur` `largeur` integer"),
259
	array('sql_alter', "TABLE spip_documents CHANGE `hauteur` `hauteur` integer")
260
);
261
262
$GLOBALS['maj'][1945] = array(
263
	array('sql_alter', "TABLE spip_petitions CHANGE `email_unique` `email_unique` CHAR (3) DEFAULT '' NOT NULL"),
264
	array('sql_alter', "TABLE spip_petitions CHANGE `site_obli` `site_obli` CHAR (3) DEFAULT '' NOT NULL"),
265
	array('sql_alter', "TABLE spip_petitions CHANGE `site_unique` `site_unique` CHAR (3) DEFAULT '' NOT NULL"),
266
	array('sql_alter', "TABLE spip_petitions CHANGE `message` `message` CHAR (3) DEFAULT '' NOT NULL"),
267
	array('sql_alter', "TABLE spip_petitions CHANGE `texte` `texte` LONGTEXT DEFAULT '' NOT NULL"),
268
	array('sql_alter', "TABLE spip_articles CHANGE `surtitre` `surtitre` text DEFAULT '' NOT NULL"),
269
	array('sql_alter', "TABLE spip_articles CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
270
	array('sql_alter', "TABLE spip_articles CHANGE `soustitre` `soustitre` text DEFAULT '' NOT NULL"),
271
	array('sql_alter', "TABLE spip_articles CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
272
	array('sql_alter', "TABLE spip_articles CHANGE `chapo` `chapo` mediumtext DEFAULT '' NOT NULL"),
273
	array('sql_alter', "TABLE spip_articles CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"),
274
	array('sql_alter', "TABLE spip_articles CHANGE `ps` `ps` mediumtext DEFAULT '' NOT NULL"),
275
	array('sql_alter', "TABLE spip_articles CHANGE `accepter_forum` `accepter_forum` CHAR(3) DEFAULT '' NOT NULL"),
276
	array('sql_alter', "TABLE spip_articles CHANGE `nom_site` `nom_site` tinytext DEFAULT '' NOT NULL"),
277
	array('sql_alter', "TABLE spip_articles CHANGE `url_site` `url_site` VARCHAR(255) DEFAULT '' NOT NULL"),
278
	array('sql_alter', "TABLE spip_articles CHANGE `url_propre` `url_propre` VARCHAR(255) DEFAULT '' NOT NULL"),
279
	array('sql_alter', "TABLE spip_auteurs CHANGE `nom` `nom` text DEFAULT '' NOT NULL"),
280
	array('sql_alter', "TABLE spip_auteurs CHANGE `bio` `bio` text DEFAULT '' NOT NULL"),
281
	array('sql_alter', "TABLE spip_auteurs CHANGE `email` `email` tinytext DEFAULT '' NOT NULL"),
282
	array('sql_alter', "TABLE spip_auteurs CHANGE `nom_site` `nom_site` tinytext DEFAULT '' NOT NULL"),
283
	array('sql_alter', "TABLE spip_auteurs CHANGE `url_site` `url_site` text DEFAULT '' NOT NULL"),
284
	array('sql_alter', "TABLE spip_auteurs CHANGE `pass` `pass` tinytext DEFAULT '' NOT NULL"),
285
	array('sql_alter', "TABLE spip_auteurs CHANGE `low_sec` `low_sec` tinytext DEFAULT '' NOT NULL"),
286
	array('sql_alter', "TABLE spip_auteurs CHANGE `pgp` `pgp` TEXT DEFAULT '' NOT NULL"),
287
	array('sql_alter', "TABLE spip_auteurs CHANGE `htpass` `htpass` tinytext DEFAULT '' NOT NULL"),
288
	array('sql_alter', "TABLE spip_breves CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
289
	array('sql_alter', "TABLE spip_breves CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"),
290
	array('sql_alter', "TABLE spip_breves CHANGE `lien_titre` `lien_titre` text DEFAULT '' NOT NULL"),
291
	array('sql_alter', "TABLE spip_breves CHANGE `lien_url` `lien_url` text DEFAULT '' NOT NULL"),
292
	array('sql_alter', "TABLE spip_messages CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
293
	array('sql_alter', "TABLE spip_messages CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"),
294
	array('sql_alter', "TABLE spip_messages CHANGE `type` `type` varchar(6) DEFAULT '' NOT NULL"),
295
	array('sql_alter', "TABLE spip_messages CHANGE `rv` `rv` varchar(3) DEFAULT '' NOT NULL"),
296
	array('sql_alter', "TABLE spip_mots CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
297
	array('sql_alter', "TABLE spip_mots CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
298
	array('sql_alter', "TABLE spip_mots CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"),
299
	array('sql_alter', "TABLE spip_mots CHANGE `type` `type` text DEFAULT '' NOT NULL"),
300
	array('sql_alter', "TABLE spip_mots CHANGE `url_propre` `url_propre` VARCHAR(255) DEFAULT '' NOT NULL"),
301
	array('sql_alter', "TABLE spip_groupes_mots CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
302
	array('sql_alter', "TABLE spip_groupes_mots CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
303
	array('sql_alter', "TABLE spip_groupes_mots CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"),
304
	array('sql_alter', "TABLE spip_groupes_mots CHANGE `unseul` `unseul` varchar(3) DEFAULT '' NOT NULL"),
305
	array('sql_alter', "TABLE spip_groupes_mots CHANGE `obligatoire` `obligatoire` varchar(3) DEFAULT '' NOT NULL"),
306
	array('sql_alter', "TABLE spip_groupes_mots CHANGE `articles` `articles` varchar(3) DEFAULT '' NOT NULL"),
307
	array('sql_alter', "TABLE spip_groupes_mots CHANGE `breves` `breves` varchar(3) DEFAULT '' NOT NULL"),
308
	array('sql_alter', "TABLE spip_groupes_mots CHANGE `rubriques` `rubriques` varchar(3) DEFAULT '' NOT NULL"),
309
	array('sql_alter', "TABLE spip_groupes_mots CHANGE `syndic` `syndic` varchar(3) DEFAULT '' NOT NULL"),
310
	array('sql_alter', "TABLE spip_groupes_mots CHANGE `minirezo` `minirezo` varchar(3) DEFAULT '' NOT NULL"),
311
	array('sql_alter', "TABLE spip_groupes_mots CHANGE `comite` `comite` varchar(3) DEFAULT '' NOT NULL"),
312
	array('sql_alter', "TABLE spip_groupes_mots CHANGE `forum` `forum` varchar(3) DEFAULT '' NOT NULL"),
313
	array('sql_alter', "TABLE spip_rubriques CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
314
	array('sql_alter', "TABLE spip_rubriques CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
315
	array('sql_alter', "TABLE spip_rubriques CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"),
316
	array('sql_alter', "TABLE spip_rubriques CHANGE `url_propre` `url_propre` VARCHAR(255) DEFAULT '' NOT NULL"),
317
	array('sql_alter', "TABLE spip_documents CHANGE `extension` `extension` VARCHAR(10) DEFAULT '' NOT NULL"),
318
	array('sql_alter', "TABLE spip_documents CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
319
	array('sql_alter', "TABLE spip_documents CHANGE `date` `date` datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"),
320
	array('sql_alter', "TABLE spip_documents CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
321
	array('sql_alter', "TABLE spip_documents CHANGE `fichier` `fichier` varchar(255) DEFAULT '' NOT NULL"),
322
	array('sql_alter', "TABLE spip_types_documents CHANGE `extension` `extension` varchar(10) DEFAULT '' NOT NULL"),
323
	array('sql_alter', "TABLE spip_types_documents CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
324
	array('sql_alter', "TABLE spip_types_documents CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
325
	array('sql_alter', "TABLE spip_types_documents CHANGE `mime_type` `mime_type` varchar(100) DEFAULT '' NOT NULL"),
326
	array('sql_alter', "TABLE spip_syndic CHANGE `nom_site` `nom_site` text DEFAULT '' NOT NULL"),
327
	array('sql_alter', "TABLE spip_syndic CHANGE `url_site` `url_site` text DEFAULT '' NOT NULL"),
328
	array('sql_alter', "TABLE spip_syndic CHANGE `url_syndic` `url_syndic` text DEFAULT '' NOT NULL"),
329
	array('sql_alter', "TABLE spip_syndic CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
330
	array('sql_alter', "TABLE spip_syndic CHANGE `url_propre` `url_propre` VARCHAR(255) DEFAULT '' NOT NULL"),
331
	array('sql_alter', "TABLE spip_syndic CHANGE `syndication` `syndication` VARCHAR(3) DEFAULT '' NOT NULL"),
332
	array('sql_alter', "TABLE spip_syndic_articles CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
333
	array('sql_alter', "TABLE spip_syndic_articles CHANGE `url` `url` VARCHAR(255) DEFAULT '' NOT NULL"),
334
	array('sql_alter', "TABLE spip_syndic_articles CHANGE `lesauteurs` `lesauteurs` text DEFAULT '' NOT NULL"),
335
	array('sql_alter', "TABLE spip_syndic_articles CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"),
336
	array('sql_alter', "TABLE spip_forum CHANGE `titre` `titre` text DEFAULT '' NOT NULL"),
337
	array('sql_alter', "TABLE spip_forum CHANGE `texte` `texte` mediumtext DEFAULT '' NOT NULL"),
338
	array('sql_alter', "TABLE spip_forum CHANGE `auteur` `auteur` text DEFAULT '' NOT NULL"),
339
	array('sql_alter', "TABLE spip_forum CHANGE `email_auteur` `email_auteur` text DEFAULT '' NOT NULL"),
340
	array('sql_alter', "TABLE spip_forum CHANGE `nom_site` `nom_site` text DEFAULT '' NOT NULL"),
341
	array('sql_alter', "TABLE spip_forum CHANGE `url_site` `url_site` text DEFAULT '' NOT NULL"),
342
	array('sql_alter', "TABLE spip_forum CHANGE `ip` `ip` varchar(16) DEFAULT '' NOT NULL"),
343
	array('sql_alter', "TABLE spip_signatures CHANGE `nom_email` `nom_email` text DEFAULT '' NOT NULL"),
344
	array('sql_alter', "TABLE spip_signatures CHANGE `ad_email` `ad_email` text DEFAULT '' NOT NULL"),
345
	array('sql_alter', "TABLE spip_signatures CHANGE `nom_site` `nom_site` text DEFAULT '' NOT NULL"),
346
	array('sql_alter', "TABLE spip_signatures CHANGE `url_site` `url_site` text DEFAULT '' NOT NULL"),
347
	array('sql_alter', "TABLE spip_signatures CHANGE `message` `message` mediumtext DEFAULT '' NOT NULL")
348
);
349
350
351
$GLOBALS['maj'][1946] = array(
352
	array('sql_alter', "TABLE spip_forum DROP INDEX `id_parent`"),
353
	array('sql_alter', "TABLE spip_forum DROP INDEX `id_article`"),
354
	array('sql_alter', "TABLE spip_forum DROP INDEX `id_breve`"),
355
	array('sql_alter', "TABLE spip_forum DROP INDEX `id_syndic`"),
356
	array('sql_alter', "TABLE spip_forum DROP INDEX `id_rubrique`"),
357
	array('sql_alter', "TABLE spip_forum DROP INDEX `date_thread`"),
358
	array('sql_alter', "TABLE spip_forum DROP INDEX `statut`"),
359
	array(
360
		'sql_alter',
361
		"TABLE spip_forum ADD INDEX `optimal` (`statut`,`id_parent`,`id_article`,`date_heure`,`id_breve`,`id_syndic`,`id_rubrique`)"
362
	)
363
);
364
365
366
$GLOBALS['maj'][1947] = array(
367
368
	array('sql_alter', "TABLE spip_articles DROP INDEX `url_site`"),
369
	array('sql_alter', "TABLE spip_articles DROP INDEX `date_modif`"),
370
	array('sql_alter', "TABLE spip_auteurs  DROP INDEX `lang`")
371
);
372
373
// mauvaise manip
374
$GLOBALS['maj'][1949] = array(
375
376
	array('sql_alter', "TABLE spip_versions DROP INDEX `date`"),
377
	array('sql_alter', "TABLE spip_versions DROP INDEX `id_auteur`")
378
);
379
380
/**
381
 * Mise à jour 1_950 : Gestion du prefixe pour la table des urls
382
 *
383
 * @param float $installee Numéro de version actuellement installée
384
 **/
385
function maj_1_950($installee) {
386
	// oubli de gerer le prefixe lors l'introduction de l'abstraction
387
	// => Relancer les MAJ concernees si la version dont on part les avait fait
388
	if ($installee >= 1.946) {
389
		serie_alter('950a', $GLOBALS['maj'][1946]);
390
	}
391
	if ($installee >= 1.947) {
392
		serie_alter('950b', $GLOBALS['maj'][1947]);
393
	}
394
	if ($installee >= 1.949) {
395
		@serie_alter('950c', $GLOBALS['maj'][1949]);
0 ignored issues
show
Security Best Practice introduced by
It seems like you do not handle an error condition here. This can introduce security issues, and is generally not recommended.

If you suppress an error, we recommend checking for the error condition explicitly:

// For example instead of
@mkdir($dir);

// Better use
if (@mkdir($dir) === false) {
    throw new \RuntimeException('The directory '.$dir.' could not be created.');
}
Loading history...
396
	}
397
	global $tables_auxiliaires;
398
	include_spip('base/auxiliaires');
399
	$v = $tables_auxiliaires[$k = 'spip_urls'];
400
	sql_create($k, $v['field'], $v['key'], false, false);
401
402
403
	foreach (array(
404
		         'article' => 'id_article',
405
		         'rubrique' => 'id_rubrique',
406
		         'breve' => 'id_breve',
407
		         'auteur' => 'id_auteur',
408
		         'mot' => 'id_mot',
409
		         'syndic' => 'id_syndic'
410
	         ) as $type => $id_objet) {
411
		$table = ($type == 'syndic') ? $type : ($type . "s");
412
		$date = ($type == 'breve') ? 'date_heure' :
413
			(($type == 'auteur') ? 'maj' :
414
				(($type == 'mot') ? 'maj' : 'date'));
415
		$q = @sql_select("url_propre AS url, $id_objet AS id_objet, '$type' AS type, $date as date", "spip_$table",
416
			"url_propre<>''");
417
		if (!$q) {
418
			return;
419
		} // anormal, mais ne pas boucler en erreur
420
		while ($r = sql_fetch($q)) {
421
			sql_replace('spip_urls', $r);
422
		}
423
		spip_log("table $table : " . sql_count($q) . " urls propres copiees");
424
		sql_alter("TABLE spip_$table DROP INDEX `url_propre`");
425
		sql_alter("TABLE spip_$table DROP `url_propre`");
426
	}
427
}
428
429
// Donner a la fonction ci-dessus le numero de version installee
430
// AVANT que la mise a jour ait commencee
431
$GLOBALS['maj'][1950] = array(array('maj_1_950', $GLOBALS['meta']['version_installee']));
432
433
// Erreur dans maj_1_948():
434
// // https://git.spip.net/spip/spip/commit/619a9e5b10bfbe287aec1e11d66b720ec9da4494
435
// // Gestion du verrou SQL par PHP
436
437
$GLOBALS['maj'][1951] = array(
438
439
	array('sql_alter', "TABLE spip_versions CHANGE `id_version` `id_version` bigint(21) DEFAULT 0 NOT NULL")
440
);
441
442
443
/**
444
 * Mise à jour 1_952 : Transformation des documents
445
 *
446
 * - image => mode=image
447
 * - vignette => mode=vignette
448
 **/
449
function maj_1_952() {
450
451
	$ok = sql_alter("TABLE spip_documents CHANGE `mode` `mode` enum('vignette','image','document') DEFAULT NULL");
452
453
	if ($ok) {
454
455
		$s = sql_select("v.id_document as id_document",
456
			"spip_documents as d join spip_documents as v ON d.id_vignette=v.id_document");
457
458
		$vignettes = array();
459
		while ($t = sql_fetch($s)) {
460
			$vignettes[] = intval($t['id_document']);
461
		}
462
463
		$ok &= sql_query("UPDATE spip_documents SET `mode`='image' WHERE `mode`='vignette'");
464
		$ok &= sql_query("UPDATE spip_documents SET `mode`='vignette' WHERE `mode`='image' AND " . sql_in('id_document',
465
				$vignettes));
466
	}
467
	if (!$ok) {
468
		die('echec sur maj_1_952()');
469
	}
470
}
471
472
$GLOBALS['maj'][1952] = array(array('maj_1_952'));
473
474
$GLOBALS['maj'][1953] = array(array('upgrade_types_documents'));
475
476
$GLOBALS['maj'][1954] = array(
477
478
	//pas de psd en <img>
479
	array('sql_query', "UPDATE spip_types_documents SET `inclus`='non' WHERE `extension`='psd'"),
480
	//ajout csv
481
	array('sql_query', "INSERT IGNORE INTO spip_types_documents (`extension`, `titre`) VALUES ('csv', 'CSV')"),
482
	array('sql_query', "UPDATE spip_types_documents SET `mime_type`='text/csv' WHERE `extension`='csv'"),
483
	//ajout mkv
484
	array(
485
		'sql_query',
486
		"INSERT IGNORE INTO spip_types_documents (`extension`, `titre`, `inclus`) VALUES ('mkv', 'Matroska Video', 'embed')"
487
	),
488
	array('sql_query', "UPDATE spip_types_documents SET `mime_type`='video/x-mkv' WHERE `extension`='mkv'"),
489
	//ajout mka
490
	array(
491
		'sql_query',
492
		"INSERT IGNORE INTO spip_types_documents (`extension`, `titre`, `inclus`) VALUES ('mka', 'Matroska Audio', 'embed')"
493
	),
494
	array('sql_query', "UPDATE spip_types_documents SET `mime_type`='audio/x-mka' WHERE `extension`='mka'"),
495
	//ajout kml
496
	array(
497
		'sql_query',
498
		"INSERT IGNORE INTO spip_types_documents (`extension`, `titre`) VALUES ('kml', 'Keyhole Markup Language')"
499
	),
500
	array(
501
		'sql_query',
502
		"UPDATE spip_types_documents SET `mime_type`='application/vnd.google-earth.kml+xml' WHERE `extension`='kml'"
503
	),
504
	//ajout kmz
505
	array(
506
		'sql_query',
507
		"INSERT IGNORE INTO spip_types_documents (`extension`, `titre`) VALUES ('kmz', 'Google Earth Placemark File')"
508
	),
509
	array(
510
		'sql_query',
511
		"UPDATE spip_types_documents SET `mime_type`='application/vnd.google-earth.kmz' WHERE `extension`='kmz'"
512
	)
513
);
514
515
if ($GLOBALS['meta']['version_installee'] > 1.950) // 1.950 lisait un bug dans auxiliaires.php corrige a present
516
{
517
	$GLOBALS['maj'][1955] = array(
518
		array('sql_alter', "TABLE spip_urls CHANGE `maj` date DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL")
519
	);
520
}
521
522
// la mise a jour vers 1.938 contient une erreur
523
// il faut supprimer l'autoincrement avant de supprimer la PRIMARY KEY
524
525
$GLOBALS['maj'][1938] = array(
526
527
# creer un champ plus informatif, et son index
528
	array('sql_alter', "TABLE spip_documents ADD `extension` VARCHAR(10) DEFAULT ''  NOT NULL "),
529
# recopier l'ancien champ dans le nouveau
530
	array('maj_1_938'),
531
# supprimer l'ancien champ et son index
532
	array('sql_alter', "TABLE spip_documents DROP INDEX `id_type`, DROP `id_type`"),
533
	## supprimer l'autoincrement avant de supprimer la PRIMARY KEY
534
	array('sql_alter', "TABLE spip_types_documents CHANGE `id_type` `id_type` BIGINT( 21 ) NOT NULL "),
535
# le champ id_type devient superflu
536
	array('sql_alter', "TABLE spip_types_documents DROP `id_type`"),
537
	array('sql_alter', "TABLE spip_types_documents ADD PRIMARY KEY (`extension`)")
538
);
539
540
541
// PG veut une valeur par defaut a l'insertion
542
// https://git.spip.net/spip/spip/commit/5a981d1fbec021a42593a91482a6b17da060c2c5
543
544
$GLOBALS['maj'][1957] = array(
545
	array('sql_alter', "TABLE spip_mots CHANGE `id_groupe` `id_groupe` bigint(21) DEFAULT 0 NOT NULL"),
546
	array(
547
		'sql_alter',
548
		"TABLE spip_documents CHANGE `mode` `mode` ENUM('vignette', 'image', 'document') DEFAULT 'document' NOT NULL"
549
	)
550
);
551
552
// Ce champ est inutile et provoque une erreur a l'insertion qui l'oublie
553
$GLOBALS['maj'][1958] = array(
554
	array('sql_alter', "TABLE spip_referers_articles DROP date")
555
);
556