Completed
Push — master ( 5ba801...973190 )
by cam
07:28
created
ecrire/req/mysql.php 2 patches
Indentation   +804 added lines, -804 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,66 +216,66 @@  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
-		if (isset($_SERVER['REQUEST_URI'])) {
249
-			$debug .= $_SERVER['REQUEST_URI'];
250
-		}
251
-		if (!empty($GLOBALS['ip'])) {
252
-			$debug .= ' + ' . $GLOBALS['ip'];
253
-		}
254
-		$debug = ' /* ' . mysqli_real_escape_string($link, str_replace('*/', '@/', $debug)) . ' */';
255
-	}
256
-
257
-	$r = mysqli_query($link, $query . $debug);
258
-
259
-	//Eviter de propager le GoneAway sur les autres requetes d'un même processus PHP
260
-	if ($e = spip_mysql_errno($serveur)) {  // Log d'un Gone Away
261
-		if ($e == 2006) { //Si Gone Away on relance une connexion vierge
262
-			//Fermer la connexion defaillante
263
-			mysqli_close($connexion['link']);
264
-			unset($GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]);
265
-			//Relancer une connexion vierge
266
-			spip_connect($serveur);
267
-			$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
268
-			$link = $connexion['link'];
269
-			//On retente au cas où
270
-			$r = mysqli_query($link, $query . $debug);
271
-		}
272
-	}
273
-
274
-	// Log de l'erreur eventuelle
275
-	if ($e = spip_mysql_errno($serveur)) {
276
-		$e .= spip_mysql_error($query, $serveur);
277
-	} // et du fautif
278
-	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
+        if (isset($_SERVER['REQUEST_URI'])) {
249
+            $debug .= $_SERVER['REQUEST_URI'];
250
+        }
251
+        if (!empty($GLOBALS['ip'])) {
252
+            $debug .= ' + ' . $GLOBALS['ip'];
253
+        }
254
+        $debug = ' /* ' . mysqli_real_escape_string($link, str_replace('*/', '@/', $debug)) . ' */';
255
+    }
256
+
257
+    $r = mysqli_query($link, $query . $debug);
258
+
259
+    //Eviter de propager le GoneAway sur les autres requetes d'un même processus PHP
260
+    if ($e = spip_mysql_errno($serveur)) {  // Log d'un Gone Away
261
+        if ($e == 2006) { //Si Gone Away on relance une connexion vierge
262
+            //Fermer la connexion defaillante
263
+            mysqli_close($connexion['link']);
264
+            unset($GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]);
265
+            //Relancer une connexion vierge
266
+            spip_connect($serveur);
267
+            $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
268
+            $link = $connexion['link'];
269
+            //On retente au cas où
270
+            $r = mysqli_query($link, $query . $debug);
271
+        }
272
+    }
273
+
274
+    // Log de l'erreur eventuelle
275
+    if ($e = spip_mysql_errno($serveur)) {
276
+        $e .= spip_mysql_error($query, $serveur);
277
+    } // et du fautif
278
+    return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
279 279
 }
280 280
 
281 281
 /**
@@ -290,12 +290,12 @@  discard block
 block discarded – undo
290 290
  *     - array  : Tableau décrivant requête et temps d'exécution si var_profile actif pour tracer.
291 291
  */
292 292
 function spip_mysql_alter($query, $serveur = '', $requeter = true) {
293
-	// ici on supprime les ` entourant le nom de table pour permettre
294
-	// la transposition du prefixe, compte tenu que les plugins ont la mauvaise habitude
295
-	// d'utiliser ceux-ci, copie-colle de phpmyadmin
296
-	$query = preg_replace(",^TABLE\s*`([^`]*)`,i", "TABLE \\1", $query);
293
+    // ici on supprime les ` entourant le nom de table pour permettre
294
+    // la transposition du prefixe, compte tenu que les plugins ont la mauvaise habitude
295
+    // d'utiliser ceux-ci, copie-colle de phpmyadmin
296
+    $query = preg_replace(",^TABLE\s*`([^`]*)`,i", "TABLE \\1", $query);
297 297
 
298
-	return spip_mysql_query("ALTER " . $query, $serveur, $requeter); # i.e. que PG se debrouille
298
+    return spip_mysql_query("ALTER " . $query, $serveur, $requeter); # i.e. que PG se debrouille
299 299
 }
300 300
 
301 301
 
@@ -308,9 +308,9 @@  discard block
 block discarded – undo
308 308
  * @return bool            Toujours true
309 309
  */
310 310
 function spip_mysql_optimize($table, $serveur = '', $requeter = true) {
311
-	spip_mysql_query("OPTIMIZE TABLE " . $table);
311
+    spip_mysql_query("OPTIMIZE TABLE " . $table);
312 312
 
313
-	return true;
313
+    return true;
314 314
 }
315 315
 
316 316
 
@@ -323,18 +323,18 @@  discard block
 block discarded – undo
323 323
  * @return array           Tableau de l'explication
324 324
  */
325 325
 function spip_mysql_explain($query, $serveur = '', $requeter = true) {
326
-	if (strpos(ltrim($query), 'SELECT') !== 0) {
327
-		return array();
328
-	}
329
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
330
-	$prefixe = $connexion['prefixe'];
331
-	$link = $connexion['link'];
332
-	$db = $connexion['db'];
333
-
334
-	$query = 'EXPLAIN ' . _mysql_traite_query($query, $db, $prefixe);
335
-	$r = mysqli_query($link, $query);
336
-
337
-	return spip_mysql_fetch($r, null, $serveur);
326
+    if (strpos(ltrim($query), 'SELECT') !== 0) {
327
+        return array();
328
+    }
329
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
330
+    $prefixe = $connexion['prefixe'];
331
+    $link = $connexion['link'];
332
+    $db = $connexion['db'];
333
+
334
+    $query = 'EXPLAIN ' . _mysql_traite_query($query, $db, $prefixe);
335
+    $r = mysqli_query($link, $query);
336
+
337
+    return spip_mysql_fetch($r, null, $serveur);
338 338
 }
339 339
 
340 340
 
@@ -363,35 +363,35 @@  discard block
 block discarded – undo
363 363
  *     - array  : Tableau décrivant requête et temps d'exécution si var_profile actif pour tracer.
364 364
  */
365 365
 function spip_mysql_select(
366
-	$select,
367
-	$from,
368
-	$where = '',
369
-	$groupby = '',
370
-	$orderby = '',
371
-	$limit = '',
372
-	$having = '',
373
-	$serveur = '',
374
-	$requeter = true
366
+    $select,
367
+    $from,
368
+    $where = '',
369
+    $groupby = '',
370
+    $orderby = '',
371
+    $limit = '',
372
+    $having = '',
373
+    $serveur = '',
374
+    $requeter = true
375 375
 ) {
376 376
 
377 377
 
378
-	$from = (!is_array($from) ? $from : spip_mysql_select_as($from));
379
-	$query =
380
-		calculer_mysql_expression('SELECT', $select, ', ')
381
-		. calculer_mysql_expression('FROM', $from, ', ')
382
-		. calculer_mysql_expression('WHERE', $where)
383
-		. calculer_mysql_expression('GROUP BY', $groupby, ',')
384
-		. calculer_mysql_expression('HAVING', $having)
385
-		. ($orderby ? ("\nORDER BY " . spip_mysql_order($orderby)) : '')
386
-		. ($limit ? "\nLIMIT $limit" : '');
378
+    $from = (!is_array($from) ? $from : spip_mysql_select_as($from));
379
+    $query =
380
+        calculer_mysql_expression('SELECT', $select, ', ')
381
+        . calculer_mysql_expression('FROM', $from, ', ')
382
+        . calculer_mysql_expression('WHERE', $where)
383
+        . calculer_mysql_expression('GROUP BY', $groupby, ',')
384
+        . calculer_mysql_expression('HAVING', $having)
385
+        . ($orderby ? ("\nORDER BY " . spip_mysql_order($orderby)) : '')
386
+        . ($limit ? "\nLIMIT $limit" : '');
387 387
 
388
-	// renvoyer la requete inerte si demandee
389
-	if ($requeter === false) {
390
-		return $query;
391
-	}
392
-	$r = spip_mysql_query($query, $serveur, $requeter);
388
+    // renvoyer la requete inerte si demandee
389
+    if ($requeter === false) {
390
+        return $query;
391
+    }
392
+    $r = spip_mysql_query($query, $serveur, $requeter);
393 393
 
394
-	return $r ? $r : $query;
394
+    return $r ? $r : $query;
395 395
 }
396 396
 
397 397
 
@@ -408,7 +408,7 @@  discard block
 block discarded – undo
408 408
  * @return string Texte du orderby préparé
409 409
  */
410 410
 function spip_mysql_order($orderby) {
411
-	return (is_array($orderby)) ? join(", ", $orderby) : $orderby;
411
+    return (is_array($orderby)) ? join(", ", $orderby) : $orderby;
412 412
 }
413 413
 
414 414
 
@@ -431,26 +431,26 @@  discard block
 block discarded – undo
431 431
  *     Contrainte pour clause WHERE
432 432
  */
433 433
 function calculer_mysql_where($v) {
434
-	if (!is_array($v)) {
435
-		return $v;
436
-	}
437
-
438
-	$op = array_shift($v);
439
-	if (!($n = count($v))) {
440
-		return $op;
441
-	} else {
442
-		$arg = calculer_mysql_where(array_shift($v));
443
-		if ($n == 1) {
444
-			return "$op($arg)";
445
-		} else {
446
-			$arg2 = calculer_mysql_where(array_shift($v));
447
-			if ($n == 2) {
448
-				return "($arg $op $arg2)";
449
-			} else {
450
-				return "($arg $op ($arg2) : $v[0])";
451
-			}
452
-		}
453
-	}
434
+    if (!is_array($v)) {
435
+        return $v;
436
+    }
437
+
438
+    $op = array_shift($v);
439
+    if (!($n = count($v))) {
440
+        return $op;
441
+    } else {
442
+        $arg = calculer_mysql_where(array_shift($v));
443
+        if ($n == 1) {
444
+            return "$op($arg)";
445
+        } else {
446
+            $arg2 = calculer_mysql_where(array_shift($v));
447
+            if ($n == 2) {
448
+                return "($arg $op $arg2)";
449
+            } else {
450
+                return "($arg $op ($arg2) : $v[0])";
451
+            }
452
+        }
453
+    }
454 454
 }
455 455
 
456 456
 /**
@@ -465,21 +465,21 @@  discard block
 block discarded – undo
465 465
  * @return string            Texte de l'expression, une partie donc, du texte la requête.
466 466
  */
467 467
 function calculer_mysql_expression($expression, $v, $join = 'AND') {
468
-	if (empty($v)) {
469
-		return '';
470
-	}
471
-
472
-	$exp = "\n$expression ";
473
-
474
-	if (!is_array($v)) {
475
-		return $exp . $v;
476
-	} else {
477
-		if (strtoupper($join) === 'AND') {
478
-			return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v));
479
-		} else {
480
-			return $exp . join($join, $v);
481
-		}
482
-	}
468
+    if (empty($v)) {
469
+        return '';
470
+    }
471
+
472
+    $exp = "\n$expression ";
473
+
474
+    if (!is_array($v)) {
475
+        return $exp . $v;
476
+    } else {
477
+        if (strtoupper($join) === 'AND') {
478
+            return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v));
479
+        } else {
480
+            return $exp . join($join, $v);
481
+        }
482
+    }
483 483
 }
484 484
 
485 485
 
@@ -490,26 +490,26 @@  discard block
 block discarded – undo
490 490
  * @return string Sélection de colonnes pour une clause SELECT
491 491
  */
492 492
 function spip_mysql_select_as($args) {
493
-	$res = '';
494
-	foreach ($args as $k => $v) {
495
-		if (substr($k, -1) == '@') {
496
-			// c'est une jointure qui se refere au from precedent
497
-			// pas de virgule
498
-			$res .= '  ' . $v;
499
-		} else {
500
-			if (!is_numeric($k)) {
501
-				$p = strpos($v, " ");
502
-				if ($p) {
503
-					$v = substr($v, 0, $p) . " AS `$k`" . substr($v, $p);
504
-				} else {
505
-					$v .= " AS `$k`";
506
-				}
507
-			}
508
-			$res .= ', ' . $v;
509
-		}
510
-	}
511
-
512
-	return substr($res, 2);
493
+    $res = '';
494
+    foreach ($args as $k => $v) {
495
+        if (substr($k, -1) == '@') {
496
+            // c'est une jointure qui se refere au from precedent
497
+            // pas de virgule
498
+            $res .= '  ' . $v;
499
+        } else {
500
+            if (!is_numeric($k)) {
501
+                $p = strpos($v, " ");
502
+                if ($p) {
503
+                    $v = substr($v, 0, $p) . " AS `$k`" . substr($v, $p);
504
+                } else {
505
+                    $v .= " AS `$k`";
506
+                }
507
+            }
508
+            $res .= ', ' . $v;
509
+        }
510
+    }
511
+
512
+    return substr($res, 2);
513 513
 }
514 514
 
515 515
 
@@ -533,46 +533,46 @@  discard block
 block discarded – undo
533 533
  */
534 534
 function _mysql_traite_query($query, $db = '', $prefixe = '') {
535 535
 
536
-	if ($GLOBALS['mysql_rappel_nom_base'] and $db) {
537
-		$pref = '`' . $db . '`.';
538
-	} else {
539
-		$pref = '';
540
-	}
541
-
542
-	if ($prefixe) {
543
-		$pref .= $prefixe . "_";
544
-	}
545
-
546
-	if (!preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/i', $query, $regs)) {
547
-		$suite = '';
548
-	} else {
549
-		$suite = strstr($query, $regs[0]);
550
-		$query = substr($query, 0, -strlen($suite));
551
-		// propager le prefixe en cas de requete imbriquee
552
-		// il faut alors echapper les chaine avant de le faire, pour ne pas risquer de
553
-		// modifier une requete qui est en fait juste du texte dans un champ
554
-		if (stripos($suite, "SELECT") !== false) {
555
-			list($suite, $textes) = query_echappe_textes($suite);
556
-			if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite, $r)) {
557
-				$suite = $r[1] . _mysql_traite_query($r[2], $db, $prefixe);
558
-			}
559
-			$suite = query_reinjecte_textes($suite, $textes);
560
-		}
561
-	}
562
-	$r = preg_replace(_SQL_PREFIXE_TABLE_MYSQL, '\1' . $pref, $query) . $suite;
563
-
564
-	// en option, remplacer les emoji (que mysql ne sait pas gérer) en 💩
565
-	// remplacer les emoji (que mysql ne sait pas gérer) en 💩
566
-	if (defined('_MYSQL_NOPLANES')
567
-		and _MYSQL_NOPLANES
568
-		and !empty($GLOBALS['meta']['charset_sql_connexion'])
569
-		and $GLOBALS['meta']['charset_sql_connexion'] == 'utf8') {
570
-		include_spip('inc/charsets');
571
-		$r = utf8_noplanes($r);
572
-	}
573
-
574
-	#spip_log("_mysql_traite_query: " . substr($r,0, 50) . ".... $db, $prefixe", _LOG_DEBUG);
575
-	return $r;
536
+    if ($GLOBALS['mysql_rappel_nom_base'] and $db) {
537
+        $pref = '`' . $db . '`.';
538
+    } else {
539
+        $pref = '';
540
+    }
541
+
542
+    if ($prefixe) {
543
+        $pref .= $prefixe . "_";
544
+    }
545
+
546
+    if (!preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/i', $query, $regs)) {
547
+        $suite = '';
548
+    } else {
549
+        $suite = strstr($query, $regs[0]);
550
+        $query = substr($query, 0, -strlen($suite));
551
+        // propager le prefixe en cas de requete imbriquee
552
+        // il faut alors echapper les chaine avant de le faire, pour ne pas risquer de
553
+        // modifier une requete qui est en fait juste du texte dans un champ
554
+        if (stripos($suite, "SELECT") !== false) {
555
+            list($suite, $textes) = query_echappe_textes($suite);
556
+            if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite, $r)) {
557
+                $suite = $r[1] . _mysql_traite_query($r[2], $db, $prefixe);
558
+            }
559
+            $suite = query_reinjecte_textes($suite, $textes);
560
+        }
561
+    }
562
+    $r = preg_replace(_SQL_PREFIXE_TABLE_MYSQL, '\1' . $pref, $query) . $suite;
563
+
564
+    // en option, remplacer les emoji (que mysql ne sait pas gérer) en 💩
565
+    // remplacer les emoji (que mysql ne sait pas gérer) en 💩
566
+    if (defined('_MYSQL_NOPLANES')
567
+        and _MYSQL_NOPLANES
568
+        and !empty($GLOBALS['meta']['charset_sql_connexion'])
569
+        and $GLOBALS['meta']['charset_sql_connexion'] == 'utf8') {
570
+        include_spip('inc/charsets');
571
+        $r = utf8_noplanes($r);
572
+    }
573
+
574
+    #spip_log("_mysql_traite_query: " . substr($r,0, 50) . ".... $db, $prefixe", _LOG_DEBUG);
575
+    return $r;
576 576
 }
577 577
 
578 578
 /**
@@ -590,13 +590,13 @@  discard block
 block discarded – undo
590 590
  *     - False en cas d'erreur.
591 591
  **/
592 592
 function spip_mysql_selectdb($db, $serveur = '', $requeter = true) {
593
-	$link = _mysql_link($serveur);
594
-	$ok = mysqli_select_db($link, $db);
595
-	if (!$ok) {
596
-		spip_log('Echec mysqli_selectdb. Erreur : ' . mysqli_error($link), 'mysql.' . _LOG_CRITIQUE);
597
-	}
593
+    $link = _mysql_link($serveur);
594
+    $ok = mysqli_select_db($link, $db);
595
+    if (!$ok) {
596
+        spip_log('Echec mysqli_selectdb. Erreur : ' . mysqli_error($link), 'mysql.' . _LOG_CRITIQUE);
597
+    }
598 598
 
599
-	return $ok;
599
+    return $ok;
600 600
 }
601 601
 
602 602
 
@@ -617,14 +617,14 @@  discard block
 block discarded – undo
617 617
  *     Liste de noms de bases de données
618 618
  **/
619 619
 function spip_mysql_listdbs($serveur = '', $requeter = true) {
620
-	$dbs = array();
621
-	if ($res = spip_mysql_query("SHOW DATABASES", $serveur)) {
622
-		while ($row = mysqli_fetch_assoc($res)) {
623
-			$dbs[] = $row['Database'];
624
-		}
625
-	}
626
-
627
-	return $dbs;
620
+    $dbs = array();
621
+    if ($res = spip_mysql_query("SHOW DATABASES", $serveur)) {
622
+        while ($row = mysqli_fetch_assoc($res)) {
623
+            $dbs[] = $row['Database'];
624
+        }
625
+    }
626
+
627
+    return $dbs;
628 628
 }
629 629
 
630 630
 
@@ -647,72 +647,72 @@  discard block
 block discarded – undo
647 647
  *     - true si la requête réussie, false sinon.
648 648
  */
649 649
 function spip_mysql_create(
650
-	$nom,
651
-	$champs,
652
-	$cles,
653
-	$autoinc = false,
654
-	$temporary = false,
655
-	$serveur = '',
656
-	$requeter = true
650
+    $nom,
651
+    $champs,
652
+    $cles,
653
+    $autoinc = false,
654
+    $temporary = false,
655
+    $serveur = '',
656
+    $requeter = true
657 657
 ) {
658 658
 
659
-	$query = '';
660
-	$keys = '';
661
-	$s = '';
662
-	$p = '';
663
-
664
-	// certains plugins declarent les tables  (permet leur inclusion dans le dump)
665
-	// sans les renseigner (laisse le compilo recuperer la description)
666
-	if (!is_array($champs) || !is_array($cles)) {
667
-		return;
668
-	}
669
-
670
-	$res = spip_mysql_query("SELECT version() as v", $serveur);
671
-	if (($row = mysqli_fetch_array($res)) && (version_compare($row['v'], '5.0', '>='))) {
672
-		spip_mysql_query("SET sql_mode=''", $serveur);
673
-	}
674
-
675
-	foreach ($cles as $k => $v) {
676
-		$keys .= "$s\n\t\t$k ($v)";
677
-		if ($k == "PRIMARY KEY") {
678
-			$p = $v;
679
-		}
680
-		$s = ",";
681
-	}
682
-	$s = '';
683
-
684
-	$character_set = "";
685
-	if (@$GLOBALS['meta']['charset_sql_base']) {
686
-		$character_set .= " CHARACTER SET " . $GLOBALS['meta']['charset_sql_base'];
687
-	}
688
-	if (@$GLOBALS['meta']['charset_collation_sql_base']) {
689
-		$character_set .= " COLLATE " . $GLOBALS['meta']['charset_collation_sql_base'];
690
-	}
691
-
692
-	foreach ($champs as $k => $v) {
693
-		$v = _mysql_remplacements_definitions_table($v);
694
-		if (preg_match(',([a-z]*\s*(\(\s*[0-9]*\s*\))?(\s*binary)?),i', $v, $defs)) {
695
-			if (preg_match(',(char|text),i', $defs[1])
696
-				and !preg_match(',(binary|CHARACTER|COLLATE),i', $v)
697
-			) {
698
-				$v = $defs[1] . $character_set . ' ' . substr($v, strlen($defs[1]));
699
-			}
700
-		}
701
-
702
-		$query .= "$s\n\t\t$k $v"
703
-			. (($autoinc && ($p == $k) && preg_match(',\b(big|small|medium)?int\b,i', $v))
704
-				? " auto_increment"
705
-				: ''
706
-			);
707
-		$s = ",";
708
-	}
709
-	$temporary = $temporary ? 'TEMPORARY' : '';
710
-	$q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query" . ($keys ? ",$keys" : '') . ")"
711
-		. " ENGINE=MyISAM"
712
-		. ($character_set ? " DEFAULT $character_set" : "")
713
-		. "\n";
714
-
715
-	return spip_mysql_query($q, $serveur);
659
+    $query = '';
660
+    $keys = '';
661
+    $s = '';
662
+    $p = '';
663
+
664
+    // certains plugins declarent les tables  (permet leur inclusion dans le dump)
665
+    // sans les renseigner (laisse le compilo recuperer la description)
666
+    if (!is_array($champs) || !is_array($cles)) {
667
+        return;
668
+    }
669
+
670
+    $res = spip_mysql_query("SELECT version() as v", $serveur);
671
+    if (($row = mysqli_fetch_array($res)) && (version_compare($row['v'], '5.0', '>='))) {
672
+        spip_mysql_query("SET sql_mode=''", $serveur);
673
+    }
674
+
675
+    foreach ($cles as $k => $v) {
676
+        $keys .= "$s\n\t\t$k ($v)";
677
+        if ($k == "PRIMARY KEY") {
678
+            $p = $v;
679
+        }
680
+        $s = ",";
681
+    }
682
+    $s = '';
683
+
684
+    $character_set = "";
685
+    if (@$GLOBALS['meta']['charset_sql_base']) {
686
+        $character_set .= " CHARACTER SET " . $GLOBALS['meta']['charset_sql_base'];
687
+    }
688
+    if (@$GLOBALS['meta']['charset_collation_sql_base']) {
689
+        $character_set .= " COLLATE " . $GLOBALS['meta']['charset_collation_sql_base'];
690
+    }
691
+
692
+    foreach ($champs as $k => $v) {
693
+        $v = _mysql_remplacements_definitions_table($v);
694
+        if (preg_match(',([a-z]*\s*(\(\s*[0-9]*\s*\))?(\s*binary)?),i', $v, $defs)) {
695
+            if (preg_match(',(char|text),i', $defs[1])
696
+                and !preg_match(',(binary|CHARACTER|COLLATE),i', $v)
697
+            ) {
698
+                $v = $defs[1] . $character_set . ' ' . substr($v, strlen($defs[1]));
699
+            }
700
+        }
701
+
702
+        $query .= "$s\n\t\t$k $v"
703
+            . (($autoinc && ($p == $k) && preg_match(',\b(big|small|medium)?int\b,i', $v))
704
+                ? " auto_increment"
705
+                : ''
706
+            );
707
+        $s = ",";
708
+    }
709
+    $temporary = $temporary ? 'TEMPORARY' : '';
710
+    $q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query" . ($keys ? ",$keys" : '') . ")"
711
+        . " ENGINE=MyISAM"
712
+        . ($character_set ? " DEFAULT $character_set" : "")
713
+        . "\n";
714
+
715
+    return spip_mysql_query($q, $serveur);
716 716
 }
717 717
 
718 718
 
@@ -725,25 +725,25 @@  discard block
 block discarded – undo
725 725
  *     Définition SQL adaptée pour MySQL d'un champ de table
726 726
  */
727 727
 function _mysql_remplacements_definitions_table($query) {
728
-	// quelques remplacements
729
-	$num = "(\s*\([0-9]*\))?";
730
-	$enum = "(\s*\([^\)]*\))?";
731
-
732
-	$remplace = array(
733
-		'/VARCHAR(\s*[^\s\(])/is' => 'VARCHAR(255)\\1',
734
-		'/^TIMESTAMP($| NULL DEFAULT NULL)/is' => 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
735
-	);
736
-
737
-	if (is_string($query)) {
738
-		$query = preg_replace(array_keys($remplace), $remplace, $query);
739
-	} elseif (is_array($query)) {
740
-		$keys = array_keys($remplace);
741
-		foreach ($query as $k => $q) {
742
-			$query[$k] = preg_replace($keys, $remplace, $q);
743
-		}
744
-	}
745
-
746
-	return $query;
728
+    // quelques remplacements
729
+    $num = "(\s*\([0-9]*\))?";
730
+    $enum = "(\s*\([^\)]*\))?";
731
+
732
+    $remplace = array(
733
+        '/VARCHAR(\s*[^\s\(])/is' => 'VARCHAR(255)\\1',
734
+        '/^TIMESTAMP($| NULL DEFAULT NULL)/is' => 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
735
+    );
736
+
737
+    if (is_string($query)) {
738
+        $query = preg_replace(array_keys($remplace), $remplace, $query);
739
+    } elseif (is_array($query)) {
740
+        $keys = array_keys($remplace);
741
+        foreach ($query as $k => $q) {
742
+            $query[$k] = preg_replace($keys, $remplace, $q);
743
+        }
744
+    }
745
+
746
+    return $query;
747 747
 }
748 748
 
749 749
 
@@ -756,7 +756,7 @@  discard block
 block discarded – undo
756 756
  * @return bool true si la base est créee.
757 757
  **/
758 758
 function spip_mysql_create_base($nom, $serveur = '', $requeter = true) {
759
-	return spip_mysql_query("CREATE DATABASE `$nom`", $serveur, $requeter);
759
+    return spip_mysql_query("CREATE DATABASE `$nom`", $serveur, $requeter);
760 760
 }
761 761
 
762 762
 
@@ -777,19 +777,19 @@  discard block
 block discarded – undo
777 777
  *     - string texte de la requête si $requeter vaut false
778 778
  */
779 779
 function spip_mysql_create_view($nom, $query_select, $serveur = '', $requeter = true) {
780
-	if (!$query_select) {
781
-		return false;
782
-	}
783
-	// vue deja presente
784
-	if (sql_showtable($nom, false, $serveur)) {
785
-		spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", _LOG_ERREUR);
780
+    if (!$query_select) {
781
+        return false;
782
+    }
783
+    // vue deja presente
784
+    if (sql_showtable($nom, false, $serveur)) {
785
+        spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", _LOG_ERREUR);
786 786
 
787
-		return false;
788
-	}
787
+        return false;
788
+    }
789 789
 
790
-	$query = "CREATE VIEW $nom AS " . $query_select;
790
+    $query = "CREATE VIEW $nom AS " . $query_select;
791 791
 
792
-	return spip_mysql_query($query, $serveur, $requeter);
792
+    return spip_mysql_query($query, $serveur, $requeter);
793 793
 }
794 794
 
795 795
 
@@ -805,11 +805,11 @@  discard block
 block discarded – undo
805 805
  *     - true si la requête a réussie, false sinon
806 806
  */
807 807
 function spip_mysql_drop_table($table, $exist = '', $serveur = '', $requeter = true) {
808
-	if ($exist) {
809
-		$exist = " IF EXISTS";
810
-	}
808
+    if ($exist) {
809
+        $exist = " IF EXISTS";
810
+    }
811 811
 
812
-	return spip_mysql_query("DROP TABLE$exist $table", $serveur, $requeter);
812
+    return spip_mysql_query("DROP TABLE$exist $table", $serveur, $requeter);
813 813
 }
814 814
 
815 815
 /**
@@ -824,11 +824,11 @@  discard block
 block discarded – undo
824 824
  *     - true si la requête a réussie, false sinon
825 825
  */
826 826
 function spip_mysql_drop_view($view, $exist = '', $serveur = '', $requeter = true) {
827
-	if ($exist) {
828
-		$exist = " IF EXISTS";
829
-	}
827
+    if ($exist) {
828
+        $exist = " IF EXISTS";
829
+    }
830 830
 
831
-	return spip_mysql_query("DROP VIEW$exist $view", $serveur, $requeter);
831
+    return spip_mysql_query("DROP VIEW$exist $view", $serveur, $requeter);
832 832
 }
833 833
 
834 834
 /**
@@ -845,7 +845,7 @@  discard block
 block discarded – undo
845 845
  *     Ressource à utiliser avec sql_fetch()
846 846
  **/
847 847
 function spip_mysql_showbase($match, $serveur = '', $requeter = true) {
848
-	return spip_mysql_query("SHOW TABLES LIKE " . _q($match), $serveur, $requeter);
848
+    return spip_mysql_query("SHOW TABLES LIKE " . _q($match), $serveur, $requeter);
849 849
 }
850 850
 
851 851
 /**
@@ -861,7 +861,7 @@  discard block
 block discarded – undo
861 861
  *     - true si la requête a réussie, false sinon
862 862
  */
863 863
 function spip_mysql_repair($table, $serveur = '', $requeter = true) {
864
-	return spip_mysql_query("REPAIR TABLE `$table`", $serveur, $requeter);
864
+    return spip_mysql_query("REPAIR TABLE `$table`", $serveur, $requeter);
865 865
 }
866 866
 
867 867
 
@@ -885,86 +885,86 @@  discard block
 block discarded – undo
885 885
  *     - array description de la table sinon
886 886
  */
887 887
 function spip_mysql_showtable($nom_table, $serveur = '', $requeter = true) {
888
-	$s = spip_mysql_query("SHOW CREATE TABLE `$nom_table`", $serveur, $requeter);
889
-	if (!$s) {
890
-		return '';
891
-	}
892
-	if (!$requeter) {
893
-		return $s;
894
-	}
895
-
896
-	list(, $a) = mysqli_fetch_array($s, MYSQLI_NUM);
897
-	if (preg_match(_MYSQL_RE_SHOW_TABLE, $a, $r)) {
898
-		$desc = $r[1];
899
-		// extraction d'une KEY éventuelle en prenant garde de ne pas
900
-		// relever un champ dont le nom contient KEY (ex. ID_WHISKEY)
901
-		if (preg_match("/^(.*?),([^,]*\sKEY[ (].*)$/s", $desc, $r)) {
902
-			$namedkeys = $r[2];
903
-			$desc = $r[1];
904
-		} else {
905
-			$namedkeys = "";
906
-		}
907
-
908
-		$fields = array();
909
-		foreach (preg_split("/,\s*`/", $desc) as $v) {
910
-			preg_match("/^\s*`?([^`]*)`\s*(.*)/", $v, $r);
911
-			$fields[strtolower($r[1])] = $r[2];
912
-		}
913
-		$keys = array();
914
-
915
-		foreach (preg_split('/\)\s*(,|$)/', $namedkeys) as $v) {
916
-			if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/", $v, $r)) {
917
-				$k = str_replace("`", '', trim($r[1]));
918
-				$t = strtolower(str_replace("`", '', $r[2]));
919
-				if ($k && !isset($keys[$k])) {
920
-					$keys[$k] = $t;
921
-				} else {
922
-					$keys[] = $t;
923
-				}
924
-			}
925
-		}
926
-		spip_mysql_free($s);
927
-
928
-		return array('field' => $fields, 'key' => $keys);
929
-	}
930
-
931
-	$res = spip_mysql_query("SHOW COLUMNS FROM `$nom_table`", $serveur);
932
-	if ($res) {
933
-		$nfields = array();
934
-		$nkeys = array();
935
-		while ($val = spip_mysql_fetch($res)) {
936
-			$nfields[$val["Field"]] = $val['Type'];
937
-			if ($val['Null'] == 'NO') {
938
-				$nfields[$val["Field"]] .= ' NOT NULL';
939
-			}
940
-			if ($val['Default'] === '0' || $val['Default']) {
941
-				if (preg_match('/[A-Z_]/', $val['Default'])) {
942
-					$nfields[$val["Field"]] .= ' DEFAULT ' . $val['Default'];
943
-				} else {
944
-					$nfields[$val["Field"]] .= " DEFAULT '" . $val['Default'] . "'";
945
-				}
946
-			}
947
-			if ($val['Extra']) {
948
-				$nfields[$val["Field"]] .= ' ' . $val['Extra'];
949
-			}
950
-			if ($val['Key'] == 'PRI') {
951
-				$nkeys['PRIMARY KEY'] = $val["Field"];
952
-			} else {
953
-				if ($val['Key'] == 'MUL') {
954
-					$nkeys['KEY ' . $val["Field"]] = $val["Field"];
955
-				} else {
956
-					if ($val['Key'] == 'UNI') {
957
-						$nkeys['UNIQUE KEY ' . $val["Field"]] = $val["Field"];
958
-					}
959
-				}
960
-			}
961
-		}
962
-		spip_mysql_free($res);
963
-
964
-		return array('field' => $nfields, 'key' => $nkeys);
965
-	}
966
-
967
-	return "";
888
+    $s = spip_mysql_query("SHOW CREATE TABLE `$nom_table`", $serveur, $requeter);
889
+    if (!$s) {
890
+        return '';
891
+    }
892
+    if (!$requeter) {
893
+        return $s;
894
+    }
895
+
896
+    list(, $a) = mysqli_fetch_array($s, MYSQLI_NUM);
897
+    if (preg_match(_MYSQL_RE_SHOW_TABLE, $a, $r)) {
898
+        $desc = $r[1];
899
+        // extraction d'une KEY éventuelle en prenant garde de ne pas
900
+        // relever un champ dont le nom contient KEY (ex. ID_WHISKEY)
901
+        if (preg_match("/^(.*?),([^,]*\sKEY[ (].*)$/s", $desc, $r)) {
902
+            $namedkeys = $r[2];
903
+            $desc = $r[1];
904
+        } else {
905
+            $namedkeys = "";
906
+        }
907
+
908
+        $fields = array();
909
+        foreach (preg_split("/,\s*`/", $desc) as $v) {
910
+            preg_match("/^\s*`?([^`]*)`\s*(.*)/", $v, $r);
911
+            $fields[strtolower($r[1])] = $r[2];
912
+        }
913
+        $keys = array();
914
+
915
+        foreach (preg_split('/\)\s*(,|$)/', $namedkeys) as $v) {
916
+            if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/", $v, $r)) {
917
+                $k = str_replace("`", '', trim($r[1]));
918
+                $t = strtolower(str_replace("`", '', $r[2]));
919
+                if ($k && !isset($keys[$k])) {
920
+                    $keys[$k] = $t;
921
+                } else {
922
+                    $keys[] = $t;
923
+                }
924
+            }
925
+        }
926
+        spip_mysql_free($s);
927
+
928
+        return array('field' => $fields, 'key' => $keys);
929
+    }
930
+
931
+    $res = spip_mysql_query("SHOW COLUMNS FROM `$nom_table`", $serveur);
932
+    if ($res) {
933
+        $nfields = array();
934
+        $nkeys = array();
935
+        while ($val = spip_mysql_fetch($res)) {
936
+            $nfields[$val["Field"]] = $val['Type'];
937
+            if ($val['Null'] == 'NO') {
938
+                $nfields[$val["Field"]] .= ' NOT NULL';
939
+            }
940
+            if ($val['Default'] === '0' || $val['Default']) {
941
+                if (preg_match('/[A-Z_]/', $val['Default'])) {
942
+                    $nfields[$val["Field"]] .= ' DEFAULT ' . $val['Default'];
943
+                } else {
944
+                    $nfields[$val["Field"]] .= " DEFAULT '" . $val['Default'] . "'";
945
+                }
946
+            }
947
+            if ($val['Extra']) {
948
+                $nfields[$val["Field"]] .= ' ' . $val['Extra'];
949
+            }
950
+            if ($val['Key'] == 'PRI') {
951
+                $nkeys['PRIMARY KEY'] = $val["Field"];
952
+            } else {
953
+                if ($val['Key'] == 'MUL') {
954
+                    $nkeys['KEY ' . $val["Field"]] = $val["Field"];
955
+                } else {
956
+                    if ($val['Key'] == 'UNI') {
957
+                        $nkeys['UNIQUE KEY ' . $val["Field"]] = $val["Field"];
958
+                    }
959
+                }
960
+            }
961
+        }
962
+        spip_mysql_free($res);
963
+
964
+        return array('field' => $nfields, 'key' => $nkeys);
965
+    }
966
+
967
+    return "";
968 968
 }
969 969
 
970 970
 
@@ -980,12 +980,12 @@  discard block
 block discarded – undo
980 980
  * @return array           Ligne de résultat
981 981
  */
982 982
 function spip_mysql_fetch($r, $t = '', $serveur = '', $requeter = true) {
983
-	if (!$t) {
984
-		$t = MYSQLI_ASSOC;
985
-	}
986
-	if ($r) {
987
-		return mysqli_fetch_array($r, $t);
988
-	}
983
+    if (!$t) {
984
+        $t = MYSQLI_ASSOC;
985
+    }
986
+    if ($r) {
987
+        return mysqli_fetch_array($r, $t);
988
+    }
989 989
 }
990 990
 
991 991
 /**
@@ -998,9 +998,9 @@  discard block
 block discarded – undo
998 998
  * @return bool True si déplacement réussi, false sinon.
999 999
  **/
1000 1000
 function spip_mysql_seek($r, $row_number, $serveur = '', $requeter = true) {
1001
-	if ($r and mysqli_num_rows($r)) {
1002
-		return mysqli_data_seek($r, $row_number);
1003
-	}
1001
+    if ($r and mysqli_num_rows($r)) {
1002
+        return mysqli_data_seek($r, $row_number);
1003
+    }
1004 1004
 }
1005 1005
 
1006 1006
 
@@ -1018,26 +1018,26 @@  discard block
 block discarded – undo
1018 1018
  *     - int Nombre de lignes (0 si la requête n'a pas réussie)
1019 1019
  **/
1020 1020
 function spip_mysql_countsel(
1021
-	$from = array(),
1022
-	$where = array(),
1023
-	$groupby = '',
1024
-	$having = array(),
1025
-	$serveur = '',
1026
-	$requeter = true
1021
+    $from = array(),
1022
+    $where = array(),
1023
+    $groupby = '',
1024
+    $having = array(),
1025
+    $serveur = '',
1026
+    $requeter = true
1027 1027
 ) {
1028
-	$c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby)));
1029
-
1030
-	$r = spip_mysql_select("COUNT($c)", $from, $where, '', '', '', $having, $serveur, $requeter);
1031
-	if (!$requeter) {
1032
-		return $r;
1033
-	}
1034
-	if (!$r instanceof mysqli_result) {
1035
-		return 0;
1036
-	}
1037
-	list($c) = mysqli_fetch_array($r, MYSQLI_NUM);
1038
-	mysqli_free_result($r);
1039
-
1040
-	return $c;
1028
+    $c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby)));
1029
+
1030
+    $r = spip_mysql_select("COUNT($c)", $from, $where, '', '', '', $having, $serveur, $requeter);
1031
+    if (!$requeter) {
1032
+        return $r;
1033
+    }
1034
+    if (!$r instanceof mysqli_result) {
1035
+        return 0;
1036
+    }
1037
+    list($c) = mysqli_fetch_array($r, MYSQLI_NUM);
1038
+    mysqli_free_result($r);
1039
+
1040
+    return $c;
1041 1041
 }
1042 1042
 
1043 1043
 
@@ -1060,16 +1060,16 @@  discard block
 block discarded – undo
1060 1060
  *     Erreur eventuelle
1061 1061
  **/
1062 1062
 function spip_mysql_error($query = '', $serveur = '', $requeter = true) {
1063
-	$link = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]['link'];
1064
-	$s = mysqli_error($link);
1065
-	if ($s) {
1066
-		$trace = debug_backtrace();
1067
-		if ($trace[0]['function'] != "spip_mysql_error") {
1068
-			spip_log("$s - $query - " . sql_error_backtrace(), 'mysql.' . _LOG_ERREUR);
1069
-		}
1070
-	}
1071
-
1072
-	return $s;
1063
+    $link = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]['link'];
1064
+    $s = mysqli_error($link);
1065
+    if ($s) {
1066
+        $trace = debug_backtrace();
1067
+        if ($trace[0]['function'] != "spip_mysql_error") {
1068
+            spip_log("$s - $query - " . sql_error_backtrace(), 'mysql.' . _LOG_ERREUR);
1069
+        }
1070
+    }
1071
+
1072
+    return $s;
1073 1073
 }
1074 1074
 
1075 1075
 
@@ -1084,18 +1084,18 @@  discard block
 block discarded – undo
1084 1084
  *     0, pas d'erreur. Autre, numéro de l'erreur.
1085 1085
  **/
1086 1086
 function spip_mysql_errno($serveur = '', $requeter = true) {
1087
-	$link = $GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
1088
-	$s = mysqli_errno($link);
1089
-	// 2006 MySQL server has gone away
1090
-	// 2013 Lost connection to MySQL server during query
1091
-	if (in_array($s, array(2006, 2013))) {
1092
-		define('spip_interdire_cache', true);
1093
-	}
1094
-	if ($s) {
1095
-		spip_log("Erreur mysql $s", _LOG_ERREUR);
1096
-	}
1097
-
1098
-	return $s;
1087
+    $link = $GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
1088
+    $s = mysqli_errno($link);
1089
+    // 2006 MySQL server has gone away
1090
+    // 2013 Lost connection to MySQL server during query
1091
+    if (in_array($s, array(2006, 2013))) {
1092
+        define('spip_interdire_cache', true);
1093
+    }
1094
+    if ($s) {
1095
+        spip_log("Erreur mysql $s", _LOG_ERREUR);
1096
+    }
1097
+
1098
+    return $s;
1099 1099
 }
1100 1100
 
1101 1101
 
@@ -1109,9 +1109,9 @@  discard block
 block discarded – undo
1109 1109
  * @return int               Nombre de lignes
1110 1110
  */
1111 1111
 function spip_mysql_count($r, $serveur = '', $requeter = true) {
1112
-	if ($r) {
1113
-		return mysqli_num_rows($r);
1114
-	}
1112
+    if ($r) {
1113
+        return mysqli_num_rows($r);
1114
+    }
1115 1115
 }
1116 1116
 
1117 1117
 
@@ -1127,7 +1127,7 @@  discard block
 block discarded – undo
1127 1127
  * @return bool              True si réussi
1128 1128
  */
1129 1129
 function spip_mysql_free($r, $serveur = '', $requeter = true) {
1130
-	return (($r instanceof mysqli_result) ? mysqli_free_result($r) : false);
1130
+    return (($r instanceof mysqli_result) ? mysqli_free_result($r) : false);
1131 1131
 }
1132 1132
 
1133 1133
 
@@ -1155,47 +1155,47 @@  discard block
 block discarded – undo
1155 1155
  **/
1156 1156
 function spip_mysql_insert($table, $champs, $valeurs, $desc = array(), $serveur = '', $requeter = true) {
1157 1157
 
1158
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
1159
-	$link = $connexion['link'];
1160
-	$table = prefixer_table_spip($table, $connexion['prefixe']);
1161
-
1162
-	// remplacer les emoji (que mysql ne sait pas gérer) en 💩
1163
-	if (defined('_MYSQL_NOPLANES')
1164
-		and _MYSQL_NOPLANES
1165
-		and !empty($GLOBALS['meta']['charset_sql_connexion'])
1166
-		and $GLOBALS['meta']['charset_sql_connexion'] == 'utf8') {
1167
-		include_spip('inc/charsets');
1168
-		$valeurs = utf8_noplanes($valeurs);
1169
-	}
1170
-
1171
-	$query = "INSERT INTO $table $champs VALUES $valeurs";
1172
-	if (!$requeter) {
1173
-		return $query;
1174
-	}
1175
-
1176
-	if (isset($_GET['var_profile'])) {
1177
-		include_spip('public/tracer');
1178
-		$t = trace_query_start();
1179
-		$e = '';
1180
-	} else {
1181
-		$t = 0;
1182
-	}
1183
-
1184
-	$connexion['last'] = $query;
1185
-	#spip_log($query, 'mysql.'._LOG_DEBUG);
1186
-	$r = false;
1187
-	if (mysqli_query($link, $query)) {
1188
-		$r = mysqli_insert_id($link);
1189
-	} else {
1190
-		// Log de l'erreur eventuelle
1191
-		if ($e = spip_mysql_errno($serveur)) {
1192
-			$e .= spip_mysql_error($query, $serveur);
1193
-		} // et du fautif
1194
-	}
1195
-
1196
-	return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
1197
-
1198
-	// return $r ? $r : (($r===0) ? -1 : 0); pb avec le multi-base.
1158
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
1159
+    $link = $connexion['link'];
1160
+    $table = prefixer_table_spip($table, $connexion['prefixe']);
1161
+
1162
+    // remplacer les emoji (que mysql ne sait pas gérer) en 💩
1163
+    if (defined('_MYSQL_NOPLANES')
1164
+        and _MYSQL_NOPLANES
1165
+        and !empty($GLOBALS['meta']['charset_sql_connexion'])
1166
+        and $GLOBALS['meta']['charset_sql_connexion'] == 'utf8') {
1167
+        include_spip('inc/charsets');
1168
+        $valeurs = utf8_noplanes($valeurs);
1169
+    }
1170
+
1171
+    $query = "INSERT INTO $table $champs VALUES $valeurs";
1172
+    if (!$requeter) {
1173
+        return $query;
1174
+    }
1175
+
1176
+    if (isset($_GET['var_profile'])) {
1177
+        include_spip('public/tracer');
1178
+        $t = trace_query_start();
1179
+        $e = '';
1180
+    } else {
1181
+        $t = 0;
1182
+    }
1183
+
1184
+    $connexion['last'] = $query;
1185
+    #spip_log($query, 'mysql.'._LOG_DEBUG);
1186
+    $r = false;
1187
+    if (mysqli_query($link, $query)) {
1188
+        $r = mysqli_insert_id($link);
1189
+    } else {
1190
+        // Log de l'erreur eventuelle
1191
+        if ($e = spip_mysql_errno($serveur)) {
1192
+            $e .= spip_mysql_error($query, $serveur);
1193
+        } // et du fautif
1194
+    }
1195
+
1196
+    return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
1197
+
1198
+    // return $r ? $r : (($r===0) ? -1 : 0); pb avec le multi-base.
1199 1199
 }
1200 1200
 
1201 1201
 /**
@@ -1220,20 +1220,20 @@  discard block
 block discarded – undo
1220 1220
  **/
1221 1221
 function spip_mysql_insertq($table, $couples = array(), $desc = array(), $serveur = '', $requeter = true) {
1222 1222
 
1223
-	if (!$desc) {
1224
-		$desc = description_table($table, $serveur);
1225
-	}
1226
-	if (!$desc) {
1227
-		$couples = array();
1228
-	}
1229
-	$fields = isset($desc['field']) ? $desc['field'] : array();
1223
+    if (!$desc) {
1224
+        $desc = description_table($table, $serveur);
1225
+    }
1226
+    if (!$desc) {
1227
+        $couples = array();
1228
+    }
1229
+    $fields = isset($desc['field']) ? $desc['field'] : array();
1230 1230
 
1231
-	foreach ($couples as $champ => $val) {
1232
-		$couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1233
-	}
1231
+    foreach ($couples as $champ => $val) {
1232
+        $couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1233
+    }
1234 1234
 
1235
-	return spip_mysql_insert($table, "(" . join(',', array_keys($couples)) . ")", "(" . join(',', $couples) . ")", $desc,
1236
-		$serveur, $requeter);
1235
+    return spip_mysql_insert($table, "(" . join(',', array_keys($couples)) . ")", "(" . join(',', $couples) . ")", $desc,
1236
+        $serveur, $requeter);
1237 1237
 }
1238 1238
 
1239 1239
 
@@ -1258,34 +1258,34 @@  discard block
 block discarded – undo
1258 1258
  **/
1259 1259
 function spip_mysql_insertq_multi($table, $tab_couples = array(), $desc = array(), $serveur = '', $requeter = true) {
1260 1260
 
1261
-	if (!$desc) {
1262
-		$desc = description_table($table, $serveur);
1263
-	}
1264
-	if (!$desc) {
1265
-		$tab_couples = array();
1266
-	}
1267
-	$fields = isset($desc['field']) ? $desc['field'] : array();
1268
-
1269
-	$cles = "(" . join(',', array_keys(reset($tab_couples))) . ')';
1270
-	$valeurs = array();
1271
-	$r = false;
1272
-
1273
-	// Quoter et Inserer par groupes de 100 max pour eviter un debordement de pile
1274
-	foreach ($tab_couples as $couples) {
1275
-		foreach ($couples as $champ => $val) {
1276
-			$couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1277
-		}
1278
-		$valeurs[] = '(' . join(',', $couples) . ')';
1279
-		if (count($valeurs) >= 100) {
1280
-			$r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1281
-			$valeurs = array();
1282
-		}
1283
-	}
1284
-	if (count($valeurs)) {
1285
-		$r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1286
-	}
1287
-
1288
-	return $r; // dans le cas d'une table auto_increment, le dernier insert_id
1261
+    if (!$desc) {
1262
+        $desc = description_table($table, $serveur);
1263
+    }
1264
+    if (!$desc) {
1265
+        $tab_couples = array();
1266
+    }
1267
+    $fields = isset($desc['field']) ? $desc['field'] : array();
1268
+
1269
+    $cles = "(" . join(',', array_keys(reset($tab_couples))) . ')';
1270
+    $valeurs = array();
1271
+    $r = false;
1272
+
1273
+    // Quoter et Inserer par groupes de 100 max pour eviter un debordement de pile
1274
+    foreach ($tab_couples as $couples) {
1275
+        foreach ($couples as $champ => $val) {
1276
+            $couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1277
+        }
1278
+        $valeurs[] = '(' . join(',', $couples) . ')';
1279
+        if (count($valeurs) >= 100) {
1280
+            $r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1281
+            $valeurs = array();
1282
+        }
1283
+    }
1284
+    if (count($valeurs)) {
1285
+        $r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1286
+    }
1287
+
1288
+    return $r; // dans le cas d'une table auto_increment, le dernier insert_id
1289 1289
 }
1290 1290
 
1291 1291
 /**
@@ -1310,17 +1310,17 @@  discard block
 block discarded – undo
1310 1310
  *     - array Tableau décrivant la requête et son temps d'exécution si var_profile est actif
1311 1311
  */
1312 1312
 function spip_mysql_update($table, $champs, $where = '', $desc = array(), $serveur = '', $requeter = true) {
1313
-	$set = array();
1314
-	foreach ($champs as $champ => $val) {
1315
-		$set[] = $champ . "=$val";
1316
-	}
1317
-	if (!empty($set)) {
1318
-		return spip_mysql_query(
1319
-			calculer_mysql_expression('UPDATE', $table, ',')
1320
-			. calculer_mysql_expression('SET', $set, ',')
1321
-			. calculer_mysql_expression('WHERE', $where),
1322
-			$serveur, $requeter);
1323
-	}
1313
+    $set = array();
1314
+    foreach ($champs as $champ => $val) {
1315
+        $set[] = $champ . "=$val";
1316
+    }
1317
+    if (!empty($set)) {
1318
+        return spip_mysql_query(
1319
+            calculer_mysql_expression('UPDATE', $table, ',')
1320
+            . calculer_mysql_expression('SET', $set, ',')
1321
+            . calculer_mysql_expression('WHERE', $where),
1322
+            $serveur, $requeter);
1323
+    }
1324 1324
 }
1325 1325
 
1326 1326
 /**
@@ -1353,27 +1353,27 @@  discard block
 block discarded – undo
1353 1353
  */
1354 1354
 function spip_mysql_updateq($table, $champs, $where = '', $desc = array(), $serveur = '', $requeter = true) {
1355 1355
 
1356
-	if (!$champs) {
1357
-		return;
1358
-	}
1359
-	if (!$desc) {
1360
-		$desc = description_table($table, $serveur);
1361
-	}
1362
-	if (!$desc) {
1363
-		$champs = array();
1364
-	} else {
1365
-		$fields = $desc['field'];
1366
-	}
1367
-	$set = array();
1368
-	foreach ($champs as $champ => $val) {
1369
-		$set[] = $champ . '=' . spip_mysql_cite($val, @$fields[$champ]);
1370
-	}
1371
-
1372
-	return spip_mysql_query(
1373
-		calculer_mysql_expression('UPDATE', $table, ',')
1374
-		. calculer_mysql_expression('SET', $set, ',')
1375
-		. calculer_mysql_expression('WHERE', $where),
1376
-		$serveur, $requeter);
1356
+    if (!$champs) {
1357
+        return;
1358
+    }
1359
+    if (!$desc) {
1360
+        $desc = description_table($table, $serveur);
1361
+    }
1362
+    if (!$desc) {
1363
+        $champs = array();
1364
+    } else {
1365
+        $fields = $desc['field'];
1366
+    }
1367
+    $set = array();
1368
+    foreach ($champs as $champ => $val) {
1369
+        $set[] = $champ . '=' . spip_mysql_cite($val, @$fields[$champ]);
1370
+    }
1371
+
1372
+    return spip_mysql_query(
1373
+        calculer_mysql_expression('UPDATE', $table, ',')
1374
+        . calculer_mysql_expression('SET', $set, ',')
1375
+        . calculer_mysql_expression('WHERE', $where),
1376
+        $serveur, $requeter);
1377 1377
 }
1378 1378
 
1379 1379
 /**
@@ -1389,20 +1389,20 @@  discard block
 block discarded – undo
1389 1389
  *     - False en cas d'erreur.
1390 1390
  **/
1391 1391
 function spip_mysql_delete($table, $where = '', $serveur = '', $requeter = true) {
1392
-	$res = spip_mysql_query(
1393
-		calculer_mysql_expression('DELETE FROM', $table, ',')
1394
-		. calculer_mysql_expression('WHERE', $where),
1395
-		$serveur, $requeter);
1396
-	if (!$requeter) {
1397
-		return $res;
1398
-	}
1399
-	if ($res) {
1400
-		$link = _mysql_link($serveur);
1401
-
1402
-		return mysqli_affected_rows($link);
1403
-	} else {
1404
-		return false;
1405
-	}
1392
+    $res = spip_mysql_query(
1393
+        calculer_mysql_expression('DELETE FROM', $table, ',')
1394
+        . calculer_mysql_expression('WHERE', $where),
1395
+        $serveur, $requeter);
1396
+    if (!$requeter) {
1397
+        return $res;
1398
+    }
1399
+    if ($res) {
1400
+        $link = _mysql_link($serveur);
1401
+
1402
+        return mysqli_affected_rows($link);
1403
+    } else {
1404
+        return false;
1405
+    }
1406 1406
 }
1407 1407
 
1408 1408
 
@@ -1431,8 +1431,8 @@  discard block
 block discarded – undo
1431 1431
  *     - False en cas d'erreur.
1432 1432
  **/
1433 1433
 function spip_mysql_replace($table, $couples, $desc = array(), $serveur = '', $requeter = true) {
1434
-	return spip_mysql_query("REPLACE $table (" . join(',', array_keys($couples)) . ') VALUES (' . join(',',
1435
-			array_map('_q', $couples)) . ')', $serveur, $requeter);
1434
+    return spip_mysql_query("REPLACE $table (" . join(',', array_keys($couples)) . ') VALUES (' . join(',',
1435
+            array_map('_q', $couples)) . ')', $serveur, $requeter);
1436 1436
 }
1437 1437
 
1438 1438
 
@@ -1461,14 +1461,14 @@  discard block
 block discarded – undo
1461 1461
  *     - False en cas d'erreur.
1462 1462
  **/
1463 1463
 function spip_mysql_replace_multi($table, $tab_couples, $desc = array(), $serveur = '', $requeter = true) {
1464
-	$cles = "(" . join(',', array_keys($tab_couples[0])) . ')';
1465
-	$valeurs = array();
1466
-	foreach ($tab_couples as $couples) {
1467
-		$valeurs[] = '(' . join(',', array_map('_q', $couples)) . ')';
1468
-	}
1469
-	$valeurs = implode(', ', $valeurs);
1470
-
1471
-	return spip_mysql_query("REPLACE $table $cles VALUES $valeurs", $serveur, $requeter);
1464
+    $cles = "(" . join(',', array_keys($tab_couples[0])) . ')';
1465
+    $valeurs = array();
1466
+    foreach ($tab_couples as $couples) {
1467
+        $valeurs[] = '(' . join(',', array_map('_q', $couples)) . ')';
1468
+    }
1469
+    $valeurs = implode(', ', $valeurs);
1470
+
1471
+    return spip_mysql_query("REPLACE $table $cles VALUES $valeurs", $serveur, $requeter);
1472 1472
 }
1473 1473
 
1474 1474
 
@@ -1483,32 +1483,32 @@  discard block
 block discarded – undo
1483 1483
  * @return string       Texte de sélection pour la requête
1484 1484
  */
1485 1485
 function spip_mysql_multi($objet, $lang) {
1486
-	$lengthlang = strlen("[$lang]");
1487
-	$posmulti = "INSTR(" . $objet . ", '<multi>')";
1488
-	$posfinmulti = "INSTR(" . $objet . ", '</multi>')";
1489
-	$debutchaine = "LEFT(" . $objet . ", $posmulti-1)";
1490
-	$finchaine = "RIGHT(" . $objet . ", CHAR_LENGTH(" . $objet . ") -(7+$posfinmulti))";
1491
-	$chainemulti = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7, $posfinmulti -(7+$posmulti)))";
1492
-	$poslang = "INSTR($chainemulti,'[" . $lang . "]')";
1493
-	$poslang = "IF($poslang=0,INSTR($chainemulti,']')+1,$poslang+$lengthlang)";
1494
-	$chainelang = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))";
1495
-	$posfinlang = "INSTR(" . $chainelang . ", '[')";
1496
-	$chainelang = "IF($posfinlang>0,LEFT($chainelang,$posfinlang-1),$chainelang)";
1497
-	//$chainelang = "LEFT($chainelang,$posfinlang-1)";
1498
-	$retour = "(TRIM(IF($posmulti = 0 , " .
1499
-		"     TRIM(" . $objet . "), " .
1500
-		"     CONCAT( " .
1501
-		"          $debutchaine, " .
1502
-		"          IF( " .
1503
-		"               $poslang = 0, " .
1504
-		"                     $chainemulti, " .
1505
-		"               $chainelang" .
1506
-		"          ), " .
1507
-		"          $finchaine" .
1508
-		"     ) " .
1509
-		"))) AS multi";
1510
-
1511
-	return $retour;
1486
+    $lengthlang = strlen("[$lang]");
1487
+    $posmulti = "INSTR(" . $objet . ", '<multi>')";
1488
+    $posfinmulti = "INSTR(" . $objet . ", '</multi>')";
1489
+    $debutchaine = "LEFT(" . $objet . ", $posmulti-1)";
1490
+    $finchaine = "RIGHT(" . $objet . ", CHAR_LENGTH(" . $objet . ") -(7+$posfinmulti))";
1491
+    $chainemulti = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7, $posfinmulti -(7+$posmulti)))";
1492
+    $poslang = "INSTR($chainemulti,'[" . $lang . "]')";
1493
+    $poslang = "IF($poslang=0,INSTR($chainemulti,']')+1,$poslang+$lengthlang)";
1494
+    $chainelang = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))";
1495
+    $posfinlang = "INSTR(" . $chainelang . ", '[')";
1496
+    $chainelang = "IF($posfinlang>0,LEFT($chainelang,$posfinlang-1),$chainelang)";
1497
+    //$chainelang = "LEFT($chainelang,$posfinlang-1)";
1498
+    $retour = "(TRIM(IF($posmulti = 0 , " .
1499
+        "     TRIM(" . $objet . "), " .
1500
+        "     CONCAT( " .
1501
+        "          $debutchaine, " .
1502
+        "          IF( " .
1503
+        "               $poslang = 0, " .
1504
+        "                     $chainemulti, " .
1505
+        "               $chainelang" .
1506
+        "          ), " .
1507
+        "          $finchaine" .
1508
+        "     ) " .
1509
+        "))) AS multi";
1510
+
1511
+    return $retour;
1512 1512
 }
1513 1513
 
1514 1514
 /**
@@ -1522,7 +1522,7 @@  discard block
 block discarded – undo
1522 1522
  *     Valeur hexadécimale pour MySQL
1523 1523
  **/
1524 1524
 function spip_mysql_hex($v) {
1525
-	return "0x" . $v;
1525
+    return "0x" . $v;
1526 1526
 }
1527 1527
 
1528 1528
 /**
@@ -1538,15 +1538,15 @@  discard block
 block discarded – undo
1538 1538
  *    Donnée prête à être utilisée par le gestionnaire SQL
1539 1539
  */
1540 1540
 function spip_mysql_quote($v, $type = '') {
1541
-	if (!is_array($v)) {
1542
-		return spip_mysql_cite($v, $type);
1543
-	}
1544
-
1545
-	// si c'est un tableau, le parcourir en propageant le type
1546
-	foreach ($v as $k => $r) {
1547
-		$v[$k] = spip_mysql_quote($r, $type);
1548
-	}
1549
-	return implode(',', $v);
1541
+    if (!is_array($v)) {
1542
+        return spip_mysql_cite($v, $type);
1543
+    }
1544
+
1545
+    // si c'est un tableau, le parcourir en propageant le type
1546
+    foreach ($v as $k => $r) {
1547
+        $v[$k] = spip_mysql_quote($r, $type);
1548
+    }
1549
+    return implode(',', $v);
1550 1550
 }
1551 1551
 
1552 1552
 /**
@@ -1562,18 +1562,18 @@  discard block
 block discarded – undo
1562 1562
  *     Expression SQL
1563 1563
  **/
1564 1564
 function spip_mysql_date_proche($champ, $interval, $unite) {
1565
-	$use_now = ( ($champ === 'maj' or strpos($champ, '.maj')) ? true : false );
1566
-	return '('
1567
-	. $champ
1568
-	. (($interval <= 0) ? '>' : '<')
1569
-	. (($interval <= 0) ? 'DATE_SUB' : 'DATE_ADD')
1570
-	. '('
1571
-	. ($use_now ? 'NOW()' : sql_quote(date('Y-m-d H:i:s')))
1572
-	. ', INTERVAL '
1573
-	. (($interval > 0) ? $interval : (0 - $interval))
1574
-	. ' '
1575
-	. $unite
1576
-	. '))';
1565
+    $use_now = ( ($champ === 'maj' or strpos($champ, '.maj')) ? true : false );
1566
+    return '('
1567
+    . $champ
1568
+    . (($interval <= 0) ? '>' : '<')
1569
+    . (($interval <= 0) ? 'DATE_SUB' : 'DATE_ADD')
1570
+    . '('
1571
+    . ($use_now ? 'NOW()' : sql_quote(date('Y-m-d H:i:s')))
1572
+    . ', INTERVAL '
1573
+    . (($interval > 0) ? $interval : (0 - $interval))
1574
+    . ' '
1575
+    . $unite
1576
+    . '))';
1577 1577
 }
1578 1578
 
1579 1579
 
@@ -1597,7 +1597,7 @@  discard block
 block discarded – undo
1597 1597
  *     Expression de requête SQL
1598 1598
  **/
1599 1599
 function spip_mysql_in($val, $valeurs, $not = '', $serveur = '', $requeter = true) {
1600
-	return "($val $not IN ($valeurs))";
1600
+    return "($val $not IN ($valeurs))";
1601 1601
 }
1602 1602
 
1603 1603
 
@@ -1609,33 +1609,33 @@  discard block
 block discarded – undo
1609 1609
  * @return string|number     Texte ou nombre échappé
1610 1610
  */
1611 1611
 function spip_mysql_cite($v, $type) {
1612
-	if (!$type) {
1613
-		if (is_numeric($v)) {
1614
-			return strval($v);
1615
-		}
1616
-		return "'" . addslashes($v) . "'";
1617
-	}
1618
-
1619
-	if (is_null($v)
1620
-		and stripos($type, "NOT NULL") === false
1621
-	) {
1622
-		return 'NULL';
1623
-	} // null php se traduit en NULL SQL
1624
-	if (sql_test_date($type) and preg_match('/^\w+\(/', $v)) {
1625
-		return $v;
1626
-	}
1627
-	if (sql_test_int($type)) {
1628
-		if (is_numeric($v) or (ctype_xdigit(substr($v, 2))
1629
-				and $v[0] == '0' and $v[1] == 'x')
1630
-		) {
1631
-			return $v;
1632
-		} // si pas numerique, forcer le intval
1633
-		else {
1634
-			return intval($v);
1635
-		}
1636
-	}
1637
-
1638
-	return ("'" . addslashes($v) . "'");
1612
+    if (!$type) {
1613
+        if (is_numeric($v)) {
1614
+            return strval($v);
1615
+        }
1616
+        return "'" . addslashes($v) . "'";
1617
+    }
1618
+
1619
+    if (is_null($v)
1620
+        and stripos($type, "NOT NULL") === false
1621
+    ) {
1622
+        return 'NULL';
1623
+    } // null php se traduit en NULL SQL
1624
+    if (sql_test_date($type) and preg_match('/^\w+\(/', $v)) {
1625
+        return $v;
1626
+    }
1627
+    if (sql_test_int($type)) {
1628
+        if (is_numeric($v) or (ctype_xdigit(substr($v, 2))
1629
+                and $v[0] == '0' and $v[1] == 'x')
1630
+        ) {
1631
+            return $v;
1632
+        } // si pas numerique, forcer le intval
1633
+        else {
1634
+            return intval($v);
1635
+        }
1636
+    }
1637
+
1638
+    return ("'" . addslashes($v) . "'");
1639 1639
 }
1640 1640
 
1641 1641
 
@@ -1659,21 +1659,21 @@  discard block
 block discarded – undo
1659 1659
  */
1660 1660
 function spip_get_lock($nom, $timeout = 0) {
1661 1661
 
1662
-	define('_LOCK_TIME', intval(time() / 3600 - 316982));
1662
+    define('_LOCK_TIME', intval(time() / 3600 - 316982));
1663 1663
 
1664
-	$connexion = &$GLOBALS['connexions'][0];
1665
-	$bd = $connexion['db'];
1666
-	$prefixe = $connexion['prefixe'];
1667
-	$nom = "$bd:$prefixe:$nom" . _LOCK_TIME;
1664
+    $connexion = &$GLOBALS['connexions'][0];
1665
+    $bd = $connexion['db'];
1666
+    $prefixe = $connexion['prefixe'];
1667
+    $nom = "$bd:$prefixe:$nom" . _LOCK_TIME;
1668 1668
 
1669
-	$connexion['last'] = $q = "SELECT GET_LOCK(" . _q($nom) . ", $timeout) AS n";
1669
+    $connexion['last'] = $q = "SELECT GET_LOCK(" . _q($nom) . ", $timeout) AS n";
1670 1670
 
1671
-	$q = @sql_fetch(mysqli_query(_mysql_link(), $q));
1672
-	if (!$q) {
1673
-		spip_log("pas de lock sql pour $nom", _LOG_ERREUR);
1674
-	}
1671
+    $q = @sql_fetch(mysqli_query(_mysql_link(), $q));
1672
+    if (!$q) {
1673
+        spip_log("pas de lock sql pour $nom", _LOG_ERREUR);
1674
+    }
1675 1675
 
1676
-	return $q['n'];
1676
+    return $q['n'];
1677 1677
 }
1678 1678
 
1679 1679
 
@@ -1690,13 +1690,13 @@  discard block
 block discarded – undo
1690 1690
  */
1691 1691
 function spip_release_lock($nom) {
1692 1692
 
1693
-	$connexion = &$GLOBALS['connexions'][0];
1694
-	$bd = $connexion['db'];
1695
-	$prefixe = $connexion['prefixe'];
1696
-	$nom = "$bd:$prefixe:$nom" . _LOCK_TIME;
1693
+    $connexion = &$GLOBALS['connexions'][0];
1694
+    $bd = $connexion['db'];
1695
+    $prefixe = $connexion['prefixe'];
1696
+    $nom = "$bd:$prefixe:$nom" . _LOCK_TIME;
1697 1697
 
1698
-	$connexion['last'] = $q = "SELECT RELEASE_LOCK(" . _q($nom) . ")";
1699
-	mysqli_query(_mysql_link(), $q);
1698
+    $connexion['last'] = $q = "SELECT RELEASE_LOCK(" . _q($nom) . ")";
1699
+    mysqli_query(_mysql_link(), $q);
1700 1700
 }
1701 1701
 
1702 1702
 
@@ -1707,7 +1707,7 @@  discard block
 block discarded – undo
1707 1707
  *     True si on a les fonctions, false sinon
1708 1708
  */
1709 1709
 function spip_versions_mysql() {
1710
-	return function_exists('mysqli_query');
1710
+    return function_exists('mysqli_query');
1711 1711
 }
1712 1712
 
1713 1713
 
@@ -1720,20 +1720,20 @@  discard block
 block discarded – undo
1720 1720
  *     - chaîne : code compilé pour le faire désactiver par SPIP sinon
1721 1721
  */
1722 1722
 function test_rappel_nom_base_mysql($server_db) {
1723
-	$GLOBALS['mysql_rappel_nom_base'] = true;
1724
-	sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1725
-	$ok = spip_query("INSERT INTO spip_meta (nom,valeur) VALUES ('mysql_rappel_nom_base', 'test')", $server_db);
1723
+    $GLOBALS['mysql_rappel_nom_base'] = true;
1724
+    sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1725
+    $ok = spip_query("INSERT INTO spip_meta (nom,valeur) VALUES ('mysql_rappel_nom_base', 'test')", $server_db);
1726 1726
 
1727
-	if ($ok) {
1728
-		sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1727
+    if ($ok) {
1728
+        sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1729 1729
 
1730
-		return '';
1731
-	} else {
1732
-		$GLOBALS['mysql_rappel_nom_base'] = false;
1730
+        return '';
1731
+    } else {
1732
+        $GLOBALS['mysql_rappel_nom_base'] = false;
1733 1733
 
1734
-		return "\$GLOBALS['mysql_rappel_nom_base'] = false; " .
1735
-		"/* echec de test_rappel_nom_base_mysql a l'installation. */\n";
1736
-	}
1734
+        return "\$GLOBALS['mysql_rappel_nom_base'] = false; " .
1735
+        "/* echec de test_rappel_nom_base_mysql a l'installation. */\n";
1736
+    }
1737 1737
 }
1738 1738
 
1739 1739
 /**
@@ -1747,13 +1747,13 @@  discard block
 block discarded – undo
1747 1747
  *     - chaîne : code compilé pour l'indiquer le résultat du test à SPIP
1748 1748
  */
1749 1749
 function test_sql_mode_mysql($server_db) {
1750
-	$res = sql_select("version() as v", '', '', '', '', '', '', $server_db);
1751
-	$row = sql_fetch($res, $server_db);
1752
-	if (version_compare($row['v'], '5.0.0', '>=')) {
1753
-		defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE', true);
1750
+    $res = sql_select("version() as v", '', '', '', '', '', '', $server_db);
1751
+    $row = sql_fetch($res, $server_db);
1752
+    if (version_compare($row['v'], '5.0.0', '>=')) {
1753
+        defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE', true);
1754 1754
 
1755
-		return "defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE',true);\n";
1756
-	}
1755
+        return "defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE',true);\n";
1756
+    }
1757 1757
 
1758
-	return '';
1758
+    return '';
1759 1759
 }
Please login to merge, or discard this patch.
Spacing   +77 added lines, -77 removed lines patch added patch discarded remove patch
@@ -48,7 +48,7 @@  discard block
 block discarded – undo
48 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 49
 	if (
50 50
 		$port and !is_numeric($socket = $port)
51
-		and (!$host or $host=='localhost')) {
51
+		and (!$host or $host == 'localhost')) {
52 52
 		$link = @mysqli_connect($host, $login, $pass, '', null, $socket);
53 53
 	}
54 54
 	elseif ($port) {
@@ -59,7 +59,7 @@  discard block
 block discarded – undo
59 59
 	}
60 60
 
61 61
 	if (!$link) {
62
-		spip_log('Echec mysqli_connect. Erreur : ' . mysqli_connect_error(), 'mysql.' . _LOG_HS);
62
+		spip_log('Echec mysqli_connect. Erreur : '.mysqli_connect_error(), 'mysql.'._LOG_HS);
63 63
 
64 64
 		return false;
65 65
 	}
@@ -76,7 +76,7 @@  discard block
 block discarded – undo
76 76
 		}
77 77
 	}
78 78
 
79
-	spip_log("Connexion MySQLi vers $host, base $db, prefixe $prefixe " . ($ok ? "operationnelle" : 'impossible'),
79
+	spip_log("Connexion MySQLi vers $host, base $db, prefixe $prefixe ".($ok ? "operationnelle" : 'impossible'),
80 80
 		_LOG_DEBUG);
81 81
 
82 82
 	return !$ok ? false : array(
@@ -165,9 +165,9 @@  discard block
 block discarded – undo
165 165
  */
166 166
 function spip_mysql_set_charset($charset, $serveur = '', $requeter = true) {
167 167
 	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
168
-	spip_log("changement de charset sql : " . "SET NAMES " . _q($charset), _LOG_DEBUG);
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
 
@@ -182,7 +182,7 @@  discard block
 block discarded – undo
182 182
 function spip_mysql_get_charset($charset = array(), $serveur = '', $requeter = true) {
183 183
 	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
184 184
 	$connexion['last'] = $c = "SHOW CHARACTER SET"
185
-		. (!$charset ? '' : (" LIKE " . _q($charset['charset'])));
185
+		. (!$charset ? '' : (" LIKE "._q($charset['charset'])));
186 186
 
187 187
 	return spip_mysql_fetch(mysqli_query($connexion['link'], $c), null, $serveur);
188 188
 }
@@ -242,19 +242,19 @@  discard block
 block discarded – undo
242 242
 	$debug = '';
243 243
 	if (defined('_DEBUG_SLOW_QUERIES') and _DEBUG_SLOW_QUERIES) {
244 244
 		if (isset($GLOBALS['debug']['aucasou'])) {
245
-			list(, $id, , $infos) = $GLOBALS['debug']['aucasou'];
246
-			$debug .= "BOUCLE$id @ " . (isset($infos[0]) ? $infos[0] : '') . " | ";
245
+			list(, $id,, $infos) = $GLOBALS['debug']['aucasou'];
246
+			$debug .= "BOUCLE$id @ ".(isset($infos[0]) ? $infos[0] : '')." | ";
247 247
 		}
248 248
 		if (isset($_SERVER['REQUEST_URI'])) {
249 249
 			$debug .= $_SERVER['REQUEST_URI'];
250 250
 		}
251 251
 		if (!empty($GLOBALS['ip'])) {
252
-			$debug .= ' + ' . $GLOBALS['ip'];
252
+			$debug .= ' + '.$GLOBALS['ip'];
253 253
 		}
254
-		$debug = ' /* ' . mysqli_real_escape_string($link, str_replace('*/', '@/', $debug)) . ' */';
254
+		$debug = ' /* '.mysqli_real_escape_string($link, str_replace('*/', '@/', $debug)).' */';
255 255
 	}
256 256
 
257
-	$r = mysqli_query($link, $query . $debug);
257
+	$r = mysqli_query($link, $query.$debug);
258 258
 
259 259
 	//Eviter de propager le GoneAway sur les autres requetes d'un même processus PHP
260 260
 	if ($e = spip_mysql_errno($serveur)) {  // Log d'un Gone Away
@@ -267,7 +267,7 @@  discard block
 block discarded – undo
267 267
 			$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
268 268
 			$link = $connexion['link'];
269 269
 			//On retente au cas où
270
-			$r = mysqli_query($link, $query . $debug);
270
+			$r = mysqli_query($link, $query.$debug);
271 271
 		}
272 272
 	}
273 273
 
@@ -295,7 +295,7 @@  discard block
 block discarded – undo
295 295
 	// d'utiliser ceux-ci, copie-colle de phpmyadmin
296 296
 	$query = preg_replace(",^TABLE\s*`([^`]*)`,i", "TABLE \\1", $query);
297 297
 
298
-	return spip_mysql_query("ALTER " . $query, $serveur, $requeter); # i.e. que PG se debrouille
298
+	return spip_mysql_query("ALTER ".$query, $serveur, $requeter); # i.e. que PG se debrouille
299 299
 }
300 300
 
301 301
 
@@ -308,7 +308,7 @@  discard block
 block discarded – undo
308 308
  * @return bool            Toujours true
309 309
  */
310 310
 function spip_mysql_optimize($table, $serveur = '', $requeter = true) {
311
-	spip_mysql_query("OPTIMIZE TABLE " . $table);
311
+	spip_mysql_query("OPTIMIZE TABLE ".$table);
312 312
 
313 313
 	return true;
314 314
 }
@@ -331,7 +331,7 @@  discard block
 block discarded – undo
331 331
 	$link = $connexion['link'];
332 332
 	$db = $connexion['db'];
333 333
 
334
-	$query = 'EXPLAIN ' . _mysql_traite_query($query, $db, $prefixe);
334
+	$query = 'EXPLAIN '._mysql_traite_query($query, $db, $prefixe);
335 335
 	$r = mysqli_query($link, $query);
336 336
 
337 337
 	return spip_mysql_fetch($r, null, $serveur);
@@ -382,7 +382,7 @@  discard block
 block discarded – undo
382 382
 		. calculer_mysql_expression('WHERE', $where)
383 383
 		. calculer_mysql_expression('GROUP BY', $groupby, ',')
384 384
 		. calculer_mysql_expression('HAVING', $having)
385
-		. ($orderby ? ("\nORDER BY " . spip_mysql_order($orderby)) : '')
385
+		. ($orderby ? ("\nORDER BY ".spip_mysql_order($orderby)) : '')
386 386
 		. ($limit ? "\nLIMIT $limit" : '');
387 387
 
388 388
 	// renvoyer la requete inerte si demandee
@@ -472,12 +472,12 @@  discard block
 block discarded – undo
472 472
 	$exp = "\n$expression ";
473 473
 
474 474
 	if (!is_array($v)) {
475
-		return $exp . $v;
475
+		return $exp.$v;
476 476
 	} else {
477 477
 		if (strtoupper($join) === 'AND') {
478
-			return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v));
478
+			return $exp.join("\n\t$join ", array_map('calculer_mysql_where', $v));
479 479
 		} else {
480
-			return $exp . join($join, $v);
480
+			return $exp.join($join, $v);
481 481
 		}
482 482
 	}
483 483
 }
@@ -495,17 +495,17 @@  discard block
 block discarded – undo
495 495
 		if (substr($k, -1) == '@') {
496 496
 			// c'est une jointure qui se refere au from precedent
497 497
 			// pas de virgule
498
-			$res .= '  ' . $v;
498
+			$res .= '  '.$v;
499 499
 		} else {
500 500
 			if (!is_numeric($k)) {
501 501
 				$p = strpos($v, " ");
502 502
 				if ($p) {
503
-					$v = substr($v, 0, $p) . " AS `$k`" . substr($v, $p);
503
+					$v = substr($v, 0, $p)." AS `$k`".substr($v, $p);
504 504
 				} else {
505 505
 					$v .= " AS `$k`";
506 506
 				}
507 507
 			}
508
-			$res .= ', ' . $v;
508
+			$res .= ', '.$v;
509 509
 		}
510 510
 	}
511 511
 
@@ -534,13 +534,13 @@  discard block
 block discarded – undo
534 534
 function _mysql_traite_query($query, $db = '', $prefixe = '') {
535 535
 
536 536
 	if ($GLOBALS['mysql_rappel_nom_base'] and $db) {
537
-		$pref = '`' . $db . '`.';
537
+		$pref = '`'.$db.'`.';
538 538
 	} else {
539 539
 		$pref = '';
540 540
 	}
541 541
 
542 542
 	if ($prefixe) {
543
-		$pref .= $prefixe . "_";
543
+		$pref .= $prefixe."_";
544 544
 	}
545 545
 
546 546
 	if (!preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/i', $query, $regs)) {
@@ -554,12 +554,12 @@  discard block
 block discarded – undo
554 554
 		if (stripos($suite, "SELECT") !== false) {
555 555
 			list($suite, $textes) = query_echappe_textes($suite);
556 556
 			if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite, $r)) {
557
-				$suite = $r[1] . _mysql_traite_query($r[2], $db, $prefixe);
557
+				$suite = $r[1]._mysql_traite_query($r[2], $db, $prefixe);
558 558
 			}
559 559
 			$suite = query_reinjecte_textes($suite, $textes);
560 560
 		}
561 561
 	}
562
-	$r = preg_replace(_SQL_PREFIXE_TABLE_MYSQL, '\1' . $pref, $query) . $suite;
562
+	$r = preg_replace(_SQL_PREFIXE_TABLE_MYSQL, '\1'.$pref, $query).$suite;
563 563
 
564 564
 	// en option, remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
565 565
 	// remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
@@ -593,7 +593,7 @@  discard block
 block discarded – undo
593 593
 	$link = _mysql_link($serveur);
594 594
 	$ok = mysqli_select_db($link, $db);
595 595
 	if (!$ok) {
596
-		spip_log('Echec mysqli_selectdb. Erreur : ' . mysqli_error($link), 'mysql.' . _LOG_CRITIQUE);
596
+		spip_log('Echec mysqli_selectdb. Erreur : '.mysqli_error($link), 'mysql.'._LOG_CRITIQUE);
597 597
 	}
598 598
 
599 599
 	return $ok;
@@ -683,10 +683,10 @@  discard block
 block discarded – undo
683 683
 
684 684
 	$character_set = "";
685 685
 	if (@$GLOBALS['meta']['charset_sql_base']) {
686
-		$character_set .= " CHARACTER SET " . $GLOBALS['meta']['charset_sql_base'];
686
+		$character_set .= " CHARACTER SET ".$GLOBALS['meta']['charset_sql_base'];
687 687
 	}
688 688
 	if (@$GLOBALS['meta']['charset_collation_sql_base']) {
689
-		$character_set .= " COLLATE " . $GLOBALS['meta']['charset_collation_sql_base'];
689
+		$character_set .= " COLLATE ".$GLOBALS['meta']['charset_collation_sql_base'];
690 690
 	}
691 691
 
692 692
 	foreach ($champs as $k => $v) {
@@ -695,7 +695,7 @@  discard block
 block discarded – undo
695 695
 			if (preg_match(',(char|text),i', $defs[1])
696 696
 				and !preg_match(',(binary|CHARACTER|COLLATE),i', $v)
697 697
 			) {
698
-				$v = $defs[1] . $character_set . ' ' . substr($v, strlen($defs[1]));
698
+				$v = $defs[1].$character_set.' '.substr($v, strlen($defs[1]));
699 699
 			}
700 700
 		}
701 701
 
@@ -707,7 +707,7 @@  discard block
 block discarded – undo
707 707
 		$s = ",";
708 708
 	}
709 709
 	$temporary = $temporary ? 'TEMPORARY' : '';
710
-	$q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query" . ($keys ? ",$keys" : '') . ")"
710
+	$q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query".($keys ? ",$keys" : '').")"
711 711
 		. " ENGINE=MyISAM"
712 712
 		. ($character_set ? " DEFAULT $character_set" : "")
713 713
 		. "\n";
@@ -787,7 +787,7 @@  discard block
 block discarded – undo
787 787
 		return false;
788 788
 	}
789 789
 
790
-	$query = "CREATE VIEW $nom AS " . $query_select;
790
+	$query = "CREATE VIEW $nom AS ".$query_select;
791 791
 
792 792
 	return spip_mysql_query($query, $serveur, $requeter);
793 793
 }
@@ -845,7 +845,7 @@  discard block
 block discarded – undo
845 845
  *     Ressource à utiliser avec sql_fetch()
846 846
  **/
847 847
 function spip_mysql_showbase($match, $serveur = '', $requeter = true) {
848
-	return spip_mysql_query("SHOW TABLES LIKE " . _q($match), $serveur, $requeter);
848
+	return spip_mysql_query("SHOW TABLES LIKE "._q($match), $serveur, $requeter);
849 849
 }
850 850
 
851 851
 /**
@@ -939,22 +939,22 @@  discard block
 block discarded – undo
939 939
 			}
940 940
 			if ($val['Default'] === '0' || $val['Default']) {
941 941
 				if (preg_match('/[A-Z_]/', $val['Default'])) {
942
-					$nfields[$val["Field"]] .= ' DEFAULT ' . $val['Default'];
942
+					$nfields[$val["Field"]] .= ' DEFAULT '.$val['Default'];
943 943
 				} else {
944
-					$nfields[$val["Field"]] .= " DEFAULT '" . $val['Default'] . "'";
944
+					$nfields[$val["Field"]] .= " DEFAULT '".$val['Default']."'";
945 945
 				}
946 946
 			}
947 947
 			if ($val['Extra']) {
948
-				$nfields[$val["Field"]] .= ' ' . $val['Extra'];
948
+				$nfields[$val["Field"]] .= ' '.$val['Extra'];
949 949
 			}
950 950
 			if ($val['Key'] == 'PRI') {
951 951
 				$nkeys['PRIMARY KEY'] = $val["Field"];
952 952
 			} else {
953 953
 				if ($val['Key'] == 'MUL') {
954
-					$nkeys['KEY ' . $val["Field"]] = $val["Field"];
954
+					$nkeys['KEY '.$val["Field"]] = $val["Field"];
955 955
 				} else {
956 956
 					if ($val['Key'] == 'UNI') {
957
-						$nkeys['UNIQUE KEY ' . $val["Field"]] = $val["Field"];
957
+						$nkeys['UNIQUE KEY '.$val["Field"]] = $val["Field"];
958 958
 					}
959 959
 				}
960 960
 			}
@@ -1025,7 +1025,7 @@  discard block
 block discarded – undo
1025 1025
 	$serveur = '',
1026 1026
 	$requeter = true
1027 1027
 ) {
1028
-	$c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby)));
1028
+	$c = !$groupby ? '*' : ('DISTINCT '.(is_string($groupby) ? $groupby : join(',', $groupby)));
1029 1029
 
1030 1030
 	$r = spip_mysql_select("COUNT($c)", $from, $where, '', '', '', $having, $serveur, $requeter);
1031 1031
 	if (!$requeter) {
@@ -1065,7 +1065,7 @@  discard block
 block discarded – undo
1065 1065
 	if ($s) {
1066 1066
 		$trace = debug_backtrace();
1067 1067
 		if ($trace[0]['function'] != "spip_mysql_error") {
1068
-			spip_log("$s - $query - " . sql_error_backtrace(), 'mysql.' . _LOG_ERREUR);
1068
+			spip_log("$s - $query - ".sql_error_backtrace(), 'mysql.'._LOG_ERREUR);
1069 1069
 		}
1070 1070
 	}
1071 1071
 
@@ -1232,7 +1232,7 @@  discard block
 block discarded – undo
1232 1232
 		$couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1233 1233
 	}
1234 1234
 
1235
-	return spip_mysql_insert($table, "(" . join(',', array_keys($couples)) . ")", "(" . join(',', $couples) . ")", $desc,
1235
+	return spip_mysql_insert($table, "(".join(',', array_keys($couples)).")", "(".join(',', $couples).")", $desc,
1236 1236
 		$serveur, $requeter);
1237 1237
 }
1238 1238
 
@@ -1266,7 +1266,7 @@  discard block
 block discarded – undo
1266 1266
 	}
1267 1267
 	$fields = isset($desc['field']) ? $desc['field'] : array();
1268 1268
 
1269
-	$cles = "(" . join(',', array_keys(reset($tab_couples))) . ')';
1269
+	$cles = "(".join(',', array_keys(reset($tab_couples))).')';
1270 1270
 	$valeurs = array();
1271 1271
 	$r = false;
1272 1272
 
@@ -1275,7 +1275,7 @@  discard block
 block discarded – undo
1275 1275
 		foreach ($couples as $champ => $val) {
1276 1276
 			$couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1277 1277
 		}
1278
-		$valeurs[] = '(' . join(',', $couples) . ')';
1278
+		$valeurs[] = '('.join(',', $couples).')';
1279 1279
 		if (count($valeurs) >= 100) {
1280 1280
 			$r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1281 1281
 			$valeurs = array();
@@ -1312,7 +1312,7 @@  discard block
 block discarded – undo
1312 1312
 function spip_mysql_update($table, $champs, $where = '', $desc = array(), $serveur = '', $requeter = true) {
1313 1313
 	$set = array();
1314 1314
 	foreach ($champs as $champ => $val) {
1315
-		$set[] = $champ . "=$val";
1315
+		$set[] = $champ."=$val";
1316 1316
 	}
1317 1317
 	if (!empty($set)) {
1318 1318
 		return spip_mysql_query(
@@ -1366,7 +1366,7 @@  discard block
 block discarded – undo
1366 1366
 	}
1367 1367
 	$set = array();
1368 1368
 	foreach ($champs as $champ => $val) {
1369
-		$set[] = $champ . '=' . spip_mysql_cite($val, @$fields[$champ]);
1369
+		$set[] = $champ.'='.spip_mysql_cite($val, @$fields[$champ]);
1370 1370
 	}
1371 1371
 
1372 1372
 	return spip_mysql_query(
@@ -1431,8 +1431,8 @@  discard block
 block discarded – undo
1431 1431
  *     - False en cas d'erreur.
1432 1432
  **/
1433 1433
 function spip_mysql_replace($table, $couples, $desc = array(), $serveur = '', $requeter = true) {
1434
-	return spip_mysql_query("REPLACE $table (" . join(',', array_keys($couples)) . ') VALUES (' . join(',',
1435
-			array_map('_q', $couples)) . ')', $serveur, $requeter);
1434
+	return spip_mysql_query("REPLACE $table (".join(',', array_keys($couples)).') VALUES ('.join(',',
1435
+			array_map('_q', $couples)).')', $serveur, $requeter);
1436 1436
 }
1437 1437
 
1438 1438
 
@@ -1461,10 +1461,10 @@  discard block
 block discarded – undo
1461 1461
  *     - False en cas d'erreur.
1462 1462
  **/
1463 1463
 function spip_mysql_replace_multi($table, $tab_couples, $desc = array(), $serveur = '', $requeter = true) {
1464
-	$cles = "(" . join(',', array_keys($tab_couples[0])) . ')';
1464
+	$cles = "(".join(',', array_keys($tab_couples[0])).')';
1465 1465
 	$valeurs = array();
1466 1466
 	foreach ($tab_couples as $couples) {
1467
-		$valeurs[] = '(' . join(',', array_map('_q', $couples)) . ')';
1467
+		$valeurs[] = '('.join(',', array_map('_q', $couples)).')';
1468 1468
 	}
1469 1469
 	$valeurs = implode(', ', $valeurs);
1470 1470
 
@@ -1484,28 +1484,28 @@  discard block
 block discarded – undo
1484 1484
  */
1485 1485
 function spip_mysql_multi($objet, $lang) {
1486 1486
 	$lengthlang = strlen("[$lang]");
1487
-	$posmulti = "INSTR(" . $objet . ", '<multi>')";
1488
-	$posfinmulti = "INSTR(" . $objet . ", '</multi>')";
1489
-	$debutchaine = "LEFT(" . $objet . ", $posmulti-1)";
1490
-	$finchaine = "RIGHT(" . $objet . ", CHAR_LENGTH(" . $objet . ") -(7+$posfinmulti))";
1491
-	$chainemulti = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7, $posfinmulti -(7+$posmulti)))";
1492
-	$poslang = "INSTR($chainemulti,'[" . $lang . "]')";
1487
+	$posmulti = "INSTR(".$objet.", '<multi>')";
1488
+	$posfinmulti = "INSTR(".$objet.", '</multi>')";
1489
+	$debutchaine = "LEFT(".$objet.", $posmulti-1)";
1490
+	$finchaine = "RIGHT(".$objet.", CHAR_LENGTH(".$objet.") -(7+$posfinmulti))";
1491
+	$chainemulti = "TRIM(SUBSTRING(".$objet.", $posmulti+7, $posfinmulti -(7+$posmulti)))";
1492
+	$poslang = "INSTR($chainemulti,'[".$lang."]')";
1493 1493
 	$poslang = "IF($poslang=0,INSTR($chainemulti,']')+1,$poslang+$lengthlang)";
1494
-	$chainelang = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))";
1495
-	$posfinlang = "INSTR(" . $chainelang . ", '[')";
1494
+	$chainelang = "TRIM(SUBSTRING(".$objet.", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))";
1495
+	$posfinlang = "INSTR(".$chainelang.", '[')";
1496 1496
 	$chainelang = "IF($posfinlang>0,LEFT($chainelang,$posfinlang-1),$chainelang)";
1497 1497
 	//$chainelang = "LEFT($chainelang,$posfinlang-1)";
1498
-	$retour = "(TRIM(IF($posmulti = 0 , " .
1499
-		"     TRIM(" . $objet . "), " .
1500
-		"     CONCAT( " .
1501
-		"          $debutchaine, " .
1502
-		"          IF( " .
1503
-		"               $poslang = 0, " .
1504
-		"                     $chainemulti, " .
1505
-		"               $chainelang" .
1506
-		"          ), " .
1507
-		"          $finchaine" .
1508
-		"     ) " .
1498
+	$retour = "(TRIM(IF($posmulti = 0 , ".
1499
+		"     TRIM(".$objet."), ".
1500
+		"     CONCAT( ".
1501
+		"          $debutchaine, ".
1502
+		"          IF( ".
1503
+		"               $poslang = 0, ".
1504
+		"                     $chainemulti, ".
1505
+		"               $chainelang".
1506
+		"          ), ".
1507
+		"          $finchaine".
1508
+		"     ) ".
1509 1509
 		"))) AS multi";
1510 1510
 
1511 1511
 	return $retour;
@@ -1522,7 +1522,7 @@  discard block
 block discarded – undo
1522 1522
  *     Valeur hexadécimale pour MySQL
1523 1523
  **/
1524 1524
 function spip_mysql_hex($v) {
1525
-	return "0x" . $v;
1525
+	return "0x".$v;
1526 1526
 }
1527 1527
 
1528 1528
 /**
@@ -1562,7 +1562,7 @@  discard block
 block discarded – undo
1562 1562
  *     Expression SQL
1563 1563
  **/
1564 1564
 function spip_mysql_date_proche($champ, $interval, $unite) {
1565
-	$use_now = ( ($champ === 'maj' or strpos($champ, '.maj')) ? true : false );
1565
+	$use_now = (($champ === 'maj' or strpos($champ, '.maj')) ? true : false);
1566 1566
 	return '('
1567 1567
 	. $champ
1568 1568
 	. (($interval <= 0) ? '>' : '<')
@@ -1613,7 +1613,7 @@  discard block
 block discarded – undo
1613 1613
 		if (is_numeric($v)) {
1614 1614
 			return strval($v);
1615 1615
 		}
1616
-		return "'" . addslashes($v) . "'";
1616
+		return "'".addslashes($v)."'";
1617 1617
 	}
1618 1618
 
1619 1619
 	if (is_null($v)
@@ -1635,7 +1635,7 @@  discard block
 block discarded – undo
1635 1635
 		}
1636 1636
 	}
1637 1637
 
1638
-	return ("'" . addslashes($v) . "'");
1638
+	return ("'".addslashes($v)."'");
1639 1639
 }
1640 1640
 
1641 1641
 
@@ -1664,9 +1664,9 @@  discard block
 block discarded – undo
1664 1664
 	$connexion = &$GLOBALS['connexions'][0];
1665 1665
 	$bd = $connexion['db'];
1666 1666
 	$prefixe = $connexion['prefixe'];
1667
-	$nom = "$bd:$prefixe:$nom" . _LOCK_TIME;
1667
+	$nom = "$bd:$prefixe:$nom"._LOCK_TIME;
1668 1668
 
1669
-	$connexion['last'] = $q = "SELECT GET_LOCK(" . _q($nom) . ", $timeout) AS n";
1669
+	$connexion['last'] = $q = "SELECT GET_LOCK("._q($nom).", $timeout) AS n";
1670 1670
 
1671 1671
 	$q = @sql_fetch(mysqli_query(_mysql_link(), $q));
1672 1672
 	if (!$q) {
@@ -1693,9 +1693,9 @@  discard block
 block discarded – undo
1693 1693
 	$connexion = &$GLOBALS['connexions'][0];
1694 1694
 	$bd = $connexion['db'];
1695 1695
 	$prefixe = $connexion['prefixe'];
1696
-	$nom = "$bd:$prefixe:$nom" . _LOCK_TIME;
1696
+	$nom = "$bd:$prefixe:$nom"._LOCK_TIME;
1697 1697
 
1698
-	$connexion['last'] = $q = "SELECT RELEASE_LOCK(" . _q($nom) . ")";
1698
+	$connexion['last'] = $q = "SELECT RELEASE_LOCK("._q($nom).")";
1699 1699
 	mysqli_query(_mysql_link(), $q);
1700 1700
 }
1701 1701
 
@@ -1731,7 +1731,7 @@  discard block
 block discarded – undo
1731 1731
 	} else {
1732 1732
 		$GLOBALS['mysql_rappel_nom_base'] = false;
1733 1733
 
1734
-		return "\$GLOBALS['mysql_rappel_nom_base'] = false; " .
1734
+		return "\$GLOBALS['mysql_rappel_nom_base'] = false; ".
1735 1735
 		"/* echec de test_rappel_nom_base_mysql a l'installation. */\n";
1736 1736
 	}
1737 1737
 }
Please login to merge, or discard this patch.