Completed
Push — master ( 98d9d2...3eca54 )
by cam
01:14
created
ecrire/req/mysql.php 2 patches
Indentation   +877 added lines, -877 removed lines patch added patch discarded remove patch
@@ -20,15 +20,15 @@  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
 if (!defined('_MYSQL_ENGINE')) {
31
-	define('_MYSQL_ENGINE', 'MyISAM');
31
+    define('_MYSQL_ENGINE', 'MyISAM');
32 32
 }
33 33
 
34 34
 /**
@@ -45,112 +45,112 @@  discard block
 block discarded – undo
45 45
  *     - tableau décrivant la connexion sinon
46 46
  */
47 47
 function req_mysql_dist($host, $port, $login, $pass, $db = '', $prefixe = '') {
48
-	if (!extension_loaded(\mysqli::class)) {
49
-		return false;
50
-	}
51
-
52
-	// si port est fourni mais pas host, c'est un socket -> compat avec vieille syntaxe de mysql_connect() et anciens fichiers connect.php
53
-	try {
54
-		if (
55
-			$port and !is_numeric($socket = $port)
56
-			and (!$host or $host === 'localhost')
57
-		) {
58
-			$link = @mysqli_connect($host, $login, $pass, '', null, $socket);
59
-		} elseif ($port) {
60
-			$link = @mysqli_connect($host, $login, $pass, '', $port);
61
-		} else {
62
-			$link = @mysqli_connect($host, $login, $pass);
63
-		}
64
-	} catch (\mysqli_sql_exception $e) {
65
-		spip_log('mysqli_sql_exception: ' . $e->getMessage(), 'mysql.' . _LOG_DEBUG);
66
-		$link = false;
67
-	}
68
-
69
-	if (!$link) {
70
-		spip_log('Echec mysqli_connect. Erreur : ' . mysqli_connect_error(), 'mysql.' . _LOG_HS);
71
-
72
-		return false;
73
-	}
74
-	$last = '';
75
-	if (!$db) {
76
-		$ok = $link;
77
-		$db = 'spip';
78
-	} else {
79
-		$ok = mysqli_select_db($link, $db);
80
-		if (
81
-			defined('_MYSQL_SET_SQL_MODE')
82
-			or defined('_MYSQL_SQL_MODE_TEXT_NOT_NULL') // compatibilite
83
-		) {
84
-			mysqli_query($link, $last = "set sql_mode=''");
85
-		}
86
-	}
87
-
88
-	spip_log(
89
-		"Connexion MySQLi vers $host, base $db, prefixe $prefixe " . ($ok ? 'operationnelle' : 'impossible'),
90
-		_LOG_DEBUG
91
-	);
92
-
93
-	return !$ok ? false : [
94
-		'db' => $db,
95
-		'last' => $last,
96
-		'prefixe' => $prefixe ?: $db,
97
-		'link' => $link,
98
-		'total_requetes' => 0,
99
-	];
48
+    if (!extension_loaded(\mysqli::class)) {
49
+        return false;
50
+    }
51
+
52
+    // si port est fourni mais pas host, c'est un socket -> compat avec vieille syntaxe de mysql_connect() et anciens fichiers connect.php
53
+    try {
54
+        if (
55
+            $port and !is_numeric($socket = $port)
56
+            and (!$host or $host === 'localhost')
57
+        ) {
58
+            $link = @mysqli_connect($host, $login, $pass, '', null, $socket);
59
+        } elseif ($port) {
60
+            $link = @mysqli_connect($host, $login, $pass, '', $port);
61
+        } else {
62
+            $link = @mysqli_connect($host, $login, $pass);
63
+        }
64
+    } catch (\mysqli_sql_exception $e) {
65
+        spip_log('mysqli_sql_exception: ' . $e->getMessage(), 'mysql.' . _LOG_DEBUG);
66
+        $link = false;
67
+    }
68
+
69
+    if (!$link) {
70
+        spip_log('Echec mysqli_connect. Erreur : ' . mysqli_connect_error(), 'mysql.' . _LOG_HS);
71
+
72
+        return false;
73
+    }
74
+    $last = '';
75
+    if (!$db) {
76
+        $ok = $link;
77
+        $db = 'spip';
78
+    } else {
79
+        $ok = mysqli_select_db($link, $db);
80
+        if (
81
+            defined('_MYSQL_SET_SQL_MODE')
82
+            or defined('_MYSQL_SQL_MODE_TEXT_NOT_NULL') // compatibilite
83
+        ) {
84
+            mysqli_query($link, $last = "set sql_mode=''");
85
+        }
86
+    }
87
+
88
+    spip_log(
89
+        "Connexion MySQLi vers $host, base $db, prefixe $prefixe " . ($ok ? 'operationnelle' : 'impossible'),
90
+        _LOG_DEBUG
91
+    );
92
+
93
+    return !$ok ? false : [
94
+        'db' => $db,
95
+        'last' => $last,
96
+        'prefixe' => $prefixe ?: $db,
97
+        'link' => $link,
98
+        'total_requetes' => 0,
99
+    ];
100 100
 }
101 101
 
102 102
 
103 103
 $GLOBALS['spip_mysql_functions_1'] = [
104
-	'alter' => 'spip_mysql_alter',
105
-	'count' => 'spip_mysql_count',
106
-	'countsel' => 'spip_mysql_countsel',
107
-	'create' => 'spip_mysql_create',
108
-	'create_base' => 'spip_mysql_create_base',
109
-	'create_view' => 'spip_mysql_create_view',
110
-	'date_proche' => 'spip_mysql_date_proche',
111
-	'delete' => 'spip_mysql_delete',
112
-	'drop_table' => 'spip_mysql_drop_table',
113
-	'drop_view' => 'spip_mysql_drop_view',
114
-	'errno' => 'spip_mysql_errno',
115
-	'error' => 'spip_mysql_error',
116
-	'explain' => 'spip_mysql_explain',
117
-	'fetch' => 'spip_mysql_fetch',
118
-	'seek' => 'spip_mysql_seek',
119
-	'free' => 'spip_mysql_free',
120
-	'hex' => 'spip_mysql_hex',
121
-	'in' => 'spip_mysql_in',
122
-	'insert' => 'spip_mysql_insert',
123
-	'insertq' => 'spip_mysql_insertq',
124
-	'insertq_multi' => 'spip_mysql_insertq_multi',
125
-	'listdbs' => 'spip_mysql_listdbs',
126
-	'multi' => 'spip_mysql_multi',
127
-	'optimize' => 'spip_mysql_optimize',
128
-	'query' => 'spip_mysql_query',
129
-	'quote' => 'spip_mysql_quote',
130
-	'replace' => 'spip_mysql_replace',
131
-	'replace_multi' => 'spip_mysql_replace_multi',
132
-	'repair' => 'spip_mysql_repair',
133
-	'select' => 'spip_mysql_select',
134
-	'selectdb' => 'spip_mysql_selectdb',
135
-	'set_charset' => 'spip_mysql_set_charset',
136
-	'get_charset' => 'spip_mysql_get_charset',
137
-	'showbase' => 'spip_mysql_showbase',
138
-	'showtable' => 'spip_mysql_showtable',
139
-	'table_exists' => 'spip_mysql_table_exists',
140
-	'update' => 'spip_mysql_update',
141
-	'updateq' => 'spip_mysql_updateq',
142
-
143
-	// association de chaque nom http d'un charset aux couples MySQL
144
-	'charsets' => [
145
-		'cp1250' => ['charset' => 'cp1250', 'collation' => 'cp1250_general_ci'],
146
-		'cp1251' => ['charset' => 'cp1251', 'collation' => 'cp1251_general_ci'],
147
-		'cp1256' => ['charset' => 'cp1256', 'collation' => 'cp1256_general_ci'],
148
-		'iso-8859-1' => ['charset' => 'latin1', 'collation' => 'latin1_swedish_ci'],
104
+    'alter' => 'spip_mysql_alter',
105
+    'count' => 'spip_mysql_count',
106
+    'countsel' => 'spip_mysql_countsel',
107
+    'create' => 'spip_mysql_create',
108
+    'create_base' => 'spip_mysql_create_base',
109
+    'create_view' => 'spip_mysql_create_view',
110
+    'date_proche' => 'spip_mysql_date_proche',
111
+    'delete' => 'spip_mysql_delete',
112
+    'drop_table' => 'spip_mysql_drop_table',
113
+    'drop_view' => 'spip_mysql_drop_view',
114
+    'errno' => 'spip_mysql_errno',
115
+    'error' => 'spip_mysql_error',
116
+    'explain' => 'spip_mysql_explain',
117
+    'fetch' => 'spip_mysql_fetch',
118
+    'seek' => 'spip_mysql_seek',
119
+    'free' => 'spip_mysql_free',
120
+    'hex' => 'spip_mysql_hex',
121
+    'in' => 'spip_mysql_in',
122
+    'insert' => 'spip_mysql_insert',
123
+    'insertq' => 'spip_mysql_insertq',
124
+    'insertq_multi' => 'spip_mysql_insertq_multi',
125
+    'listdbs' => 'spip_mysql_listdbs',
126
+    'multi' => 'spip_mysql_multi',
127
+    'optimize' => 'spip_mysql_optimize',
128
+    'query' => 'spip_mysql_query',
129
+    'quote' => 'spip_mysql_quote',
130
+    'replace' => 'spip_mysql_replace',
131
+    'replace_multi' => 'spip_mysql_replace_multi',
132
+    'repair' => 'spip_mysql_repair',
133
+    'select' => 'spip_mysql_select',
134
+    'selectdb' => 'spip_mysql_selectdb',
135
+    'set_charset' => 'spip_mysql_set_charset',
136
+    'get_charset' => 'spip_mysql_get_charset',
137
+    'showbase' => 'spip_mysql_showbase',
138
+    'showtable' => 'spip_mysql_showtable',
139
+    'table_exists' => 'spip_mysql_table_exists',
140
+    'update' => 'spip_mysql_update',
141
+    'updateq' => 'spip_mysql_updateq',
142
+
143
+    // association de chaque nom http d'un charset aux couples MySQL
144
+    'charsets' => [
145
+        'cp1250' => ['charset' => 'cp1250', 'collation' => 'cp1250_general_ci'],
146
+        'cp1251' => ['charset' => 'cp1251', 'collation' => 'cp1251_general_ci'],
147
+        'cp1256' => ['charset' => 'cp1256', 'collation' => 'cp1256_general_ci'],
148
+        'iso-8859-1' => ['charset' => 'latin1', 'collation' => 'latin1_swedish_ci'],
149 149
 //'iso-8859-6'=>array('charset'=>'latin1','collation'=>'latin1_swedish_ci'),
150
-		'iso-8859-9' => ['charset' => 'latin5', 'collation' => 'latin5_turkish_ci'],
150
+        'iso-8859-9' => ['charset' => 'latin5', 'collation' => 'latin5_turkish_ci'],
151 151
 //'iso-8859-15'=>array('charset'=>'latin1','collation'=>'latin1_swedish_ci'),
152
-		'utf-8' => ['charset' => 'utf8', 'collation' => 'utf8_general_ci']
153
-	]
152
+        'utf-8' => ['charset' => 'utf8', 'collation' => 'utf8_general_ci']
153
+    ]
154 154
 ];
155 155
 
156 156
 
@@ -161,9 +161,9 @@  discard block
 block discarded – undo
161 161
  * @return Object Information de connexion pour mysqli
162 162
  */
163 163
 function _mysql_link($serveur = '') {
164
-	$link = &$GLOBALS['connexions'][$serveur ?: 0]['link'];
164
+    $link = &$GLOBALS['connexions'][$serveur ?: 0]['link'];
165 165
 
166
-	return $link;
166
+    return $link;
167 167
 }
168 168
 
169 169
 
@@ -176,10 +176,10 @@  discard block
 block discarded – undo
176 176
  * @return mysqli_result|bool Jeu de résultats pour fetch()
177 177
  */
178 178
 function spip_mysql_set_charset($charset, $serveur = '', $requeter = true) {
179
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
180
-	spip_log('changement de charset sql : ' . 'SET NAMES ' . _q($charset), _LOG_DEBUG);
179
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
180
+    spip_log('changement de charset sql : ' . 'SET NAMES ' . _q($charset), _LOG_DEBUG);
181 181
 
182
-	return mysqli_query($connexion['link'], $connexion['last'] = 'SET NAMES ' . _q($charset));
182
+    return mysqli_query($connexion['link'], $connexion['last'] = 'SET NAMES ' . _q($charset));
183 183
 }
184 184
 
185 185
 
@@ -192,11 +192,11 @@  discard block
 block discarded – undo
192 192
  * @return array Description du charset (son nom est dans 'charset')
193 193
  */
194 194
 function spip_mysql_get_charset($charset = [], $serveur = '', $requeter = true) {
195
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
196
-	$connexion['last'] = $c = 'SHOW CHARACTER SET'
197
-		. (!$charset ? '' : (' LIKE ' . _q($charset['charset'])));
195
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
196
+    $connexion['last'] = $c = 'SHOW CHARACTER SET'
197
+        . (!$charset ? '' : (' LIKE ' . _q($charset['charset'])));
198 198
 
199
-	return spip_mysql_fetch(mysqli_query($connexion['link'], $c), null, $serveur);
199
+    return spip_mysql_fetch(mysqli_query($connexion['link'], $c), null, $serveur);
200 200
 }
201 201
 
202 202
 /**
@@ -212,80 +212,80 @@  discard block
 block discarded – undo
212 212
  */
213 213
 function spip_mysql_query($query, $serveur = '', $requeter = true) {
214 214
 
215
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
216
-	$prefixe = $connexion['prefixe'];
217
-	$link = $connexion['link'];
218
-	$db = $connexion['db'];
219
-
220
-	$query = _mysql_traite_query($query, $db, $prefixe);
221
-
222
-	// renvoyer la requete inerte si demandee
223
-	if (!$requeter) {
224
-		return $query;
225
-	}
226
-
227
-	if (isset($_GET['var_profile']) or (defined('_DEBUG_TRACE_QUERIES') and _DEBUG_TRACE_QUERIES)) {
228
-		include_spip('public/tracer');
229
-		$t = trace_query_start();
230
-	} else {
231
-		$t = 0;
232
-	}
233
-
234
-	$connexion['last'] = $query;
235
-	$connexion['total_requetes']++;
236
-
237
-	// ajouter un debug utile dans log/mysql-slow.log ?
238
-	$debug = '';
239
-	if (defined('_DEBUG_SLOW_QUERIES') and _DEBUG_SLOW_QUERIES) {
240
-		if (isset($GLOBALS['debug']['aucasou'])) {
241
-			[, $id, , $infos] = $GLOBALS['debug']['aucasou'];
242
-			$debug .= "BOUCLE$id @ " . ($infos[0] ?? '') . ' | ';
243
-		}
244
-		if (isset($_SERVER['REQUEST_URI'])) {
245
-			$debug .= $_SERVER['REQUEST_URI'];
246
-		}
247
-		if (!empty($GLOBALS['ip'])) {
248
-			$debug .= ' + ' . $GLOBALS['ip'];
249
-		}
250
-		$debug = ' /* ' . mysqli_real_escape_string($link, str_replace('*/', '@/', $debug)) . ' */';
251
-	}
252
-	try {
253
-		$r = mysqli_query($link, $query . $debug);
254
-	} catch (\mysqli_sql_exception $e) {
255
-		spip_log('mysqli_sql_exception: ' . $e->getMessage(), 'mysql.' . _LOG_DEBUG);
256
-		$r = false;
257
-		// TODO: utiliser l’exception ensuite plutôt que les appels à spip_mysql_errno()
258
-		// mais il faut pour php < 8.1 forcer les exeptions via mysqli_report().
259
-	}
260
-
261
-	//Eviter de propager le GoneAway sur les autres requetes d'un même processus PHP
262
-	if ($e = spip_mysql_errno($serveur)) {  // Log d'un Gone Away
263
-		if ($e == 2006) { //Si Gone Away on relance une connexion vierge
264
-			//Fermer la connexion defaillante
265
-			mysqli_close($connexion['link']);
266
-			unset($GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]);
267
-			//Relancer une connexion vierge
268
-			spip_connect($serveur);
269
-			$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
270
-			$link = $connexion['link'];
271
-			//On retente au cas où
272
-			try {
273
-				$r = mysqli_query($link, $query . $debug);
274
-			} catch (\mysqli_sql_exception $e) {
275
-				spip_log('mysqli_sql_exception: ' . $e->getMessage(), 'mysql.' . _LOG_DEBUG);
276
-				$r = false;
277
-				// TODO: utiliser l’exception ensuite plutôt que les appels à spip_mysql_errno()
278
-				// mais il faut pour php < 8.1 forcer les exeptions via mysqli_report().
279
-			}
280
-		}
281
-	}
282
-
283
-	// Log de l'erreur eventuelle
284
-	if ($e = spip_mysql_errno($serveur)) {
285
-		// et du fautif
286
-		$e .= spip_mysql_error($query, $serveur);
287
-	}
288
-	return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
215
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
216
+    $prefixe = $connexion['prefixe'];
217
+    $link = $connexion['link'];
218
+    $db = $connexion['db'];
219
+
220
+    $query = _mysql_traite_query($query, $db, $prefixe);
221
+
222
+    // renvoyer la requete inerte si demandee
223
+    if (!$requeter) {
224
+        return $query;
225
+    }
226
+
227
+    if (isset($_GET['var_profile']) or (defined('_DEBUG_TRACE_QUERIES') and _DEBUG_TRACE_QUERIES)) {
228
+        include_spip('public/tracer');
229
+        $t = trace_query_start();
230
+    } else {
231
+        $t = 0;
232
+    }
233
+
234
+    $connexion['last'] = $query;
235
+    $connexion['total_requetes']++;
236
+
237
+    // ajouter un debug utile dans log/mysql-slow.log ?
238
+    $debug = '';
239
+    if (defined('_DEBUG_SLOW_QUERIES') and _DEBUG_SLOW_QUERIES) {
240
+        if (isset($GLOBALS['debug']['aucasou'])) {
241
+            [, $id, , $infos] = $GLOBALS['debug']['aucasou'];
242
+            $debug .= "BOUCLE$id @ " . ($infos[0] ?? '') . ' | ';
243
+        }
244
+        if (isset($_SERVER['REQUEST_URI'])) {
245
+            $debug .= $_SERVER['REQUEST_URI'];
246
+        }
247
+        if (!empty($GLOBALS['ip'])) {
248
+            $debug .= ' + ' . $GLOBALS['ip'];
249
+        }
250
+        $debug = ' /* ' . mysqli_real_escape_string($link, str_replace('*/', '@/', $debug)) . ' */';
251
+    }
252
+    try {
253
+        $r = mysqli_query($link, $query . $debug);
254
+    } catch (\mysqli_sql_exception $e) {
255
+        spip_log('mysqli_sql_exception: ' . $e->getMessage(), 'mysql.' . _LOG_DEBUG);
256
+        $r = false;
257
+        // TODO: utiliser l’exception ensuite plutôt que les appels à spip_mysql_errno()
258
+        // mais il faut pour php < 8.1 forcer les exeptions via mysqli_report().
259
+    }
260
+
261
+    //Eviter de propager le GoneAway sur les autres requetes d'un même processus PHP
262
+    if ($e = spip_mysql_errno($serveur)) {  // Log d'un Gone Away
263
+        if ($e == 2006) { //Si Gone Away on relance une connexion vierge
264
+            //Fermer la connexion defaillante
265
+            mysqli_close($connexion['link']);
266
+            unset($GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]);
267
+            //Relancer une connexion vierge
268
+            spip_connect($serveur);
269
+            $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
270
+            $link = $connexion['link'];
271
+            //On retente au cas où
272
+            try {
273
+                $r = mysqli_query($link, $query . $debug);
274
+            } catch (\mysqli_sql_exception $e) {
275
+                spip_log('mysqli_sql_exception: ' . $e->getMessage(), 'mysql.' . _LOG_DEBUG);
276
+                $r = false;
277
+                // TODO: utiliser l’exception ensuite plutôt que les appels à spip_mysql_errno()
278
+                // mais il faut pour php < 8.1 forcer les exeptions via mysqli_report().
279
+            }
280
+        }
281
+    }
282
+
283
+    // Log de l'erreur eventuelle
284
+    if ($e = spip_mysql_errno($serveur)) {
285
+        // et du fautif
286
+        $e .= spip_mysql_error($query, $serveur);
287
+    }
288
+    return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
289 289
 }
290 290
 
291 291
 /**
@@ -300,12 +300,12 @@  discard block
 block discarded – undo
300 300
  *     - array  : Tableau décrivant requête et temps d'exécution si var_profile actif pour tracer.
301 301
  */
302 302
 function spip_mysql_alter($query, $serveur = '', $requeter = true) {
303
-	// ici on supprime les ` entourant le nom de table pour permettre
304
-	// la transposition du prefixe, compte tenu que les plugins ont la mauvaise habitude
305
-	// d'utiliser ceux-ci, copie-colle de phpmyadmin
306
-	$query = preg_replace(',^TABLE\s*`([^`]*)`,i', "TABLE \\1", $query);
303
+    // ici on supprime les ` entourant le nom de table pour permettre
304
+    // la transposition du prefixe, compte tenu que les plugins ont la mauvaise habitude
305
+    // d'utiliser ceux-ci, copie-colle de phpmyadmin
306
+    $query = preg_replace(',^TABLE\s*`([^`]*)`,i', "TABLE \\1", $query);
307 307
 
308
-	return spip_mysql_query('ALTER ' . $query, $serveur, $requeter); # i.e. que PG se debrouille
308
+    return spip_mysql_query('ALTER ' . $query, $serveur, $requeter); # i.e. que PG se debrouille
309 309
 }
310 310
 
311 311
 
@@ -318,9 +318,9 @@  discard block
 block discarded – undo
318 318
  * @return bool            Toujours true
319 319
  */
320 320
 function spip_mysql_optimize($table, $serveur = '', $requeter = true) {
321
-	spip_mysql_query('OPTIMIZE TABLE ' . $table);
321
+    spip_mysql_query('OPTIMIZE TABLE ' . $table);
322 322
 
323
-	return true;
323
+    return true;
324 324
 }
325 325
 
326 326
 
@@ -333,18 +333,18 @@  discard block
 block discarded – undo
333 333
  * @return array           Tableau de l'explication
334 334
  */
335 335
 function spip_mysql_explain($query, $serveur = '', $requeter = true) {
336
-	if (strpos(ltrim($query), 'SELECT') !== 0) {
337
-		return [];
338
-	}
339
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
340
-	$prefixe = $connexion['prefixe'];
341
-	$link = $connexion['link'];
342
-	$db = $connexion['db'];
343
-
344
-	$query = 'EXPLAIN ' . _mysql_traite_query($query, $db, $prefixe);
345
-	$r = mysqli_query($link, $query);
346
-
347
-	return spip_mysql_fetch($r, null, $serveur);
336
+    if (strpos(ltrim($query), 'SELECT') !== 0) {
337
+        return [];
338
+    }
339
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
340
+    $prefixe = $connexion['prefixe'];
341
+    $link = $connexion['link'];
342
+    $db = $connexion['db'];
343
+
344
+    $query = 'EXPLAIN ' . _mysql_traite_query($query, $db, $prefixe);
345
+    $r = mysqli_query($link, $query);
346
+
347
+    return spip_mysql_fetch($r, null, $serveur);
348 348
 }
349 349
 
350 350
 
@@ -373,35 +373,35 @@  discard block
 block discarded – undo
373 373
  *     - array  : Tableau décrivant requête et temps d'exécution si var_profile actif pour tracer.
374 374
  */
375 375
 function spip_mysql_select(
376
-	$select,
377
-	$from,
378
-	$where = '',
379
-	$groupby = '',
380
-	$orderby = '',
381
-	$limit = '',
382
-	$having = '',
383
-	$serveur = '',
384
-	$requeter = true
376
+    $select,
377
+    $from,
378
+    $where = '',
379
+    $groupby = '',
380
+    $orderby = '',
381
+    $limit = '',
382
+    $having = '',
383
+    $serveur = '',
384
+    $requeter = true
385 385
 ) {
386 386
 
387 387
 
388
-	$from = (!is_array($from) ? $from : spip_mysql_select_as($from));
389
-	$query =
390
-		calculer_mysql_expression('SELECT', $select, ', ')
391
-		. calculer_mysql_expression('FROM', $from, ', ')
392
-		. calculer_mysql_expression('WHERE', $where)
393
-		. calculer_mysql_expression('GROUP BY', $groupby, ',')
394
-		. calculer_mysql_expression('HAVING', $having)
395
-		. ($orderby ? ("\nORDER BY " . spip_mysql_order($orderby)) : '')
396
-		. ($limit ? "\nLIMIT $limit" : '');
388
+    $from = (!is_array($from) ? $from : spip_mysql_select_as($from));
389
+    $query =
390
+        calculer_mysql_expression('SELECT', $select, ', ')
391
+        . calculer_mysql_expression('FROM', $from, ', ')
392
+        . calculer_mysql_expression('WHERE', $where)
393
+        . calculer_mysql_expression('GROUP BY', $groupby, ',')
394
+        . calculer_mysql_expression('HAVING', $having)
395
+        . ($orderby ? ("\nORDER BY " . spip_mysql_order($orderby)) : '')
396
+        . ($limit ? "\nLIMIT $limit" : '');
397 397
 
398
-	// renvoyer la requete inerte si demandee
399
-	if ($requeter === false) {
400
-		return $query;
401
-	}
402
-	$r = spip_mysql_query($query, $serveur, $requeter);
398
+    // renvoyer la requete inerte si demandee
399
+    if ($requeter === false) {
400
+        return $query;
401
+    }
402
+    $r = spip_mysql_query($query, $serveur, $requeter);
403 403
 
404
-	return $r ?: $query;
404
+    return $r ?: $query;
405 405
 }
406 406
 
407 407
 
@@ -418,7 +418,7 @@  discard block
 block discarded – undo
418 418
  * @return string Texte du orderby préparé
419 419
  */
420 420
 function spip_mysql_order($orderby) {
421
-	return (is_array($orderby)) ? join(', ', $orderby) : $orderby;
421
+    return (is_array($orderby)) ? join(', ', $orderby) : $orderby;
422 422
 }
423 423
 
424 424
 
@@ -441,26 +441,26 @@  discard block
 block discarded – undo
441 441
  *     Contrainte pour clause WHERE
442 442
  */
443 443
 function calculer_mysql_where($v) {
444
-	if (!is_array($v)) {
445
-		return $v;
446
-	}
447
-
448
-	$op = array_shift($v);
449
-	if (!($n = count($v))) {
450
-		return $op;
451
-	} else {
452
-		$arg = calculer_mysql_where(array_shift($v));
453
-		if ($n == 1) {
454
-			return "$op($arg)";
455
-		} else {
456
-			$arg2 = calculer_mysql_where(array_shift($v));
457
-			if ($n == 2) {
458
-				return "($arg $op $arg2)";
459
-			} else {
460
-				return "($arg $op ($arg2) : $v[0])";
461
-			}
462
-		}
463
-	}
444
+    if (!is_array($v)) {
445
+        return $v;
446
+    }
447
+
448
+    $op = array_shift($v);
449
+    if (!($n = count($v))) {
450
+        return $op;
451
+    } else {
452
+        $arg = calculer_mysql_where(array_shift($v));
453
+        if ($n == 1) {
454
+            return "$op($arg)";
455
+        } else {
456
+            $arg2 = calculer_mysql_where(array_shift($v));
457
+            if ($n == 2) {
458
+                return "($arg $op $arg2)";
459
+            } else {
460
+                return "($arg $op ($arg2) : $v[0])";
461
+            }
462
+        }
463
+    }
464 464
 }
465 465
 
466 466
 /**
@@ -475,21 +475,21 @@  discard block
 block discarded – undo
475 475
  * @return string            Texte de l'expression, une partie donc, du texte la requête.
476 476
  */
477 477
 function calculer_mysql_expression($expression, $v, $join = 'AND') {
478
-	if (empty($v)) {
479
-		return '';
480
-	}
481
-
482
-	$exp = "\n$expression ";
483
-
484
-	if (!is_array($v)) {
485
-		return $exp . $v;
486
-	} else {
487
-		if (strtoupper($join) === 'AND') {
488
-			return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v));
489
-		} else {
490
-			return $exp . join($join, $v);
491
-		}
492
-	}
478
+    if (empty($v)) {
479
+        return '';
480
+    }
481
+
482
+    $exp = "\n$expression ";
483
+
484
+    if (!is_array($v)) {
485
+        return $exp . $v;
486
+    } else {
487
+        if (strtoupper($join) === 'AND') {
488
+            return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v));
489
+        } else {
490
+            return $exp . join($join, $v);
491
+        }
492
+    }
493 493
 }
494 494
 
495 495
 
@@ -500,26 +500,26 @@  discard block
 block discarded – undo
500 500
  * @return string Sélection de colonnes pour une clause SELECT
501 501
  */
502 502
 function spip_mysql_select_as($args) {
503
-	$res = '';
504
-	foreach ($args as $k => $v) {
505
-		if (substr($k, -1) == '@') {
506
-			// c'est une jointure qui se refere au from precedent
507
-			// pas de virgule
508
-			$res .= '  ' . $v;
509
-		} else {
510
-			if (!is_numeric($k)) {
511
-				$p = strpos($v, ' ');
512
-				if ($p) {
513
-					$v = substr($v, 0, $p) . " AS `$k`" . substr($v, $p);
514
-				} else {
515
-					$v .= " AS `$k`";
516
-				}
517
-			}
518
-			$res .= ', ' . $v;
519
-		}
520
-	}
521
-
522
-	return substr($res, 2);
503
+    $res = '';
504
+    foreach ($args as $k => $v) {
505
+        if (substr($k, -1) == '@') {
506
+            // c'est une jointure qui se refere au from precedent
507
+            // pas de virgule
508
+            $res .= '  ' . $v;
509
+        } else {
510
+            if (!is_numeric($k)) {
511
+                $p = strpos($v, ' ');
512
+                if ($p) {
513
+                    $v = substr($v, 0, $p) . " AS `$k`" . substr($v, $p);
514
+                } else {
515
+                    $v .= " AS `$k`";
516
+                }
517
+            }
518
+            $res .= ', ' . $v;
519
+        }
520
+    }
521
+
522
+    return substr($res, 2);
523 523
 }
524 524
 
525 525
 
@@ -544,58 +544,58 @@  discard block
 block discarded – undo
544 544
  */
545 545
 function _mysql_traite_query($query, $db = '', $prefixe = '', $echappe_textes = true) {
546 546
 
547
-	if ($GLOBALS['mysql_rappel_nom_base'] and $db) {
548
-		$pref = '`' . $db . '`.';
549
-	} else {
550
-		$pref = '';
551
-	}
552
-
553
-	if ($prefixe) {
554
-		$pref .= $prefixe . '_';
555
-	}
556
-
557
-	if (!preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/i', $query, $regs)) {
558
-		$suite = '';
559
-	} else {
560
-		$suite = strstr($query, (string) $regs[0]);
561
-		$query = substr($query, 0, -strlen($suite));
562
-		// propager le prefixe en cas de requete imbriquee
563
-		// il faut alors echapper les chaine avant de le faire, pour ne pas risquer de
564
-		// modifier une requete qui est en fait juste du texte dans un champ
565
-		if (stripos($suite, 'SELECT') !== false) {
566
-			if ($echappe_textes) {
567
-				[$suite_echap, $textes] = query_echappe_textes($suite);
568
-			}
569
-			else {
570
-				$suite_echap = $suite;
571
-			}
572
-			if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite_echap, $r)) {
573
-				$suite_echap = $r[1] . _mysql_traite_query($r[2], $db, $prefixe, false);
574
-				if ($echappe_textes) {
575
-					$suite = query_reinjecte_textes($suite_echap, $textes);
576
-				}
577
-				else {
578
-					$suite = $suite_echap;
579
-				}
580
-			}
581
-		}
582
-	}
583
-	$r = preg_replace(_SQL_PREFIXE_TABLE_MYSQL, '\1' . $pref, $query) . $suite;
584
-
585
-	// en option, remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
586
-	// remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
587
-	if (
588
-		defined('_MYSQL_NOPLANES')
589
-		and _MYSQL_NOPLANES
590
-		and !empty($GLOBALS['meta']['charset_sql_connexion'])
591
-		and $GLOBALS['meta']['charset_sql_connexion'] == 'utf8'
592
-	) {
593
-		include_spip('inc/charsets');
594
-		$r = utf8_noplanes($r);
595
-	}
596
-
597
-	#spip_log("_mysql_traite_query: " . substr($r,0, 50) . ".... $db, $prefixe", _LOG_DEBUG);
598
-	return $r;
547
+    if ($GLOBALS['mysql_rappel_nom_base'] and $db) {
548
+        $pref = '`' . $db . '`.';
549
+    } else {
550
+        $pref = '';
551
+    }
552
+
553
+    if ($prefixe) {
554
+        $pref .= $prefixe . '_';
555
+    }
556
+
557
+    if (!preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/i', $query, $regs)) {
558
+        $suite = '';
559
+    } else {
560
+        $suite = strstr($query, (string) $regs[0]);
561
+        $query = substr($query, 0, -strlen($suite));
562
+        // propager le prefixe en cas de requete imbriquee
563
+        // il faut alors echapper les chaine avant de le faire, pour ne pas risquer de
564
+        // modifier une requete qui est en fait juste du texte dans un champ
565
+        if (stripos($suite, 'SELECT') !== false) {
566
+            if ($echappe_textes) {
567
+                [$suite_echap, $textes] = query_echappe_textes($suite);
568
+            }
569
+            else {
570
+                $suite_echap = $suite;
571
+            }
572
+            if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite_echap, $r)) {
573
+                $suite_echap = $r[1] . _mysql_traite_query($r[2], $db, $prefixe, false);
574
+                if ($echappe_textes) {
575
+                    $suite = query_reinjecte_textes($suite_echap, $textes);
576
+                }
577
+                else {
578
+                    $suite = $suite_echap;
579
+                }
580
+            }
581
+        }
582
+    }
583
+    $r = preg_replace(_SQL_PREFIXE_TABLE_MYSQL, '\1' . $pref, $query) . $suite;
584
+
585
+    // en option, remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
586
+    // remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
587
+    if (
588
+        defined('_MYSQL_NOPLANES')
589
+        and _MYSQL_NOPLANES
590
+        and !empty($GLOBALS['meta']['charset_sql_connexion'])
591
+        and $GLOBALS['meta']['charset_sql_connexion'] == 'utf8'
592
+    ) {
593
+        include_spip('inc/charsets');
594
+        $r = utf8_noplanes($r);
595
+    }
596
+
597
+    #spip_log("_mysql_traite_query: " . substr($r,0, 50) . ".... $db, $prefixe", _LOG_DEBUG);
598
+    return $r;
599 599
 }
600 600
 
601 601
 /**
@@ -613,17 +613,17 @@  discard block
 block discarded – undo
613 613
  *     - False en cas d'erreur.
614 614
  **/
615 615
 function spip_mysql_selectdb($db, $serveur = '', $requeter = true) {
616
-	$link = _mysql_link($serveur);
617
-	try {
618
-		$ok = mysqli_select_db($link, $db);
619
-	} catch (\mysqli_sql_exception $e) {
620
-		$ok = false;
621
-	}
622
-	if (!$ok) {
623
-		spip_log('Echec mysqli_selectdb. Erreur : ' . mysqli_error($link), 'mysql.' . _LOG_CRITIQUE);
624
-	}
625
-
626
-	return $ok;
616
+    $link = _mysql_link($serveur);
617
+    try {
618
+        $ok = mysqli_select_db($link, $db);
619
+    } catch (\mysqli_sql_exception $e) {
620
+        $ok = false;
621
+    }
622
+    if (!$ok) {
623
+        spip_log('Echec mysqli_selectdb. Erreur : ' . mysqli_error($link), 'mysql.' . _LOG_CRITIQUE);
624
+    }
625
+
626
+    return $ok;
627 627
 }
628 628
 
629 629
 
@@ -644,14 +644,14 @@  discard block
 block discarded – undo
644 644
  *     Liste de noms de bases de données
645 645
  **/
646 646
 function spip_mysql_listdbs($serveur = '', $requeter = true) {
647
-	$dbs = [];
648
-	if ($res = spip_mysql_query('SHOW DATABASES', $serveur)) {
649
-		while ($row = mysqli_fetch_assoc($res)) {
650
-			$dbs[] = $row['Database'];
651
-		}
652
-	}
653
-
654
-	return $dbs;
647
+    $dbs = [];
648
+    if ($res = spip_mysql_query('SHOW DATABASES', $serveur)) {
649
+        while ($row = mysqli_fetch_assoc($res)) {
650
+            $dbs[] = $row['Database'];
651
+        }
652
+    }
653
+
654
+    return $dbs;
655 655
 }
656 656
 
657 657
 
@@ -674,73 +674,73 @@  discard block
 block discarded – undo
674 674
  *     - true si la requête réussie, false sinon.
675 675
  */
676 676
 function spip_mysql_create(
677
-	$nom,
678
-	$champs,
679
-	$cles,
680
-	$autoinc = false,
681
-	$temporary = false,
682
-	$serveur = '',
683
-	$requeter = true
677
+    $nom,
678
+    $champs,
679
+    $cles,
680
+    $autoinc = false,
681
+    $temporary = false,
682
+    $serveur = '',
683
+    $requeter = true
684 684
 ) {
685 685
 
686
-	$query = '';
687
-	$keys = '';
688
-	$s = '';
689
-	$p = '';
690
-
691
-	// certains plugins declarent les tables  (permet leur inclusion dans le dump)
692
-	// sans les renseigner (laisse le compilo recuperer la description)
693
-	if (!is_array($champs) || !is_array($cles)) {
694
-		return;
695
-	}
696
-
697
-	$res = spip_mysql_query('SELECT version() as v', $serveur);
698
-	if (($row = mysqli_fetch_array($res)) && (version_compare($row['v'], '5.0', '>='))) {
699
-		spip_mysql_query("SET sql_mode=''", $serveur);
700
-	}
701
-
702
-	foreach ($cles as $k => $v) {
703
-		$keys .= "$s\n\t\t$k ($v)";
704
-		if ($k == 'PRIMARY KEY') {
705
-			$p = $v;
706
-		}
707
-		$s = ',';
708
-	}
709
-	$s = '';
710
-
711
-	$character_set = '';
712
-	if (@$GLOBALS['meta']['charset_sql_base']) {
713
-		$character_set .= ' CHARACTER SET ' . $GLOBALS['meta']['charset_sql_base'];
714
-	}
715
-	if (@$GLOBALS['meta']['charset_collation_sql_base']) {
716
-		$character_set .= ' COLLATE ' . $GLOBALS['meta']['charset_collation_sql_base'];
717
-	}
718
-
719
-	foreach ($champs as $k => $v) {
720
-		$v = _mysql_remplacements_definitions_table($v);
721
-		if (preg_match(',([a-z]*\s*(\(\s*[0-9]*\s*\))?(\s*binary)?),i', $v, $defs)) {
722
-			if (
723
-				preg_match(',(char|text),i', $defs[1])
724
-				and !preg_match(',(binary|CHARACTER|COLLATE),i', $v)
725
-			) {
726
-				$v = $defs[1] . $character_set . ' ' . substr($v, strlen($defs[1]));
727
-			}
728
-		}
729
-
730
-		$query .= "$s\n\t\t$k $v"
731
-			. (($autoinc && ($p == $k) && preg_match(',\b(big|small|medium)?int\b,i', $v))
732
-				? ' auto_increment'
733
-				: ''
734
-			);
735
-		$s = ',';
736
-	}
737
-	$temporary = $temporary ? 'TEMPORARY' : '';
738
-	$q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query" . ($keys ? ",$keys" : '') . ')'
739
-		. ' ENGINE=' . _MYSQL_ENGINE
740
-		. ($character_set ? " DEFAULT $character_set" : '')
741
-		. "\n";
742
-
743
-	return spip_mysql_query($q, $serveur);
686
+    $query = '';
687
+    $keys = '';
688
+    $s = '';
689
+    $p = '';
690
+
691
+    // certains plugins declarent les tables  (permet leur inclusion dans le dump)
692
+    // sans les renseigner (laisse le compilo recuperer la description)
693
+    if (!is_array($champs) || !is_array($cles)) {
694
+        return;
695
+    }
696
+
697
+    $res = spip_mysql_query('SELECT version() as v', $serveur);
698
+    if (($row = mysqli_fetch_array($res)) && (version_compare($row['v'], '5.0', '>='))) {
699
+        spip_mysql_query("SET sql_mode=''", $serveur);
700
+    }
701
+
702
+    foreach ($cles as $k => $v) {
703
+        $keys .= "$s\n\t\t$k ($v)";
704
+        if ($k == 'PRIMARY KEY') {
705
+            $p = $v;
706
+        }
707
+        $s = ',';
708
+    }
709
+    $s = '';
710
+
711
+    $character_set = '';
712
+    if (@$GLOBALS['meta']['charset_sql_base']) {
713
+        $character_set .= ' CHARACTER SET ' . $GLOBALS['meta']['charset_sql_base'];
714
+    }
715
+    if (@$GLOBALS['meta']['charset_collation_sql_base']) {
716
+        $character_set .= ' COLLATE ' . $GLOBALS['meta']['charset_collation_sql_base'];
717
+    }
718
+
719
+    foreach ($champs as $k => $v) {
720
+        $v = _mysql_remplacements_definitions_table($v);
721
+        if (preg_match(',([a-z]*\s*(\(\s*[0-9]*\s*\))?(\s*binary)?),i', $v, $defs)) {
722
+            if (
723
+                preg_match(',(char|text),i', $defs[1])
724
+                and !preg_match(',(binary|CHARACTER|COLLATE),i', $v)
725
+            ) {
726
+                $v = $defs[1] . $character_set . ' ' . substr($v, strlen($defs[1]));
727
+            }
728
+        }
729
+
730
+        $query .= "$s\n\t\t$k $v"
731
+            . (($autoinc && ($p == $k) && preg_match(',\b(big|small|medium)?int\b,i', $v))
732
+                ? ' auto_increment'
733
+                : ''
734
+            );
735
+        $s = ',';
736
+    }
737
+    $temporary = $temporary ? 'TEMPORARY' : '';
738
+    $q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query" . ($keys ? ",$keys" : '') . ')'
739
+        . ' ENGINE=' . _MYSQL_ENGINE
740
+        . ($character_set ? " DEFAULT $character_set" : '')
741
+        . "\n";
742
+
743
+    return spip_mysql_query($q, $serveur);
744 744
 }
745 745
 
746 746
 
@@ -753,25 +753,25 @@  discard block
 block discarded – undo
753 753
  *     Définition SQL adaptée pour MySQL d'un champ de table
754 754
  */
755 755
 function _mysql_remplacements_definitions_table($query) {
756
-	// quelques remplacements
757
-	$num = '(\s*\([0-9]*\))?';
758
-	$enum = '(\s*\([^\)]*\))?';
759
-
760
-	$remplace = [
761
-		'/VARCHAR(\s*[^\s\(])/is' => 'VARCHAR(255)\\1',
762
-		'/^TIMESTAMP($| NULL DEFAULT NULL)/is' => 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
763
-	];
764
-
765
-	if (is_string($query)) {
766
-		$query = preg_replace(array_keys($remplace), $remplace, $query);
767
-	} elseif (is_array($query)) {
768
-		$keys = array_keys($remplace);
769
-		foreach ($query as $k => $q) {
770
-			$query[$k] = preg_replace($keys, $remplace, $q);
771
-		}
772
-	}
773
-
774
-	return $query;
756
+    // quelques remplacements
757
+    $num = '(\s*\([0-9]*\))?';
758
+    $enum = '(\s*\([^\)]*\))?';
759
+
760
+    $remplace = [
761
+        '/VARCHAR(\s*[^\s\(])/is' => 'VARCHAR(255)\\1',
762
+        '/^TIMESTAMP($| NULL DEFAULT NULL)/is' => 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
763
+    ];
764
+
765
+    if (is_string($query)) {
766
+        $query = preg_replace(array_keys($remplace), $remplace, $query);
767
+    } elseif (is_array($query)) {
768
+        $keys = array_keys($remplace);
769
+        foreach ($query as $k => $q) {
770
+            $query[$k] = preg_replace($keys, $remplace, $q);
771
+        }
772
+    }
773
+
774
+    return $query;
775 775
 }
776 776
 
777 777
 
@@ -784,7 +784,7 @@  discard block
 block discarded – undo
784 784
  * @return bool true si la base est créee.
785 785
  **/
786 786
 function spip_mysql_create_base($nom, $serveur = '', $requeter = true) {
787
-	return spip_mysql_query("CREATE DATABASE `$nom`", $serveur, $requeter);
787
+    return spip_mysql_query("CREATE DATABASE `$nom`", $serveur, $requeter);
788 788
 }
789 789
 
790 790
 
@@ -805,19 +805,19 @@  discard block
 block discarded – undo
805 805
  *     - string texte de la requête si $requeter vaut false
806 806
  */
807 807
 function spip_mysql_create_view($nom, $query_select, $serveur = '', $requeter = true) {
808
-	if (!$query_select) {
809
-		return false;
810
-	}
811
-	// vue deja presente
812
-	if (sql_showtable($nom, false, $serveur)) {
813
-		spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", _LOG_ERREUR);
808
+    if (!$query_select) {
809
+        return false;
810
+    }
811
+    // vue deja presente
812
+    if (sql_showtable($nom, false, $serveur)) {
813
+        spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", _LOG_ERREUR);
814 814
 
815
-		return false;
816
-	}
815
+        return false;
816
+    }
817 817
 
818
-	$query = "CREATE VIEW $nom AS " . $query_select;
818
+    $query = "CREATE VIEW $nom AS " . $query_select;
819 819
 
820
-	return spip_mysql_query($query, $serveur, $requeter);
820
+    return spip_mysql_query($query, $serveur, $requeter);
821 821
 }
822 822
 
823 823
 
@@ -833,11 +833,11 @@  discard block
 block discarded – undo
833 833
  *     - true si la requête a réussie, false sinon
834 834
  */
835 835
 function spip_mysql_drop_table($table, $exist = '', $serveur = '', $requeter = true) {
836
-	if ($exist) {
837
-		$exist = ' IF EXISTS';
838
-	}
836
+    if ($exist) {
837
+        $exist = ' IF EXISTS';
838
+    }
839 839
 
840
-	return spip_mysql_query("DROP TABLE$exist $table", $serveur, $requeter);
840
+    return spip_mysql_query("DROP TABLE$exist $table", $serveur, $requeter);
841 841
 }
842 842
 
843 843
 /**
@@ -852,11 +852,11 @@  discard block
 block discarded – undo
852 852
  *     - true si la requête a réussie, false sinon
853 853
  */
854 854
 function spip_mysql_drop_view($view, $exist = '', $serveur = '', $requeter = true) {
855
-	if ($exist) {
856
-		$exist = ' IF EXISTS';
857
-	}
855
+    if ($exist) {
856
+        $exist = ' IF EXISTS';
857
+    }
858 858
 
859
-	return spip_mysql_query("DROP VIEW$exist $view", $serveur, $requeter);
859
+    return spip_mysql_query("DROP VIEW$exist $view", $serveur, $requeter);
860 860
 }
861 861
 
862 862
 /**
@@ -873,7 +873,7 @@  discard block
 block discarded – undo
873 873
  *     Ressource à utiliser avec sql_fetch()
874 874
  **/
875 875
 function spip_mysql_showbase($match, $serveur = '', $requeter = true) {
876
-	return spip_mysql_query('SHOW TABLES LIKE ' . _q($match), $serveur, $requeter);
876
+    return spip_mysql_query('SHOW TABLES LIKE ' . _q($match), $serveur, $requeter);
877 877
 }
878 878
 
879 879
 /**
@@ -889,17 +889,17 @@  discard block
 block discarded – undo
889 889
  *     - true si la requête a réussie, false sinon
890 890
  */
891 891
 function spip_mysql_repair($table, $serveur = '', $requeter = true) {
892
-	$table_status = spip_mysql_fetch(spip_mysql_query('SHOW TABLE STATUS WHERE Name = ' . _q($table), $serveur, true));
893
-	$engine = $table_status['Engine'];
894
-	if ($engine == 'InnoDB') {
895
-		if (spip_mysql_alter("TABLE $table ENGINE = InnoDB", $serveur, $requeter)) {
896
-			return [' OK '];
897
-		}
898
-	} elseif ($engine == 'MyISAM') {
899
-		return spip_mysql_query("REPAIR TABLE `$table`", $serveur, $requeter);
900
-	} else {
901
-		spip_log("spip_mysql_repair impossible pour la table $table engine $engine", 'mysql.' . _LOG_DEBUG);
902
-	}
892
+    $table_status = spip_mysql_fetch(spip_mysql_query('SHOW TABLE STATUS WHERE Name = ' . _q($table), $serveur, true));
893
+    $engine = $table_status['Engine'];
894
+    if ($engine == 'InnoDB') {
895
+        if (spip_mysql_alter("TABLE $table ENGINE = InnoDB", $serveur, $requeter)) {
896
+            return [' OK '];
897
+        }
898
+    } elseif ($engine == 'MyISAM') {
899
+        return spip_mysql_query("REPAIR TABLE `$table`", $serveur, $requeter);
900
+    } else {
901
+        spip_log("spip_mysql_repair impossible pour la table $table engine $engine", 'mysql.' . _LOG_DEBUG);
902
+    }
903 903
 }
904 904
 
905 905
 /**
@@ -917,12 +917,12 @@  discard block
 block discarded – undo
917 917
  *     - string : requete sql, si $requeter = true
918 918
  **/
919 919
 function spip_mysql_table_exists(string $table, $serveur = '', $requeter = true) {
920
-	$r = spip_mysql_query('SHOW TABLES LIKE ' . _q($table), $serveur, $requeter);
921
-	if (!$requeter) {
922
-		return $r;
923
-	}
924
-	$res = spip_mysql_fetch($r);
925
-	return (bool) $res;
920
+    $r = spip_mysql_query('SHOW TABLES LIKE ' . _q($table), $serveur, $requeter);
921
+    if (!$requeter) {
922
+        return $r;
923
+    }
924
+    $res = spip_mysql_fetch($r);
925
+    return (bool) $res;
926 926
 }
927 927
 
928 928
 define('_MYSQL_RE_SHOW_TABLE', '/^[^(),]*\(((?:[^()]*\((?:[^()]*\([^()]*\))?[^()]*\)[^()]*)*[^()]*)\)[^()]*$/');
@@ -945,86 +945,86 @@  discard block
 block discarded – undo
945 945
  *     - array description de la table sinon
946 946
  */
947 947
 function spip_mysql_showtable($nom_table, $serveur = '', $requeter = true) {
948
-	$s = spip_mysql_query("SHOW CREATE TABLE `$nom_table`", $serveur, $requeter);
949
-	if (!$s) {
950
-		return '';
951
-	}
952
-	if (!$requeter) {
953
-		return $s;
954
-	}
955
-
956
-	[, $a] = mysqli_fetch_array($s, MYSQLI_NUM);
957
-	if (preg_match(_MYSQL_RE_SHOW_TABLE, $a, $r)) {
958
-		$desc = $r[1];
959
-		// extraction d'une KEY éventuelle en prenant garde de ne pas
960
-		// relever un champ dont le nom contient KEY (ex. ID_WHISKEY)
961
-		if (preg_match('/^(.*?),([^,]*\sKEY[ (].*)$/s', $desc, $r)) {
962
-			$namedkeys = $r[2];
963
-			$desc = $r[1];
964
-		} else {
965
-			$namedkeys = '';
966
-		}
967
-
968
-		$fields = [];
969
-		foreach (preg_split('/,\s*`/', $desc) as $v) {
970
-			preg_match('/^\s*`?([^`]*)`\s*(.*)/', $v, $r);
971
-			$fields[strtolower($r[1])] = $r[2];
972
-		}
973
-		$keys = [];
974
-
975
-		foreach (preg_split('/\)\s*(,|$)/', $namedkeys) as $v) {
976
-			if (preg_match('/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/', $v, $r)) {
977
-				$k = str_replace('`', '', trim($r[1]));
978
-				$t = strtolower(str_replace('`', '', $r[2]));
979
-				if ($k && !isset($keys[$k])) {
980
-					$keys[$k] = $t;
981
-				} else {
982
-					$keys[] = $t;
983
-				}
984
-			}
985
-		}
986
-		spip_mysql_free($s);
987
-
988
-		return ['field' => $fields, 'key' => $keys];
989
-	}
990
-
991
-	$res = spip_mysql_query("SHOW COLUMNS FROM `$nom_table`", $serveur);
992
-	if ($res) {
993
-		$nfields = [];
994
-		$nkeys = [];
995
-		while ($val = spip_mysql_fetch($res)) {
996
-			$nfields[$val['Field']] = $val['Type'];
997
-			if ($val['Null'] == 'NO') {
998
-				$nfields[$val['Field']] .= ' NOT NULL';
999
-			}
1000
-			if ($val['Default'] === '0' || $val['Default']) {
1001
-				if (preg_match('/[A-Z_]/', $val['Default'])) {
1002
-					$nfields[$val['Field']] .= ' DEFAULT ' . $val['Default'];
1003
-				} else {
1004
-					$nfields[$val['Field']] .= " DEFAULT '" . $val['Default'] . "'";
1005
-				}
1006
-			}
1007
-			if ($val['Extra']) {
1008
-				$nfields[$val['Field']] .= ' ' . $val['Extra'];
1009
-			}
1010
-			if ($val['Key'] == 'PRI') {
1011
-				$nkeys['PRIMARY KEY'] = $val['Field'];
1012
-			} else {
1013
-				if ($val['Key'] == 'MUL') {
1014
-					$nkeys['KEY ' . $val['Field']] = $val['Field'];
1015
-				} else {
1016
-					if ($val['Key'] == 'UNI') {
1017
-						$nkeys['UNIQUE KEY ' . $val['Field']] = $val['Field'];
1018
-					}
1019
-				}
1020
-			}
1021
-		}
1022
-		spip_mysql_free($res);
1023
-
1024
-		return ['field' => $nfields, 'key' => $nkeys];
1025
-	}
1026
-
1027
-	return '';
948
+    $s = spip_mysql_query("SHOW CREATE TABLE `$nom_table`", $serveur, $requeter);
949
+    if (!$s) {
950
+        return '';
951
+    }
952
+    if (!$requeter) {
953
+        return $s;
954
+    }
955
+
956
+    [, $a] = mysqli_fetch_array($s, MYSQLI_NUM);
957
+    if (preg_match(_MYSQL_RE_SHOW_TABLE, $a, $r)) {
958
+        $desc = $r[1];
959
+        // extraction d'une KEY éventuelle en prenant garde de ne pas
960
+        // relever un champ dont le nom contient KEY (ex. ID_WHISKEY)
961
+        if (preg_match('/^(.*?),([^,]*\sKEY[ (].*)$/s', $desc, $r)) {
962
+            $namedkeys = $r[2];
963
+            $desc = $r[1];
964
+        } else {
965
+            $namedkeys = '';
966
+        }
967
+
968
+        $fields = [];
969
+        foreach (preg_split('/,\s*`/', $desc) as $v) {
970
+            preg_match('/^\s*`?([^`]*)`\s*(.*)/', $v, $r);
971
+            $fields[strtolower($r[1])] = $r[2];
972
+        }
973
+        $keys = [];
974
+
975
+        foreach (preg_split('/\)\s*(,|$)/', $namedkeys) as $v) {
976
+            if (preg_match('/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/', $v, $r)) {
977
+                $k = str_replace('`', '', trim($r[1]));
978
+                $t = strtolower(str_replace('`', '', $r[2]));
979
+                if ($k && !isset($keys[$k])) {
980
+                    $keys[$k] = $t;
981
+                } else {
982
+                    $keys[] = $t;
983
+                }
984
+            }
985
+        }
986
+        spip_mysql_free($s);
987
+
988
+        return ['field' => $fields, 'key' => $keys];
989
+    }
990
+
991
+    $res = spip_mysql_query("SHOW COLUMNS FROM `$nom_table`", $serveur);
992
+    if ($res) {
993
+        $nfields = [];
994
+        $nkeys = [];
995
+        while ($val = spip_mysql_fetch($res)) {
996
+            $nfields[$val['Field']] = $val['Type'];
997
+            if ($val['Null'] == 'NO') {
998
+                $nfields[$val['Field']] .= ' NOT NULL';
999
+            }
1000
+            if ($val['Default'] === '0' || $val['Default']) {
1001
+                if (preg_match('/[A-Z_]/', $val['Default'])) {
1002
+                    $nfields[$val['Field']] .= ' DEFAULT ' . $val['Default'];
1003
+                } else {
1004
+                    $nfields[$val['Field']] .= " DEFAULT '" . $val['Default'] . "'";
1005
+                }
1006
+            }
1007
+            if ($val['Extra']) {
1008
+                $nfields[$val['Field']] .= ' ' . $val['Extra'];
1009
+            }
1010
+            if ($val['Key'] == 'PRI') {
1011
+                $nkeys['PRIMARY KEY'] = $val['Field'];
1012
+            } else {
1013
+                if ($val['Key'] == 'MUL') {
1014
+                    $nkeys['KEY ' . $val['Field']] = $val['Field'];
1015
+                } else {
1016
+                    if ($val['Key'] == 'UNI') {
1017
+                        $nkeys['UNIQUE KEY ' . $val['Field']] = $val['Field'];
1018
+                    }
1019
+                }
1020
+            }
1021
+        }
1022
+        spip_mysql_free($res);
1023
+
1024
+        return ['field' => $nfields, 'key' => $nkeys];
1025
+    }
1026
+
1027
+    return '';
1028 1028
 }
1029 1029
 
1030 1030
 
@@ -1040,12 +1040,12 @@  discard block
 block discarded – undo
1040 1040
  * @return array           Ligne de résultat
1041 1041
  */
1042 1042
 function spip_mysql_fetch($r, $t = '', $serveur = '', $requeter = true) {
1043
-	if (!$t) {
1044
-		$t = \MYSQLI_ASSOC;
1045
-	}
1046
-	if ($r) {
1047
-		return mysqli_fetch_array($r, $t);
1048
-	}
1043
+    if (!$t) {
1044
+        $t = \MYSQLI_ASSOC;
1045
+    }
1046
+    if ($r) {
1047
+        return mysqli_fetch_array($r, $t);
1048
+    }
1049 1049
 }
1050 1050
 
1051 1051
 /**
@@ -1058,9 +1058,9 @@  discard block
 block discarded – undo
1058 1058
  * @return bool True si déplacement réussi, false sinon.
1059 1059
  **/
1060 1060
 function spip_mysql_seek($r, $row_number, $serveur = '', $requeter = true) {
1061
-	if ($r and mysqli_num_rows($r)) {
1062
-		return mysqli_data_seek($r, $row_number);
1063
-	}
1061
+    if ($r and mysqli_num_rows($r)) {
1062
+        return mysqli_data_seek($r, $row_number);
1063
+    }
1064 1064
 }
1065 1065
 
1066 1066
 
@@ -1078,26 +1078,26 @@  discard block
 block discarded – undo
1078 1078
  *     - int Nombre de lignes (0 si la requête n'a pas réussie)
1079 1079
  **/
1080 1080
 function spip_mysql_countsel(
1081
-	$from = [],
1082
-	$where = [],
1083
-	$groupby = '',
1084
-	$having = [],
1085
-	$serveur = '',
1086
-	$requeter = true
1081
+    $from = [],
1082
+    $where = [],
1083
+    $groupby = '',
1084
+    $having = [],
1085
+    $serveur = '',
1086
+    $requeter = true
1087 1087
 ) {
1088
-	$c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby)));
1089
-
1090
-	$r = spip_mysql_select("COUNT($c)", $from, $where, '', '', '', $having, $serveur, $requeter);
1091
-	if (!$requeter) {
1092
-		return $r;
1093
-	}
1094
-	if (!$r instanceof mysqli_result) {
1095
-		return 0;
1096
-	}
1097
-	[$c] = mysqli_fetch_array($r, MYSQLI_NUM);
1098
-	mysqli_free_result($r);
1099
-
1100
-	return $c;
1088
+    $c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby)));
1089
+
1090
+    $r = spip_mysql_select("COUNT($c)", $from, $where, '', '', '', $having, $serveur, $requeter);
1091
+    if (!$requeter) {
1092
+        return $r;
1093
+    }
1094
+    if (!$r instanceof mysqli_result) {
1095
+        return 0;
1096
+    }
1097
+    [$c] = mysqli_fetch_array($r, MYSQLI_NUM);
1098
+    mysqli_free_result($r);
1099
+
1100
+    return $c;
1101 1101
 }
1102 1102
 
1103 1103
 
@@ -1120,16 +1120,16 @@  discard block
 block discarded – undo
1120 1120
  *     Erreur eventuelle
1121 1121
  **/
1122 1122
 function spip_mysql_error($query = '', $serveur = '', $requeter = true) {
1123
-	$link = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]['link'];
1124
-	$s = mysqli_error($link);
1125
-	if ($s) {
1126
-		$trace = debug_backtrace();
1127
-		if ($trace[0]['function'] != 'spip_mysql_error') {
1128
-			spip_log("$s - $query - " . sql_error_backtrace(), 'mysql.' . _LOG_ERREUR);
1129
-		}
1130
-	}
1131
-
1132
-	return $s;
1123
+    $link = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]['link'];
1124
+    $s = mysqli_error($link);
1125
+    if ($s) {
1126
+        $trace = debug_backtrace();
1127
+        if ($trace[0]['function'] != 'spip_mysql_error') {
1128
+            spip_log("$s - $query - " . sql_error_backtrace(), 'mysql.' . _LOG_ERREUR);
1129
+        }
1130
+    }
1131
+
1132
+    return $s;
1133 1133
 }
1134 1134
 
1135 1135
 
@@ -1144,18 +1144,18 @@  discard block
 block discarded – undo
1144 1144
  *     0, pas d'erreur. Autre, numéro de l'erreur.
1145 1145
  **/
1146 1146
 function spip_mysql_errno($serveur = '', $requeter = true) {
1147
-	$link = $GLOBALS['connexions'][$serveur ?: 0]['link'];
1148
-	$s = mysqli_errno($link);
1149
-	// 2006 MySQL server has gone away
1150
-	// 2013 Lost connection to MySQL server during query
1151
-	if (in_array($s, [2006, 2013])) {
1152
-		define('spip_interdire_cache', true);
1153
-	}
1154
-	if ($s) {
1155
-		spip_log("Erreur mysql $s", _LOG_ERREUR);
1156
-	}
1157
-
1158
-	return $s;
1147
+    $link = $GLOBALS['connexions'][$serveur ?: 0]['link'];
1148
+    $s = mysqli_errno($link);
1149
+    // 2006 MySQL server has gone away
1150
+    // 2013 Lost connection to MySQL server during query
1151
+    if (in_array($s, [2006, 2013])) {
1152
+        define('spip_interdire_cache', true);
1153
+    }
1154
+    if ($s) {
1155
+        spip_log("Erreur mysql $s", _LOG_ERREUR);
1156
+    }
1157
+
1158
+    return $s;
1159 1159
 }
1160 1160
 
1161 1161
 
@@ -1169,9 +1169,9 @@  discard block
 block discarded – undo
1169 1169
  * @return int               Nombre de lignes
1170 1170
  */
1171 1171
 function spip_mysql_count($r, $serveur = '', $requeter = true) {
1172
-	if ($r) {
1173
-		return mysqli_num_rows($r);
1174
-	}
1172
+    if ($r) {
1173
+        return mysqli_num_rows($r);
1174
+    }
1175 1175
 }
1176 1176
 
1177 1177
 
@@ -1187,7 +1187,7 @@  discard block
 block discarded – undo
1187 1187
  * @return bool              True si réussi
1188 1188
  */
1189 1189
 function spip_mysql_free($r, $serveur = '', $requeter = true) {
1190
-	return (($r instanceof mysqli_result) ? mysqli_free_result($r) : false);
1190
+    return (($r instanceof mysqli_result) ? mysqli_free_result($r) : false);
1191 1191
 }
1192 1192
 
1193 1193
 
@@ -1215,59 +1215,59 @@  discard block
 block discarded – undo
1215 1215
  **/
1216 1216
 function spip_mysql_insert($table, $champs, $valeurs, $desc = [], $serveur = '', $requeter = true) {
1217 1217
 
1218
-	$e = null;
1219
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
1220
-	$link = $connexion['link'];
1221
-	$table = prefixer_table_spip($table, $connexion['prefixe']);
1222
-
1223
-	// remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
1224
-	if (
1225
-		defined('_MYSQL_NOPLANES')
1226
-		and _MYSQL_NOPLANES
1227
-		and !empty($GLOBALS['meta']['charset_sql_connexion'])
1228
-		and $GLOBALS['meta']['charset_sql_connexion'] == 'utf8'
1229
-	) {
1230
-		include_spip('inc/charsets');
1231
-		$valeurs = utf8_noplanes($valeurs);
1232
-	}
1233
-
1234
-	$query = "INSERT INTO $table $champs VALUES $valeurs";
1235
-	if (!$requeter) {
1236
-		return $query;
1237
-	}
1238
-
1239
-	if (isset($_GET['var_profile'])) {
1240
-		include_spip('public/tracer');
1241
-		$t = trace_query_start();
1242
-		$e = '';
1243
-	} else {
1244
-		$t = 0;
1245
-	}
1246
-
1247
-	$connexion['last'] = $query;
1248
-	#spip_log($query, 'mysql.'._LOG_DEBUG);
1249
-	$r = false;
1250
-	$insert = false;
1251
-	try {
1252
-		$insert = mysqli_query($link, $query);
1253
-	} catch (\mysqli_sql_exception $e) {
1254
-		spip_log('mysqli_sql_exception: ' . $e->getMessage(), 'mysql.' . _LOG_DEBUG);
1255
-		// TODO: utiliser l’exception ensuite plutôt que les appels à spip_mysql_errno()
1256
-		// mais il faut pour php < 8.1 forcer les exeptions via mysqli_report().
1257
-	}
1258
-	if ($insert) {
1259
-		$r = mysqli_insert_id($link);
1260
-	} else {
1261
-		// Log de l'erreur eventuelle
1262
-		if ($e = spip_mysql_errno($serveur)) {
1263
-			// et du fautif
1264
-			$e .= spip_mysql_error($query, $serveur);
1265
-		}
1266
-	}
1267
-
1268
-	return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
1269
-
1270
-	// return $r ? $r : (($r===0) ? -1 : 0); pb avec le multi-base.
1218
+    $e = null;
1219
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
1220
+    $link = $connexion['link'];
1221
+    $table = prefixer_table_spip($table, $connexion['prefixe']);
1222
+
1223
+    // remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
1224
+    if (
1225
+        defined('_MYSQL_NOPLANES')
1226
+        and _MYSQL_NOPLANES
1227
+        and !empty($GLOBALS['meta']['charset_sql_connexion'])
1228
+        and $GLOBALS['meta']['charset_sql_connexion'] == 'utf8'
1229
+    ) {
1230
+        include_spip('inc/charsets');
1231
+        $valeurs = utf8_noplanes($valeurs);
1232
+    }
1233
+
1234
+    $query = "INSERT INTO $table $champs VALUES $valeurs";
1235
+    if (!$requeter) {
1236
+        return $query;
1237
+    }
1238
+
1239
+    if (isset($_GET['var_profile'])) {
1240
+        include_spip('public/tracer');
1241
+        $t = trace_query_start();
1242
+        $e = '';
1243
+    } else {
1244
+        $t = 0;
1245
+    }
1246
+
1247
+    $connexion['last'] = $query;
1248
+    #spip_log($query, 'mysql.'._LOG_DEBUG);
1249
+    $r = false;
1250
+    $insert = false;
1251
+    try {
1252
+        $insert = mysqli_query($link, $query);
1253
+    } catch (\mysqli_sql_exception $e) {
1254
+        spip_log('mysqli_sql_exception: ' . $e->getMessage(), 'mysql.' . _LOG_DEBUG);
1255
+        // TODO: utiliser l’exception ensuite plutôt que les appels à spip_mysql_errno()
1256
+        // mais il faut pour php < 8.1 forcer les exeptions via mysqli_report().
1257
+    }
1258
+    if ($insert) {
1259
+        $r = mysqli_insert_id($link);
1260
+    } else {
1261
+        // Log de l'erreur eventuelle
1262
+        if ($e = spip_mysql_errno($serveur)) {
1263
+            // et du fautif
1264
+            $e .= spip_mysql_error($query, $serveur);
1265
+        }
1266
+    }
1267
+
1268
+    return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
1269
+
1270
+    // return $r ? $r : (($r===0) ? -1 : 0); pb avec le multi-base.
1271 1271
 }
1272 1272
 
1273 1273
 /**
@@ -1292,26 +1292,26 @@  discard block
 block discarded – undo
1292 1292
  **/
1293 1293
 function spip_mysql_insertq($table, $couples = [], $desc = [], $serveur = '', $requeter = true) {
1294 1294
 
1295
-	if (!$desc) {
1296
-		$desc = description_table($table, $serveur);
1297
-	}
1298
-	if (!$desc) {
1299
-		$couples = [];
1300
-	}
1301
-	$fields = $desc['field'] ?? [];
1302
-
1303
-	foreach ($couples as $champ => $val) {
1304
-		$couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1305
-	}
1306
-
1307
-	return spip_mysql_insert(
1308
-		$table,
1309
-		'(' . join(',', array_keys($couples)) . ')',
1310
-		'(' . join(',', $couples) . ')',
1311
-		$desc,
1312
-		$serveur,
1313
-		$requeter
1314
-	);
1295
+    if (!$desc) {
1296
+        $desc = description_table($table, $serveur);
1297
+    }
1298
+    if (!$desc) {
1299
+        $couples = [];
1300
+    }
1301
+    $fields = $desc['field'] ?? [];
1302
+
1303
+    foreach ($couples as $champ => $val) {
1304
+        $couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1305
+    }
1306
+
1307
+    return spip_mysql_insert(
1308
+        $table,
1309
+        '(' . join(',', array_keys($couples)) . ')',
1310
+        '(' . join(',', $couples) . ')',
1311
+        $desc,
1312
+        $serveur,
1313
+        $requeter
1314
+    );
1315 1315
 }
1316 1316
 
1317 1317
 
@@ -1336,34 +1336,34 @@  discard block
 block discarded – undo
1336 1336
  **/
1337 1337
 function spip_mysql_insertq_multi($table, $tab_couples = [], $desc = [], $serveur = '', $requeter = true) {
1338 1338
 
1339
-	if (!$desc) {
1340
-		$desc = description_table($table, $serveur);
1341
-	}
1342
-	if (!$desc) {
1343
-		$tab_couples = [];
1344
-	}
1345
-	$fields = $desc['field'] ?? [];
1346
-
1347
-	$cles = '(' . join(',', array_keys(reset($tab_couples))) . ')';
1348
-	$valeurs = [];
1349
-	$r = false;
1350
-
1351
-	// Quoter et Inserer par groupes de 100 max pour eviter un debordement de pile
1352
-	foreach ($tab_couples as $couples) {
1353
-		foreach ($couples as $champ => $val) {
1354
-			$couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1355
-		}
1356
-		$valeurs[] = '(' . join(',', $couples) . ')';
1357
-		if (count($valeurs) >= 100) {
1358
-			$r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1359
-			$valeurs = [];
1360
-		}
1361
-	}
1362
-	if (count($valeurs)) {
1363
-		$r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1364
-	}
1365
-
1366
-	return $r; // dans le cas d'une table auto_increment, le dernier insert_id
1339
+    if (!$desc) {
1340
+        $desc = description_table($table, $serveur);
1341
+    }
1342
+    if (!$desc) {
1343
+        $tab_couples = [];
1344
+    }
1345
+    $fields = $desc['field'] ?? [];
1346
+
1347
+    $cles = '(' . join(',', array_keys(reset($tab_couples))) . ')';
1348
+    $valeurs = [];
1349
+    $r = false;
1350
+
1351
+    // Quoter et Inserer par groupes de 100 max pour eviter un debordement de pile
1352
+    foreach ($tab_couples as $couples) {
1353
+        foreach ($couples as $champ => $val) {
1354
+            $couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1355
+        }
1356
+        $valeurs[] = '(' . join(',', $couples) . ')';
1357
+        if (count($valeurs) >= 100) {
1358
+            $r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1359
+            $valeurs = [];
1360
+        }
1361
+    }
1362
+    if (count($valeurs)) {
1363
+        $r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1364
+    }
1365
+
1366
+    return $r; // dans le cas d'une table auto_increment, le dernier insert_id
1367 1367
 }
1368 1368
 
1369 1369
 /**
@@ -1388,19 +1388,19 @@  discard block
 block discarded – undo
1388 1388
  *     - array Tableau décrivant la requête et son temps d'exécution si var_profile est actif
1389 1389
  */
1390 1390
 function spip_mysql_update($table, $champs, $where = '', $desc = [], $serveur = '', $requeter = true) {
1391
-	$set = [];
1392
-	foreach ($champs as $champ => $val) {
1393
-		$set[] = $champ . "=$val";
1394
-	}
1395
-	if (!empty($set)) {
1396
-		return spip_mysql_query(
1397
-			calculer_mysql_expression('UPDATE', $table, ',')
1398
-			. calculer_mysql_expression('SET', $set, ',')
1399
-			. calculer_mysql_expression('WHERE', $where),
1400
-			$serveur,
1401
-			$requeter
1402
-		);
1403
-	}
1391
+    $set = [];
1392
+    foreach ($champs as $champ => $val) {
1393
+        $set[] = $champ . "=$val";
1394
+    }
1395
+    if (!empty($set)) {
1396
+        return spip_mysql_query(
1397
+            calculer_mysql_expression('UPDATE', $table, ',')
1398
+            . calculer_mysql_expression('SET', $set, ',')
1399
+            . calculer_mysql_expression('WHERE', $where),
1400
+            $serveur,
1401
+            $requeter
1402
+        );
1403
+    }
1404 1404
 }
1405 1405
 
1406 1406
 /**
@@ -1433,29 +1433,29 @@  discard block
 block discarded – undo
1433 1433
  */
1434 1434
 function spip_mysql_updateq($table, $champs, $where = '', $desc = [], $serveur = '', $requeter = true) {
1435 1435
 
1436
-	if (!$champs) {
1437
-		return;
1438
-	}
1439
-	if (!$desc) {
1440
-		$desc = description_table($table, $serveur);
1441
-	}
1442
-	if (!$desc) {
1443
-		$champs = [];
1444
-	} else {
1445
-		$fields = $desc['field'];
1446
-	}
1447
-	$set = [];
1448
-	foreach ($champs as $champ => $val) {
1449
-		$set[] = $champ . '=' . spip_mysql_cite($val, @$fields[$champ]);
1450
-	}
1451
-
1452
-	return spip_mysql_query(
1453
-		calculer_mysql_expression('UPDATE', $table, ',')
1454
-		. calculer_mysql_expression('SET', $set, ',')
1455
-		. calculer_mysql_expression('WHERE', $where),
1456
-		$serveur,
1457
-		$requeter
1458
-	);
1436
+    if (!$champs) {
1437
+        return;
1438
+    }
1439
+    if (!$desc) {
1440
+        $desc = description_table($table, $serveur);
1441
+    }
1442
+    if (!$desc) {
1443
+        $champs = [];
1444
+    } else {
1445
+        $fields = $desc['field'];
1446
+    }
1447
+    $set = [];
1448
+    foreach ($champs as $champ => $val) {
1449
+        $set[] = $champ . '=' . spip_mysql_cite($val, @$fields[$champ]);
1450
+    }
1451
+
1452
+    return spip_mysql_query(
1453
+        calculer_mysql_expression('UPDATE', $table, ',')
1454
+        . calculer_mysql_expression('SET', $set, ',')
1455
+        . calculer_mysql_expression('WHERE', $where),
1456
+        $serveur,
1457
+        $requeter
1458
+    );
1459 1459
 }
1460 1460
 
1461 1461
 /**
@@ -1471,22 +1471,22 @@  discard block
 block discarded – undo
1471 1471
  *     - False en cas d'erreur.
1472 1472
  **/
1473 1473
 function spip_mysql_delete($table, $where = '', $serveur = '', $requeter = true) {
1474
-	$res = spip_mysql_query(
1475
-		calculer_mysql_expression('DELETE FROM', $table, ',')
1476
-		. calculer_mysql_expression('WHERE', $where),
1477
-		$serveur,
1478
-		$requeter
1479
-	);
1480
-	if (!$requeter) {
1481
-		return $res;
1482
-	}
1483
-	if ($res) {
1484
-		$link = _mysql_link($serveur);
1485
-
1486
-		return mysqli_affected_rows($link);
1487
-	} else {
1488
-		return false;
1489
-	}
1474
+    $res = spip_mysql_query(
1475
+        calculer_mysql_expression('DELETE FROM', $table, ',')
1476
+        . calculer_mysql_expression('WHERE', $where),
1477
+        $serveur,
1478
+        $requeter
1479
+    );
1480
+    if (!$requeter) {
1481
+        return $res;
1482
+    }
1483
+    if ($res) {
1484
+        $link = _mysql_link($serveur);
1485
+
1486
+        return mysqli_affected_rows($link);
1487
+    } else {
1488
+        return false;
1489
+    }
1490 1490
 }
1491 1491
 
1492 1492
 
@@ -1515,10 +1515,10 @@  discard block
 block discarded – undo
1515 1515
  *     - False en cas d'erreur.
1516 1516
  **/
1517 1517
 function spip_mysql_replace($table, $couples, $desc = [], $serveur = '', $requeter = true) {
1518
-	return spip_mysql_query("REPLACE $table (" . join(',', array_keys($couples)) . ') VALUES (' . join(
1519
-		',',
1520
-		array_map('_q', $couples)
1521
-	) . ')', $serveur, $requeter);
1518
+    return spip_mysql_query("REPLACE $table (" . join(',', array_keys($couples)) . ') VALUES (' . join(
1519
+        ',',
1520
+        array_map('_q', $couples)
1521
+    ) . ')', $serveur, $requeter);
1522 1522
 }
1523 1523
 
1524 1524
 
@@ -1547,14 +1547,14 @@  discard block
 block discarded – undo
1547 1547
  *     - False en cas d'erreur.
1548 1548
  **/
1549 1549
 function spip_mysql_replace_multi($table, $tab_couples, $desc = [], $serveur = '', $requeter = true) {
1550
-	$cles = '(' . join(',', array_keys($tab_couples[0])) . ')';
1551
-	$valeurs = [];
1552
-	foreach ($tab_couples as $couples) {
1553
-		$valeurs[] = '(' . join(',', array_map('_q', $couples)) . ')';
1554
-	}
1555
-	$valeurs = implode(', ', $valeurs);
1556
-
1557
-	return spip_mysql_query("REPLACE $table $cles VALUES $valeurs", $serveur, $requeter);
1550
+    $cles = '(' . join(',', array_keys($tab_couples[0])) . ')';
1551
+    $valeurs = [];
1552
+    foreach ($tab_couples as $couples) {
1553
+        $valeurs[] = '(' . join(',', array_map('_q', $couples)) . ')';
1554
+    }
1555
+    $valeurs = implode(', ', $valeurs);
1556
+
1557
+    return spip_mysql_query("REPLACE $table $cles VALUES $valeurs", $serveur, $requeter);
1558 1558
 }
1559 1559
 
1560 1560
 
@@ -1569,32 +1569,32 @@  discard block
 block discarded – undo
1569 1569
  * @return string       Texte de sélection pour la requête
1570 1570
  */
1571 1571
 function spip_mysql_multi($objet, $lang) {
1572
-	$lengthlang = strlen("[$lang]");
1573
-	$posmulti = 'INSTR(' . $objet . ", '<multi>')";
1574
-	$posfinmulti = 'INSTR(' . $objet . ", '</multi>')";
1575
-	$debutchaine = 'LEFT(' . $objet . ", $posmulti-1)";
1576
-	$finchaine = 'RIGHT(' . $objet . ', CHAR_LENGTH(' . $objet . ") -(7+$posfinmulti))";
1577
-	$chainemulti = 'TRIM(SUBSTRING(' . $objet . ", $posmulti+7, $posfinmulti -(7+$posmulti)))";
1578
-	$poslang = "INSTR($chainemulti,'[" . $lang . "]')";
1579
-	$poslang = "IF($poslang=0,INSTR($chainemulti,']')+1,$poslang+$lengthlang)";
1580
-	$chainelang = 'TRIM(SUBSTRING(' . $objet . ", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))";
1581
-	$posfinlang = 'INSTR(' . $chainelang . ", '[')";
1582
-	$chainelang = "IF($posfinlang>0,LEFT($chainelang,$posfinlang-1),$chainelang)";
1583
-	//$chainelang = "LEFT($chainelang,$posfinlang-1)";
1584
-	$retour = "(TRIM(IF($posmulti = 0 , " .
1585
-		'     TRIM(' . $objet . '), ' .
1586
-		'     CONCAT( ' .
1587
-		"          $debutchaine, " .
1588
-		'          IF( ' .
1589
-		"               $poslang = 0, " .
1590
-		"                     $chainemulti, " .
1591
-		"               $chainelang" .
1592
-		'          ), ' .
1593
-		"          $finchaine" .
1594
-		'     ) ' .
1595
-		'))) AS multi';
1596
-
1597
-	return $retour;
1572
+    $lengthlang = strlen("[$lang]");
1573
+    $posmulti = 'INSTR(' . $objet . ", '<multi>')";
1574
+    $posfinmulti = 'INSTR(' . $objet . ", '</multi>')";
1575
+    $debutchaine = 'LEFT(' . $objet . ", $posmulti-1)";
1576
+    $finchaine = 'RIGHT(' . $objet . ', CHAR_LENGTH(' . $objet . ") -(7+$posfinmulti))";
1577
+    $chainemulti = 'TRIM(SUBSTRING(' . $objet . ", $posmulti+7, $posfinmulti -(7+$posmulti)))";
1578
+    $poslang = "INSTR($chainemulti,'[" . $lang . "]')";
1579
+    $poslang = "IF($poslang=0,INSTR($chainemulti,']')+1,$poslang+$lengthlang)";
1580
+    $chainelang = 'TRIM(SUBSTRING(' . $objet . ", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))";
1581
+    $posfinlang = 'INSTR(' . $chainelang . ", '[')";
1582
+    $chainelang = "IF($posfinlang>0,LEFT($chainelang,$posfinlang-1),$chainelang)";
1583
+    //$chainelang = "LEFT($chainelang,$posfinlang-1)";
1584
+    $retour = "(TRIM(IF($posmulti = 0 , " .
1585
+        '     TRIM(' . $objet . '), ' .
1586
+        '     CONCAT( ' .
1587
+        "          $debutchaine, " .
1588
+        '          IF( ' .
1589
+        "               $poslang = 0, " .
1590
+        "                     $chainemulti, " .
1591
+        "               $chainelang" .
1592
+        '          ), ' .
1593
+        "          $finchaine" .
1594
+        '     ) ' .
1595
+        '))) AS multi';
1596
+
1597
+    return $retour;
1598 1598
 }
1599 1599
 
1600 1600
 /**
@@ -1608,7 +1608,7 @@  discard block
 block discarded – undo
1608 1608
  *     Valeur hexadécimale pour MySQL
1609 1609
  **/
1610 1610
 function spip_mysql_hex($v) {
1611
-	return '0x' . $v;
1611
+    return '0x' . $v;
1612 1612
 }
1613 1613
 
1614 1614
 /**
@@ -1624,15 +1624,15 @@  discard block
 block discarded – undo
1624 1624
  *    Donnée prête à être utilisée par le gestionnaire SQL
1625 1625
  */
1626 1626
 function spip_mysql_quote($v, $type = '') {
1627
-	if (!is_array($v)) {
1628
-		return spip_mysql_cite($v, $type);
1629
-	}
1630
-
1631
-	// si c'est un tableau, le parcourir en propageant le type
1632
-	foreach ($v as $k => $r) {
1633
-		$v[$k] = spip_mysql_quote($r, $type);
1634
-	}
1635
-	return implode(',', $v);
1627
+    if (!is_array($v)) {
1628
+        return spip_mysql_cite($v, $type);
1629
+    }
1630
+
1631
+    // si c'est un tableau, le parcourir en propageant le type
1632
+    foreach ($v as $k => $r) {
1633
+        $v[$k] = spip_mysql_quote($r, $type);
1634
+    }
1635
+    return implode(',', $v);
1636 1636
 }
1637 1637
 
1638 1638
 /**
@@ -1648,18 +1648,18 @@  discard block
 block discarded – undo
1648 1648
  *     Expression SQL
1649 1649
  **/
1650 1650
 function spip_mysql_date_proche($champ, $interval, $unite) {
1651
-	$use_now = ( ($champ === 'maj' or strpos($champ, '.maj')) ? true : false );
1652
-	return '('
1653
-	. $champ
1654
-	. (($interval <= 0) ? '>' : '<')
1655
-	. (($interval <= 0) ? 'DATE_SUB' : 'DATE_ADD')
1656
-	. '('
1657
-	. ($use_now ? 'NOW()' : sql_quote(date('Y-m-d H:i:s')))
1658
-	. ', INTERVAL '
1659
-	. (($interval > 0) ? $interval : (0 - $interval))
1660
-	. ' '
1661
-	. $unite
1662
-	. '))';
1651
+    $use_now = ( ($champ === 'maj' or strpos($champ, '.maj')) ? true : false );
1652
+    return '('
1653
+    . $champ
1654
+    . (($interval <= 0) ? '>' : '<')
1655
+    . (($interval <= 0) ? 'DATE_SUB' : 'DATE_ADD')
1656
+    . '('
1657
+    . ($use_now ? 'NOW()' : sql_quote(date('Y-m-d H:i:s')))
1658
+    . ', INTERVAL '
1659
+    . (($interval > 0) ? $interval : (0 - $interval))
1660
+    . ' '
1661
+    . $unite
1662
+    . '))';
1663 1663
 }
1664 1664
 
1665 1665
 
@@ -1683,7 +1683,7 @@  discard block
 block discarded – undo
1683 1683
  *     Expression de requête SQL
1684 1684
  **/
1685 1685
 function spip_mysql_in($val, $valeurs, $not = '', $serveur = '', $requeter = true) {
1686
-	return "($val $not IN ($valeurs))";
1686
+    return "($val $not IN ($valeurs))";
1687 1687
 }
1688 1688
 
1689 1689
 
@@ -1695,39 +1695,39 @@  discard block
 block discarded – undo
1695 1695
  * @return string|number     Texte ou nombre échappé
1696 1696
  */
1697 1697
 function spip_mysql_cite($v, $type) {
1698
-	if (!$type) {
1699
-		if (is_bool($v)) {
1700
-			return strval(intval($v));
1701
-		} elseif (is_numeric($v)) {
1702
-			return strval($v);
1703
-		} elseif ($v === null) {
1704
-			return "''";
1705
-		}
1706
-		return "'" . addslashes($v) . "'";
1707
-	}
1708
-
1709
-	if ($v === null) {
1710
-		if (stripos($type, 'NOT NULL') === false) {
1711
-			// null php se traduit en NULL SQL
1712
-			return 'NULL';
1713
-		} else {
1714
-			return "''";
1715
-		}
1716
-	} elseif (sql_test_date($type) and preg_match('/^\w+\(/', $v)) {
1717
-		return $v;
1718
-	} elseif (sql_test_int($type)) {
1719
-		if (
1720
-			is_numeric($v)
1721
-			or ($v and ctype_xdigit(substr($v, 2)) and $v[0] === '0' and $v[1] === 'x')
1722
-		) {
1723
-			return $v;
1724
-		} else {
1725
-			// si pas numerique, forcer le intval
1726
-			return intval($v);
1727
-		}
1728
-	}
1729
-
1730
-	return ("'" . addslashes($v) . "'");
1698
+    if (!$type) {
1699
+        if (is_bool($v)) {
1700
+            return strval(intval($v));
1701
+        } elseif (is_numeric($v)) {
1702
+            return strval($v);
1703
+        } elseif ($v === null) {
1704
+            return "''";
1705
+        }
1706
+        return "'" . addslashes($v) . "'";
1707
+    }
1708
+
1709
+    if ($v === null) {
1710
+        if (stripos($type, 'NOT NULL') === false) {
1711
+            // null php se traduit en NULL SQL
1712
+            return 'NULL';
1713
+        } else {
1714
+            return "''";
1715
+        }
1716
+    } elseif (sql_test_date($type) and preg_match('/^\w+\(/', $v)) {
1717
+        return $v;
1718
+    } elseif (sql_test_int($type)) {
1719
+        if (
1720
+            is_numeric($v)
1721
+            or ($v and ctype_xdigit(substr($v, 2)) and $v[0] === '0' and $v[1] === 'x')
1722
+        ) {
1723
+            return $v;
1724
+        } else {
1725
+            // si pas numerique, forcer le intval
1726
+            return intval($v);
1727
+        }
1728
+    }
1729
+
1730
+    return ("'" . addslashes($v) . "'");
1731 1731
 }
1732 1732
 
1733 1733
 /**
@@ -1737,7 +1737,7 @@  discard block
 block discarded – undo
1737 1737
  *     True si on a les fonctions, false sinon
1738 1738
  */
1739 1739
 function spip_versions_mysql() {
1740
-	return function_exists('mysqli_query');
1740
+    return function_exists('mysqli_query');
1741 1741
 }
1742 1742
 
1743 1743
 
@@ -1750,20 +1750,20 @@  discard block
 block discarded – undo
1750 1750
  *     - chaîne : code compilé pour le faire désactiver par SPIP sinon
1751 1751
  */
1752 1752
 function test_rappel_nom_base_mysql($server_db) {
1753
-	$GLOBALS['mysql_rappel_nom_base'] = true;
1754
-	sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1755
-	$ok = spip_query("INSERT INTO spip_meta (nom,valeur) VALUES ('mysql_rappel_nom_base', 'test')", $server_db);
1753
+    $GLOBALS['mysql_rappel_nom_base'] = true;
1754
+    sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1755
+    $ok = spip_query("INSERT INTO spip_meta (nom,valeur) VALUES ('mysql_rappel_nom_base', 'test')", $server_db);
1756 1756
 
1757
-	if ($ok) {
1758
-		sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1757
+    if ($ok) {
1758
+        sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1759 1759
 
1760
-		return '';
1761
-	} else {
1762
-		$GLOBALS['mysql_rappel_nom_base'] = false;
1760
+        return '';
1761
+    } else {
1762
+        $GLOBALS['mysql_rappel_nom_base'] = false;
1763 1763
 
1764
-		return "\$GLOBALS['mysql_rappel_nom_base'] = false; " .
1765
-		"/* echec de test_rappel_nom_base_mysql a l'installation. */\n";
1766
-	}
1764
+        return "\$GLOBALS['mysql_rappel_nom_base'] = false; " .
1765
+        "/* echec de test_rappel_nom_base_mysql a l'installation. */\n";
1766
+    }
1767 1767
 }
1768 1768
 
1769 1769
 /**
@@ -1777,13 +1777,13 @@  discard block
 block discarded – undo
1777 1777
  *     - chaîne : code compilé pour l'indiquer le résultat du test à SPIP
1778 1778
  */
1779 1779
 function test_sql_mode_mysql($server_db) {
1780
-	$res = sql_select('version() as v', '', '', '', '', '', '', $server_db);
1781
-	$row = sql_fetch($res, $server_db);
1782
-	if (version_compare($row['v'], '5.0.0', '>=')) {
1783
-		defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE', true);
1780
+    $res = sql_select('version() as v', '', '', '', '', '', '', $server_db);
1781
+    $row = sql_fetch($res, $server_db);
1782
+    if (version_compare($row['v'], '5.0.0', '>=')) {
1783
+        defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE', true);
1784 1784
 
1785
-		return "defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE',true);\n";
1786
-	}
1785
+        return "defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE',true);\n";
1786
+    }
1787 1787
 
1788
-	return '';
1788
+    return '';
1789 1789
 }
Please login to merge, or discard this patch.
Spacing   +81 added lines, -81 removed lines patch added patch discarded remove patch
@@ -62,12 +62,12 @@  discard block
 block discarded – undo
62 62
 			$link = @mysqli_connect($host, $login, $pass);
63 63
 		}
64 64
 	} catch (\mysqli_sql_exception $e) {
65
-		spip_log('mysqli_sql_exception: ' . $e->getMessage(), 'mysql.' . _LOG_DEBUG);
65
+		spip_log('mysqli_sql_exception: '.$e->getMessage(), 'mysql.'._LOG_DEBUG);
66 66
 		$link = false;
67 67
 	}
68 68
 
69 69
 	if (!$link) {
70
-		spip_log('Echec mysqli_connect. Erreur : ' . mysqli_connect_error(), 'mysql.' . _LOG_HS);
70
+		spip_log('Echec mysqli_connect. Erreur : '.mysqli_connect_error(), 'mysql.'._LOG_HS);
71 71
 
72 72
 		return false;
73 73
 	}
@@ -86,7 +86,7 @@  discard block
 block discarded – undo
86 86
 	}
87 87
 
88 88
 	spip_log(
89
-		"Connexion MySQLi vers $host, base $db, prefixe $prefixe " . ($ok ? 'operationnelle' : 'impossible'),
89
+		"Connexion MySQLi vers $host, base $db, prefixe $prefixe ".($ok ? 'operationnelle' : 'impossible'),
90 90
 		_LOG_DEBUG
91 91
 	);
92 92
 
@@ -177,9 +177,9 @@  discard block
 block discarded – undo
177 177
  */
178 178
 function spip_mysql_set_charset($charset, $serveur = '', $requeter = true) {
179 179
 	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
180
-	spip_log('changement de charset sql : ' . 'SET NAMES ' . _q($charset), _LOG_DEBUG);
180
+	spip_log('changement de charset sql : '.'SET NAMES '._q($charset), _LOG_DEBUG);
181 181
 
182
-	return mysqli_query($connexion['link'], $connexion['last'] = 'SET NAMES ' . _q($charset));
182
+	return mysqli_query($connexion['link'], $connexion['last'] = 'SET NAMES '._q($charset));
183 183
 }
184 184
 
185 185
 
@@ -194,7 +194,7 @@  discard block
 block discarded – undo
194 194
 function spip_mysql_get_charset($charset = [], $serveur = '', $requeter = true) {
195 195
 	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
196 196
 	$connexion['last'] = $c = 'SHOW CHARACTER SET'
197
-		. (!$charset ? '' : (' LIKE ' . _q($charset['charset'])));
197
+		. (!$charset ? '' : (' LIKE '._q($charset['charset'])));
198 198
 
199 199
 	return spip_mysql_fetch(mysqli_query($connexion['link'], $c), null, $serveur);
200 200
 }
@@ -238,21 +238,21 @@  discard block
 block discarded – undo
238 238
 	$debug = '';
239 239
 	if (defined('_DEBUG_SLOW_QUERIES') and _DEBUG_SLOW_QUERIES) {
240 240
 		if (isset($GLOBALS['debug']['aucasou'])) {
241
-			[, $id, , $infos] = $GLOBALS['debug']['aucasou'];
242
-			$debug .= "BOUCLE$id @ " . ($infos[0] ?? '') . ' | ';
241
+			[, $id,, $infos] = $GLOBALS['debug']['aucasou'];
242
+			$debug .= "BOUCLE$id @ ".($infos[0] ?? '').' | ';
243 243
 		}
244 244
 		if (isset($_SERVER['REQUEST_URI'])) {
245 245
 			$debug .= $_SERVER['REQUEST_URI'];
246 246
 		}
247 247
 		if (!empty($GLOBALS['ip'])) {
248
-			$debug .= ' + ' . $GLOBALS['ip'];
248
+			$debug .= ' + '.$GLOBALS['ip'];
249 249
 		}
250
-		$debug = ' /* ' . mysqli_real_escape_string($link, str_replace('*/', '@/', $debug)) . ' */';
250
+		$debug = ' /* '.mysqli_real_escape_string($link, str_replace('*/', '@/', $debug)).' */';
251 251
 	}
252 252
 	try {
253
-		$r = mysqli_query($link, $query . $debug);
253
+		$r = mysqli_query($link, $query.$debug);
254 254
 	} catch (\mysqli_sql_exception $e) {
255
-		spip_log('mysqli_sql_exception: ' . $e->getMessage(), 'mysql.' . _LOG_DEBUG);
255
+		spip_log('mysqli_sql_exception: '.$e->getMessage(), 'mysql.'._LOG_DEBUG);
256 256
 		$r = false;
257 257
 		// TODO: utiliser l’exception ensuite plutôt que les appels à spip_mysql_errno()
258 258
 		// mais il faut pour php < 8.1 forcer les exeptions via mysqli_report().
@@ -270,9 +270,9 @@  discard block
 block discarded – undo
270 270
 			$link = $connexion['link'];
271 271
 			//On retente au cas où
272 272
 			try {
273
-				$r = mysqli_query($link, $query . $debug);
273
+				$r = mysqli_query($link, $query.$debug);
274 274
 			} catch (\mysqli_sql_exception $e) {
275
-				spip_log('mysqli_sql_exception: ' . $e->getMessage(), 'mysql.' . _LOG_DEBUG);
275
+				spip_log('mysqli_sql_exception: '.$e->getMessage(), 'mysql.'._LOG_DEBUG);
276 276
 				$r = false;
277 277
 				// TODO: utiliser l’exception ensuite plutôt que les appels à spip_mysql_errno()
278 278
 				// mais il faut pour php < 8.1 forcer les exeptions via mysqli_report().
@@ -305,7 +305,7 @@  discard block
 block discarded – undo
305 305
 	// d'utiliser ceux-ci, copie-colle de phpmyadmin
306 306
 	$query = preg_replace(',^TABLE\s*`([^`]*)`,i', "TABLE \\1", $query);
307 307
 
308
-	return spip_mysql_query('ALTER ' . $query, $serveur, $requeter); # i.e. que PG se debrouille
308
+	return spip_mysql_query('ALTER '.$query, $serveur, $requeter); # i.e. que PG se debrouille
309 309
 }
310 310
 
311 311
 
@@ -318,7 +318,7 @@  discard block
 block discarded – undo
318 318
  * @return bool            Toujours true
319 319
  */
320 320
 function spip_mysql_optimize($table, $serveur = '', $requeter = true) {
321
-	spip_mysql_query('OPTIMIZE TABLE ' . $table);
321
+	spip_mysql_query('OPTIMIZE TABLE '.$table);
322 322
 
323 323
 	return true;
324 324
 }
@@ -341,7 +341,7 @@  discard block
 block discarded – undo
341 341
 	$link = $connexion['link'];
342 342
 	$db = $connexion['db'];
343 343
 
344
-	$query = 'EXPLAIN ' . _mysql_traite_query($query, $db, $prefixe);
344
+	$query = 'EXPLAIN '._mysql_traite_query($query, $db, $prefixe);
345 345
 	$r = mysqli_query($link, $query);
346 346
 
347 347
 	return spip_mysql_fetch($r, null, $serveur);
@@ -392,7 +392,7 @@  discard block
 block discarded – undo
392 392
 		. calculer_mysql_expression('WHERE', $where)
393 393
 		. calculer_mysql_expression('GROUP BY', $groupby, ',')
394 394
 		. calculer_mysql_expression('HAVING', $having)
395
-		. ($orderby ? ("\nORDER BY " . spip_mysql_order($orderby)) : '')
395
+		. ($orderby ? ("\nORDER BY ".spip_mysql_order($orderby)) : '')
396 396
 		. ($limit ? "\nLIMIT $limit" : '');
397 397
 
398 398
 	// renvoyer la requete inerte si demandee
@@ -482,12 +482,12 @@  discard block
 block discarded – undo
482 482
 	$exp = "\n$expression ";
483 483
 
484 484
 	if (!is_array($v)) {
485
-		return $exp . $v;
485
+		return $exp.$v;
486 486
 	} else {
487 487
 		if (strtoupper($join) === 'AND') {
488
-			return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v));
488
+			return $exp.join("\n\t$join ", array_map('calculer_mysql_where', $v));
489 489
 		} else {
490
-			return $exp . join($join, $v);
490
+			return $exp.join($join, $v);
491 491
 		}
492 492
 	}
493 493
 }
@@ -505,17 +505,17 @@  discard block
 block discarded – undo
505 505
 		if (substr($k, -1) == '@') {
506 506
 			// c'est une jointure qui se refere au from precedent
507 507
 			// pas de virgule
508
-			$res .= '  ' . $v;
508
+			$res .= '  '.$v;
509 509
 		} else {
510 510
 			if (!is_numeric($k)) {
511 511
 				$p = strpos($v, ' ');
512 512
 				if ($p) {
513
-					$v = substr($v, 0, $p) . " AS `$k`" . substr($v, $p);
513
+					$v = substr($v, 0, $p)." AS `$k`".substr($v, $p);
514 514
 				} else {
515 515
 					$v .= " AS `$k`";
516 516
 				}
517 517
 			}
518
-			$res .= ', ' . $v;
518
+			$res .= ', '.$v;
519 519
 		}
520 520
 	}
521 521
 
@@ -545,13 +545,13 @@  discard block
 block discarded – undo
545 545
 function _mysql_traite_query($query, $db = '', $prefixe = '', $echappe_textes = true) {
546 546
 
547 547
 	if ($GLOBALS['mysql_rappel_nom_base'] and $db) {
548
-		$pref = '`' . $db . '`.';
548
+		$pref = '`'.$db.'`.';
549 549
 	} else {
550 550
 		$pref = '';
551 551
 	}
552 552
 
553 553
 	if ($prefixe) {
554
-		$pref .= $prefixe . '_';
554
+		$pref .= $prefixe.'_';
555 555
 	}
556 556
 
557 557
 	if (!preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/i', $query, $regs)) {
@@ -570,7 +570,7 @@  discard block
 block discarded – undo
570 570
 				$suite_echap = $suite;
571 571
 			}
572 572
 			if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite_echap, $r)) {
573
-				$suite_echap = $r[1] . _mysql_traite_query($r[2], $db, $prefixe, false);
573
+				$suite_echap = $r[1]._mysql_traite_query($r[2], $db, $prefixe, false);
574 574
 				if ($echappe_textes) {
575 575
 					$suite = query_reinjecte_textes($suite_echap, $textes);
576 576
 				}
@@ -580,7 +580,7 @@  discard block
 block discarded – undo
580 580
 			}
581 581
 		}
582 582
 	}
583
-	$r = preg_replace(_SQL_PREFIXE_TABLE_MYSQL, '\1' . $pref, $query) . $suite;
583
+	$r = preg_replace(_SQL_PREFIXE_TABLE_MYSQL, '\1'.$pref, $query).$suite;
584 584
 
585 585
 	// en option, remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
586 586
 	// remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
@@ -620,7 +620,7 @@  discard block
 block discarded – undo
620 620
 		$ok = false;
621 621
 	}
622 622
 	if (!$ok) {
623
-		spip_log('Echec mysqli_selectdb. Erreur : ' . mysqli_error($link), 'mysql.' . _LOG_CRITIQUE);
623
+		spip_log('Echec mysqli_selectdb. Erreur : '.mysqli_error($link), 'mysql.'._LOG_CRITIQUE);
624 624
 	}
625 625
 
626 626
 	return $ok;
@@ -710,10 +710,10 @@  discard block
 block discarded – undo
710 710
 
711 711
 	$character_set = '';
712 712
 	if (@$GLOBALS['meta']['charset_sql_base']) {
713
-		$character_set .= ' CHARACTER SET ' . $GLOBALS['meta']['charset_sql_base'];
713
+		$character_set .= ' CHARACTER SET '.$GLOBALS['meta']['charset_sql_base'];
714 714
 	}
715 715
 	if (@$GLOBALS['meta']['charset_collation_sql_base']) {
716
-		$character_set .= ' COLLATE ' . $GLOBALS['meta']['charset_collation_sql_base'];
716
+		$character_set .= ' COLLATE '.$GLOBALS['meta']['charset_collation_sql_base'];
717 717
 	}
718 718
 
719 719
 	foreach ($champs as $k => $v) {
@@ -723,7 +723,7 @@  discard block
 block discarded – undo
723 723
 				preg_match(',(char|text),i', $defs[1])
724 724
 				and !preg_match(',(binary|CHARACTER|COLLATE),i', $v)
725 725
 			) {
726
-				$v = $defs[1] . $character_set . ' ' . substr($v, strlen($defs[1]));
726
+				$v = $defs[1].$character_set.' '.substr($v, strlen($defs[1]));
727 727
 			}
728 728
 		}
729 729
 
@@ -735,8 +735,8 @@  discard block
 block discarded – undo
735 735
 		$s = ',';
736 736
 	}
737 737
 	$temporary = $temporary ? 'TEMPORARY' : '';
738
-	$q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query" . ($keys ? ",$keys" : '') . ')'
739
-		. ' ENGINE=' . _MYSQL_ENGINE
738
+	$q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query".($keys ? ",$keys" : '').')'
739
+		. ' ENGINE='._MYSQL_ENGINE
740 740
 		. ($character_set ? " DEFAULT $character_set" : '')
741 741
 		. "\n";
742 742
 
@@ -815,7 +815,7 @@  discard block
 block discarded – undo
815 815
 		return false;
816 816
 	}
817 817
 
818
-	$query = "CREATE VIEW $nom AS " . $query_select;
818
+	$query = "CREATE VIEW $nom AS ".$query_select;
819 819
 
820 820
 	return spip_mysql_query($query, $serveur, $requeter);
821 821
 }
@@ -873,7 +873,7 @@  discard block
 block discarded – undo
873 873
  *     Ressource à utiliser avec sql_fetch()
874 874
  **/
875 875
 function spip_mysql_showbase($match, $serveur = '', $requeter = true) {
876
-	return spip_mysql_query('SHOW TABLES LIKE ' . _q($match), $serveur, $requeter);
876
+	return spip_mysql_query('SHOW TABLES LIKE '._q($match), $serveur, $requeter);
877 877
 }
878 878
 
879 879
 /**
@@ -889,7 +889,7 @@  discard block
 block discarded – undo
889 889
  *     - true si la requête a réussie, false sinon
890 890
  */
891 891
 function spip_mysql_repair($table, $serveur = '', $requeter = true) {
892
-	$table_status = spip_mysql_fetch(spip_mysql_query('SHOW TABLE STATUS WHERE Name = ' . _q($table), $serveur, true));
892
+	$table_status = spip_mysql_fetch(spip_mysql_query('SHOW TABLE STATUS WHERE Name = '._q($table), $serveur, true));
893 893
 	$engine = $table_status['Engine'];
894 894
 	if ($engine == 'InnoDB') {
895 895
 		if (spip_mysql_alter("TABLE $table ENGINE = InnoDB", $serveur, $requeter)) {
@@ -898,7 +898,7 @@  discard block
 block discarded – undo
898 898
 	} elseif ($engine == 'MyISAM') {
899 899
 		return spip_mysql_query("REPAIR TABLE `$table`", $serveur, $requeter);
900 900
 	} else {
901
-		spip_log("spip_mysql_repair impossible pour la table $table engine $engine", 'mysql.' . _LOG_DEBUG);
901
+		spip_log("spip_mysql_repair impossible pour la table $table engine $engine", 'mysql.'._LOG_DEBUG);
902 902
 	}
903 903
 }
904 904
 
@@ -917,7 +917,7 @@  discard block
 block discarded – undo
917 917
  *     - string : requete sql, si $requeter = true
918 918
  **/
919 919
 function spip_mysql_table_exists(string $table, $serveur = '', $requeter = true) {
920
-	$r = spip_mysql_query('SHOW TABLES LIKE ' . _q($table), $serveur, $requeter);
920
+	$r = spip_mysql_query('SHOW TABLES LIKE '._q($table), $serveur, $requeter);
921 921
 	if (!$requeter) {
922 922
 		return $r;
923 923
 	}
@@ -999,22 +999,22 @@  discard block
 block discarded – undo
999 999
 			}
1000 1000
 			if ($val['Default'] === '0' || $val['Default']) {
1001 1001
 				if (preg_match('/[A-Z_]/', $val['Default'])) {
1002
-					$nfields[$val['Field']] .= ' DEFAULT ' . $val['Default'];
1002
+					$nfields[$val['Field']] .= ' DEFAULT '.$val['Default'];
1003 1003
 				} else {
1004
-					$nfields[$val['Field']] .= " DEFAULT '" . $val['Default'] . "'";
1004
+					$nfields[$val['Field']] .= " DEFAULT '".$val['Default']."'";
1005 1005
 				}
1006 1006
 			}
1007 1007
 			if ($val['Extra']) {
1008
-				$nfields[$val['Field']] .= ' ' . $val['Extra'];
1008
+				$nfields[$val['Field']] .= ' '.$val['Extra'];
1009 1009
 			}
1010 1010
 			if ($val['Key'] == 'PRI') {
1011 1011
 				$nkeys['PRIMARY KEY'] = $val['Field'];
1012 1012
 			} else {
1013 1013
 				if ($val['Key'] == 'MUL') {
1014
-					$nkeys['KEY ' . $val['Field']] = $val['Field'];
1014
+					$nkeys['KEY '.$val['Field']] = $val['Field'];
1015 1015
 				} else {
1016 1016
 					if ($val['Key'] == 'UNI') {
1017
-						$nkeys['UNIQUE KEY ' . $val['Field']] = $val['Field'];
1017
+						$nkeys['UNIQUE KEY '.$val['Field']] = $val['Field'];
1018 1018
 					}
1019 1019
 				}
1020 1020
 			}
@@ -1085,7 +1085,7 @@  discard block
 block discarded – undo
1085 1085
 	$serveur = '',
1086 1086
 	$requeter = true
1087 1087
 ) {
1088
-	$c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby)));
1088
+	$c = !$groupby ? '*' : ('DISTINCT '.(is_string($groupby) ? $groupby : join(',', $groupby)));
1089 1089
 
1090 1090
 	$r = spip_mysql_select("COUNT($c)", $from, $where, '', '', '', $having, $serveur, $requeter);
1091 1091
 	if (!$requeter) {
@@ -1125,7 +1125,7 @@  discard block
 block discarded – undo
1125 1125
 	if ($s) {
1126 1126
 		$trace = debug_backtrace();
1127 1127
 		if ($trace[0]['function'] != 'spip_mysql_error') {
1128
-			spip_log("$s - $query - " . sql_error_backtrace(), 'mysql.' . _LOG_ERREUR);
1128
+			spip_log("$s - $query - ".sql_error_backtrace(), 'mysql.'._LOG_ERREUR);
1129 1129
 		}
1130 1130
 	}
1131 1131
 
@@ -1251,7 +1251,7 @@  discard block
 block discarded – undo
1251 1251
 	try {
1252 1252
 		$insert = mysqli_query($link, $query);
1253 1253
 	} catch (\mysqli_sql_exception $e) {
1254
-		spip_log('mysqli_sql_exception: ' . $e->getMessage(), 'mysql.' . _LOG_DEBUG);
1254
+		spip_log('mysqli_sql_exception: '.$e->getMessage(), 'mysql.'._LOG_DEBUG);
1255 1255
 		// TODO: utiliser l’exception ensuite plutôt que les appels à spip_mysql_errno()
1256 1256
 		// mais il faut pour php < 8.1 forcer les exeptions via mysqli_report().
1257 1257
 	}
@@ -1306,8 +1306,8 @@  discard block
 block discarded – undo
1306 1306
 
1307 1307
 	return spip_mysql_insert(
1308 1308
 		$table,
1309
-		'(' . join(',', array_keys($couples)) . ')',
1310
-		'(' . join(',', $couples) . ')',
1309
+		'('.join(',', array_keys($couples)).')',
1310
+		'('.join(',', $couples).')',
1311 1311
 		$desc,
1312 1312
 		$serveur,
1313 1313
 		$requeter
@@ -1344,7 +1344,7 @@  discard block
 block discarded – undo
1344 1344
 	}
1345 1345
 	$fields = $desc['field'] ?? [];
1346 1346
 
1347
-	$cles = '(' . join(',', array_keys(reset($tab_couples))) . ')';
1347
+	$cles = '('.join(',', array_keys(reset($tab_couples))).')';
1348 1348
 	$valeurs = [];
1349 1349
 	$r = false;
1350 1350
 
@@ -1353,7 +1353,7 @@  discard block
 block discarded – undo
1353 1353
 		foreach ($couples as $champ => $val) {
1354 1354
 			$couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1355 1355
 		}
1356
-		$valeurs[] = '(' . join(',', $couples) . ')';
1356
+		$valeurs[] = '('.join(',', $couples).')';
1357 1357
 		if (count($valeurs) >= 100) {
1358 1358
 			$r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1359 1359
 			$valeurs = [];
@@ -1390,7 +1390,7 @@  discard block
 block discarded – undo
1390 1390
 function spip_mysql_update($table, $champs, $where = '', $desc = [], $serveur = '', $requeter = true) {
1391 1391
 	$set = [];
1392 1392
 	foreach ($champs as $champ => $val) {
1393
-		$set[] = $champ . "=$val";
1393
+		$set[] = $champ."=$val";
1394 1394
 	}
1395 1395
 	if (!empty($set)) {
1396 1396
 		return spip_mysql_query(
@@ -1446,7 +1446,7 @@  discard block
 block discarded – undo
1446 1446
 	}
1447 1447
 	$set = [];
1448 1448
 	foreach ($champs as $champ => $val) {
1449
-		$set[] = $champ . '=' . spip_mysql_cite($val, @$fields[$champ]);
1449
+		$set[] = $champ.'='.spip_mysql_cite($val, @$fields[$champ]);
1450 1450
 	}
1451 1451
 
1452 1452
 	return spip_mysql_query(
@@ -1515,10 +1515,10 @@  discard block
 block discarded – undo
1515 1515
  *     - False en cas d'erreur.
1516 1516
  **/
1517 1517
 function spip_mysql_replace($table, $couples, $desc = [], $serveur = '', $requeter = true) {
1518
-	return spip_mysql_query("REPLACE $table (" . join(',', array_keys($couples)) . ') VALUES (' . join(
1518
+	return spip_mysql_query("REPLACE $table (".join(',', array_keys($couples)).') VALUES ('.join(
1519 1519
 		',',
1520 1520
 		array_map('_q', $couples)
1521
-	) . ')', $serveur, $requeter);
1521
+	).')', $serveur, $requeter);
1522 1522
 }
1523 1523
 
1524 1524
 
@@ -1547,10 +1547,10 @@  discard block
 block discarded – undo
1547 1547
  *     - False en cas d'erreur.
1548 1548
  **/
1549 1549
 function spip_mysql_replace_multi($table, $tab_couples, $desc = [], $serveur = '', $requeter = true) {
1550
-	$cles = '(' . join(',', array_keys($tab_couples[0])) . ')';
1550
+	$cles = '('.join(',', array_keys($tab_couples[0])).')';
1551 1551
 	$valeurs = [];
1552 1552
 	foreach ($tab_couples as $couples) {
1553
-		$valeurs[] = '(' . join(',', array_map('_q', $couples)) . ')';
1553
+		$valeurs[] = '('.join(',', array_map('_q', $couples)).')';
1554 1554
 	}
1555 1555
 	$valeurs = implode(', ', $valeurs);
1556 1556
 
@@ -1570,28 +1570,28 @@  discard block
 block discarded – undo
1570 1570
  */
1571 1571
 function spip_mysql_multi($objet, $lang) {
1572 1572
 	$lengthlang = strlen("[$lang]");
1573
-	$posmulti = 'INSTR(' . $objet . ", '<multi>')";
1574
-	$posfinmulti = 'INSTR(' . $objet . ", '</multi>')";
1575
-	$debutchaine = 'LEFT(' . $objet . ", $posmulti-1)";
1576
-	$finchaine = 'RIGHT(' . $objet . ', CHAR_LENGTH(' . $objet . ") -(7+$posfinmulti))";
1577
-	$chainemulti = 'TRIM(SUBSTRING(' . $objet . ", $posmulti+7, $posfinmulti -(7+$posmulti)))";
1578
-	$poslang = "INSTR($chainemulti,'[" . $lang . "]')";
1573
+	$posmulti = 'INSTR('.$objet.", '<multi>')";
1574
+	$posfinmulti = 'INSTR('.$objet.", '</multi>')";
1575
+	$debutchaine = 'LEFT('.$objet.", $posmulti-1)";
1576
+	$finchaine = 'RIGHT('.$objet.', CHAR_LENGTH('.$objet.") -(7+$posfinmulti))";
1577
+	$chainemulti = 'TRIM(SUBSTRING('.$objet.", $posmulti+7, $posfinmulti -(7+$posmulti)))";
1578
+	$poslang = "INSTR($chainemulti,'[".$lang."]')";
1579 1579
 	$poslang = "IF($poslang=0,INSTR($chainemulti,']')+1,$poslang+$lengthlang)";
1580
-	$chainelang = 'TRIM(SUBSTRING(' . $objet . ", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))";
1581
-	$posfinlang = 'INSTR(' . $chainelang . ", '[')";
1580
+	$chainelang = 'TRIM(SUBSTRING('.$objet.", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))";
1581
+	$posfinlang = 'INSTR('.$chainelang.", '[')";
1582 1582
 	$chainelang = "IF($posfinlang>0,LEFT($chainelang,$posfinlang-1),$chainelang)";
1583 1583
 	//$chainelang = "LEFT($chainelang,$posfinlang-1)";
1584
-	$retour = "(TRIM(IF($posmulti = 0 , " .
1585
-		'     TRIM(' . $objet . '), ' .
1586
-		'     CONCAT( ' .
1587
-		"          $debutchaine, " .
1588
-		'          IF( ' .
1589
-		"               $poslang = 0, " .
1590
-		"                     $chainemulti, " .
1591
-		"               $chainelang" .
1592
-		'          ), ' .
1593
-		"          $finchaine" .
1594
-		'     ) ' .
1584
+	$retour = "(TRIM(IF($posmulti = 0 , ".
1585
+		'     TRIM('.$objet.'), '.
1586
+		'     CONCAT( '.
1587
+		"          $debutchaine, ".
1588
+		'          IF( '.
1589
+		"               $poslang = 0, ".
1590
+		"                     $chainemulti, ".
1591
+		"               $chainelang".
1592
+		'          ), '.
1593
+		"          $finchaine".
1594
+		'     ) '.
1595 1595
 		'))) AS multi';
1596 1596
 
1597 1597
 	return $retour;
@@ -1608,7 +1608,7 @@  discard block
 block discarded – undo
1608 1608
  *     Valeur hexadécimale pour MySQL
1609 1609
  **/
1610 1610
 function spip_mysql_hex($v) {
1611
-	return '0x' . $v;
1611
+	return '0x'.$v;
1612 1612
 }
1613 1613
 
1614 1614
 /**
@@ -1648,7 +1648,7 @@  discard block
 block discarded – undo
1648 1648
  *     Expression SQL
1649 1649
  **/
1650 1650
 function spip_mysql_date_proche($champ, $interval, $unite) {
1651
-	$use_now = ( ($champ === 'maj' or strpos($champ, '.maj')) ? true : false );
1651
+	$use_now = (($champ === 'maj' or strpos($champ, '.maj')) ? true : false);
1652 1652
 	return '('
1653 1653
 	. $champ
1654 1654
 	. (($interval <= 0) ? '>' : '<')
@@ -1703,7 +1703,7 @@  discard block
 block discarded – undo
1703 1703
 		} elseif ($v === null) {
1704 1704
 			return "''";
1705 1705
 		}
1706
-		return "'" . addslashes($v) . "'";
1706
+		return "'".addslashes($v)."'";
1707 1707
 	}
1708 1708
 
1709 1709
 	if ($v === null) {
@@ -1727,7 +1727,7 @@  discard block
 block discarded – undo
1727 1727
 		}
1728 1728
 	}
1729 1729
 
1730
-	return ("'" . addslashes($v) . "'");
1730
+	return ("'".addslashes($v)."'");
1731 1731
 }
1732 1732
 
1733 1733
 /**
@@ -1761,7 +1761,7 @@  discard block
 block discarded – undo
1761 1761
 	} else {
1762 1762
 		$GLOBALS['mysql_rappel_nom_base'] = false;
1763 1763
 
1764
-		return "\$GLOBALS['mysql_rappel_nom_base'] = false; " .
1764
+		return "\$GLOBALS['mysql_rappel_nom_base'] = false; ".
1765 1765
 		"/* echec de test_rappel_nom_base_mysql a l'installation. */\n";
1766 1766
 	}
1767 1767
 }
Please login to merge, or discard this patch.