Completed
Push — master ( 4c9b8e...ef4cdc )
by cam
04:43
created
ecrire/maj/svn10000.php 2 patches
Indentation   +463 added lines, -463 removed lines patch added patch discarded remove patch
@@ -19,7 +19,7 @@  discard block
 block discarded – undo
19 19
  * @package SPIP\Core\SQL\Upgrade
20 20
  **/
21 21
 if (!defined('_ECRIRE_INC_VERSION')) {
22
-	return;
22
+    return;
23 23
 }
24 24
 
25 25
 
@@ -36,17 +36,17 @@  discard block
 block discarded – undo
36 36
 // l'impossibilite de telecharger une image
37 37
 // http://trac.rezo.net/trac/spip/ticket/1238
38 38
 $GLOBALS['maj'][11171] = array(
39
-	array('sql_query', "UPDATE spip_types_documents SET upload='oui' WHERE upload IS NULL OR upload!='non'")
39
+    array('sql_query', "UPDATE spip_types_documents SET upload='oui' WHERE upload IS NULL OR upload!='non'")
40 40
 );
41 41
 
42 42
 /**
43 43
  * Mise à jour 11268 : renommer spip_recherches la mal nommée en spip_resultats
44 44
  **/
45 45
 function maj_11268() {
46
-	global $tables_auxiliaires;
47
-	include_spip('base/auxiliaires');
48
-	$v = $tables_auxiliaires[$k = 'spip_resultats'];
49
-	sql_create($k, $v['field'], $v['key'], false, false);
46
+    global $tables_auxiliaires;
47
+    include_spip('base/auxiliaires');
48
+    $v = $tables_auxiliaires[$k = 'spip_resultats'];
49
+    sql_create($k, $v['field'], $v['key'], false, false);
50 50
 }
51 51
 
52 52
 $GLOBALS['maj'][11268] = array(array('maj_11268'));
@@ -58,8 +58,8 @@  discard block
 block discarded – undo
58 58
  * @uses maj_1_938()
59 59
  **/
60 60
 function maj_11276() {
61
-	include_spip('maj/v019');
62
-	maj_1_938();
61
+    include_spip('maj/v019');
62
+    maj_1_938();
63 63
 }
64 64
 
65 65
 $GLOBALS['maj'][11276] = array(array('maj_11276'));
@@ -68,17 +68,17 @@  discard block
 block discarded – undo
68 68
  * Mise à jour 11388 : réparer les referers d'article, qui sont vides depuis r10572
69 69
  */
70 70
 function maj_11388() {
71
-	$s = sql_select('referer_md5', 'spip_referers_articles', "referer='' OR referer IS NULL");
72
-	while ($t = sql_fetch($s)) {
73
-		$k = sql_fetsel('referer', 'spip_referers', 'referer_md5=' . sql_quote($t['referer_md5']));
74
-		if ($k['referer']) {
75
-			sql_query('UPDATE spip_referers_articles
71
+    $s = sql_select('referer_md5', 'spip_referers_articles', "referer='' OR referer IS NULL");
72
+    while ($t = sql_fetch($s)) {
73
+        $k = sql_fetsel('referer', 'spip_referers', 'referer_md5=' . sql_quote($t['referer_md5']));
74
+        if ($k['referer']) {
75
+            sql_query('UPDATE spip_referers_articles
76 76
 			SET referer=' . sql_quote($k['referer']) . '
77 77
 			WHERE referer_md5=' . sql_quote($t['referer_md5'])
78
-				. " AND (referer='' OR referer IS NULL)"
79
-			);
80
-		}
81
-	}
78
+                . " AND (referer='' OR referer IS NULL)"
79
+            );
80
+        }
81
+    }
82 82
 }
83 83
 
84 84
 $GLOBALS['maj'][11388] = array(array('maj_11388'));
@@ -87,20 +87,20 @@  discard block
 block discarded – undo
87 87
  * Mise à jour 11431 : réparer spip_mots.type = titre du groupe
88 88
  */
89 89
 function maj_11431() {
90
-	// mysql only
91
-	// sql_query("UPDATE spip_mots AS a LEFT JOIN spip_groupes_mots AS b ON (a.id_groupe = b.id_groupe) SET a.type=b.titre");
92
-
93
-	// selection des mots cles dont le type est different du groupe
94
-	$res = sql_select(
95
-		array("a.id_mot AS id_mot", "b.titre AS type"),
96
-		array("spip_mots AS a LEFT JOIN spip_groupes_mots AS b ON (a.id_groupe = b.id_groupe)"),
97
-		array("a.type != b.titre"));
98
-	// mise a jour de ces mots la
99
-	if ($res) {
100
-		while ($r = sql_fetch($res)) {
101
-			sql_updateq('spip_mots', array('type' => $r['type']), 'id_mot=' . sql_quote($r['id_mot']));
102
-		}
103
-	}
90
+    // mysql only
91
+    // sql_query("UPDATE spip_mots AS a LEFT JOIN spip_groupes_mots AS b ON (a.id_groupe = b.id_groupe) SET a.type=b.titre");
92
+
93
+    // selection des mots cles dont le type est different du groupe
94
+    $res = sql_select(
95
+        array("a.id_mot AS id_mot", "b.titre AS type"),
96
+        array("spip_mots AS a LEFT JOIN spip_groupes_mots AS b ON (a.id_groupe = b.id_groupe)"),
97
+        array("a.type != b.titre"));
98
+    // mise a jour de ces mots la
99
+    if ($res) {
100
+        while ($r = sql_fetch($res)) {
101
+            sql_updateq('spip_mots', array('type' => $r['type']), 'id_mot=' . sql_quote($r['id_mot']));
102
+        }
103
+    }
104 104
 }
105 105
 
106 106
 $GLOBALS['maj'][11431] = array(array('maj_11431'));
@@ -109,13 +109,13 @@  discard block
 block discarded – undo
109 109
  * Mise à jour 11778 : réparer spip_types_documents.id_type qui est parfois encore présent
110 110
  */
111 111
 function maj_11778() {
112
-	// si presence id_type
113
-	$s = sql_showtable('spip_types_documents');
114
-	if (isset($s['field']['id_type'])) {
115
-		sql_alter('TABLE spip_types_documents CHANGE id_type id_type BIGINT(21) NOT NULL');
116
-		sql_alter('TABLE spip_types_documents DROP id_type');
117
-		sql_alter('TABLE spip_types_documents ADD PRIMARY KEY (extension)');
118
-	}
112
+    // si presence id_type
113
+    $s = sql_showtable('spip_types_documents');
114
+    if (isset($s['field']['id_type'])) {
115
+        sql_alter('TABLE spip_types_documents CHANGE id_type id_type BIGINT(21) NOT NULL');
116
+        sql_alter('TABLE spip_types_documents DROP id_type');
117
+        sql_alter('TABLE spip_types_documents ADD PRIMARY KEY (extension)');
118
+    }
119 119
 }
120 120
 
121 121
 $GLOBALS['maj'][11778] = array(array('maj_11778'));
@@ -125,9 +125,9 @@  discard block
 block discarded – undo
125 125
  */
126 126
 function maj_11790() {
127 127
 #	sql_alter('TABLE spip_forum DROP INDEX id_message id_message');
128
-	sql_alter('TABLE spip_forum ADD INDEX id_parent (id_parent)');
129
-	sql_alter('TABLE spip_forum ADD INDEX id_auteur (id_auteur)');
130
-	sql_alter('TABLE spip_forum ADD INDEX id_thread (id_thread)');
128
+    sql_alter('TABLE spip_forum ADD INDEX id_parent (id_parent)');
129
+    sql_alter('TABLE spip_forum ADD INDEX id_auteur (id_auteur)');
130
+    sql_alter('TABLE spip_forum ADD INDEX id_thread (id_thread)');
131 131
 }
132 132
 
133 133
 $GLOBALS['maj'][11790] = array(array('maj_11790'));
@@ -136,27 +136,27 @@  discard block
 block discarded – undo
136 136
 
137 137
 
138 138
 $GLOBALS['maj'][11961] = array(
139
-	array('sql_alter', "TABLE spip_groupes_mots CHANGE `tables` tables_liees text DEFAULT '' NOT NULL AFTER obligatoire"),
140
-	// si tables a ete cree on le renomme
141
-	array('sql_alter', "TABLE spip_groupes_mots ADD tables_liees text DEFAULT '' NOT NULL AFTER obligatoire"),
142
-	// sinon on l'ajoute
143
-	array('sql_update', 'spip_groupes_mots', array('tables_liees' => "''"), "articles REGEXP '.*'"),
144
-	// si le champ articles est encore la, on reinit la conversion
145
-	array(
146
-		'sql_update',
147
-		'spip_groupes_mots',
148
-		array('tables_liees' => "concat(tables_liees,'articles,')"),
149
-		"articles='oui'"
150
-	),
151
-	// sinon ces 4 requetes ne feront rien
152
-	array('sql_update', 'spip_groupes_mots', array('tables_liees' => "concat(tables_liees,'breves,')"), "breves='oui'"),
153
-	array(
154
-		'sql_update',
155
-		'spip_groupes_mots',
156
-		array('tables_liees' => "concat(tables_liees,'rubriques,')"),
157
-		"rubriques='oui'"
158
-	),
159
-	array('sql_update', 'spip_groupes_mots', array('tables_liees' => "concat(tables_liees,'syndic,')"), "syndic='oui'"),
139
+    array('sql_alter', "TABLE spip_groupes_mots CHANGE `tables` tables_liees text DEFAULT '' NOT NULL AFTER obligatoire"),
140
+    // si tables a ete cree on le renomme
141
+    array('sql_alter', "TABLE spip_groupes_mots ADD tables_liees text DEFAULT '' NOT NULL AFTER obligatoire"),
142
+    // sinon on l'ajoute
143
+    array('sql_update', 'spip_groupes_mots', array('tables_liees' => "''"), "articles REGEXP '.*'"),
144
+    // si le champ articles est encore la, on reinit la conversion
145
+    array(
146
+        'sql_update',
147
+        'spip_groupes_mots',
148
+        array('tables_liees' => "concat(tables_liees,'articles,')"),
149
+        "articles='oui'"
150
+    ),
151
+    // sinon ces 4 requetes ne feront rien
152
+    array('sql_update', 'spip_groupes_mots', array('tables_liees' => "concat(tables_liees,'breves,')"), "breves='oui'"),
153
+    array(
154
+        'sql_update',
155
+        'spip_groupes_mots',
156
+        array('tables_liees' => "concat(tables_liees,'rubriques,')"),
157
+        "rubriques='oui'"
158
+    ),
159
+    array('sql_update', 'spip_groupes_mots', array('tables_liees' => "concat(tables_liees,'syndic,')"), "syndic='oui'"),
160 160
 );
161 161
 
162 162
 
@@ -165,109 +165,109 @@  discard block
 block discarded – undo
165 165
  * spip_documents_articles et spip_documents_forum
166 166
  */
167 167
 function maj_12008() {
168
-	// Creer spip_documents_liens
169
-	global $tables_auxiliaires;
170
-	include_spip('base/auxiliaires');
171
-	$v = $tables_auxiliaires[$k = 'spip_documents_liens'];
172
-	sql_create($k, $v['field'], $v['key'], false, false);
173
-
174
-	// Recopier les donnees
175
-	foreach (array('article', 'breve', 'rubrique', 'auteur', 'forum') as $l) {
176
-		if ($s = sql_select('*', 'spip_documents_' . $l . 's')
177
-			or $s = sql_select('*', 'spip_documents_' . $l)
178
-		) {
179
-			$tampon = array();
180
-			while ($t = sql_fetch($s)) {
181
-				// transformer id_xx=N en (id_objet=N, objet=xx)
182
-				$t['id_objet'] = $t["id_$l"];
183
-				$t['objet'] = $l;
184
-				unset($t["id_$l"]);
185
-				unset($t['maj']);
186
-				$tampon[] = $t;
187
-				if (count($tampon) > 10000) {
188
-					sql_insertq_multi('spip_documents_liens', $tampon);
189
-					$tampon = array();
190
-				}
191
-			}
192
-			if (count($tampon)) {
193
-				sql_insertq_multi('spip_documents_liens', $tampon);
194
-			}
195
-		}
196
-	}
168
+    // Creer spip_documents_liens
169
+    global $tables_auxiliaires;
170
+    include_spip('base/auxiliaires');
171
+    $v = $tables_auxiliaires[$k = 'spip_documents_liens'];
172
+    sql_create($k, $v['field'], $v['key'], false, false);
173
+
174
+    // Recopier les donnees
175
+    foreach (array('article', 'breve', 'rubrique', 'auteur', 'forum') as $l) {
176
+        if ($s = sql_select('*', 'spip_documents_' . $l . 's')
177
+            or $s = sql_select('*', 'spip_documents_' . $l)
178
+        ) {
179
+            $tampon = array();
180
+            while ($t = sql_fetch($s)) {
181
+                // transformer id_xx=N en (id_objet=N, objet=xx)
182
+                $t['id_objet'] = $t["id_$l"];
183
+                $t['objet'] = $l;
184
+                unset($t["id_$l"]);
185
+                unset($t['maj']);
186
+                $tampon[] = $t;
187
+                if (count($tampon) > 10000) {
188
+                    sql_insertq_multi('spip_documents_liens', $tampon);
189
+                    $tampon = array();
190
+                }
191
+            }
192
+            if (count($tampon)) {
193
+                sql_insertq_multi('spip_documents_liens', $tampon);
194
+            }
195
+        }
196
+    }
197 197
 }
198 198
 
199 199
 $GLOBALS['maj'][12008] = array(
200 200
 //array('sql_drop_table',"spip_documents_liens"), // tant pis pour ceux qui ont joue a 11974
201
-	array('sql_alter', "TABLE spip_documents_liens DROP PRIMARY KEY"),
202
-	array('sql_alter', "TABLE spip_documents_liens ADD id_objet bigint(21) DEFAULT '0' NOT NULL AFTER id_document"),
203
-	array('sql_alter', "TABLE spip_documents_liens ADD objet VARCHAR (25) DEFAULT '' NOT NULL AFTER id_objet"),
204
-	array(
205
-		'sql_update',
206
-		'spip_documents_liens',
207
-		array('id_objet' => "id_article", 'objet' => "'article'"),
208
-		"id_article IS NOT NULL AND id_article>0"
209
-	),
210
-	array(
211
-		'sql_update',
212
-		'spip_documents_liens',
213
-		array('id_objet' => "id_rubrique", 'objet' => "'rubrique'"),
214
-		"id_rubrique IS NOT NULL AND id_rubrique>0"
215
-	),
216
-	array(
217
-		'sql_update',
218
-		'spip_documents_liens',
219
-		array('id_objet' => "id_breve", 'objet' => "'breve'"),
220
-		"id_breve IS NOT NULL AND id_breve>0"
221
-	),
222
-	array(
223
-		'sql_update',
224
-		'spip_documents_liens',
225
-		array('id_objet' => "id_auteur", 'objet' => "'auteur'"),
226
-		"id_auteur IS NOT NULL AND id_auteur>0"
227
-	),
228
-	array(
229
-		'sql_update',
230
-		'spip_documents_liens',
231
-		array('id_objet' => "id_forum", 'objet' => "'forum'"),
232
-		"id_forum IS NOT NULL AND id_forum>0"
233
-	),
234
-	array('sql_alter', "TABLE spip_documents_liens ADD PRIMARY KEY  (id_document,id_objet,objet)"),
235
-	array('sql_alter', "TABLE spip_documents_liens DROP id_article"),
236
-	array('sql_alter', "TABLE spip_documents_liens DROP id_rubrique"),
237
-	array('sql_alter', "TABLE spip_documents_liens DROP id_breve"),
238
-	array('sql_alter', "TABLE spip_documents_liens DROP id_auteur"),
239
-	array('sql_alter', "TABLE spip_documents_liens DROP id_forum"),
240
-	array('maj_12008'),
201
+    array('sql_alter', "TABLE spip_documents_liens DROP PRIMARY KEY"),
202
+    array('sql_alter', "TABLE spip_documents_liens ADD id_objet bigint(21) DEFAULT '0' NOT NULL AFTER id_document"),
203
+    array('sql_alter', "TABLE spip_documents_liens ADD objet VARCHAR (25) DEFAULT '' NOT NULL AFTER id_objet"),
204
+    array(
205
+        'sql_update',
206
+        'spip_documents_liens',
207
+        array('id_objet' => "id_article", 'objet' => "'article'"),
208
+        "id_article IS NOT NULL AND id_article>0"
209
+    ),
210
+    array(
211
+        'sql_update',
212
+        'spip_documents_liens',
213
+        array('id_objet' => "id_rubrique", 'objet' => "'rubrique'"),
214
+        "id_rubrique IS NOT NULL AND id_rubrique>0"
215
+    ),
216
+    array(
217
+        'sql_update',
218
+        'spip_documents_liens',
219
+        array('id_objet' => "id_breve", 'objet' => "'breve'"),
220
+        "id_breve IS NOT NULL AND id_breve>0"
221
+    ),
222
+    array(
223
+        'sql_update',
224
+        'spip_documents_liens',
225
+        array('id_objet' => "id_auteur", 'objet' => "'auteur'"),
226
+        "id_auteur IS NOT NULL AND id_auteur>0"
227
+    ),
228
+    array(
229
+        'sql_update',
230
+        'spip_documents_liens',
231
+        array('id_objet' => "id_forum", 'objet' => "'forum'"),
232
+        "id_forum IS NOT NULL AND id_forum>0"
233
+    ),
234
+    array('sql_alter', "TABLE spip_documents_liens ADD PRIMARY KEY  (id_document,id_objet,objet)"),
235
+    array('sql_alter', "TABLE spip_documents_liens DROP id_article"),
236
+    array('sql_alter', "TABLE spip_documents_liens DROP id_rubrique"),
237
+    array('sql_alter', "TABLE spip_documents_liens DROP id_breve"),
238
+    array('sql_alter', "TABLE spip_documents_liens DROP id_auteur"),
239
+    array('sql_alter', "TABLE spip_documents_liens DROP id_forum"),
240
+    array('maj_12008'),
241 241
 );
242 242
 
243 243
 
244 244
 // destruction des tables spip_documents_articles etc, cf. 12008
245 245
 $GLOBALS['maj'][12009] = array(
246
-	array('sql_drop_table', "spip_documents_articles"),
247
-	array('sql_drop_table', "spip_documents_breves"),
248
-	array('sql_drop_table', "spip_documents_rubriques"),
249
-	array('sql_drop_table', "spip_documents_auteurs"), # plugin #FORMULAIRE_UPLOAD
250
-	array('sql_drop_table', "spip_documents_syndic") # plugin podcast_client
246
+    array('sql_drop_table', "spip_documents_articles"),
247
+    array('sql_drop_table', "spip_documents_breves"),
248
+    array('sql_drop_table', "spip_documents_rubriques"),
249
+    array('sql_drop_table', "spip_documents_auteurs"), # plugin #FORMULAIRE_UPLOAD
250
+    array('sql_drop_table', "spip_documents_syndic") # plugin podcast_client
251 251
 );
252 252
 
253 253
 // destruction des champs articles breves rubriques et syndic, cf. 11961
254 254
 $GLOBALS['maj'][12010] = array(
255
-	array('sql_alter', "TABLE spip_groupes_mots DROP articles"),
256
-	array('sql_alter', "TABLE spip_groupes_mots DROP breves"),
257
-	array('sql_alter', "TABLE spip_groupes_mots DROP rubriques"),
258
-	array('sql_alter', "TABLE spip_groupes_mots DROP syndic"),
255
+    array('sql_alter', "TABLE spip_groupes_mots DROP articles"),
256
+    array('sql_alter', "TABLE spip_groupes_mots DROP breves"),
257
+    array('sql_alter', "TABLE spip_groupes_mots DROP rubriques"),
258
+    array('sql_alter', "TABLE spip_groupes_mots DROP syndic"),
259 259
 );
260 260
 
261 261
 /**
262 262
  * Mise à jour 13135 : réparer le calcul des rubriques ayant des articles postdatés
263 263
  */
264 264
 function maj_13135() {
265
-	include_spip('inc/rubriques');
266
-	calculer_prochain_postdate();
265
+    include_spip('inc/rubriques');
266
+    calculer_prochain_postdate();
267 267
 
268
-	// supprimer les eventuels vieux cache plugin qui n'utilisaient pas _chemin
269
-	@spip_unlink(_CACHE_PLUGINS_OPT);
270
-	@spip_unlink(_CACHE_PLUGINS_FCT);
268
+    // supprimer les eventuels vieux cache plugin qui n'utilisaient pas _chemin
269
+    @spip_unlink(_CACHE_PLUGINS_OPT);
270
+    @spip_unlink(_CACHE_PLUGINS_FCT);
271 271
 }
272 272
 
273 273
 $GLOBALS['maj'][13135] = array(array('maj_13135'));
@@ -278,25 +278,25 @@  discard block
 block discarded – undo
278 278
 // http://archives.rezo.net/spip-zone.mbox/200903.mbox/%[email protected]%3E
279 279
 
280 280
 $GLOBALS['maj'][13833] = array(
281
-	array('sql_alter', "TABLE spip_documents_liens ADD INDEX objet(id_objet,objet)")
281
+    array('sql_alter', "TABLE spip_documents_liens ADD INDEX objet(id_objet,objet)")
282 282
 );
283 283
 
284 284
 // Fin upgrade commun branche 2.0
285 285
 
286 286
 $GLOBALS['maj'][13904] = array(
287
-	array('sql_alter', "TABLE spip_auteurs ADD webmestre varchar(3)  DEFAULT 'non' NOT NULL"),
288
-	array(
289
-		'sql_update',
290
-		'spip_auteurs',
291
-		array('webmestre' => "'oui'"),
292
-		sql_in("id_auteur", defined('_ID_WEBMESTRES') ? explode(':',
293
-			_ID_WEBMESTRES) : (autoriser('configurer') ? array($GLOBALS['visiteur_session']['id_auteur']) : array(0)))
294
-	) // le webmestre est celui qui fait l'upgrade si rien de defini
287
+    array('sql_alter', "TABLE spip_auteurs ADD webmestre varchar(3)  DEFAULT 'non' NOT NULL"),
288
+    array(
289
+        'sql_update',
290
+        'spip_auteurs',
291
+        array('webmestre' => "'oui'"),
292
+        sql_in("id_auteur", defined('_ID_WEBMESTRES') ? explode(':',
293
+            _ID_WEBMESTRES) : (autoriser('configurer') ? array($GLOBALS['visiteur_session']['id_auteur']) : array(0)))
294
+    ) // le webmestre est celui qui fait l'upgrade si rien de defini
295 295
 );
296 296
 
297 297
 // sites plantes en mode "'su" au lieu de "sus"
298 298
 $GLOBALS['maj'][13929] = array(
299
-	array('sql_update', "spip_syndic", array('syndication' => "'sus'"), "syndication LIKE '\\'%'")
299
+    array('sql_update', "spip_syndic", array('syndication' => "'sus'"), "syndication LIKE '\\'%'")
300 300
 );
301 301
 
302 302
 // Types de fichiers m4a/m4b/m4p/m4u/m4v/dv
@@ -311,24 +311,24 @@  discard block
 block discarded – undo
311 311
 // Retour en arriere pour ceux qui l'ont subi, ne rien faire sinon
312 312
 if (@$GLOBALS['meta']['version_installee'] >= 14588) {
313 313
 
314
-	// "mode" est un mot-cle d'Oracle
315
-	$GLOBALS['maj'][14588] = array(
316
-		array('sql_alter', "TABLE spip_documents  DROP INDEX mode"),
317
-		array(
318
-			'sql_alter',
319
-			"TABLE spip_documents  CHANGE mode genre ENUM('vignette', 'image', 'document') DEFAULT 'document' NOT NULL"
320
-		),
321
-		array('sql_alter', "TABLE spip_documents  ADD INDEX genre(genre)")
322
-	);
323
-	// solution moins intrusive au pb de mot-cle d'Oracle, retour avant 14588
324
-	$GLOBALS['maj'][14598] = array(
325
-		array('sql_alter', "TABLE spip_documents  DROP INDEX genre"),
326
-		array(
327
-			'sql_alter',
328
-			"TABLE spip_documents  CHANGE genre mode ENUM('vignette', 'image', 'document') DEFAULT 'document' NOT NULL"
329
-		),
330
-		array('sql_alter', "TABLE spip_documents  ADD INDEX mode(mode)")
331
-	);
314
+    // "mode" est un mot-cle d'Oracle
315
+    $GLOBALS['maj'][14588] = array(
316
+        array('sql_alter', "TABLE spip_documents  DROP INDEX mode"),
317
+        array(
318
+            'sql_alter',
319
+            "TABLE spip_documents  CHANGE mode genre ENUM('vignette', 'image', 'document') DEFAULT 'document' NOT NULL"
320
+        ),
321
+        array('sql_alter', "TABLE spip_documents  ADD INDEX genre(genre)")
322
+    );
323
+    // solution moins intrusive au pb de mot-cle d'Oracle, retour avant 14588
324
+    $GLOBALS['maj'][14598] = array(
325
+        array('sql_alter', "TABLE spip_documents  DROP INDEX genre"),
326
+        array(
327
+            'sql_alter',
328
+            "TABLE spip_documents  CHANGE genre mode ENUM('vignette', 'image', 'document') DEFAULT 'document' NOT NULL"
329
+        ),
330
+        array('sql_alter', "TABLE spip_documents  ADD INDEX mode(mode)")
331
+    );
332 332
 }
333 333
 
334 334
 // Restauration correcte des types mime des fichiers Ogg
@@ -341,13 +341,13 @@  discard block
 block discarded – undo
341 341
 $GLOBALS['maj'][15827] = array(array('upgrade_types_documents'));
342 342
 
343 343
 $GLOBALS['maj'][16428] = array(
344
-	array('maj_liens', 'auteur'), // creer la table liens
345
-	array('maj_liens', 'auteur', 'article'),
346
-	array('sql_drop_table', "spip_auteurs_articles"),
347
-	array('maj_liens', 'auteur', 'rubrique'),
348
-	array('sql_drop_table', "spip_auteurs_rubriques"),
349
-	array('maj_liens', 'auteur', 'message'),
350
-	array('sql_drop_table', "spip_auteurs_messages"),
344
+    array('maj_liens', 'auteur'), // creer la table liens
345
+    array('maj_liens', 'auteur', 'article'),
346
+    array('sql_drop_table', "spip_auteurs_articles"),
347
+    array('maj_liens', 'auteur', 'rubrique'),
348
+    array('sql_drop_table', "spip_auteurs_rubriques"),
349
+    array('maj_liens', 'auteur', 'message'),
350
+    array('sql_drop_table', "spip_auteurs_messages"),
351 351
 );
352 352
 
353 353
 /**
@@ -373,89 +373,89 @@  discard block
 block discarded – undo
373 373
  */
374 374
 function maj_liens($pivot, $l = '') {
375 375
 
376
-	@define('_LOG_FILTRE_GRAVITE', 8);
377
-
378
-	$exceptions_pluriel = array('forum' => 'forum', 'syndic' => 'syndic');
379
-
380
-	$pivot = preg_replace(',[^\w],', '', $pivot); // securite
381
-	$pivots = (isset($exceptions_pluriel[$pivot]) ? $exceptions_pluriel[$pivot] : $pivot . "s");
382
-	$liens = "spip_" . $pivots . "_liens";
383
-	$id_pivot = "id_" . $pivot;
384
-	// Creer spip_auteurs_liens
385
-	global $tables_auxiliaires;
386
-	if (!$l) {
387
-		include_spip('base/auxiliaires');
388
-		include_spip('base/create');
389
-		creer_ou_upgrader_table($liens, $tables_auxiliaires[$liens], false);
390
-	} else {
391
-		// Preparer
392
-		$l = preg_replace(',[^\w],', '', $l); // securite
393
-		$primary = "id_$l";
394
-		$objet = ($l == 'syndic' ? 'site' : $l);
395
-		$ls = (isset($exceptions_pluriel[$l]) ? $exceptions_pluriel[$l] : $l . "s");
396
-		$ancienne_table = 'spip_' . $pivots . '_' . $ls;
397
-		$pool = 400;
398
-
399
-		$trouver_table = charger_fonction('trouver_table', 'base');
400
-		if (!$desc = $trouver_table($ancienne_table)) {
401
-			return;
402
-		}
403
-
404
-		// securite pour ne pas perdre de donnees
405
-		if (!$trouver_table($liens)) {
406
-			return;
407
-		}
408
-
409
-		$champs = $desc['field'];
410
-		if (isset($champs['maj'])) {
411
-			unset($champs['maj']);
412
-		}
413
-		if (isset($champs[$primary])) {
414
-			unset($champs[$primary]);
415
-		}
416
-
417
-		$champs = array_keys($champs);
418
-		// ne garder que les champs qui existent sur la table destination
419
-		if ($desc_cible = $trouver_table($liens)) {
420
-			$champs = array_intersect($champs, array_keys($desc_cible['field']));
421
-		}
422
-
423
-		$champs[] = "$primary as id_objet";
424
-		$champs[] = "'$objet' as objet";
425
-		$champs = implode(', ', $champs);
426
-
427
-		// Recopier les donnees
428
-		$sub_pool = 100;
429
-		while ($ids = array_map('reset', sql_allfetsel("$primary", $ancienne_table, '', '', '', "0,$sub_pool"))) {
430
-			$insert = array();
431
-			foreach ($ids as $id) {
432
-				$n = sql_countsel($liens, "objet='$objet' AND id_objet=" . intval($id));
433
-				while ($t = sql_allfetsel($champs, $ancienne_table, "$primary=" . intval($id), '', $id_pivot, "$n,$pool")) {
434
-					$n += count($t);
435
-					// empiler en s'assurant a minima de l'unicite
436
-					while ($r = array_shift($t)) {
437
-						$insert[$r[$id_pivot] . ':' . $r['id_objet']] = $r;
438
-					}
439
-					if (count($insert) >= $sub_pool) {
440
-						maj_liens_insertq_multi_check($liens, $insert, $tables_auxiliaires[$liens]);
441
-						$insert = array();
442
-					}
443
-					// si timeout, sortir, la relance nous ramenera dans cette fonction
444
-					// et on verifiera/repartira de la
445
-					if (time() >= _TIME_OUT) {
446
-						return;
447
-					}
448
-				}
449
-				if (time() >= _TIME_OUT) {
450
-					return;
451
-				}
452
-			}
453
-			if (count($insert)) {
454
-				maj_liens_insertq_multi_check($liens, $insert, $tables_auxiliaires[$liens]);
455
-			}
456
-			sql_delete($ancienne_table, sql_in($primary, $ids));
457
-		}
458
-	}
376
+    @define('_LOG_FILTRE_GRAVITE', 8);
377
+
378
+    $exceptions_pluriel = array('forum' => 'forum', 'syndic' => 'syndic');
379
+
380
+    $pivot = preg_replace(',[^\w],', '', $pivot); // securite
381
+    $pivots = (isset($exceptions_pluriel[$pivot]) ? $exceptions_pluriel[$pivot] : $pivot . "s");
382
+    $liens = "spip_" . $pivots . "_liens";
383
+    $id_pivot = "id_" . $pivot;
384
+    // Creer spip_auteurs_liens
385
+    global $tables_auxiliaires;
386
+    if (!$l) {
387
+        include_spip('base/auxiliaires');
388
+        include_spip('base/create');
389
+        creer_ou_upgrader_table($liens, $tables_auxiliaires[$liens], false);
390
+    } else {
391
+        // Preparer
392
+        $l = preg_replace(',[^\w],', '', $l); // securite
393
+        $primary = "id_$l";
394
+        $objet = ($l == 'syndic' ? 'site' : $l);
395
+        $ls = (isset($exceptions_pluriel[$l]) ? $exceptions_pluriel[$l] : $l . "s");
396
+        $ancienne_table = 'spip_' . $pivots . '_' . $ls;
397
+        $pool = 400;
398
+
399
+        $trouver_table = charger_fonction('trouver_table', 'base');
400
+        if (!$desc = $trouver_table($ancienne_table)) {
401
+            return;
402
+        }
403
+
404
+        // securite pour ne pas perdre de donnees
405
+        if (!$trouver_table($liens)) {
406
+            return;
407
+        }
408
+
409
+        $champs = $desc['field'];
410
+        if (isset($champs['maj'])) {
411
+            unset($champs['maj']);
412
+        }
413
+        if (isset($champs[$primary])) {
414
+            unset($champs[$primary]);
415
+        }
416
+
417
+        $champs = array_keys($champs);
418
+        // ne garder que les champs qui existent sur la table destination
419
+        if ($desc_cible = $trouver_table($liens)) {
420
+            $champs = array_intersect($champs, array_keys($desc_cible['field']));
421
+        }
422
+
423
+        $champs[] = "$primary as id_objet";
424
+        $champs[] = "'$objet' as objet";
425
+        $champs = implode(', ', $champs);
426
+
427
+        // Recopier les donnees
428
+        $sub_pool = 100;
429
+        while ($ids = array_map('reset', sql_allfetsel("$primary", $ancienne_table, '', '', '', "0,$sub_pool"))) {
430
+            $insert = array();
431
+            foreach ($ids as $id) {
432
+                $n = sql_countsel($liens, "objet='$objet' AND id_objet=" . intval($id));
433
+                while ($t = sql_allfetsel($champs, $ancienne_table, "$primary=" . intval($id), '', $id_pivot, "$n,$pool")) {
434
+                    $n += count($t);
435
+                    // empiler en s'assurant a minima de l'unicite
436
+                    while ($r = array_shift($t)) {
437
+                        $insert[$r[$id_pivot] . ':' . $r['id_objet']] = $r;
438
+                    }
439
+                    if (count($insert) >= $sub_pool) {
440
+                        maj_liens_insertq_multi_check($liens, $insert, $tables_auxiliaires[$liens]);
441
+                        $insert = array();
442
+                    }
443
+                    // si timeout, sortir, la relance nous ramenera dans cette fonction
444
+                    // et on verifiera/repartira de la
445
+                    if (time() >= _TIME_OUT) {
446
+                        return;
447
+                    }
448
+                }
449
+                if (time() >= _TIME_OUT) {
450
+                    return;
451
+                }
452
+            }
453
+            if (count($insert)) {
454
+                maj_liens_insertq_multi_check($liens, $insert, $tables_auxiliaires[$liens]);
455
+            }
456
+            sql_delete($ancienne_table, sql_in($primary, $ids));
457
+        }
458
+    }
459 459
 }
460 460
 
461 461
 /**
@@ -469,82 +469,82 @@  discard block
 block discarded – undo
469 469
  * @return void
470 470
  **/
471 471
 function maj_liens_insertq_multi_check($table, $couples, $desc = array()) {
472
-	$n_before = sql_countsel($table);
473
-	sql_insertq_multi($table, $couples, $desc);
474
-	$n_after = sql_countsel($table);
475
-	if (($n_after - $n_before) == count($couples)) {
476
-		return;
477
-	}
478
-	// si ecart, on recommence l'insertion ligne par ligne...
479
-	// moins rapide mais secure : seul le couple en doublon echouera, et non toute la serie
480
-	foreach ($couples as $c) {
481
-		sql_insertq($table, $c, $desc);
482
-	}
472
+    $n_before = sql_countsel($table);
473
+    sql_insertq_multi($table, $couples, $desc);
474
+    $n_after = sql_countsel($table);
475
+    if (($n_after - $n_before) == count($couples)) {
476
+        return;
477
+    }
478
+    // si ecart, on recommence l'insertion ligne par ligne...
479
+    // moins rapide mais secure : seul le couple en doublon echouera, et non toute la serie
480
+    foreach ($couples as $c) {
481
+        sql_insertq($table, $c, $desc);
482
+    }
483 483
 }
484 484
 
485 485
 $GLOBALS['maj'][17311] = array(
486
-	array(
487
-		'ecrire_meta',
488
-		"multi_objets",
489
-		implode(',',
490
-			array_diff(
491
-				array(
492
-					(isset($GLOBALS['meta']['multi_rubriques']) and $GLOBALS['meta']['multi_rubriques'] == 'oui')
493
-						? 'spip_rubriques' : '',
494
-					(isset($GLOBALS['meta']['multi_articles']) and $GLOBALS['meta']['multi_articles'] == 'oui')
495
-						? 'spip_articles' : ''
496
-				),
497
-				array('')
498
-			))
499
-	),
500
-	array(
501
-		'ecrire_meta',
502
-		"gerer_trad_objets",
503
-		implode(',',
504
-			array_diff(
505
-				array(
506
-					(isset($GLOBALS['meta']['gerer_trad']) and $GLOBALS['meta']['gerer_trad'] == 'oui')
507
-						? 'spip_articles' : ''
508
-				),
509
-				array('')
510
-			))
511
-	),
486
+    array(
487
+        'ecrire_meta',
488
+        "multi_objets",
489
+        implode(',',
490
+            array_diff(
491
+                array(
492
+                    (isset($GLOBALS['meta']['multi_rubriques']) and $GLOBALS['meta']['multi_rubriques'] == 'oui')
493
+                        ? 'spip_rubriques' : '',
494
+                    (isset($GLOBALS['meta']['multi_articles']) and $GLOBALS['meta']['multi_articles'] == 'oui')
495
+                        ? 'spip_articles' : ''
496
+                ),
497
+                array('')
498
+            ))
499
+    ),
500
+    array(
501
+        'ecrire_meta',
502
+        "gerer_trad_objets",
503
+        implode(',',
504
+            array_diff(
505
+                array(
506
+                    (isset($GLOBALS['meta']['gerer_trad']) and $GLOBALS['meta']['gerer_trad'] == 'oui')
507
+                        ? 'spip_articles' : ''
508
+                ),
509
+                array('')
510
+            ))
511
+    ),
512 512
 );
513 513
 $GLOBALS['maj'][17555] = array(
514
-	array('sql_alter', "TABLE spip_resultats ADD table_objet varchar(30) DEFAULT '' NOT NULL"),
515
-	array('sql_alter', "TABLE spip_resultats ADD serveur char(16) DEFAULT '' NOT NULL"),
514
+    array('sql_alter', "TABLE spip_resultats ADD table_objet varchar(30) DEFAULT '' NOT NULL"),
515
+    array('sql_alter', "TABLE spip_resultats ADD serveur char(16) DEFAULT '' NOT NULL"),
516 516
 );
517 517
 
518 518
 $GLOBALS['maj'][17563] = array(
519
-	array('sql_alter', "TABLE spip_articles ADD virtuel VARCHAR(255) DEFAULT '' NOT NULL"),
520
-	array('sql_update', 'spip_articles', array('virtuel' => 'SUBSTRING(chapo,2)', 'chapo' => "''"), "chapo LIKE '=_%'"),
519
+    array('sql_alter', "TABLE spip_articles ADD virtuel VARCHAR(255) DEFAULT '' NOT NULL"),
520
+    array('sql_update', 'spip_articles', array('virtuel' => 'SUBSTRING(chapo,2)', 'chapo' => "''"), "chapo LIKE '=_%'"),
521 521
 );
522 522
 
523 523
 $GLOBALS['maj'][17577] = array(
524
-	array('maj_tables', array('spip_jobs', 'spip_jobs_liens')),
524
+    array('maj_tables', array('spip_jobs', 'spip_jobs_liens')),
525 525
 );
526 526
 
527 527
 $GLOBALS['maj'][17743] = array(
528
-	array('sql_update', 'spip_auteurs', array('prefs' => 'bio', 'bio' => "''"), "statut='nouveau' AND bio<>''"),
528
+    array('sql_update', 'spip_auteurs', array('prefs' => 'bio', 'bio' => "''"), "statut='nouveau' AND bio<>''"),
529 529
 );
530 530
 
531 531
 $GLOBALS['maj'][18219] = array(
532
-	array('sql_alter', "TABLE spip_rubriques DROP id_import"),
533
-	array('sql_alter', "TABLE spip_rubriques DROP export"),
532
+    array('sql_alter', "TABLE spip_rubriques DROP id_import"),
533
+    array('sql_alter', "TABLE spip_rubriques DROP export"),
534 534
 );
535 535
 
536 536
 $GLOBALS['maj'][18310] = array(
537
-	array('sql_alter', "TABLE spip_auteurs_liens CHANGE vu vu VARCHAR(6) DEFAULT 'non' NOT NULL"),
537
+    array('sql_alter', "TABLE spip_auteurs_liens CHANGE vu vu VARCHAR(6) DEFAULT 'non' NOT NULL"),
538 538
 );
539 539
 
540 540
 $GLOBALS['maj'][18597] = array(
541
-	array('sql_alter', "TABLE spip_rubriques ADD profondeur smallint(5) DEFAULT '0' NOT NULL"),
542
-	array('maj_propager_les_secteurs'),
541
+    array('sql_alter', "TABLE spip_rubriques ADD profondeur smallint(5) DEFAULT '0' NOT NULL"),
542
+    array('maj_propager_les_secteurs'),
543 543
 );
544 544
 
545 545
 $GLOBALS['maj'][18955] = array(
546
-	array('sql_alter', "TABLE spip_auteurs_liens ADD INDEX id_objet (id_objet)"),
547
-	array('sql_alter', "TABLE spip_auteurs_liens ADD INDEX objet (objet)"),
546
+    array('sql_alter', "TABLE spip_auteurs_liens ADD INDEX id_objet (id_objet)"),
547
+    array('sql_alter', "TABLE spip_auteurs_liens ADD INDEX objet (objet)"),
548 548
 );
549 549
 
550 550
 /**
@@ -553,8 +553,8 @@  discard block
 block discarded – undo
553 553
  * @uses propager_les_secteurs()
554 554
  **/
555 555
 function maj_propager_les_secteurs() {
556
-	include_spip('inc/rubriques');
557
-	propager_les_secteurs();
556
+    include_spip('inc/rubriques');
557
+    propager_les_secteurs();
558 558
 }
559 559
 
560 560
 /**
@@ -567,84 +567,84 @@  discard block
 block discarded – undo
567 567
 function maj_collation_sqlite() {
568 568
 
569 569
 
570
-	include_spip('base/dump');
571
-	$tables = base_lister_toutes_tables();
572
-
573
-	// rien a faire si base non sqlite
574
-	if (strncmp($GLOBALS['connexions'][0]['type'], 'sqlite', 6) !== 0) {
575
-		return;
576
-	}
577
-
578
-	$trouver_table = charger_fonction('trouver_table', 'base');
579
-	// forcer le vidage de cache
580
-	$trouver_table('');
581
-
582
-	// cas particulier spip_auteurs : retablir le collate binary sur le login
583
-	$desc = $trouver_table("spip_auteurs");
584
-	spip_log("spip_auteurs : " . var_export($desc['field'], true), "maj." . _LOG_INFO_IMPORTANTE);
585
-	if (stripos($desc['field']['login'], "BINARY") === false) {
586
-		spip_log("Retablir champ login BINARY sur table spip_auteurs", "maj");
587
-		sql_alter("table spip_auteurs change login login VARCHAR(255) BINARY");
588
-		$trouver_table('');
589
-		$new_desc = $trouver_table("spip_auteurs");
590
-		spip_log("Apres conversion spip_auteurs : " . var_export($new_desc['field'], true), "maj." . _LOG_INFO_IMPORTANTE);
591
-	}
592
-
593
-	foreach ($tables as $table) {
594
-		if (time() >= _TIME_OUT) {
595
-			return;
596
-		}
597
-		if ($desc = $trouver_table($table)) {
598
-			$desc_collate = _sqlite_remplacements_definitions_table($desc['field']);
599
-			if ($d = array_diff($desc['field'], $desc_collate)) {
600
-				spip_log("Table $table COLLATE incorrects", "maj");
601
-
602
-				// cas particulier spip_urls :
603
-				// supprimer les doublons avant conversion sinon echec (on garde les urls les plus recentes)
604
-				if ($table == 'spip_urls') {
605
-					// par date DESC pour conserver les urls les plus recentes
606
-					$data = sql_allfetsel("*", "spip_urls", '', '', 'date DESC');
607
-					$urls = array();
608
-					foreach ($data as $d) {
609
-						$key = $d['id_parent'] . "::" . strtolower($d['url']);
610
-						if (!isset($urls[$key])) {
611
-							$urls[$key] = true;
612
-						} else {
613
-							spip_log("Suppression doublon dans spip_urls avant conversion : " . serialize($d),
614
-								"maj." . _LOG_INFO_IMPORTANTE);
615
-							sql_delete("spip_urls", "id_parent=" . sql_quote($d['id_parent']) . " AND url=" . sql_quote($d['url']));
616
-						}
617
-					}
618
-				}
619
-				foreach ($desc['field'] as $field => $type) {
620
-					if ($desc['field'][$field] !== $desc_collate[$field]) {
621
-						spip_log("Conversion COLLATE table $table", "maj." . _LOG_INFO_IMPORTANTE);
622
-						sql_alter("table $table change $field $field " . $desc_collate[$field]);
623
-						$trouver_table('');
624
-						$new_desc = $trouver_table($table);
625
-						spip_log("Apres conversion $table : " . var_export($new_desc['field'], true),
626
-							"maj." . _LOG_INFO_IMPORTANTE);
627
-						continue 2; // inutile de continuer pour cette table : un seul alter remet tout a jour en sqlite
628
-					}
629
-				}
630
-			}
631
-		}
632
-	}
633
-
634
-	// forcer le vidage de cache
635
-	$trouver_table('');
570
+    include_spip('base/dump');
571
+    $tables = base_lister_toutes_tables();
572
+
573
+    // rien a faire si base non sqlite
574
+    if (strncmp($GLOBALS['connexions'][0]['type'], 'sqlite', 6) !== 0) {
575
+        return;
576
+    }
577
+
578
+    $trouver_table = charger_fonction('trouver_table', 'base');
579
+    // forcer le vidage de cache
580
+    $trouver_table('');
581
+
582
+    // cas particulier spip_auteurs : retablir le collate binary sur le login
583
+    $desc = $trouver_table("spip_auteurs");
584
+    spip_log("spip_auteurs : " . var_export($desc['field'], true), "maj." . _LOG_INFO_IMPORTANTE);
585
+    if (stripos($desc['field']['login'], "BINARY") === false) {
586
+        spip_log("Retablir champ login BINARY sur table spip_auteurs", "maj");
587
+        sql_alter("table spip_auteurs change login login VARCHAR(255) BINARY");
588
+        $trouver_table('');
589
+        $new_desc = $trouver_table("spip_auteurs");
590
+        spip_log("Apres conversion spip_auteurs : " . var_export($new_desc['field'], true), "maj." . _LOG_INFO_IMPORTANTE);
591
+    }
592
+
593
+    foreach ($tables as $table) {
594
+        if (time() >= _TIME_OUT) {
595
+            return;
596
+        }
597
+        if ($desc = $trouver_table($table)) {
598
+            $desc_collate = _sqlite_remplacements_definitions_table($desc['field']);
599
+            if ($d = array_diff($desc['field'], $desc_collate)) {
600
+                spip_log("Table $table COLLATE incorrects", "maj");
601
+
602
+                // cas particulier spip_urls :
603
+                // supprimer les doublons avant conversion sinon echec (on garde les urls les plus recentes)
604
+                if ($table == 'spip_urls') {
605
+                    // par date DESC pour conserver les urls les plus recentes
606
+                    $data = sql_allfetsel("*", "spip_urls", '', '', 'date DESC');
607
+                    $urls = array();
608
+                    foreach ($data as $d) {
609
+                        $key = $d['id_parent'] . "::" . strtolower($d['url']);
610
+                        if (!isset($urls[$key])) {
611
+                            $urls[$key] = true;
612
+                        } else {
613
+                            spip_log("Suppression doublon dans spip_urls avant conversion : " . serialize($d),
614
+                                "maj." . _LOG_INFO_IMPORTANTE);
615
+                            sql_delete("spip_urls", "id_parent=" . sql_quote($d['id_parent']) . " AND url=" . sql_quote($d['url']));
616
+                        }
617
+                    }
618
+                }
619
+                foreach ($desc['field'] as $field => $type) {
620
+                    if ($desc['field'][$field] !== $desc_collate[$field]) {
621
+                        spip_log("Conversion COLLATE table $table", "maj." . _LOG_INFO_IMPORTANTE);
622
+                        sql_alter("table $table change $field $field " . $desc_collate[$field]);
623
+                        $trouver_table('');
624
+                        $new_desc = $trouver_table($table);
625
+                        spip_log("Apres conversion $table : " . var_export($new_desc['field'], true),
626
+                            "maj." . _LOG_INFO_IMPORTANTE);
627
+                        continue 2; // inutile de continuer pour cette table : un seul alter remet tout a jour en sqlite
628
+                    }
629
+                }
630
+            }
631
+        }
632
+    }
633
+
634
+    // forcer le vidage de cache
635
+    $trouver_table('');
636 636
 
637 637
 }
638 638
 
639 639
 
640 640
 $GLOBALS['maj'][19236] = array(
641
-	array('sql_updateq', 'spip_meta', array('impt' => 'oui'), "nom='version_installee'"), // version base principale
642
-	array('sql_updateq', 'spip_meta', array('impt' => 'oui'), "nom LIKE '%_base_version'"),  // version base plugins
643
-	array('maj_collation_sqlite'),
641
+    array('sql_updateq', 'spip_meta', array('impt' => 'oui'), "nom='version_installee'"), // version base principale
642
+    array('sql_updateq', 'spip_meta', array('impt' => 'oui'), "nom LIKE '%_base_version'"),  // version base plugins
643
+    array('maj_collation_sqlite'),
644 644
 );
645 645
 
646 646
 $GLOBALS['maj'][19268] = array(
647
-	array('supprimer_toutes_sessions'),
647
+    array('supprimer_toutes_sessions'),
648 648
 );
649 649
 
650 650
 /**
@@ -653,19 +653,19 @@  discard block
 block discarded – undo
653 653
  * Obligera tous les auteurs à se reconnecter !
654 654
  **/
655 655
 function supprimer_toutes_sessions() {
656
-	spip_log("supprimer sessions auteur");
657
-	if ($dir = opendir(_DIR_SESSIONS)) {
658
-		while (($f = readdir($dir)) !== false) {
659
-			spip_unlink(_DIR_SESSIONS . $f);
660
-			if (time() >= _TIME_OUT) {
661
-				return;
662
-			}
663
-		}
664
-	}
656
+    spip_log("supprimer sessions auteur");
657
+    if ($dir = opendir(_DIR_SESSIONS)) {
658
+        while (($f = readdir($dir)) !== false) {
659
+            spip_unlink(_DIR_SESSIONS . $f);
660
+            if (time() >= _TIME_OUT) {
661
+                return;
662
+            }
663
+        }
664
+    }
665 665
 }
666 666
 
667 667
 $GLOBALS['maj'][21676] = array(
668
-	array('ranger_cache_gd2'),
668
+    array('ranger_cache_gd2'),
669 669
 );
670 670
 
671 671
 /**
@@ -674,46 +674,46 @@  discard block
 block discarded – undo
674 674
  * http://core.spip.net/issues/3277
675 675
  */
676 676
 function ranger_cache_gd2() {
677
-	spip_log("ranger_cache_gd2");
678
-	$base = _DIR_VAR . "cache-gd2/";
679
-	if (is_dir($base) and is_readable($base)) {
680
-		if ($dir = opendir($base)) {
681
-			while (($f = readdir($dir)) !== false) {
682
-				if (!is_dir($base . $f) and strncmp($f, ".", 1) !== 0
683
-					and preg_match(",[0-9a-f]{32}\.\w+,", $f)
684
-				) {
685
-					$sub = substr($f, 0, 2);
686
-					$sub = sous_repertoire($base, $sub);
687
-					@rename($base . $f, $sub . substr($f, 2));
688
-					@unlink($base . $f); // au cas ou le rename a foire (collision)
689
-				}
690
-				if (time() >= _TIME_OUT) {
691
-					return;
692
-				}
693
-			}
694
-		}
695
-	}
677
+    spip_log("ranger_cache_gd2");
678
+    $base = _DIR_VAR . "cache-gd2/";
679
+    if (is_dir($base) and is_readable($base)) {
680
+        if ($dir = opendir($base)) {
681
+            while (($f = readdir($dir)) !== false) {
682
+                if (!is_dir($base . $f) and strncmp($f, ".", 1) !== 0
683
+                    and preg_match(",[0-9a-f]{32}\.\w+,", $f)
684
+                ) {
685
+                    $sub = substr($f, 0, 2);
686
+                    $sub = sous_repertoire($base, $sub);
687
+                    @rename($base . $f, $sub . substr($f, 2));
688
+                    @unlink($base . $f); // au cas ou le rename a foire (collision)
689
+                }
690
+                if (time() >= _TIME_OUT) {
691
+                    return;
692
+                }
693
+            }
694
+        }
695
+    }
696 696
 }
697 697
 
698 698
 
699 699
 $GLOBALS['maj'][21742] = array(
700
-	array('sql_alter', "TABLE spip_articles CHANGE url_site url_site text DEFAULT '' NOT NULL"),
701
-	array('sql_alter', "TABLE spip_articles CHANGE virtuel virtuel text DEFAULT '' NOT NULL"),
700
+    array('sql_alter', "TABLE spip_articles CHANGE url_site url_site text DEFAULT '' NOT NULL"),
701
+    array('sql_alter', "TABLE spip_articles CHANGE virtuel virtuel text DEFAULT '' NOT NULL"),
702 702
 );
703 703
 
704 704
 $GLOBALS['maj'][23375] = array(
705
-	array('sql_alter', "TABLE spip_auteurs CHANGE prefs prefs text"),
705
+    array('sql_alter', "TABLE spip_auteurs CHANGE prefs prefs text"),
706 706
 );
707 707
 
708 708
 function upgrade_logo_objet($objet) {
709
-	include_spip('action/editer_logo');
710
-	logo_migrer_en_base($objet, _TIME_OUT);
709
+    include_spip('action/editer_logo');
710
+    logo_migrer_en_base($objet, _TIME_OUT);
711 711
 }
712 712
 // upgrade des logos
713 713
 $GLOBALS['maj'][24351] = [];
714 714
 $tables_objets_sql = lister_tables_objets_sql();
715 715
 foreach(array_keys($tables_objets_sql) as $table) {
716
-	$GLOBALS['maj'][24351][] = ['upgrade_logo_objet', objet_type($table)];
716
+    $GLOBALS['maj'][24351][] = ['upgrade_logo_objet', objet_type($table)];
717 717
 };
718 718
 
719 719
 // adaptation des timestamp mysql
@@ -727,47 +727,47 @@  discard block
 block discarded – undo
727 727
  **/
728 728
 function maj_timestamp_mysql($tables = null) {
729 729
 
730
-	include_spip('base/dump');
731
-	if (is_null($tables)) {
732
-		$tables = base_lister_toutes_tables();
733
-	} elseif (is_string($tables)) {
734
-		$tables = [$tables];
735
-	} elseif (!is_array($tables)) {
736
-		return;
737
-	}
738
-
739
-	// rien a faire si base non mysql
740
-	if (strncmp($GLOBALS['connexions'][0]['type'], 'mysql', 5) !== 0) {
741
-		return;
742
-	}
743
-
744
-	$trouver_table = charger_fonction('trouver_table', 'base');
745
-	// forcer le vidage de cache
746
-	$trouver_table('');
747
-
748
-	foreach ($tables as $table) {
749
-		if (time() >= _TIME_OUT) {
750
-			return;
751
-		}
752
-		if ($desc = $trouver_table($table)) {
753
-			$fields_corrected = _mysql_remplacements_definitions_table($desc['field']);
754
-			$d = array_diff($desc['field'], $fields_corrected);
755
-			if ($d) {
756
-				spip_log("Table $table TIMESTAMP incorrect", "maj");
757
-				foreach ($desc['field'] as $field => $type) {
758
-					if ($desc['field'][$field] !== $fields_corrected[$field]) {
759
-						spip_log("Adaptation TIMESTAMP table $table", "maj." . _LOG_INFO_IMPORTANTE);
760
-						sql_alter("table $table change $field $field " . $fields_corrected[$field]);
761
-						$trouver_table('');
762
-						$new_desc = $trouver_table($table);
763
-						spip_log("Apres conversion $table : " . var_export($new_desc['field'], true),
764
-							"maj." . _LOG_INFO_IMPORTANTE);
765
-					}
766
-				}
767
-			}
768
-		}
769
-	}
770
-
771
-	// forcer le vidage de cache
772
-	$trouver_table('');
730
+    include_spip('base/dump');
731
+    if (is_null($tables)) {
732
+        $tables = base_lister_toutes_tables();
733
+    } elseif (is_string($tables)) {
734
+        $tables = [$tables];
735
+    } elseif (!is_array($tables)) {
736
+        return;
737
+    }
738
+
739
+    // rien a faire si base non mysql
740
+    if (strncmp($GLOBALS['connexions'][0]['type'], 'mysql', 5) !== 0) {
741
+        return;
742
+    }
743
+
744
+    $trouver_table = charger_fonction('trouver_table', 'base');
745
+    // forcer le vidage de cache
746
+    $trouver_table('');
747
+
748
+    foreach ($tables as $table) {
749
+        if (time() >= _TIME_OUT) {
750
+            return;
751
+        }
752
+        if ($desc = $trouver_table($table)) {
753
+            $fields_corrected = _mysql_remplacements_definitions_table($desc['field']);
754
+            $d = array_diff($desc['field'], $fields_corrected);
755
+            if ($d) {
756
+                spip_log("Table $table TIMESTAMP incorrect", "maj");
757
+                foreach ($desc['field'] as $field => $type) {
758
+                    if ($desc['field'][$field] !== $fields_corrected[$field]) {
759
+                        spip_log("Adaptation TIMESTAMP table $table", "maj." . _LOG_INFO_IMPORTANTE);
760
+                        sql_alter("table $table change $field $field " . $fields_corrected[$field]);
761
+                        $trouver_table('');
762
+                        $new_desc = $trouver_table($table);
763
+                        spip_log("Apres conversion $table : " . var_export($new_desc['field'], true),
764
+                            "maj." . _LOG_INFO_IMPORTANTE);
765
+                    }
766
+                }
767
+            }
768
+        }
769
+    }
770
+
771
+    // forcer le vidage de cache
772
+    $trouver_table('');
773 773
 }
Please login to merge, or discard this patch.
Spacing   +34 added lines, -34 removed lines patch added patch discarded remove patch
@@ -70,10 +70,10 @@  discard block
 block discarded – undo
70 70
 function maj_11388() {
71 71
 	$s = sql_select('referer_md5', 'spip_referers_articles', "referer='' OR referer IS NULL");
72 72
 	while ($t = sql_fetch($s)) {
73
-		$k = sql_fetsel('referer', 'spip_referers', 'referer_md5=' . sql_quote($t['referer_md5']));
73
+		$k = sql_fetsel('referer', 'spip_referers', 'referer_md5='.sql_quote($t['referer_md5']));
74 74
 		if ($k['referer']) {
75 75
 			sql_query('UPDATE spip_referers_articles
76
-			SET referer=' . sql_quote($k['referer']) . '
76
+			SET referer=' . sql_quote($k['referer']).'
77 77
 			WHERE referer_md5=' . sql_quote($t['referer_md5'])
78 78
 				. " AND (referer='' OR referer IS NULL)"
79 79
 			);
@@ -98,7 +98,7 @@  discard block
 block discarded – undo
98 98
 	// mise a jour de ces mots la
99 99
 	if ($res) {
100 100
 		while ($r = sql_fetch($res)) {
101
-			sql_updateq('spip_mots', array('type' => $r['type']), 'id_mot=' . sql_quote($r['id_mot']));
101
+			sql_updateq('spip_mots', array('type' => $r['type']), 'id_mot='.sql_quote($r['id_mot']));
102 102
 		}
103 103
 	}
104 104
 }
@@ -173,8 +173,8 @@  discard block
 block discarded – undo
173 173
 
174 174
 	// Recopier les donnees
175 175
 	foreach (array('article', 'breve', 'rubrique', 'auteur', 'forum') as $l) {
176
-		if ($s = sql_select('*', 'spip_documents_' . $l . 's')
177
-			or $s = sql_select('*', 'spip_documents_' . $l)
176
+		if ($s = sql_select('*', 'spip_documents_'.$l.'s')
177
+			or $s = sql_select('*', 'spip_documents_'.$l)
178 178
 		) {
179 179
 			$tampon = array();
180 180
 			while ($t = sql_fetch($s)) {
@@ -378,9 +378,9 @@  discard block
 block discarded – undo
378 378
 	$exceptions_pluriel = array('forum' => 'forum', 'syndic' => 'syndic');
379 379
 
380 380
 	$pivot = preg_replace(',[^\w],', '', $pivot); // securite
381
-	$pivots = (isset($exceptions_pluriel[$pivot]) ? $exceptions_pluriel[$pivot] : $pivot . "s");
382
-	$liens = "spip_" . $pivots . "_liens";
383
-	$id_pivot = "id_" . $pivot;
381
+	$pivots = (isset($exceptions_pluriel[$pivot]) ? $exceptions_pluriel[$pivot] : $pivot."s");
382
+	$liens = "spip_".$pivots."_liens";
383
+	$id_pivot = "id_".$pivot;
384 384
 	// Creer spip_auteurs_liens
385 385
 	global $tables_auxiliaires;
386 386
 	if (!$l) {
@@ -392,8 +392,8 @@  discard block
 block discarded – undo
392 392
 		$l = preg_replace(',[^\w],', '', $l); // securite
393 393
 		$primary = "id_$l";
394 394
 		$objet = ($l == 'syndic' ? 'site' : $l);
395
-		$ls = (isset($exceptions_pluriel[$l]) ? $exceptions_pluriel[$l] : $l . "s");
396
-		$ancienne_table = 'spip_' . $pivots . '_' . $ls;
395
+		$ls = (isset($exceptions_pluriel[$l]) ? $exceptions_pluriel[$l] : $l."s");
396
+		$ancienne_table = 'spip_'.$pivots.'_'.$ls;
397 397
 		$pool = 400;
398 398
 
399 399
 		$trouver_table = charger_fonction('trouver_table', 'base');
@@ -429,12 +429,12 @@  discard block
 block discarded – undo
429 429
 		while ($ids = array_map('reset', sql_allfetsel("$primary", $ancienne_table, '', '', '', "0,$sub_pool"))) {
430 430
 			$insert = array();
431 431
 			foreach ($ids as $id) {
432
-				$n = sql_countsel($liens, "objet='$objet' AND id_objet=" . intval($id));
433
-				while ($t = sql_allfetsel($champs, $ancienne_table, "$primary=" . intval($id), '', $id_pivot, "$n,$pool")) {
432
+				$n = sql_countsel($liens, "objet='$objet' AND id_objet=".intval($id));
433
+				while ($t = sql_allfetsel($champs, $ancienne_table, "$primary=".intval($id), '', $id_pivot, "$n,$pool")) {
434 434
 					$n += count($t);
435 435
 					// empiler en s'assurant a minima de l'unicite
436 436
 					while ($r = array_shift($t)) {
437
-						$insert[$r[$id_pivot] . ':' . $r['id_objet']] = $r;
437
+						$insert[$r[$id_pivot].':'.$r['id_objet']] = $r;
438 438
 					}
439 439
 					if (count($insert) >= $sub_pool) {
440 440
 						maj_liens_insertq_multi_check($liens, $insert, $tables_auxiliaires[$liens]);
@@ -581,13 +581,13 @@  discard block
 block discarded – undo
581 581
 
582 582
 	// cas particulier spip_auteurs : retablir le collate binary sur le login
583 583
 	$desc = $trouver_table("spip_auteurs");
584
-	spip_log("spip_auteurs : " . var_export($desc['field'], true), "maj." . _LOG_INFO_IMPORTANTE);
584
+	spip_log("spip_auteurs : ".var_export($desc['field'], true), "maj."._LOG_INFO_IMPORTANTE);
585 585
 	if (stripos($desc['field']['login'], "BINARY") === false) {
586 586
 		spip_log("Retablir champ login BINARY sur table spip_auteurs", "maj");
587 587
 		sql_alter("table spip_auteurs change login login VARCHAR(255) BINARY");
588 588
 		$trouver_table('');
589 589
 		$new_desc = $trouver_table("spip_auteurs");
590
-		spip_log("Apres conversion spip_auteurs : " . var_export($new_desc['field'], true), "maj." . _LOG_INFO_IMPORTANTE);
590
+		spip_log("Apres conversion spip_auteurs : ".var_export($new_desc['field'], true), "maj."._LOG_INFO_IMPORTANTE);
591 591
 	}
592 592
 
593 593
 	foreach ($tables as $table) {
@@ -606,24 +606,24 @@  discard block
 block discarded – undo
606 606
 					$data = sql_allfetsel("*", "spip_urls", '', '', 'date DESC');
607 607
 					$urls = array();
608 608
 					foreach ($data as $d) {
609
-						$key = $d['id_parent'] . "::" . strtolower($d['url']);
609
+						$key = $d['id_parent']."::".strtolower($d['url']);
610 610
 						if (!isset($urls[$key])) {
611 611
 							$urls[$key] = true;
612 612
 						} else {
613
-							spip_log("Suppression doublon dans spip_urls avant conversion : " . serialize($d),
614
-								"maj." . _LOG_INFO_IMPORTANTE);
615
-							sql_delete("spip_urls", "id_parent=" . sql_quote($d['id_parent']) . " AND url=" . sql_quote($d['url']));
613
+							spip_log("Suppression doublon dans spip_urls avant conversion : ".serialize($d),
614
+								"maj."._LOG_INFO_IMPORTANTE);
615
+							sql_delete("spip_urls", "id_parent=".sql_quote($d['id_parent'])." AND url=".sql_quote($d['url']));
616 616
 						}
617 617
 					}
618 618
 				}
619 619
 				foreach ($desc['field'] as $field => $type) {
620 620
 					if ($desc['field'][$field] !== $desc_collate[$field]) {
621
-						spip_log("Conversion COLLATE table $table", "maj." . _LOG_INFO_IMPORTANTE);
622
-						sql_alter("table $table change $field $field " . $desc_collate[$field]);
621
+						spip_log("Conversion COLLATE table $table", "maj."._LOG_INFO_IMPORTANTE);
622
+						sql_alter("table $table change $field $field ".$desc_collate[$field]);
623 623
 						$trouver_table('');
624 624
 						$new_desc = $trouver_table($table);
625
-						spip_log("Apres conversion $table : " . var_export($new_desc['field'], true),
626
-							"maj." . _LOG_INFO_IMPORTANTE);
625
+						spip_log("Apres conversion $table : ".var_export($new_desc['field'], true),
626
+							"maj."._LOG_INFO_IMPORTANTE);
627 627
 						continue 2; // inutile de continuer pour cette table : un seul alter remet tout a jour en sqlite
628 628
 					}
629 629
 				}
@@ -639,7 +639,7 @@  discard block
 block discarded – undo
639 639
 
640 640
 $GLOBALS['maj'][19236] = array(
641 641
 	array('sql_updateq', 'spip_meta', array('impt' => 'oui'), "nom='version_installee'"), // version base principale
642
-	array('sql_updateq', 'spip_meta', array('impt' => 'oui'), "nom LIKE '%_base_version'"),  // version base plugins
642
+	array('sql_updateq', 'spip_meta', array('impt' => 'oui'), "nom LIKE '%_base_version'"), // version base plugins
643 643
 	array('maj_collation_sqlite'),
644 644
 );
645 645
 
@@ -656,7 +656,7 @@  discard block
 block discarded – undo
656 656
 	spip_log("supprimer sessions auteur");
657 657
 	if ($dir = opendir(_DIR_SESSIONS)) {
658 658
 		while (($f = readdir($dir)) !== false) {
659
-			spip_unlink(_DIR_SESSIONS . $f);
659
+			spip_unlink(_DIR_SESSIONS.$f);
660 660
 			if (time() >= _TIME_OUT) {
661 661
 				return;
662 662
 			}
@@ -675,17 +675,17 @@  discard block
 block discarded – undo
675 675
  */
676 676
 function ranger_cache_gd2() {
677 677
 	spip_log("ranger_cache_gd2");
678
-	$base = _DIR_VAR . "cache-gd2/";
678
+	$base = _DIR_VAR."cache-gd2/";
679 679
 	if (is_dir($base) and is_readable($base)) {
680 680
 		if ($dir = opendir($base)) {
681 681
 			while (($f = readdir($dir)) !== false) {
682
-				if (!is_dir($base . $f) and strncmp($f, ".", 1) !== 0
682
+				if (!is_dir($base.$f) and strncmp($f, ".", 1) !== 0
683 683
 					and preg_match(",[0-9a-f]{32}\.\w+,", $f)
684 684
 				) {
685 685
 					$sub = substr($f, 0, 2);
686 686
 					$sub = sous_repertoire($base, $sub);
687
-					@rename($base . $f, $sub . substr($f, 2));
688
-					@unlink($base . $f); // au cas ou le rename a foire (collision)
687
+					@rename($base.$f, $sub.substr($f, 2));
688
+					@unlink($base.$f); // au cas ou le rename a foire (collision)
689 689
 				}
690 690
 				if (time() >= _TIME_OUT) {
691 691
 					return;
@@ -712,7 +712,7 @@  discard block
 block discarded – undo
712 712
 // upgrade des logos
713 713
 $GLOBALS['maj'][24351] = [];
714 714
 $tables_objets_sql = lister_tables_objets_sql();
715
-foreach(array_keys($tables_objets_sql) as $table) {
715
+foreach (array_keys($tables_objets_sql) as $table) {
716 716
 	$GLOBALS['maj'][24351][] = ['upgrade_logo_objet', objet_type($table)];
717 717
 };
718 718
 
@@ -756,12 +756,12 @@  discard block
 block discarded – undo
756 756
 				spip_log("Table $table TIMESTAMP incorrect", "maj");
757 757
 				foreach ($desc['field'] as $field => $type) {
758 758
 					if ($desc['field'][$field] !== $fields_corrected[$field]) {
759
-						spip_log("Adaptation TIMESTAMP table $table", "maj." . _LOG_INFO_IMPORTANTE);
760
-						sql_alter("table $table change $field $field " . $fields_corrected[$field]);
759
+						spip_log("Adaptation TIMESTAMP table $table", "maj."._LOG_INFO_IMPORTANTE);
760
+						sql_alter("table $table change $field $field ".$fields_corrected[$field]);
761 761
 						$trouver_table('');
762 762
 						$new_desc = $trouver_table($table);
763
-						spip_log("Apres conversion $table : " . var_export($new_desc['field'], true),
764
-							"maj." . _LOG_INFO_IMPORTANTE);
763
+						spip_log("Apres conversion $table : ".var_export($new_desc['field'], true),
764
+							"maj."._LOG_INFO_IMPORTANTE);
765 765
 					}
766 766
 				}
767 767
 			}
Please login to merge, or discard this patch.
ecrire/req/mysql.php 1 patch
Indentation   +809 added lines, -809 removed lines patch added patch discarded remove patch
@@ -20,11 +20,11 @@  discard block
 block discarded – undo
20 20
  */
21 21
 
22 22
 if (!defined('_ECRIRE_INC_VERSION')) {
23
-	return;
23
+    return;
24 24
 }
25 25
 
26 26
 if (!defined('_MYSQL_NOPLANES')) {
27
-	define('_MYSQL_NOPLANES', true);
27
+    define('_MYSQL_NOPLANES', true);
28 28
 }
29 29
 
30 30
 /**
@@ -41,104 +41,104 @@  discard block
 block discarded – undo
41 41
  *     - tableau décrivant la connexion sinon
42 42
  */
43 43
 function req_mysql_dist($host, $port, $login, $pass, $db = '', $prefixe = '') {
44
-	if (!extension_loaded('mysqli')) {
45
-		return false;
46
-	}
47
-
48
-	// si port est fourni mais pas host, c'est un socket -> compat avec vieille syntaxe de mysql_connect() et anciens fichiers connect.php
49
-	if (
50
-		$port and !is_numeric($socket = $port)
51
-		and (!$host or $host=='localhost')) {
52
-		$link = @mysqli_connect($host, $login, $pass, '', null, $socket);
53
-	}
54
-	elseif ($port) {
55
-		$link = @mysqli_connect($host, $login, $pass, '', $port);
56
-	}
57
-	else {
58
-		$link = @mysqli_connect($host, $login, $pass);
59
-	}
60
-
61
-	if (!$link) {
62
-		spip_log('Echec mysqli_connect. Erreur : ' . mysqli_connect_error(), 'mysql.' . _LOG_HS);
63
-
64
-		return false;
65
-	}
66
-	$last = '';
67
-	if (!$db) {
68
-		$ok = $link;
69
-		$db = 'spip';
70
-	} else {
71
-		$ok = mysqli_select_db($link, $db);
72
-		if (defined('_MYSQL_SET_SQL_MODE')
73
-			or defined('_MYSQL_SQL_MODE_TEXT_NOT_NULL') // compatibilite
74
-		) {
75
-			mysqli_query($link, $last = "set sql_mode=''");
76
-		}
77
-	}
78
-
79
-	spip_log("Connexion MySQLi vers $host, base $db, prefixe $prefixe " . ($ok ? "operationnelle" : 'impossible'),
80
-		_LOG_DEBUG);
81
-
82
-	return !$ok ? false : array(
83
-		'db' => $db,
84
-		'last' => $last,
85
-		'prefixe' => $prefixe ? $prefixe : $db,
86
-		'link' => $link,
87
-		'total_requetes' => 0,
88
-	);
44
+    if (!extension_loaded('mysqli')) {
45
+        return false;
46
+    }
47
+
48
+    // si port est fourni mais pas host, c'est un socket -> compat avec vieille syntaxe de mysql_connect() et anciens fichiers connect.php
49
+    if (
50
+        $port and !is_numeric($socket = $port)
51
+        and (!$host or $host=='localhost')) {
52
+        $link = @mysqli_connect($host, $login, $pass, '', null, $socket);
53
+    }
54
+    elseif ($port) {
55
+        $link = @mysqli_connect($host, $login, $pass, '', $port);
56
+    }
57
+    else {
58
+        $link = @mysqli_connect($host, $login, $pass);
59
+    }
60
+
61
+    if (!$link) {
62
+        spip_log('Echec mysqli_connect. Erreur : ' . mysqli_connect_error(), 'mysql.' . _LOG_HS);
63
+
64
+        return false;
65
+    }
66
+    $last = '';
67
+    if (!$db) {
68
+        $ok = $link;
69
+        $db = 'spip';
70
+    } else {
71
+        $ok = mysqli_select_db($link, $db);
72
+        if (defined('_MYSQL_SET_SQL_MODE')
73
+            or defined('_MYSQL_SQL_MODE_TEXT_NOT_NULL') // compatibilite
74
+        ) {
75
+            mysqli_query($link, $last = "set sql_mode=''");
76
+        }
77
+    }
78
+
79
+    spip_log("Connexion MySQLi vers $host, base $db, prefixe $prefixe " . ($ok ? "operationnelle" : 'impossible'),
80
+        _LOG_DEBUG);
81
+
82
+    return !$ok ? false : array(
83
+        'db' => $db,
84
+        'last' => $last,
85
+        'prefixe' => $prefixe ? $prefixe : $db,
86
+        'link' => $link,
87
+        'total_requetes' => 0,
88
+    );
89 89
 }
90 90
 
91 91
 
92 92
 $GLOBALS['spip_mysql_functions_1'] = array(
93
-	'alter' => 'spip_mysql_alter',
94
-	'count' => 'spip_mysql_count',
95
-	'countsel' => 'spip_mysql_countsel',
96
-	'create' => 'spip_mysql_create',
97
-	'create_base' => 'spip_mysql_create_base',
98
-	'create_view' => 'spip_mysql_create_view',
99
-	'date_proche' => 'spip_mysql_date_proche',
100
-	'delete' => 'spip_mysql_delete',
101
-	'drop_table' => 'spip_mysql_drop_table',
102
-	'drop_view' => 'spip_mysql_drop_view',
103
-	'errno' => 'spip_mysql_errno',
104
-	'error' => 'spip_mysql_error',
105
-	'explain' => 'spip_mysql_explain',
106
-	'fetch' => 'spip_mysql_fetch',
107
-	'seek' => 'spip_mysql_seek',
108
-	'free' => 'spip_mysql_free',
109
-	'hex' => 'spip_mysql_hex',
110
-	'in' => 'spip_mysql_in',
111
-	'insert' => 'spip_mysql_insert',
112
-	'insertq' => 'spip_mysql_insertq',
113
-	'insertq_multi' => 'spip_mysql_insertq_multi',
114
-	'listdbs' => 'spip_mysql_listdbs',
115
-	'multi' => 'spip_mysql_multi',
116
-	'optimize' => 'spip_mysql_optimize',
117
-	'query' => 'spip_mysql_query',
118
-	'quote' => 'spip_mysql_quote',
119
-	'replace' => 'spip_mysql_replace',
120
-	'replace_multi' => 'spip_mysql_replace_multi',
121
-	'repair' => 'spip_mysql_repair',
122
-	'select' => 'spip_mysql_select',
123
-	'selectdb' => 'spip_mysql_selectdb',
124
-	'set_charset' => 'spip_mysql_set_charset',
125
-	'get_charset' => 'spip_mysql_get_charset',
126
-	'showbase' => 'spip_mysql_showbase',
127
-	'showtable' => 'spip_mysql_showtable',
128
-	'update' => 'spip_mysql_update',
129
-	'updateq' => 'spip_mysql_updateq',
130
-
131
-	// association de chaque nom http d'un charset aux couples MySQL
132
-	'charsets' => array(
133
-		'cp1250' => array('charset' => 'cp1250', 'collation' => 'cp1250_general_ci'),
134
-		'cp1251' => array('charset' => 'cp1251', 'collation' => 'cp1251_general_ci'),
135
-		'cp1256' => array('charset' => 'cp1256', 'collation' => 'cp1256_general_ci'),
136
-		'iso-8859-1' => array('charset' => 'latin1', 'collation' => 'latin1_swedish_ci'),
93
+    'alter' => 'spip_mysql_alter',
94
+    'count' => 'spip_mysql_count',
95
+    'countsel' => 'spip_mysql_countsel',
96
+    'create' => 'spip_mysql_create',
97
+    'create_base' => 'spip_mysql_create_base',
98
+    'create_view' => 'spip_mysql_create_view',
99
+    'date_proche' => 'spip_mysql_date_proche',
100
+    'delete' => 'spip_mysql_delete',
101
+    'drop_table' => 'spip_mysql_drop_table',
102
+    'drop_view' => 'spip_mysql_drop_view',
103
+    'errno' => 'spip_mysql_errno',
104
+    'error' => 'spip_mysql_error',
105
+    'explain' => 'spip_mysql_explain',
106
+    'fetch' => 'spip_mysql_fetch',
107
+    'seek' => 'spip_mysql_seek',
108
+    'free' => 'spip_mysql_free',
109
+    'hex' => 'spip_mysql_hex',
110
+    'in' => 'spip_mysql_in',
111
+    'insert' => 'spip_mysql_insert',
112
+    'insertq' => 'spip_mysql_insertq',
113
+    'insertq_multi' => 'spip_mysql_insertq_multi',
114
+    'listdbs' => 'spip_mysql_listdbs',
115
+    'multi' => 'spip_mysql_multi',
116
+    'optimize' => 'spip_mysql_optimize',
117
+    'query' => 'spip_mysql_query',
118
+    'quote' => 'spip_mysql_quote',
119
+    'replace' => 'spip_mysql_replace',
120
+    'replace_multi' => 'spip_mysql_replace_multi',
121
+    'repair' => 'spip_mysql_repair',
122
+    'select' => 'spip_mysql_select',
123
+    'selectdb' => 'spip_mysql_selectdb',
124
+    'set_charset' => 'spip_mysql_set_charset',
125
+    'get_charset' => 'spip_mysql_get_charset',
126
+    'showbase' => 'spip_mysql_showbase',
127
+    'showtable' => 'spip_mysql_showtable',
128
+    'update' => 'spip_mysql_update',
129
+    'updateq' => 'spip_mysql_updateq',
130
+
131
+    // association de chaque nom http d'un charset aux couples MySQL
132
+    'charsets' => array(
133
+        'cp1250' => array('charset' => 'cp1250', 'collation' => 'cp1250_general_ci'),
134
+        'cp1251' => array('charset' => 'cp1251', 'collation' => 'cp1251_general_ci'),
135
+        'cp1256' => array('charset' => 'cp1256', 'collation' => 'cp1256_general_ci'),
136
+        'iso-8859-1' => array('charset' => 'latin1', 'collation' => 'latin1_swedish_ci'),
137 137
 //'iso-8859-6'=>array('charset'=>'latin1','collation'=>'latin1_swedish_ci'),
138
-		'iso-8859-9' => array('charset' => 'latin5', 'collation' => 'latin5_turkish_ci'),
138
+        'iso-8859-9' => array('charset' => 'latin5', 'collation' => 'latin5_turkish_ci'),
139 139
 //'iso-8859-15'=>array('charset'=>'latin1','collation'=>'latin1_swedish_ci'),
140
-		'utf-8' => array('charset' => 'utf8', 'collation' => 'utf8_general_ci')
141
-	)
140
+        'utf-8' => array('charset' => 'utf8', 'collation' => 'utf8_general_ci')
141
+    )
142 142
 );
143 143
 
144 144
 
@@ -149,9 +149,9 @@  discard block
 block discarded – undo
149 149
  * @return Object Information de connexion pour mysqli
150 150
  */
151 151
 function _mysql_link($serveur = '') {
152
-	$link = &$GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
152
+    $link = &$GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
153 153
 
154
-	return $link;
154
+    return $link;
155 155
 }
156 156
 
157 157
 
@@ -164,10 +164,10 @@  discard block
 block discarded – undo
164 164
  * @return resource       Ressource de résultats pour fetch()
165 165
  */
166 166
 function spip_mysql_set_charset($charset, $serveur = '', $requeter = true) {
167
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
168
-	spip_log("changement de charset sql : " . "SET NAMES " . _q($charset), _LOG_DEBUG);
167
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
168
+    spip_log("changement de charset sql : " . "SET NAMES " . _q($charset), _LOG_DEBUG);
169 169
 
170
-	return mysqli_query($connexion['link'], $connexion['last'] = "SET NAMES " . _q($charset));
170
+    return mysqli_query($connexion['link'], $connexion['last'] = "SET NAMES " . _q($charset));
171 171
 }
172 172
 
173 173
 
@@ -180,11 +180,11 @@  discard block
 block discarded – undo
180 180
  * @return array                Description du charset (son nom est dans 'charset')
181 181
  */
182 182
 function spip_mysql_get_charset($charset = array(), $serveur = '', $requeter = true) {
183
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
184
-	$connexion['last'] = $c = "SHOW CHARACTER SET"
185
-		. (!$charset ? '' : (" LIKE " . _q($charset['charset'])));
183
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
184
+    $connexion['last'] = $c = "SHOW CHARACTER SET"
185
+        . (!$charset ? '' : (" LIKE " . _q($charset['charset'])));
186 186
 
187
-	return spip_mysql_fetch(mysqli_query($connexion['link'], $c), null, $serveur);
187
+    return spip_mysql_fetch(mysqli_query($connexion['link'], $c), null, $serveur);
188 188
 }
189 189
 
190 190
 
@@ -199,7 +199,7 @@  discard block
 block discarded – undo
199 199
  * @return Resource        Ressource pour fetch()
200 200
  **/
201 201
 function spip_query_db($query, $serveur = '', $requeter = true) {
202
-	return spip_mysql_query($query, $serveur, $requeter);
202
+    return spip_mysql_query($query, $serveur, $requeter);
203 203
 }
204 204
 
205 205
 
@@ -216,61 +216,61 @@  discard block
 block discarded – undo
216 216
  */
217 217
 function spip_mysql_query($query, $serveur = '', $requeter = true) {
218 218
 
219
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
220
-	$prefixe = $connexion['prefixe'];
221
-	$link = $connexion['link'];
222
-	$db = $connexion['db'];
223
-
224
-	$query = _mysql_traite_query($query, $db, $prefixe);
225
-
226
-	// renvoyer la requete inerte si demandee
227
-	if (!$requeter) {
228
-		return $query;
229
-	}
230
-
231
-	if (isset($_GET['var_profile'])) {
232
-		include_spip('public/tracer');
233
-		$t = trace_query_start();
234
-	} else {
235
-		$t = 0;
236
-	}
237
-
238
-	$connexion['last'] = $query;
239
-	$connexion['total_requetes']++;
240
-
241
-	// ajouter un debug utile dans log/mysql-slow.log ?
242
-	$debug = '';
243
-	if (defined('_DEBUG_SLOW_QUERIES') and _DEBUG_SLOW_QUERIES) {
244
-		if (isset($GLOBALS['debug']['aucasou'])) {
245
-			list(, $id, , $infos) = $GLOBALS['debug']['aucasou'];
246
-			$debug .= "BOUCLE$id @ " . (isset($infos[0]) ? $infos[0] : '') . " | ";
247
-		}
248
-		$debug .= $_SERVER['REQUEST_URI'] . ' + ' . $GLOBALS['ip'];
249
-		$debug = ' /* ' . mysqli_real_escape_string($link, str_replace('*/', '@/', $debug)) . ' */';
250
-	}
251
-
252
-	$r = mysqli_query($link, $query . $debug);
253
-
254
-	//Eviter de propager le GoneAway sur les autres requetes d'un même processus PHP
255
-	if ($e = spip_mysql_errno($serveur)) {  // Log d'un Gone Away
256
-		if ($e == 2006) { //Si Gone Away on relance une connexion vierge
257
-			//Fermer la connexion defaillante
258
-			mysqli_close($connexion['link']);
259
-			unset($GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]);
260
-			//Relancer une connexion vierge
261
-			spip_connect($serveur);
262
-			$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
263
-			$link = $connexion['link'];
264
-			//On retente au cas où
265
-			$r = mysqli_query($link, $query . $debug);
266
-		}
267
-	}
268
-
269
-	// Log de l'erreur eventuelle
270
-	if ($e = spip_mysql_errno($serveur)) {
271
-		$e .= spip_mysql_error($query, $serveur);
272
-	} // et du fautif
273
-	return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
219
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
220
+    $prefixe = $connexion['prefixe'];
221
+    $link = $connexion['link'];
222
+    $db = $connexion['db'];
223
+
224
+    $query = _mysql_traite_query($query, $db, $prefixe);
225
+
226
+    // renvoyer la requete inerte si demandee
227
+    if (!$requeter) {
228
+        return $query;
229
+    }
230
+
231
+    if (isset($_GET['var_profile'])) {
232
+        include_spip('public/tracer');
233
+        $t = trace_query_start();
234
+    } else {
235
+        $t = 0;
236
+    }
237
+
238
+    $connexion['last'] = $query;
239
+    $connexion['total_requetes']++;
240
+
241
+    // ajouter un debug utile dans log/mysql-slow.log ?
242
+    $debug = '';
243
+    if (defined('_DEBUG_SLOW_QUERIES') and _DEBUG_SLOW_QUERIES) {
244
+        if (isset($GLOBALS['debug']['aucasou'])) {
245
+            list(, $id, , $infos) = $GLOBALS['debug']['aucasou'];
246
+            $debug .= "BOUCLE$id @ " . (isset($infos[0]) ? $infos[0] : '') . " | ";
247
+        }
248
+        $debug .= $_SERVER['REQUEST_URI'] . ' + ' . $GLOBALS['ip'];
249
+        $debug = ' /* ' . mysqli_real_escape_string($link, str_replace('*/', '@/', $debug)) . ' */';
250
+    }
251
+
252
+    $r = mysqli_query($link, $query . $debug);
253
+
254
+    //Eviter de propager le GoneAway sur les autres requetes d'un même processus PHP
255
+    if ($e = spip_mysql_errno($serveur)) {  // Log d'un Gone Away
256
+        if ($e == 2006) { //Si Gone Away on relance une connexion vierge
257
+            //Fermer la connexion defaillante
258
+            mysqli_close($connexion['link']);
259
+            unset($GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]);
260
+            //Relancer une connexion vierge
261
+            spip_connect($serveur);
262
+            $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
263
+            $link = $connexion['link'];
264
+            //On retente au cas où
265
+            $r = mysqli_query($link, $query . $debug);
266
+        }
267
+    }
268
+
269
+    // Log de l'erreur eventuelle
270
+    if ($e = spip_mysql_errno($serveur)) {
271
+        $e .= spip_mysql_error($query, $serveur);
272
+    } // et du fautif
273
+    return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
274 274
 }
275 275
 
276 276
 /**
@@ -285,12 +285,12 @@  discard block
 block discarded – undo
285 285
  *     - array  : Tableau décrivant requête et temps d'exécution si var_profile actif pour tracer.
286 286
  */
287 287
 function spip_mysql_alter($query, $serveur = '', $requeter = true) {
288
-	// ici on supprime les ` entourant le nom de table pour permettre
289
-	// la transposition du prefixe, compte tenu que les plugins ont la mauvaise habitude
290
-	// d'utiliser ceux-ci, copie-colle de phpmyadmin
291
-	$query = preg_replace(",^TABLE\s*`([^`]*)`,i", "TABLE \\1", $query);
288
+    // ici on supprime les ` entourant le nom de table pour permettre
289
+    // la transposition du prefixe, compte tenu que les plugins ont la mauvaise habitude
290
+    // d'utiliser ceux-ci, copie-colle de phpmyadmin
291
+    $query = preg_replace(",^TABLE\s*`([^`]*)`,i", "TABLE \\1", $query);
292 292
 
293
-	return spip_mysql_query("ALTER " . $query, $serveur, $requeter); # i.e. que PG se debrouille
293
+    return spip_mysql_query("ALTER " . $query, $serveur, $requeter); # i.e. que PG se debrouille
294 294
 }
295 295
 
296 296
 
@@ -303,9 +303,9 @@  discard block
 block discarded – undo
303 303
  * @return bool            Toujours true
304 304
  */
305 305
 function spip_mysql_optimize($table, $serveur = '', $requeter = true) {
306
-	spip_mysql_query("OPTIMIZE TABLE " . $table);
306
+    spip_mysql_query("OPTIMIZE TABLE " . $table);
307 307
 
308
-	return true;
308
+    return true;
309 309
 }
310 310
 
311 311
 
@@ -318,18 +318,18 @@  discard block
 block discarded – undo
318 318
  * @return array           Tableau de l'explication
319 319
  */
320 320
 function spip_mysql_explain($query, $serveur = '', $requeter = true) {
321
-	if (strpos(ltrim($query), 'SELECT') !== 0) {
322
-		return array();
323
-	}
324
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
325
-	$prefixe = $connexion['prefixe'];
326
-	$link = $connexion['link'];
327
-	$db = $connexion['db'];
328
-
329
-	$query = 'EXPLAIN ' . _mysql_traite_query($query, $db, $prefixe);
330
-	$r = mysqli_query($link, $query);
331
-
332
-	return spip_mysql_fetch($r, null, $serveur);
321
+    if (strpos(ltrim($query), 'SELECT') !== 0) {
322
+        return array();
323
+    }
324
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
325
+    $prefixe = $connexion['prefixe'];
326
+    $link = $connexion['link'];
327
+    $db = $connexion['db'];
328
+
329
+    $query = 'EXPLAIN ' . _mysql_traite_query($query, $db, $prefixe);
330
+    $r = mysqli_query($link, $query);
331
+
332
+    return spip_mysql_fetch($r, null, $serveur);
333 333
 }
334 334
 
335 335
 
@@ -358,35 +358,35 @@  discard block
 block discarded – undo
358 358
  *     - array  : Tableau décrivant requête et temps d'exécution si var_profile actif pour tracer.
359 359
  */
360 360
 function spip_mysql_select(
361
-	$select,
362
-	$from,
363
-	$where = '',
364
-	$groupby = '',
365
-	$orderby = '',
366
-	$limit = '',
367
-	$having = '',
368
-	$serveur = '',
369
-	$requeter = true
361
+    $select,
362
+    $from,
363
+    $where = '',
364
+    $groupby = '',
365
+    $orderby = '',
366
+    $limit = '',
367
+    $having = '',
368
+    $serveur = '',
369
+    $requeter = true
370 370
 ) {
371 371
 
372 372
 
373
-	$from = (!is_array($from) ? $from : spip_mysql_select_as($from));
374
-	$query =
375
-		calculer_mysql_expression('SELECT', $select, ', ')
376
-		. calculer_mysql_expression('FROM', $from, ', ')
377
-		. calculer_mysql_expression('WHERE', $where)
378
-		. calculer_mysql_expression('GROUP BY', $groupby, ',')
379
-		. calculer_mysql_expression('HAVING', $having)
380
-		. ($orderby ? ("\nORDER BY " . spip_mysql_order($orderby)) : '')
381
-		. ($limit ? "\nLIMIT $limit" : '');
373
+    $from = (!is_array($from) ? $from : spip_mysql_select_as($from));
374
+    $query =
375
+        calculer_mysql_expression('SELECT', $select, ', ')
376
+        . calculer_mysql_expression('FROM', $from, ', ')
377
+        . calculer_mysql_expression('WHERE', $where)
378
+        . calculer_mysql_expression('GROUP BY', $groupby, ',')
379
+        . calculer_mysql_expression('HAVING', $having)
380
+        . ($orderby ? ("\nORDER BY " . spip_mysql_order($orderby)) : '')
381
+        . ($limit ? "\nLIMIT $limit" : '');
382 382
 
383
-	// renvoyer la requete inerte si demandee
384
-	if ($requeter === false) {
385
-		return $query;
386
-	}
387
-	$r = spip_mysql_query($query, $serveur, $requeter);
383
+    // renvoyer la requete inerte si demandee
384
+    if ($requeter === false) {
385
+        return $query;
386
+    }
387
+    $r = spip_mysql_query($query, $serveur, $requeter);
388 388
 
389
-	return $r ? $r : $query;
389
+    return $r ? $r : $query;
390 390
 }
391 391
 
392 392
 
@@ -403,7 +403,7 @@  discard block
 block discarded – undo
403 403
  * @return string Texte du orderby préparé
404 404
  */
405 405
 function spip_mysql_order($orderby) {
406
-	return (is_array($orderby)) ? join(", ", $orderby) : $orderby;
406
+    return (is_array($orderby)) ? join(", ", $orderby) : $orderby;
407 407
 }
408 408
 
409 409
 
@@ -426,26 +426,26 @@  discard block
 block discarded – undo
426 426
  *     Contrainte pour clause WHERE
427 427
  */
428 428
 function calculer_mysql_where($v) {
429
-	if (!is_array($v)) {
430
-		return $v;
431
-	}
432
-
433
-	$op = array_shift($v);
434
-	if (!($n = count($v))) {
435
-		return $op;
436
-	} else {
437
-		$arg = calculer_mysql_where(array_shift($v));
438
-		if ($n == 1) {
439
-			return "$op($arg)";
440
-		} else {
441
-			$arg2 = calculer_mysql_where(array_shift($v));
442
-			if ($n == 2) {
443
-				return "($arg $op $arg2)";
444
-			} else {
445
-				return "($arg $op ($arg2) : $v[0])";
446
-			}
447
-		}
448
-	}
429
+    if (!is_array($v)) {
430
+        return $v;
431
+    }
432
+
433
+    $op = array_shift($v);
434
+    if (!($n = count($v))) {
435
+        return $op;
436
+    } else {
437
+        $arg = calculer_mysql_where(array_shift($v));
438
+        if ($n == 1) {
439
+            return "$op($arg)";
440
+        } else {
441
+            $arg2 = calculer_mysql_where(array_shift($v));
442
+            if ($n == 2) {
443
+                return "($arg $op $arg2)";
444
+            } else {
445
+                return "($arg $op ($arg2) : $v[0])";
446
+            }
447
+        }
448
+    }
449 449
 }
450 450
 
451 451
 /**
@@ -460,21 +460,21 @@  discard block
 block discarded – undo
460 460
  * @return string            Texte de l'expression, une partie donc, du texte la requête.
461 461
  */
462 462
 function calculer_mysql_expression($expression, $v, $join = 'AND') {
463
-	if (empty($v)) {
464
-		return '';
465
-	}
466
-
467
-	$exp = "\n$expression ";
468
-
469
-	if (!is_array($v)) {
470
-		return $exp . $v;
471
-	} else {
472
-		if (strtoupper($join) === 'AND') {
473
-			return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v));
474
-		} else {
475
-			return $exp . join($join, $v);
476
-		}
477
-	}
463
+    if (empty($v)) {
464
+        return '';
465
+    }
466
+
467
+    $exp = "\n$expression ";
468
+
469
+    if (!is_array($v)) {
470
+        return $exp . $v;
471
+    } else {
472
+        if (strtoupper($join) === 'AND') {
473
+            return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v));
474
+        } else {
475
+            return $exp . join($join, $v);
476
+        }
477
+    }
478 478
 }
479 479
 
480 480
 
@@ -485,26 +485,26 @@  discard block
 block discarded – undo
485 485
  * @return string Sélection de colonnes pour une clause SELECT
486 486
  */
487 487
 function spip_mysql_select_as($args) {
488
-	$res = '';
489
-	foreach ($args as $k => $v) {
490
-		if (substr($k, -1) == '@') {
491
-			// c'est une jointure qui se refere au from precedent
492
-			// pas de virgule
493
-			$res .= '  ' . $v;
494
-		} else {
495
-			if (!is_numeric($k)) {
496
-				$p = strpos($v, " ");
497
-				if ($p) {
498
-					$v = substr($v, 0, $p) . " AS `$k`" . substr($v, $p);
499
-				} else {
500
-					$v .= " AS `$k`";
501
-				}
502
-			}
503
-			$res .= ', ' . $v;
504
-		}
505
-	}
506
-
507
-	return substr($res, 2);
488
+    $res = '';
489
+    foreach ($args as $k => $v) {
490
+        if (substr($k, -1) == '@') {
491
+            // c'est une jointure qui se refere au from precedent
492
+            // pas de virgule
493
+            $res .= '  ' . $v;
494
+        } else {
495
+            if (!is_numeric($k)) {
496
+                $p = strpos($v, " ");
497
+                if ($p) {
498
+                    $v = substr($v, 0, $p) . " AS `$k`" . substr($v, $p);
499
+                } else {
500
+                    $v .= " AS `$k`";
501
+                }
502
+            }
503
+            $res .= ', ' . $v;
504
+        }
505
+    }
506
+
507
+    return substr($res, 2);
508 508
 }
509 509
 
510 510
 
@@ -528,42 +528,42 @@  discard block
 block discarded – undo
528 528
  */
529 529
 function _mysql_traite_query($query, $db = '', $prefixe = '') {
530 530
 
531
-	if ($GLOBALS['mysql_rappel_nom_base'] and $db) {
532
-		$pref = '`' . $db . '`.';
533
-	} else {
534
-		$pref = '';
535
-	}
536
-
537
-	if ($prefixe) {
538
-		$pref .= $prefixe . "_";
539
-	}
540
-
541
-	if (!preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/i', $query, $regs)) {
542
-		$suite = '';
543
-	} else {
544
-		$suite = strstr($query, $regs[0]);
545
-		$query = substr($query, 0, -strlen($suite));
546
-		// propager le prefixe en cas de requete imbriquee
547
-		// il faut alors echapper les chaine avant de le faire, pour ne pas risquer de
548
-		// modifier une requete qui est en fait juste du texte dans un champ
549
-		if (stripos($suite, "SELECT") !== false) {
550
-			list($suite, $textes) = query_echappe_textes($suite);
551
-			if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite, $r)) {
552
-				$suite = $r[1] . _mysql_traite_query($r[2], $db, $prefixe);
553
-			}
554
-			$suite = query_reinjecte_textes($suite, $textes);
555
-		}
556
-	}
557
-	$r = preg_replace(_SQL_PREFIXE_TABLE_MYSQL, '\1' . $pref, $query) . $suite;
558
-
559
-	// en option, remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
560
-	if (defined('_MYSQL_NOPLANES') and _MYSQL_NOPLANES and lire_meta('charset_sql_connexion') == 'utf8') {
561
-		include_spip('inc/charsets');
562
-		$r = utf8_noplanes($r);
563
-	}
564
-
565
-	#spip_log("_mysql_traite_query: " . substr($r,0, 50) . ".... $db, $prefixe", _LOG_DEBUG);
566
-	return $r;
531
+    if ($GLOBALS['mysql_rappel_nom_base'] and $db) {
532
+        $pref = '`' . $db . '`.';
533
+    } else {
534
+        $pref = '';
535
+    }
536
+
537
+    if ($prefixe) {
538
+        $pref .= $prefixe . "_";
539
+    }
540
+
541
+    if (!preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/i', $query, $regs)) {
542
+        $suite = '';
543
+    } else {
544
+        $suite = strstr($query, $regs[0]);
545
+        $query = substr($query, 0, -strlen($suite));
546
+        // propager le prefixe en cas de requete imbriquee
547
+        // il faut alors echapper les chaine avant de le faire, pour ne pas risquer de
548
+        // modifier une requete qui est en fait juste du texte dans un champ
549
+        if (stripos($suite, "SELECT") !== false) {
550
+            list($suite, $textes) = query_echappe_textes($suite);
551
+            if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite, $r)) {
552
+                $suite = $r[1] . _mysql_traite_query($r[2], $db, $prefixe);
553
+            }
554
+            $suite = query_reinjecte_textes($suite, $textes);
555
+        }
556
+    }
557
+    $r = preg_replace(_SQL_PREFIXE_TABLE_MYSQL, '\1' . $pref, $query) . $suite;
558
+
559
+    // en option, remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
560
+    if (defined('_MYSQL_NOPLANES') and _MYSQL_NOPLANES and lire_meta('charset_sql_connexion') == 'utf8') {
561
+        include_spip('inc/charsets');
562
+        $r = utf8_noplanes($r);
563
+    }
564
+
565
+    #spip_log("_mysql_traite_query: " . substr($r,0, 50) . ".... $db, $prefixe", _LOG_DEBUG);
566
+    return $r;
567 567
 }
568 568
 
569 569
 /**
@@ -581,13 +581,13 @@  discard block
 block discarded – undo
581 581
  *     - False en cas d'erreur.
582 582
  **/
583 583
 function spip_mysql_selectdb($db, $serveur = '', $requeter = true) {
584
-	$link = _mysql_link($serveur);
585
-	$ok = mysqli_select_db($link, $db);
586
-	if (!$ok) {
587
-		spip_log('Echec mysqli_selectdb. Erreur : ' . mysqli_error($link), 'mysql.' . _LOG_CRITIQUE);
588
-	}
584
+    $link = _mysql_link($serveur);
585
+    $ok = mysqli_select_db($link, $db);
586
+    if (!$ok) {
587
+        spip_log('Echec mysqli_selectdb. Erreur : ' . mysqli_error($link), 'mysql.' . _LOG_CRITIQUE);
588
+    }
589 589
 
590
-	return $ok;
590
+    return $ok;
591 591
 }
592 592
 
593 593
 
@@ -608,14 +608,14 @@  discard block
 block discarded – undo
608 608
  *     Liste de noms de bases de données
609 609
  **/
610 610
 function spip_mysql_listdbs($serveur = '', $requeter = true) {
611
-	$dbs = array();
612
-	if ($res = spip_mysql_query("SHOW DATABASES", $serveur)) {
613
-		while ($row = mysqli_fetch_assoc($res)) {
614
-			$dbs[] = $row['Database'];
615
-		}
616
-	}
617
-
618
-	return $dbs;
611
+    $dbs = array();
612
+    if ($res = spip_mysql_query("SHOW DATABASES", $serveur)) {
613
+        while ($row = mysqli_fetch_assoc($res)) {
614
+            $dbs[] = $row['Database'];
615
+        }
616
+    }
617
+
618
+    return $dbs;
619 619
 }
620 620
 
621 621
 
@@ -638,72 +638,72 @@  discard block
 block discarded – undo
638 638
  *     - true si la requête réussie, false sinon.
639 639
  */
640 640
 function spip_mysql_create(
641
-	$nom,
642
-	$champs,
643
-	$cles,
644
-	$autoinc = false,
645
-	$temporary = false,
646
-	$serveur = '',
647
-	$requeter = true
641
+    $nom,
642
+    $champs,
643
+    $cles,
644
+    $autoinc = false,
645
+    $temporary = false,
646
+    $serveur = '',
647
+    $requeter = true
648 648
 ) {
649 649
 
650
-	$query = '';
651
-	$keys = '';
652
-	$s = '';
653
-	$p = '';
654
-
655
-	// certains plugins declarent les tables  (permet leur inclusion dans le dump)
656
-	// sans les renseigner (laisse le compilo recuperer la description)
657
-	if (!is_array($champs) || !is_array($cles)) {
658
-		return;
659
-	}
660
-
661
-	$res = spip_mysql_query("SELECT version() as v", $serveur);
662
-	if (($row = mysqli_fetch_array($res)) && (version_compare($row['v'], '5.0', '>='))) {
663
-		spip_mysql_query("SET sql_mode=''", $serveur);
664
-	}
665
-
666
-	foreach ($cles as $k => $v) {
667
-		$keys .= "$s\n\t\t$k ($v)";
668
-		if ($k == "PRIMARY KEY") {
669
-			$p = $v;
670
-		}
671
-		$s = ",";
672
-	}
673
-	$s = '';
674
-
675
-	$character_set = "";
676
-	if (@$GLOBALS['meta']['charset_sql_base']) {
677
-		$character_set .= " CHARACTER SET " . $GLOBALS['meta']['charset_sql_base'];
678
-	}
679
-	if (@$GLOBALS['meta']['charset_collation_sql_base']) {
680
-		$character_set .= " COLLATE " . $GLOBALS['meta']['charset_collation_sql_base'];
681
-	}
682
-
683
-	foreach ($champs as $k => $v) {
684
-		$v = _mysql_remplacements_definitions_table($v);
685
-		if (preg_match(',([a-z]*\s*(\(\s*[0-9]*\s*\))?(\s*binary)?),i', $v, $defs)) {
686
-			if (preg_match(',(char|text),i', $defs[1])
687
-				and !preg_match(',(binary|CHARACTER|COLLATE),i', $v)
688
-			) {
689
-				$v = $defs[1] . $character_set . ' ' . substr($v, strlen($defs[1]));
690
-			}
691
-		}
692
-
693
-		$query .= "$s\n\t\t$k $v"
694
-			. (($autoinc && ($p == $k) && preg_match(',\b(big|small|medium)?int\b,i', $v))
695
-				? " auto_increment"
696
-				: ''
697
-			);
698
-		$s = ",";
699
-	}
700
-	$temporary = $temporary ? 'TEMPORARY' : '';
701
-	$q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query" . ($keys ? ",$keys" : '') . ")"
702
-		. " ENGINE=MyISAM"
703
-		. ($character_set ? " DEFAULT $character_set" : "")
704
-		. "\n";
705
-
706
-	return spip_mysql_query($q, $serveur);
650
+    $query = '';
651
+    $keys = '';
652
+    $s = '';
653
+    $p = '';
654
+
655
+    // certains plugins declarent les tables  (permet leur inclusion dans le dump)
656
+    // sans les renseigner (laisse le compilo recuperer la description)
657
+    if (!is_array($champs) || !is_array($cles)) {
658
+        return;
659
+    }
660
+
661
+    $res = spip_mysql_query("SELECT version() as v", $serveur);
662
+    if (($row = mysqli_fetch_array($res)) && (version_compare($row['v'], '5.0', '>='))) {
663
+        spip_mysql_query("SET sql_mode=''", $serveur);
664
+    }
665
+
666
+    foreach ($cles as $k => $v) {
667
+        $keys .= "$s\n\t\t$k ($v)";
668
+        if ($k == "PRIMARY KEY") {
669
+            $p = $v;
670
+        }
671
+        $s = ",";
672
+    }
673
+    $s = '';
674
+
675
+    $character_set = "";
676
+    if (@$GLOBALS['meta']['charset_sql_base']) {
677
+        $character_set .= " CHARACTER SET " . $GLOBALS['meta']['charset_sql_base'];
678
+    }
679
+    if (@$GLOBALS['meta']['charset_collation_sql_base']) {
680
+        $character_set .= " COLLATE " . $GLOBALS['meta']['charset_collation_sql_base'];
681
+    }
682
+
683
+    foreach ($champs as $k => $v) {
684
+        $v = _mysql_remplacements_definitions_table($v);
685
+        if (preg_match(',([a-z]*\s*(\(\s*[0-9]*\s*\))?(\s*binary)?),i', $v, $defs)) {
686
+            if (preg_match(',(char|text),i', $defs[1])
687
+                and !preg_match(',(binary|CHARACTER|COLLATE),i', $v)
688
+            ) {
689
+                $v = $defs[1] . $character_set . ' ' . substr($v, strlen($defs[1]));
690
+            }
691
+        }
692
+
693
+        $query .= "$s\n\t\t$k $v"
694
+            . (($autoinc && ($p == $k) && preg_match(',\b(big|small|medium)?int\b,i', $v))
695
+                ? " auto_increment"
696
+                : ''
697
+            );
698
+        $s = ",";
699
+    }
700
+    $temporary = $temporary ? 'TEMPORARY' : '';
701
+    $q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query" . ($keys ? ",$keys" : '') . ")"
702
+        . " ENGINE=MyISAM"
703
+        . ($character_set ? " DEFAULT $character_set" : "")
704
+        . "\n";
705
+
706
+    return spip_mysql_query($q, $serveur);
707 707
 }
708 708
 
709 709
 
@@ -716,25 +716,25 @@  discard block
 block discarded – undo
716 716
  *     Définition SQL adaptée pour MySQL d'un champ de table
717 717
  */
718 718
 function _mysql_remplacements_definitions_table($query) {
719
-	// quelques remplacements
720
-	$num = "(\s*\([0-9]*\))?";
721
-	$enum = "(\s*\([^\)]*\))?";
722
-
723
-	$remplace = array(
724
-		'/VARCHAR(\s*[^\s\(])/is' => 'VARCHAR(255)\\1',
725
-		'/^TIMESTAMP($| NULL DEFAULT NULL)/is' => 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
726
-	);
727
-
728
-	if (is_string($query)) {
729
-		$query = preg_replace(array_keys($remplace), $remplace, $query);
730
-	} elseif (is_array($query)) {
731
-		$keys = array_keys($remplace);
732
-		foreach ($query as $k => $q) {
733
-			$query[$k] = preg_replace($keys, $remplace, $q);
734
-		}
735
-	}
736
-
737
-	return $query;
719
+    // quelques remplacements
720
+    $num = "(\s*\([0-9]*\))?";
721
+    $enum = "(\s*\([^\)]*\))?";
722
+
723
+    $remplace = array(
724
+        '/VARCHAR(\s*[^\s\(])/is' => 'VARCHAR(255)\\1',
725
+        '/^TIMESTAMP($| NULL DEFAULT NULL)/is' => 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
726
+    );
727
+
728
+    if (is_string($query)) {
729
+        $query = preg_replace(array_keys($remplace), $remplace, $query);
730
+    } elseif (is_array($query)) {
731
+        $keys = array_keys($remplace);
732
+        foreach ($query as $k => $q) {
733
+            $query[$k] = preg_replace($keys, $remplace, $q);
734
+        }
735
+    }
736
+
737
+    return $query;
738 738
 }
739 739
 
740 740
 
@@ -747,7 +747,7 @@  discard block
 block discarded – undo
747 747
  * @return bool true si la base est créee.
748 748
  **/
749 749
 function spip_mysql_create_base($nom, $serveur = '', $requeter = true) {
750
-	return spip_mysql_query("CREATE DATABASE `$nom`", $serveur, $requeter);
750
+    return spip_mysql_query("CREATE DATABASE `$nom`", $serveur, $requeter);
751 751
 }
752 752
 
753 753
 
@@ -768,19 +768,19 @@  discard block
 block discarded – undo
768 768
  *     - string texte de la requête si $requeter vaut false
769 769
  */
770 770
 function spip_mysql_create_view($nom, $query_select, $serveur = '', $requeter = true) {
771
-	if (!$query_select) {
772
-		return false;
773
-	}
774
-	// vue deja presente
775
-	if (sql_showtable($nom, false, $serveur)) {
776
-		spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", _LOG_ERREUR);
771
+    if (!$query_select) {
772
+        return false;
773
+    }
774
+    // vue deja presente
775
+    if (sql_showtable($nom, false, $serveur)) {
776
+        spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", _LOG_ERREUR);
777 777
 
778
-		return false;
779
-	}
778
+        return false;
779
+    }
780 780
 
781
-	$query = "CREATE VIEW $nom AS " . $query_select;
781
+    $query = "CREATE VIEW $nom AS " . $query_select;
782 782
 
783
-	return spip_mysql_query($query, $serveur, $requeter);
783
+    return spip_mysql_query($query, $serveur, $requeter);
784 784
 }
785 785
 
786 786
 
@@ -796,11 +796,11 @@  discard block
 block discarded – undo
796 796
  *     - true si la requête a réussie, false sinon
797 797
  */
798 798
 function spip_mysql_drop_table($table, $exist = '', $serveur = '', $requeter = true) {
799
-	if ($exist) {
800
-		$exist = " IF EXISTS";
801
-	}
799
+    if ($exist) {
800
+        $exist = " IF EXISTS";
801
+    }
802 802
 
803
-	return spip_mysql_query("DROP TABLE$exist $table", $serveur, $requeter);
803
+    return spip_mysql_query("DROP TABLE$exist $table", $serveur, $requeter);
804 804
 }
805 805
 
806 806
 /**
@@ -815,11 +815,11 @@  discard block
 block discarded – undo
815 815
  *     - true si la requête a réussie, false sinon
816 816
  */
817 817
 function spip_mysql_drop_view($view, $exist = '', $serveur = '', $requeter = true) {
818
-	if ($exist) {
819
-		$exist = " IF EXISTS";
820
-	}
818
+    if ($exist) {
819
+        $exist = " IF EXISTS";
820
+    }
821 821
 
822
-	return spip_mysql_query("DROP VIEW$exist $view", $serveur, $requeter);
822
+    return spip_mysql_query("DROP VIEW$exist $view", $serveur, $requeter);
823 823
 }
824 824
 
825 825
 /**
@@ -836,7 +836,7 @@  discard block
 block discarded – undo
836 836
  *     Ressource à utiliser avec sql_fetch()
837 837
  **/
838 838
 function spip_mysql_showbase($match, $serveur = '', $requeter = true) {
839
-	return spip_mysql_query("SHOW TABLES LIKE " . _q($match), $serveur, $requeter);
839
+    return spip_mysql_query("SHOW TABLES LIKE " . _q($match), $serveur, $requeter);
840 840
 }
841 841
 
842 842
 /**
@@ -852,7 +852,7 @@  discard block
 block discarded – undo
852 852
  *     - true si la requête a réussie, false sinon
853 853
  */
854 854
 function spip_mysql_repair($table, $serveur = '', $requeter = true) {
855
-	return spip_mysql_query("REPAIR TABLE `$table`", $serveur, $requeter);
855
+    return spip_mysql_query("REPAIR TABLE `$table`", $serveur, $requeter);
856 856
 }
857 857
 
858 858
 
@@ -876,86 +876,86 @@  discard block
 block discarded – undo
876 876
  *     - array description de la table sinon
877 877
  */
878 878
 function spip_mysql_showtable($nom_table, $serveur = '', $requeter = true) {
879
-	$s = spip_mysql_query("SHOW CREATE TABLE `$nom_table`", $serveur, $requeter);
880
-	if (!$s) {
881
-		return '';
882
-	}
883
-	if (!$requeter) {
884
-		return $s;
885
-	}
886
-
887
-	list(, $a) = mysqli_fetch_array($s, MYSQLI_NUM);
888
-	if (preg_match(_MYSQL_RE_SHOW_TABLE, $a, $r)) {
889
-		$desc = $r[1];
890
-		// extraction d'une KEY éventuelle en prenant garde de ne pas
891
-		// relever un champ dont le nom contient KEY (ex. ID_WHISKEY)
892
-		if (preg_match("/^(.*?),([^,]*\sKEY[ (].*)$/s", $desc, $r)) {
893
-			$namedkeys = $r[2];
894
-			$desc = $r[1];
895
-		} else {
896
-			$namedkeys = "";
897
-		}
898
-
899
-		$fields = array();
900
-		foreach (preg_split("/,\s*`/", $desc) as $v) {
901
-			preg_match("/^\s*`?([^`]*)`\s*(.*)/", $v, $r);
902
-			$fields[strtolower($r[1])] = $r[2];
903
-		}
904
-		$keys = array();
905
-
906
-		foreach (preg_split('/\)\s*(,|$)/', $namedkeys) as $v) {
907
-			if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/", $v, $r)) {
908
-				$k = str_replace("`", '', trim($r[1]));
909
-				$t = strtolower(str_replace("`", '', $r[2]));
910
-				if ($k && !isset($keys[$k])) {
911
-					$keys[$k] = $t;
912
-				} else {
913
-					$keys[] = $t;
914
-				}
915
-			}
916
-		}
917
-		spip_mysql_free($s);
918
-
919
-		return array('field' => $fields, 'key' => $keys);
920
-	}
921
-
922
-	$res = spip_mysql_query("SHOW COLUMNS FROM `$nom_table`", $serveur);
923
-	if ($res) {
924
-		$nfields = array();
925
-		$nkeys = array();
926
-		while ($val = spip_mysql_fetch($res)) {
927
-			$nfields[$val["Field"]] = $val['Type'];
928
-			if ($val['Null'] == 'NO') {
929
-				$nfields[$val["Field"]] .= ' NOT NULL';
930
-			}
931
-			if ($val['Default'] === '0' || $val['Default']) {
932
-				if (preg_match('/[A-Z_]/', $val['Default'])) {
933
-					$nfields[$val["Field"]] .= ' DEFAULT ' . $val['Default'];
934
-				} else {
935
-					$nfields[$val["Field"]] .= " DEFAULT '" . $val['Default'] . "'";
936
-				}
937
-			}
938
-			if ($val['Extra']) {
939
-				$nfields[$val["Field"]] .= ' ' . $val['Extra'];
940
-			}
941
-			if ($val['Key'] == 'PRI') {
942
-				$nkeys['PRIMARY KEY'] = $val["Field"];
943
-			} else {
944
-				if ($val['Key'] == 'MUL') {
945
-					$nkeys['KEY ' . $val["Field"]] = $val["Field"];
946
-				} else {
947
-					if ($val['Key'] == 'UNI') {
948
-						$nkeys['UNIQUE KEY ' . $val["Field"]] = $val["Field"];
949
-					}
950
-				}
951
-			}
952
-		}
953
-		spip_mysql_free($res);
954
-
955
-		return array('field' => $nfields, 'key' => $nkeys);
956
-	}
957
-
958
-	return "";
879
+    $s = spip_mysql_query("SHOW CREATE TABLE `$nom_table`", $serveur, $requeter);
880
+    if (!$s) {
881
+        return '';
882
+    }
883
+    if (!$requeter) {
884
+        return $s;
885
+    }
886
+
887
+    list(, $a) = mysqli_fetch_array($s, MYSQLI_NUM);
888
+    if (preg_match(_MYSQL_RE_SHOW_TABLE, $a, $r)) {
889
+        $desc = $r[1];
890
+        // extraction d'une KEY éventuelle en prenant garde de ne pas
891
+        // relever un champ dont le nom contient KEY (ex. ID_WHISKEY)
892
+        if (preg_match("/^(.*?),([^,]*\sKEY[ (].*)$/s", $desc, $r)) {
893
+            $namedkeys = $r[2];
894
+            $desc = $r[1];
895
+        } else {
896
+            $namedkeys = "";
897
+        }
898
+
899
+        $fields = array();
900
+        foreach (preg_split("/,\s*`/", $desc) as $v) {
901
+            preg_match("/^\s*`?([^`]*)`\s*(.*)/", $v, $r);
902
+            $fields[strtolower($r[1])] = $r[2];
903
+        }
904
+        $keys = array();
905
+
906
+        foreach (preg_split('/\)\s*(,|$)/', $namedkeys) as $v) {
907
+            if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/", $v, $r)) {
908
+                $k = str_replace("`", '', trim($r[1]));
909
+                $t = strtolower(str_replace("`", '', $r[2]));
910
+                if ($k && !isset($keys[$k])) {
911
+                    $keys[$k] = $t;
912
+                } else {
913
+                    $keys[] = $t;
914
+                }
915
+            }
916
+        }
917
+        spip_mysql_free($s);
918
+
919
+        return array('field' => $fields, 'key' => $keys);
920
+    }
921
+
922
+    $res = spip_mysql_query("SHOW COLUMNS FROM `$nom_table`", $serveur);
923
+    if ($res) {
924
+        $nfields = array();
925
+        $nkeys = array();
926
+        while ($val = spip_mysql_fetch($res)) {
927
+            $nfields[$val["Field"]] = $val['Type'];
928
+            if ($val['Null'] == 'NO') {
929
+                $nfields[$val["Field"]] .= ' NOT NULL';
930
+            }
931
+            if ($val['Default'] === '0' || $val['Default']) {
932
+                if (preg_match('/[A-Z_]/', $val['Default'])) {
933
+                    $nfields[$val["Field"]] .= ' DEFAULT ' . $val['Default'];
934
+                } else {
935
+                    $nfields[$val["Field"]] .= " DEFAULT '" . $val['Default'] . "'";
936
+                }
937
+            }
938
+            if ($val['Extra']) {
939
+                $nfields[$val["Field"]] .= ' ' . $val['Extra'];
940
+            }
941
+            if ($val['Key'] == 'PRI') {
942
+                $nkeys['PRIMARY KEY'] = $val["Field"];
943
+            } else {
944
+                if ($val['Key'] == 'MUL') {
945
+                    $nkeys['KEY ' . $val["Field"]] = $val["Field"];
946
+                } else {
947
+                    if ($val['Key'] == 'UNI') {
948
+                        $nkeys['UNIQUE KEY ' . $val["Field"]] = $val["Field"];
949
+                    }
950
+                }
951
+            }
952
+        }
953
+        spip_mysql_free($res);
954
+
955
+        return array('field' => $nfields, 'key' => $nkeys);
956
+    }
957
+
958
+    return "";
959 959
 }
960 960
 
961 961
 
@@ -971,12 +971,12 @@  discard block
 block discarded – undo
971 971
  * @return array           Ligne de résultat
972 972
  */
973 973
 function spip_mysql_fetch($r, $t = '', $serveur = '', $requeter = true) {
974
-	if (!$t) {
975
-		$t = MYSQLI_ASSOC;
976
-	}
977
-	if ($r) {
978
-		return mysqli_fetch_array($r, $t);
979
-	}
974
+    if (!$t) {
975
+        $t = MYSQLI_ASSOC;
976
+    }
977
+    if ($r) {
978
+        return mysqli_fetch_array($r, $t);
979
+    }
980 980
 }
981 981
 
982 982
 /**
@@ -989,9 +989,9 @@  discard block
 block discarded – undo
989 989
  * @return bool True si déplacement réussi, false sinon.
990 990
  **/
991 991
 function spip_mysql_seek($r, $row_number, $serveur = '', $requeter = true) {
992
-	if ($r and mysqli_num_rows($r)) {
993
-		return mysqli_data_seek($r, $row_number);
994
-	}
992
+    if ($r and mysqli_num_rows($r)) {
993
+        return mysqli_data_seek($r, $row_number);
994
+    }
995 995
 }
996 996
 
997 997
 
@@ -1009,26 +1009,26 @@  discard block
 block discarded – undo
1009 1009
  *     - int Nombre de lignes (0 si la requête n'a pas réussie)
1010 1010
  **/
1011 1011
 function spip_mysql_countsel(
1012
-	$from = array(),
1013
-	$where = array(),
1014
-	$groupby = '',
1015
-	$having = array(),
1016
-	$serveur = '',
1017
-	$requeter = true
1012
+    $from = array(),
1013
+    $where = array(),
1014
+    $groupby = '',
1015
+    $having = array(),
1016
+    $serveur = '',
1017
+    $requeter = true
1018 1018
 ) {
1019
-	$c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby)));
1020
-
1021
-	$r = spip_mysql_select("COUNT($c)", $from, $where, '', '', '', $having, $serveur, $requeter);
1022
-	if (!$requeter) {
1023
-		return $r;
1024
-	}
1025
-	if (!$r instanceof mysqli_result) {
1026
-		return 0;
1027
-	}
1028
-	list($c) = mysqli_fetch_array($r, MYSQLI_NUM);
1029
-	mysqli_free_result($r);
1030
-
1031
-	return $c;
1019
+    $c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby)));
1020
+
1021
+    $r = spip_mysql_select("COUNT($c)", $from, $where, '', '', '', $having, $serveur, $requeter);
1022
+    if (!$requeter) {
1023
+        return $r;
1024
+    }
1025
+    if (!$r instanceof mysqli_result) {
1026
+        return 0;
1027
+    }
1028
+    list($c) = mysqli_fetch_array($r, MYSQLI_NUM);
1029
+    mysqli_free_result($r);
1030
+
1031
+    return $c;
1032 1032
 }
1033 1033
 
1034 1034
 
@@ -1051,16 +1051,16 @@  discard block
 block discarded – undo
1051 1051
  *     Erreur eventuelle
1052 1052
  **/
1053 1053
 function spip_mysql_error($query = '', $serveur = '', $requeter = true) {
1054
-	$link = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]['link'];
1055
-	$s = mysqli_error($link);
1056
-	if ($s) {
1057
-		$trace = debug_backtrace();
1058
-		if ($trace[0]['function'] != "spip_mysql_error") {
1059
-			spip_log("$s - $query - " . sql_error_backtrace(), 'mysql.' . _LOG_ERREUR);
1060
-		}
1061
-	}
1062
-
1063
-	return $s;
1054
+    $link = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]['link'];
1055
+    $s = mysqli_error($link);
1056
+    if ($s) {
1057
+        $trace = debug_backtrace();
1058
+        if ($trace[0]['function'] != "spip_mysql_error") {
1059
+            spip_log("$s - $query - " . sql_error_backtrace(), 'mysql.' . _LOG_ERREUR);
1060
+        }
1061
+    }
1062
+
1063
+    return $s;
1064 1064
 }
1065 1065
 
1066 1066
 
@@ -1075,18 +1075,18 @@  discard block
 block discarded – undo
1075 1075
  *     0, pas d'erreur. Autre, numéro de l'erreur.
1076 1076
  **/
1077 1077
 function spip_mysql_errno($serveur = '', $requeter = true) {
1078
-	$link = $GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
1079
-	$s = mysqli_errno($link);
1080
-	// 2006 MySQL server has gone away
1081
-	// 2013 Lost connection to MySQL server during query
1082
-	if (in_array($s, array(2006, 2013))) {
1083
-		define('spip_interdire_cache', true);
1084
-	}
1085
-	if ($s) {
1086
-		spip_log("Erreur mysql $s", _LOG_ERREUR);
1087
-	}
1088
-
1089
-	return $s;
1078
+    $link = $GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
1079
+    $s = mysqli_errno($link);
1080
+    // 2006 MySQL server has gone away
1081
+    // 2013 Lost connection to MySQL server during query
1082
+    if (in_array($s, array(2006, 2013))) {
1083
+        define('spip_interdire_cache', true);
1084
+    }
1085
+    if ($s) {
1086
+        spip_log("Erreur mysql $s", _LOG_ERREUR);
1087
+    }
1088
+
1089
+    return $s;
1090 1090
 }
1091 1091
 
1092 1092
 
@@ -1100,9 +1100,9 @@  discard block
 block discarded – undo
1100 1100
  * @return int               Nombre de lignes
1101 1101
  */
1102 1102
 function spip_mysql_count($r, $serveur = '', $requeter = true) {
1103
-	if ($r) {
1104
-		return mysqli_num_rows($r);
1105
-	}
1103
+    if ($r) {
1104
+        return mysqli_num_rows($r);
1105
+    }
1106 1106
 }
1107 1107
 
1108 1108
 
@@ -1118,7 +1118,7 @@  discard block
 block discarded – undo
1118 1118
  * @return bool              True si réussi
1119 1119
  */
1120 1120
 function spip_mysql_free($r, $serveur = '', $requeter = true) {
1121
-	return (($r instanceof mysqli_result) ? mysqli_free_result($r) : false);
1121
+    return (($r instanceof mysqli_result) ? mysqli_free_result($r) : false);
1122 1122
 }
1123 1123
 
1124 1124
 
@@ -1146,38 +1146,38 @@  discard block
 block discarded – undo
1146 1146
  **/
1147 1147
 function spip_mysql_insert($table, $champs, $valeurs, $desc = array(), $serveur = '', $requeter = true) {
1148 1148
 
1149
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
1150
-	$link = $connexion['link'];
1151
-	$table = prefixer_table_spip($table, $connexion['prefixe']);
1152
-
1153
-	$query = "INSERT INTO $table $champs VALUES $valeurs";
1154
-	if (!$requeter) {
1155
-		return $query;
1156
-	}
1157
-
1158
-	if (isset($_GET['var_profile'])) {
1159
-		include_spip('public/tracer');
1160
-		$t = trace_query_start();
1161
-		$e = '';
1162
-	} else {
1163
-		$t = 0;
1164
-	}
1165
-
1166
-	$connexion['last'] = $query;
1167
-	#spip_log($query, 'mysql.'._LOG_DEBUG);
1168
-	$r = false;
1169
-	if (mysqli_query($link, $query)) {
1170
-		$r = mysqli_insert_id($link);
1171
-	} else {
1172
-		// Log de l'erreur eventuelle
1173
-		if ($e = spip_mysql_errno($serveur)) {
1174
-			$e .= spip_mysql_error($query, $serveur);
1175
-		} // et du fautif
1176
-	}
1177
-
1178
-	return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
1179
-
1180
-	// return $r ? $r : (($r===0) ? -1 : 0); pb avec le multi-base.
1149
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
1150
+    $link = $connexion['link'];
1151
+    $table = prefixer_table_spip($table, $connexion['prefixe']);
1152
+
1153
+    $query = "INSERT INTO $table $champs VALUES $valeurs";
1154
+    if (!$requeter) {
1155
+        return $query;
1156
+    }
1157
+
1158
+    if (isset($_GET['var_profile'])) {
1159
+        include_spip('public/tracer');
1160
+        $t = trace_query_start();
1161
+        $e = '';
1162
+    } else {
1163
+        $t = 0;
1164
+    }
1165
+
1166
+    $connexion['last'] = $query;
1167
+    #spip_log($query, 'mysql.'._LOG_DEBUG);
1168
+    $r = false;
1169
+    if (mysqli_query($link, $query)) {
1170
+        $r = mysqli_insert_id($link);
1171
+    } else {
1172
+        // Log de l'erreur eventuelle
1173
+        if ($e = spip_mysql_errno($serveur)) {
1174
+            $e .= spip_mysql_error($query, $serveur);
1175
+        } // et du fautif
1176
+    }
1177
+
1178
+    return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
1179
+
1180
+    // return $r ? $r : (($r===0) ? -1 : 0); pb avec le multi-base.
1181 1181
 }
1182 1182
 
1183 1183
 /**
@@ -1202,20 +1202,20 @@  discard block
 block discarded – undo
1202 1202
  **/
1203 1203
 function spip_mysql_insertq($table, $couples = array(), $desc = array(), $serveur = '', $requeter = true) {
1204 1204
 
1205
-	if (!$desc) {
1206
-		$desc = description_table($table, $serveur);
1207
-	}
1208
-	if (!$desc) {
1209
-		$couples = array();
1210
-	}
1211
-	$fields = isset($desc['field']) ? $desc['field'] : array();
1205
+    if (!$desc) {
1206
+        $desc = description_table($table, $serveur);
1207
+    }
1208
+    if (!$desc) {
1209
+        $couples = array();
1210
+    }
1211
+    $fields = isset($desc['field']) ? $desc['field'] : array();
1212 1212
 
1213
-	foreach ($couples as $champ => $val) {
1214
-		$couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1215
-	}
1213
+    foreach ($couples as $champ => $val) {
1214
+        $couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1215
+    }
1216 1216
 
1217
-	return spip_mysql_insert($table, "(" . join(',', array_keys($couples)) . ")", "(" . join(',', $couples) . ")", $desc,
1218
-		$serveur, $requeter);
1217
+    return spip_mysql_insert($table, "(" . join(',', array_keys($couples)) . ")", "(" . join(',', $couples) . ")", $desc,
1218
+        $serveur, $requeter);
1219 1219
 }
1220 1220
 
1221 1221
 
@@ -1240,34 +1240,34 @@  discard block
 block discarded – undo
1240 1240
  **/
1241 1241
 function spip_mysql_insertq_multi($table, $tab_couples = array(), $desc = array(), $serveur = '', $requeter = true) {
1242 1242
 
1243
-	if (!$desc) {
1244
-		$desc = description_table($table, $serveur);
1245
-	}
1246
-	if (!$desc) {
1247
-		$tab_couples = array();
1248
-	}
1249
-	$fields = isset($desc['field']) ? $desc['field'] : array();
1250
-
1251
-	$cles = "(" . join(',', array_keys(reset($tab_couples))) . ')';
1252
-	$valeurs = array();
1253
-	$r = false;
1254
-
1255
-	// Quoter et Inserer par groupes de 100 max pour eviter un debordement de pile
1256
-	foreach ($tab_couples as $couples) {
1257
-		foreach ($couples as $champ => $val) {
1258
-			$couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1259
-		}
1260
-		$valeurs[] = '(' . join(',', $couples) . ')';
1261
-		if (count($valeurs) >= 100) {
1262
-			$r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1263
-			$valeurs = array();
1264
-		}
1265
-	}
1266
-	if (count($valeurs)) {
1267
-		$r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1268
-	}
1269
-
1270
-	return $r; // dans le cas d'une table auto_increment, le dernier insert_id
1243
+    if (!$desc) {
1244
+        $desc = description_table($table, $serveur);
1245
+    }
1246
+    if (!$desc) {
1247
+        $tab_couples = array();
1248
+    }
1249
+    $fields = isset($desc['field']) ? $desc['field'] : array();
1250
+
1251
+    $cles = "(" . join(',', array_keys(reset($tab_couples))) . ')';
1252
+    $valeurs = array();
1253
+    $r = false;
1254
+
1255
+    // Quoter et Inserer par groupes de 100 max pour eviter un debordement de pile
1256
+    foreach ($tab_couples as $couples) {
1257
+        foreach ($couples as $champ => $val) {
1258
+            $couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1259
+        }
1260
+        $valeurs[] = '(' . join(',', $couples) . ')';
1261
+        if (count($valeurs) >= 100) {
1262
+            $r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1263
+            $valeurs = array();
1264
+        }
1265
+    }
1266
+    if (count($valeurs)) {
1267
+        $r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1268
+    }
1269
+
1270
+    return $r; // dans le cas d'une table auto_increment, le dernier insert_id
1271 1271
 }
1272 1272
 
1273 1273
 /**
@@ -1292,17 +1292,17 @@  discard block
 block discarded – undo
1292 1292
  *     - array Tableau décrivant la requête et son temps d'exécution si var_profile est actif
1293 1293
  */
1294 1294
 function spip_mysql_update($table, $champs, $where = '', $desc = array(), $serveur = '', $requeter = true) {
1295
-	$set = array();
1296
-	foreach ($champs as $champ => $val) {
1297
-		$set[] = $champ . "=$val";
1298
-	}
1299
-	if (!empty($set)) {
1300
-		return spip_mysql_query(
1301
-			calculer_mysql_expression('UPDATE', $table, ',')
1302
-			. calculer_mysql_expression('SET', $set, ',')
1303
-			. calculer_mysql_expression('WHERE', $where),
1304
-			$serveur, $requeter);
1305
-	}
1295
+    $set = array();
1296
+    foreach ($champs as $champ => $val) {
1297
+        $set[] = $champ . "=$val";
1298
+    }
1299
+    if (!empty($set)) {
1300
+        return spip_mysql_query(
1301
+            calculer_mysql_expression('UPDATE', $table, ',')
1302
+            . calculer_mysql_expression('SET', $set, ',')
1303
+            . calculer_mysql_expression('WHERE', $where),
1304
+            $serveur, $requeter);
1305
+    }
1306 1306
 }
1307 1307
 
1308 1308
 /**
@@ -1335,27 +1335,27 @@  discard block
 block discarded – undo
1335 1335
  */
1336 1336
 function spip_mysql_updateq($table, $champs, $where = '', $desc = array(), $serveur = '', $requeter = true) {
1337 1337
 
1338
-	if (!$champs) {
1339
-		return;
1340
-	}
1341
-	if (!$desc) {
1342
-		$desc = description_table($table, $serveur);
1343
-	}
1344
-	if (!$desc) {
1345
-		$champs = array();
1346
-	} else {
1347
-		$fields = $desc['field'];
1348
-	}
1349
-	$set = array();
1350
-	foreach ($champs as $champ => $val) {
1351
-		$set[] = $champ . '=' . spip_mysql_cite($val, @$fields[$champ]);
1352
-	}
1353
-
1354
-	return spip_mysql_query(
1355
-		calculer_mysql_expression('UPDATE', $table, ',')
1356
-		. calculer_mysql_expression('SET', $set, ',')
1357
-		. calculer_mysql_expression('WHERE', $where),
1358
-		$serveur, $requeter);
1338
+    if (!$champs) {
1339
+        return;
1340
+    }
1341
+    if (!$desc) {
1342
+        $desc = description_table($table, $serveur);
1343
+    }
1344
+    if (!$desc) {
1345
+        $champs = array();
1346
+    } else {
1347
+        $fields = $desc['field'];
1348
+    }
1349
+    $set = array();
1350
+    foreach ($champs as $champ => $val) {
1351
+        $set[] = $champ . '=' . spip_mysql_cite($val, @$fields[$champ]);
1352
+    }
1353
+
1354
+    return spip_mysql_query(
1355
+        calculer_mysql_expression('UPDATE', $table, ',')
1356
+        . calculer_mysql_expression('SET', $set, ',')
1357
+        . calculer_mysql_expression('WHERE', $where),
1358
+        $serveur, $requeter);
1359 1359
 }
1360 1360
 
1361 1361
 /**
@@ -1371,20 +1371,20 @@  discard block
 block discarded – undo
1371 1371
  *     - False en cas d'erreur.
1372 1372
  **/
1373 1373
 function spip_mysql_delete($table, $where = '', $serveur = '', $requeter = true) {
1374
-	$res = spip_mysql_query(
1375
-		calculer_mysql_expression('DELETE FROM', $table, ',')
1376
-		. calculer_mysql_expression('WHERE', $where),
1377
-		$serveur, $requeter);
1378
-	if (!$requeter) {
1379
-		return $res;
1380
-	}
1381
-	if ($res) {
1382
-		$link = _mysql_link($serveur);
1383
-
1384
-		return mysqli_affected_rows($link);
1385
-	} else {
1386
-		return false;
1387
-	}
1374
+    $res = spip_mysql_query(
1375
+        calculer_mysql_expression('DELETE FROM', $table, ',')
1376
+        . calculer_mysql_expression('WHERE', $where),
1377
+        $serveur, $requeter);
1378
+    if (!$requeter) {
1379
+        return $res;
1380
+    }
1381
+    if ($res) {
1382
+        $link = _mysql_link($serveur);
1383
+
1384
+        return mysqli_affected_rows($link);
1385
+    } else {
1386
+        return false;
1387
+    }
1388 1388
 }
1389 1389
 
1390 1390
 
@@ -1413,8 +1413,8 @@  discard block
 block discarded – undo
1413 1413
  *     - False en cas d'erreur.
1414 1414
  **/
1415 1415
 function spip_mysql_replace($table, $couples, $desc = array(), $serveur = '', $requeter = true) {
1416
-	return spip_mysql_query("REPLACE $table (" . join(',', array_keys($couples)) . ') VALUES (' . join(',',
1417
-			array_map('_q', $couples)) . ')', $serveur, $requeter);
1416
+    return spip_mysql_query("REPLACE $table (" . join(',', array_keys($couples)) . ') VALUES (' . join(',',
1417
+            array_map('_q', $couples)) . ')', $serveur, $requeter);
1418 1418
 }
1419 1419
 
1420 1420
 
@@ -1443,14 +1443,14 @@  discard block
 block discarded – undo
1443 1443
  *     - False en cas d'erreur.
1444 1444
  **/
1445 1445
 function spip_mysql_replace_multi($table, $tab_couples, $desc = array(), $serveur = '', $requeter = true) {
1446
-	$cles = "(" . join(',', array_keys($tab_couples[0])) . ')';
1447
-	$valeurs = array();
1448
-	foreach ($tab_couples as $couples) {
1449
-		$valeurs[] = '(' . join(',', array_map('_q', $couples)) . ')';
1450
-	}
1451
-	$valeurs = implode(', ', $valeurs);
1452
-
1453
-	return spip_mysql_query("REPLACE $table $cles VALUES $valeurs", $serveur, $requeter);
1446
+    $cles = "(" . join(',', array_keys($tab_couples[0])) . ')';
1447
+    $valeurs = array();
1448
+    foreach ($tab_couples as $couples) {
1449
+        $valeurs[] = '(' . join(',', array_map('_q', $couples)) . ')';
1450
+    }
1451
+    $valeurs = implode(', ', $valeurs);
1452
+
1453
+    return spip_mysql_query("REPLACE $table $cles VALUES $valeurs", $serveur, $requeter);
1454 1454
 }
1455 1455
 
1456 1456
 
@@ -1465,32 +1465,32 @@  discard block
 block discarded – undo
1465 1465
  * @return string       Texte de sélection pour la requête
1466 1466
  */
1467 1467
 function spip_mysql_multi($objet, $lang) {
1468
-	$lengthlang = strlen("[$lang]");
1469
-	$posmulti = "INSTR(" . $objet . ", '<multi>')";
1470
-	$posfinmulti = "INSTR(" . $objet . ", '</multi>')";
1471
-	$debutchaine = "LEFT(" . $objet . ", $posmulti-1)";
1472
-	$finchaine = "RIGHT(" . $objet . ", CHAR_LENGTH(" . $objet . ") -(7+$posfinmulti))";
1473
-	$chainemulti = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7, $posfinmulti -(7+$posmulti)))";
1474
-	$poslang = "INSTR($chainemulti,'[" . $lang . "]')";
1475
-	$poslang = "IF($poslang=0,INSTR($chainemulti,']')+1,$poslang+$lengthlang)";
1476
-	$chainelang = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))";
1477
-	$posfinlang = "INSTR(" . $chainelang . ", '[')";
1478
-	$chainelang = "IF($posfinlang>0,LEFT($chainelang,$posfinlang-1),$chainelang)";
1479
-	//$chainelang = "LEFT($chainelang,$posfinlang-1)";
1480
-	$retour = "(TRIM(IF($posmulti = 0 , " .
1481
-		"     TRIM(" . $objet . "), " .
1482
-		"     CONCAT( " .
1483
-		"          $debutchaine, " .
1484
-		"          IF( " .
1485
-		"               $poslang = 0, " .
1486
-		"                     $chainemulti, " .
1487
-		"               $chainelang" .
1488
-		"          ), " .
1489
-		"          $finchaine" .
1490
-		"     ) " .
1491
-		"))) AS multi";
1492
-
1493
-	return $retour;
1468
+    $lengthlang = strlen("[$lang]");
1469
+    $posmulti = "INSTR(" . $objet . ", '<multi>')";
1470
+    $posfinmulti = "INSTR(" . $objet . ", '</multi>')";
1471
+    $debutchaine = "LEFT(" . $objet . ", $posmulti-1)";
1472
+    $finchaine = "RIGHT(" . $objet . ", CHAR_LENGTH(" . $objet . ") -(7+$posfinmulti))";
1473
+    $chainemulti = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7, $posfinmulti -(7+$posmulti)))";
1474
+    $poslang = "INSTR($chainemulti,'[" . $lang . "]')";
1475
+    $poslang = "IF($poslang=0,INSTR($chainemulti,']')+1,$poslang+$lengthlang)";
1476
+    $chainelang = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))";
1477
+    $posfinlang = "INSTR(" . $chainelang . ", '[')";
1478
+    $chainelang = "IF($posfinlang>0,LEFT($chainelang,$posfinlang-1),$chainelang)";
1479
+    //$chainelang = "LEFT($chainelang,$posfinlang-1)";
1480
+    $retour = "(TRIM(IF($posmulti = 0 , " .
1481
+        "     TRIM(" . $objet . "), " .
1482
+        "     CONCAT( " .
1483
+        "          $debutchaine, " .
1484
+        "          IF( " .
1485
+        "               $poslang = 0, " .
1486
+        "                     $chainemulti, " .
1487
+        "               $chainelang" .
1488
+        "          ), " .
1489
+        "          $finchaine" .
1490
+        "     ) " .
1491
+        "))) AS multi";
1492
+
1493
+    return $retour;
1494 1494
 }
1495 1495
 
1496 1496
 /**
@@ -1504,7 +1504,7 @@  discard block
 block discarded – undo
1504 1504
  *     Valeur hexadécimale pour MySQL
1505 1505
  **/
1506 1506
 function spip_mysql_hex($v) {
1507
-	return "0x" . $v;
1507
+    return "0x" . $v;
1508 1508
 }
1509 1509
 
1510 1510
 /**
@@ -1520,22 +1520,22 @@  discard block
 block discarded – undo
1520 1520
  *    Donnée prête à être utilisée par le gestionnaire SQL
1521 1521
  */
1522 1522
 function spip_mysql_quote($v, $type = '') {
1523
-	if ($type) {
1524
-		if (!is_array($v)) {
1525
-			return spip_mysql_cite($v, $type);
1526
-		}
1527
-		// si c'est un tableau, le parcourir en propageant le type
1528
-		foreach ($v as $k => $r) {
1529
-			$v[$k] = spip_mysql_quote($r, $type);
1530
-		}
1531
-
1532
-		return $v;
1533
-	}
1534
-	// si on ne connait pas le type, s'en remettre a _q :
1535
-	// on ne fera pas mieux
1536
-	else {
1537
-		return _q($v);
1538
-	}
1523
+    if ($type) {
1524
+        if (!is_array($v)) {
1525
+            return spip_mysql_cite($v, $type);
1526
+        }
1527
+        // si c'est un tableau, le parcourir en propageant le type
1528
+        foreach ($v as $k => $r) {
1529
+            $v[$k] = spip_mysql_quote($r, $type);
1530
+        }
1531
+
1532
+        return $v;
1533
+    }
1534
+    // si on ne connait pas le type, s'en remettre a _q :
1535
+    // on ne fera pas mieux
1536
+    else {
1537
+        return _q($v);
1538
+    }
1539 1539
 }
1540 1540
 
1541 1541
 /**
@@ -1551,17 +1551,17 @@  discard block
 block discarded – undo
1551 1551
  *     Expression SQL
1552 1552
  **/
1553 1553
 function spip_mysql_date_proche($champ, $interval, $unite) {
1554
-	return '('
1555
-	. $champ
1556
-	. (($interval <= 0) ? '>' : '<')
1557
-	. (($interval <= 0) ? 'DATE_SUB' : 'DATE_ADD')
1558
-	. '('
1559
-	. sql_quote(date('Y-m-d H:i:s'))
1560
-	. ', INTERVAL '
1561
-	. (($interval > 0) ? $interval : (0 - $interval))
1562
-	. ' '
1563
-	. $unite
1564
-	. '))';
1554
+    return '('
1555
+    . $champ
1556
+    . (($interval <= 0) ? '>' : '<')
1557
+    . (($interval <= 0) ? 'DATE_SUB' : 'DATE_ADD')
1558
+    . '('
1559
+    . sql_quote(date('Y-m-d H:i:s'))
1560
+    . ', INTERVAL '
1561
+    . (($interval > 0) ? $interval : (0 - $interval))
1562
+    . ' '
1563
+    . $unite
1564
+    . '))';
1565 1565
 }
1566 1566
 
1567 1567
 
@@ -1585,21 +1585,21 @@  discard block
 block discarded – undo
1585 1585
  *     Expression de requête SQL
1586 1586
  **/
1587 1587
 function spip_mysql_in($val, $valeurs, $not = '', $serveur = '', $requeter = true) {
1588
-	$n = $i = 0;
1589
-	$in_sql = "";
1590
-	while ($n = strpos($valeurs, ',', $n + 1)) {
1591
-		if ((++$i) >= 255) {
1592
-			$in_sql .= "($val $not IN (" .
1593
-				substr($valeurs, 0, $n) .
1594
-				"))\n" .
1595
-				($not ? "AND\t" : "OR\t");
1596
-			$valeurs = substr($valeurs, $n + 1);
1597
-			$i = $n = 0;
1598
-		}
1599
-	}
1600
-	$in_sql .= "($val $not IN ($valeurs))";
1601
-
1602
-	return "($in_sql)";
1588
+    $n = $i = 0;
1589
+    $in_sql = "";
1590
+    while ($n = strpos($valeurs, ',', $n + 1)) {
1591
+        if ((++$i) >= 255) {
1592
+            $in_sql .= "($val $not IN (" .
1593
+                substr($valeurs, 0, $n) .
1594
+                "))\n" .
1595
+                ($not ? "AND\t" : "OR\t");
1596
+            $valeurs = substr($valeurs, $n + 1);
1597
+            $i = $n = 0;
1598
+        }
1599
+    }
1600
+    $in_sql .= "($val $not IN ($valeurs))";
1601
+
1602
+    return "($in_sql)";
1603 1603
 }
1604 1604
 
1605 1605
 
@@ -1616,16 +1616,16 @@  discard block
 block discarded – undo
1616 1616
  * @return string               Expression de requête SQL
1617 1617
  */
1618 1618
 function calcul_mysql_in($val, $valeurs, $not = '') {
1619
-	if (is_array($valeurs)) {
1620
-		$valeurs = join(',', array_map('_q', $valeurs));
1621
-	} elseif ($valeurs[0] === ',') {
1622
-		$valeurs = substr($valeurs, 1);
1623
-	}
1624
-	if (!strlen(trim($valeurs))) {
1625
-		return ($not ? "0=0" : '0=1');
1626
-	}
1627
-
1628
-	return spip_mysql_in($val, $valeurs, $not);
1619
+    if (is_array($valeurs)) {
1620
+        $valeurs = join(',', array_map('_q', $valeurs));
1621
+    } elseif ($valeurs[0] === ',') {
1622
+        $valeurs = substr($valeurs, 1);
1623
+    }
1624
+    if (!strlen(trim($valeurs))) {
1625
+        return ($not ? "0=0" : '0=1');
1626
+    }
1627
+
1628
+    return spip_mysql_in($val, $valeurs, $not);
1629 1629
 }
1630 1630
 
1631 1631
 
@@ -1637,26 +1637,26 @@  discard block
 block discarded – undo
1637 1637
  * @return string|number     Texte ou nombre échappé
1638 1638
  */
1639 1639
 function spip_mysql_cite($v, $type) {
1640
-	if (is_null($v)
1641
-		and stripos($type, "NOT NULL") === false
1642
-	) {
1643
-		return 'NULL';
1644
-	} // null php se traduit en NULL SQL
1645
-	if (sql_test_date($type) and preg_match('/^\w+\(/', $v)) {
1646
-		return $v;
1647
-	}
1648
-	if (sql_test_int($type)) {
1649
-		if (is_numeric($v) or (ctype_xdigit(substr($v, 2))
1650
-				and $v[0] == '0' and $v[1] == 'x')
1651
-		) {
1652
-			return $v;
1653
-		} // si pas numerique, forcer le intval
1654
-		else {
1655
-			return intval($v);
1656
-		}
1657
-	}
1658
-
1659
-	return ("'" . addslashes($v) . "'");
1640
+    if (is_null($v)
1641
+        and stripos($type, "NOT NULL") === false
1642
+    ) {
1643
+        return 'NULL';
1644
+    } // null php se traduit en NULL SQL
1645
+    if (sql_test_date($type) and preg_match('/^\w+\(/', $v)) {
1646
+        return $v;
1647
+    }
1648
+    if (sql_test_int($type)) {
1649
+        if (is_numeric($v) or (ctype_xdigit(substr($v, 2))
1650
+                and $v[0] == '0' and $v[1] == 'x')
1651
+        ) {
1652
+            return $v;
1653
+        } // si pas numerique, forcer le intval
1654
+        else {
1655
+            return intval($v);
1656
+        }
1657
+    }
1658
+
1659
+    return ("'" . addslashes($v) . "'");
1660 1660
 }
1661 1661
 
1662 1662
 
@@ -1680,21 +1680,21 @@  discard block
 block discarded – undo
1680 1680
  */
1681 1681
 function spip_get_lock($nom, $timeout = 0) {
1682 1682
 
1683
-	define('_LOCK_TIME', intval(time() / 3600 - 316982));
1683
+    define('_LOCK_TIME', intval(time() / 3600 - 316982));
1684 1684
 
1685
-	$connexion = &$GLOBALS['connexions'][0];
1686
-	$bd = $connexion['db'];
1687
-	$prefixe = $connexion['prefixe'];
1688
-	$nom = "$bd:$prefixe:$nom" . _LOCK_TIME;
1685
+    $connexion = &$GLOBALS['connexions'][0];
1686
+    $bd = $connexion['db'];
1687
+    $prefixe = $connexion['prefixe'];
1688
+    $nom = "$bd:$prefixe:$nom" . _LOCK_TIME;
1689 1689
 
1690
-	$connexion['last'] = $q = "SELECT GET_LOCK(" . _q($nom) . ", $timeout) AS n";
1690
+    $connexion['last'] = $q = "SELECT GET_LOCK(" . _q($nom) . ", $timeout) AS n";
1691 1691
 
1692
-	$q = @sql_fetch(mysqli_query(_mysql_link(), $q));
1693
-	if (!$q) {
1694
-		spip_log("pas de lock sql pour $nom", _LOG_ERREUR);
1695
-	}
1692
+    $q = @sql_fetch(mysqli_query(_mysql_link(), $q));
1693
+    if (!$q) {
1694
+        spip_log("pas de lock sql pour $nom", _LOG_ERREUR);
1695
+    }
1696 1696
 
1697
-	return $q['n'];
1697
+    return $q['n'];
1698 1698
 }
1699 1699
 
1700 1700
 
@@ -1711,13 +1711,13 @@  discard block
 block discarded – undo
1711 1711
  */
1712 1712
 function spip_release_lock($nom) {
1713 1713
 
1714
-	$connexion = &$GLOBALS['connexions'][0];
1715
-	$bd = $connexion['db'];
1716
-	$prefixe = $connexion['prefixe'];
1717
-	$nom = "$bd:$prefixe:$nom" . _LOCK_TIME;
1714
+    $connexion = &$GLOBALS['connexions'][0];
1715
+    $bd = $connexion['db'];
1716
+    $prefixe = $connexion['prefixe'];
1717
+    $nom = "$bd:$prefixe:$nom" . _LOCK_TIME;
1718 1718
 
1719
-	$connexion['last'] = $q = "SELECT RELEASE_LOCK(" . _q($nom) . ")";
1720
-	mysqli_query(_mysql_link(), $q);
1719
+    $connexion['last'] = $q = "SELECT RELEASE_LOCK(" . _q($nom) . ")";
1720
+    mysqli_query(_mysql_link(), $q);
1721 1721
 }
1722 1722
 
1723 1723
 
@@ -1728,7 +1728,7 @@  discard block
 block discarded – undo
1728 1728
  *     True si on a les fonctions, false sinon
1729 1729
  */
1730 1730
 function spip_versions_mysql() {
1731
-	return function_exists('mysqli_query');
1731
+    return function_exists('mysqli_query');
1732 1732
 }
1733 1733
 
1734 1734
 
@@ -1741,20 +1741,20 @@  discard block
 block discarded – undo
1741 1741
  *     - chaîne : code compilé pour le faire désactiver par SPIP sinon
1742 1742
  */
1743 1743
 function test_rappel_nom_base_mysql($server_db) {
1744
-	$GLOBALS['mysql_rappel_nom_base'] = true;
1745
-	sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1746
-	$ok = spip_query("INSERT INTO spip_meta (nom,valeur) VALUES ('mysql_rappel_nom_base', 'test')", $server_db);
1744
+    $GLOBALS['mysql_rappel_nom_base'] = true;
1745
+    sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1746
+    $ok = spip_query("INSERT INTO spip_meta (nom,valeur) VALUES ('mysql_rappel_nom_base', 'test')", $server_db);
1747 1747
 
1748
-	if ($ok) {
1749
-		sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1748
+    if ($ok) {
1749
+        sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1750 1750
 
1751
-		return '';
1752
-	} else {
1753
-		$GLOBALS['mysql_rappel_nom_base'] = false;
1751
+        return '';
1752
+    } else {
1753
+        $GLOBALS['mysql_rappel_nom_base'] = false;
1754 1754
 
1755
-		return "\$GLOBALS['mysql_rappel_nom_base'] = false; " .
1756
-		"/* echec de test_rappel_nom_base_mysql a l'installation. */\n";
1757
-	}
1755
+        return "\$GLOBALS['mysql_rappel_nom_base'] = false; " .
1756
+        "/* echec de test_rappel_nom_base_mysql a l'installation. */\n";
1757
+    }
1758 1758
 }
1759 1759
 
1760 1760
 /**
@@ -1768,13 +1768,13 @@  discard block
 block discarded – undo
1768 1768
  *     - chaîne : code compilé pour l'indiquer le résultat du test à SPIP
1769 1769
  */
1770 1770
 function test_sql_mode_mysql($server_db) {
1771
-	$res = sql_select("version() as v", '', '', '', '', '', '', $server_db);
1772
-	$row = sql_fetch($res, $server_db);
1773
-	if (version_compare($row['v'], '5.0.0', '>=')) {
1774
-		defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE', true);
1771
+    $res = sql_select("version() as v", '', '', '', '', '', '', $server_db);
1772
+    $row = sql_fetch($res, $server_db);
1773
+    if (version_compare($row['v'], '5.0.0', '>=')) {
1774
+        defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE', true);
1775 1775
 
1776
-		return "defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE',true);\n";
1777
-	}
1776
+        return "defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE',true);\n";
1777
+    }
1778 1778
 
1779
-	return '';
1779
+    return '';
1780 1780
 }
Please login to merge, or discard this patch.