Completed
Push — master ( bd751f...cc4985 )
by cam
04:04
created
ecrire/base/dump.php 4 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -311,7 +311,7 @@
 block discarded – undo
311 311
  * peut etre utilise pour l'import depuis xml,
312 312
  * ou la copie de base a base (mysql<->sqlite par exemple)
313 313
  *
314
- * @param array $tables
314
+ * @param string[] $tables
315 315
  * @param array $exclure_tables
316 316
  * @param string $serveur
317 317
  */
Please login to merge, or discard this patch.
Braces   +3 added lines, -2 removed lines patch added patch discarded remove patch
@@ -326,14 +326,15 @@
 block discarded – undo
326 326
 				$connecte = false;
327 327
 			}
328 328
 		}
329
-		if ($connecte)
330
-			# on ajoute les liaisons en premier
329
+		if ($connecte) {
330
+					# on ajoute les liaisons en premier
331 331
 			# si une restauration est interrompue,
332 332
 			# cela se verra mieux si il manque des objets
333 333
 			# que des liens
334 334
 		{
335 335
 			array_unshift($tables_for_dump, $link_table);
336 336
 		}
337
+		}
337 338
 	}
338 339
 
339 340
 	return array($tables_for_dump, $tables_for_link);
Please login to merge, or discard this patch.
Indentation   +490 added lines, -490 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  */
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 define('_VERSION_ARCHIVE', '1.3');
@@ -29,13 +29,13 @@  discard block
 block discarded – undo
29 29
 // NB: Ce fichier peut ajouter des tables (old-style)
30 30
 // donc il faut l'inclure "en globals"
31 31
 if ($f = find_in_path('mes_fonctions.php')) {
32
-	global $dossier_squelettes;
33
-	@include_once(_ROOT_CWD . $f);
32
+    global $dossier_squelettes;
33
+    @include_once(_ROOT_CWD . $f);
34 34
 }
35 35
 
36 36
 if (@is_readable(_CACHE_PLUGINS_FCT)) {
37
-	// chargement optimise precompile
38
-	include_once(_CACHE_PLUGINS_FCT);
37
+    // chargement optimise precompile
38
+    include_once(_CACHE_PLUGINS_FCT);
39 39
 }
40 40
 
41 41
 /**
@@ -48,7 +48,7 @@  discard block
 block discarded – undo
48 48
  * @return string
49 49
  **/
50 50
 function base_dump_meta_name($rub) {
51
-	return $meta = "status_dump_{$rub}_" . abs($GLOBALS['visiteur_session']['id_auteur']);
51
+    return $meta = "status_dump_{$rub}_" . abs($GLOBALS['visiteur_session']['id_auteur']);
52 52
 }
53 53
 
54 54
 /**
@@ -63,15 +63,15 @@  discard block
 block discarded – undo
63 63
  * @return string
64 64
  **/
65 65
 function base_dump_dir($meta) {
66
-	include_spip('inc/documents');
67
-	// determine upload va aussi initialiser l'index "restreint"
68
-	$maindir = determine_upload();
69
-	if (!$GLOBALS['visiteur_session']['restreint']) {
70
-		$maindir = _DIR_DUMP;
71
-	}
72
-	$dir = sous_repertoire($maindir, $meta);
73
-
74
-	return $dir;
66
+    include_spip('inc/documents');
67
+    // determine upload va aussi initialiser l'index "restreint"
68
+    $maindir = determine_upload();
69
+    if (!$GLOBALS['visiteur_session']['restreint']) {
70
+        $maindir = _DIR_DUMP;
71
+    }
72
+    $dir = sous_repertoire($maindir, $meta);
73
+
74
+    return $dir;
75 75
 }
76 76
 
77 77
 /**
@@ -85,28 +85,28 @@  discard block
 block discarded – undo
85 85
  * @return array
86 86
  */
87 87
 function base_lister_toutes_tables(
88
-	$serveur = '',
89
-	$tables = array(),
90
-	$exclude = array(),
91
-	$affiche_vrai_prefixe = false
88
+    $serveur = '',
89
+    $tables = array(),
90
+    $exclude = array(),
91
+    $affiche_vrai_prefixe = false
92 92
 ) {
93
-	spip_connect($serveur);
94
-	$connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
95
-	$prefixe = $connexion['prefixe'];
96
-
97
-	$p = '/^' . $prefixe . '/';
98
-	$res = $tables;
99
-	foreach (sql_alltable(null, $serveur) as $t) {
100
-		if (preg_match($p, $t)) {
101
-			$t1 = preg_replace($p, 'spip', $t);
102
-			if (!in_array($t1, $tables) and !in_array($t1, $exclude)) {
103
-				$res[] = ($affiche_vrai_prefixe ? $t : $t1);
104
-			}
105
-		}
106
-	}
107
-	sort($res);
108
-
109
-	return $res;
93
+    spip_connect($serveur);
94
+    $connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
95
+    $prefixe = $connexion['prefixe'];
96
+
97
+    $p = '/^' . $prefixe . '/';
98
+    $res = $tables;
99
+    foreach (sql_alltable(null, $serveur) as $t) {
100
+        if (preg_match($p, $t)) {
101
+            $t1 = preg_replace($p, 'spip', $t);
102
+            if (!in_array($t1, $tables) and !in_array($t1, $exclude)) {
103
+                $res[] = ($affiche_vrai_prefixe ? $t : $t1);
104
+            }
105
+        }
106
+    }
107
+    sort($res);
108
+
109
+    return $res;
110 110
 }
111 111
 
112 112
 /**
@@ -116,11 +116,11 @@  discard block
 block discarded – undo
116 116
  * @return string
117 117
  */
118 118
 function base_prefixe_tables($serveur = '') {
119
-	spip_connect($serveur);
120
-	$connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
121
-	$prefixe = $connexion['prefixe'];
119
+    spip_connect($serveur);
120
+    $connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
121
+    $prefixe = $connexion['prefixe'];
122 122
 
123
-	return $prefixe;
123
+    return $prefixe;
124 124
 }
125 125
 
126 126
 
@@ -135,29 +135,29 @@  discard block
 block discarded – undo
135 135
  * @return array
136 136
  */
137 137
 function base_saisie_tables($name, $tables, $exclude = array(), $post = null, $serveur = '') {
138
-	include_spip('inc/filtres');
139
-	$res = array();
140
-	foreach ($tables as $k => $t) {
141
-		// par defaut tout est coche sauf les tables dans $exclude
142
-		if (is_null($post)) {
143
-			$check = (in_array($t, $exclude) ? false : true);
144
-		} // mais si on a poste une selection, la reprendre
145
-		else {
146
-			$check = in_array($t, $post);
147
-		}
148
-
149
-		$res[$k] = "<input type='checkbox' value='$t' name='$name"
150
-			. "[]' id='$name$k'"
151
-			. ($check ? " checked='checked'" : '')
152
-			. "/>\n"
153
-			. "<label for='$name$k'>$t</label>"
154
-			. " ("
155
-			. sinon(singulier_ou_pluriel(sql_countsel($t, '', '', '', $serveur), 'dump:une_donnee', 'dump:nb_donnees'),
156
-				_T('dump:aucune_donnee'))
157
-			. ")";
158
-	}
159
-
160
-	return $res;
138
+    include_spip('inc/filtres');
139
+    $res = array();
140
+    foreach ($tables as $k => $t) {
141
+        // par defaut tout est coche sauf les tables dans $exclude
142
+        if (is_null($post)) {
143
+            $check = (in_array($t, $exclude) ? false : true);
144
+        } // mais si on a poste une selection, la reprendre
145
+        else {
146
+            $check = in_array($t, $post);
147
+        }
148
+
149
+        $res[$k] = "<input type='checkbox' value='$t' name='$name"
150
+            . "[]' id='$name$k'"
151
+            . ($check ? " checked='checked'" : '')
152
+            . "/>\n"
153
+            . "<label for='$name$k'>$t</label>"
154
+            . " ("
155
+            . sinon(singulier_ou_pluriel(sql_countsel($t, '', '', '', $serveur), 'dump:une_donnee', 'dump:nb_donnees'),
156
+                _T('dump:aucune_donnee'))
157
+            . ")";
158
+    }
159
+
160
+    return $res;
161 161
 }
162 162
 
163 163
 
@@ -169,27 +169,27 @@  discard block
 block discarded – undo
169 169
  * @return array
170 170
  */
171 171
 function lister_tables_noexport() {
172
-	// par defaut tout est exporte sauf les tables ci-dessous
173
-	static $EXPORT_tables_noexport = null;
174
-	if (!is_null($EXPORT_tables_noexport)) {
175
-		return $EXPORT_tables_noexport;
176
-	}
177
-
178
-	$EXPORT_tables_noexport = array(
179
-		'spip_caches', // plugin invalideur
180
-		'spip_resultats', // resultats de recherche ... c'est un cache !
181
-		'spip_test', // c'est un test !
182
-		#'spip_referers',
183
-		#'spip_referers_articles',
184
-		#'spip_visites',
185
-		#'spip_visites_articles',
186
-		#'spip_versions',
187
-		#'spip_versions_fragments'
188
-	);
189
-
190
-	$EXPORT_tables_noexport = pipeline('lister_tables_noexport', $EXPORT_tables_noexport);
191
-
192
-	return $EXPORT_tables_noexport;
172
+    // par defaut tout est exporte sauf les tables ci-dessous
173
+    static $EXPORT_tables_noexport = null;
174
+    if (!is_null($EXPORT_tables_noexport)) {
175
+        return $EXPORT_tables_noexport;
176
+    }
177
+
178
+    $EXPORT_tables_noexport = array(
179
+        'spip_caches', // plugin invalideur
180
+        'spip_resultats', // resultats de recherche ... c'est un cache !
181
+        'spip_test', // c'est un test !
182
+        #'spip_referers',
183
+        #'spip_referers_articles',
184
+        #'spip_visites',
185
+        #'spip_visites_articles',
186
+        #'spip_versions',
187
+        #'spip_versions_fragments'
188
+    );
189
+
190
+    $EXPORT_tables_noexport = pipeline('lister_tables_noexport', $EXPORT_tables_noexport);
191
+
192
+    return $EXPORT_tables_noexport;
193 193
 }
194 194
 
195 195
 /**
@@ -200,25 +200,25 @@  discard block
 block discarded – undo
200 200
  * @return array
201 201
  */
202 202
 function lister_tables_noimport() {
203
-	static $IMPORT_tables_noimport = null;
204
-	if (!is_null($IMPORT_tables_noimport)) {
205
-		return $IMPORT_tables_noimport;
206
-	}
207
-
208
-	$IMPORT_tables_noimport = array();
209
-	// par defaut tout est importe sauf les tables ci-dessous
210
-	// possibiliter de definir cela tables via la meta
211
-	// compatibilite
212
-	if (isset($GLOBALS['meta']['IMPORT_tables_noimport'])) {
213
-		$IMPORT_tables_noimport = unserialize($GLOBALS['meta']['IMPORT_tables_noimport']);
214
-		if (!is_array($IMPORT_tables_noimport)) {
215
-			include_spip('inc/meta');
216
-			effacer_meta('IMPORT_tables_noimport');
217
-		}
218
-	}
219
-	$IMPORT_tables_noimport = pipeline('lister_tables_noimport', $IMPORT_tables_noimport);
220
-
221
-	return $IMPORT_tables_noimport;
203
+    static $IMPORT_tables_noimport = null;
204
+    if (!is_null($IMPORT_tables_noimport)) {
205
+        return $IMPORT_tables_noimport;
206
+    }
207
+
208
+    $IMPORT_tables_noimport = array();
209
+    // par defaut tout est importe sauf les tables ci-dessous
210
+    // possibiliter de definir cela tables via la meta
211
+    // compatibilite
212
+    if (isset($GLOBALS['meta']['IMPORT_tables_noimport'])) {
213
+        $IMPORT_tables_noimport = unserialize($GLOBALS['meta']['IMPORT_tables_noimport']);
214
+        if (!is_array($IMPORT_tables_noimport)) {
215
+            include_spip('inc/meta');
216
+            effacer_meta('IMPORT_tables_noimport');
217
+        }
218
+    }
219
+    $IMPORT_tables_noimport = pipeline('lister_tables_noimport', $IMPORT_tables_noimport);
220
+
221
+    return $IMPORT_tables_noimport;
222 222
 }
223 223
 
224 224
 
@@ -230,23 +230,23 @@  discard block
 block discarded – undo
230 230
  * @return array
231 231
  */
232 232
 function lister_tables_noerase() {
233
-	static $IMPORT_tables_noerase = null;
234
-	if (!is_null($IMPORT_tables_noerase)) {
235
-		return $IMPORT_tables_noerase;
236
-	}
237
-
238
-	$IMPORT_tables_noerase = array(
239
-		'spip_meta',
240
-		// par defaut on ne vide pas les stats, car elles ne figurent pas dans les dump
241
-		// et le cas echeant, un bouton dans l'admin permet de les vider a la main...
242
-		'spip_referers',
243
-		'spip_referers_articles',
244
-		'spip_visites',
245
-		'spip_visites_articles'
246
-	);
247
-	$IMPORT_tables_noerase = pipeline('lister_tables_noerase', $IMPORT_tables_noerase);
248
-
249
-	return $IMPORT_tables_noerase;
233
+    static $IMPORT_tables_noerase = null;
234
+    if (!is_null($IMPORT_tables_noerase)) {
235
+        return $IMPORT_tables_noerase;
236
+    }
237
+
238
+    $IMPORT_tables_noerase = array(
239
+        'spip_meta',
240
+        // par defaut on ne vide pas les stats, car elles ne figurent pas dans les dump
241
+        // et le cas echeant, un bouton dans l'admin permet de les vider a la main...
242
+        'spip_referers',
243
+        'spip_referers_articles',
244
+        'spip_visites',
245
+        'spip_visites_articles'
246
+    );
247
+    $IMPORT_tables_noerase = pipeline('lister_tables_noerase', $IMPORT_tables_noerase);
248
+
249
+    return $IMPORT_tables_noerase;
250 250
 }
251 251
 
252 252
 
@@ -260,83 +260,83 @@  discard block
 block discarded – undo
260 260
  * @return array
261 261
  */
262 262
 function base_liste_table_for_dump($exclude_tables = array()) {
263
-	$tables_for_dump = array();
264
-	$tables_pointees = array();
265
-	$tables = array();
266
-	$tables_principales = $GLOBALS['tables_principales'];
267
-	$tables_auxiliaires = $GLOBALS['tables_auxiliaires'];
268
-	$tables_jointures = $GLOBALS['tables_jointures'];
269
-
270
-	if (include_spip('base/objets')
271
-		and function_exists('lister_tables_objets_sql')
272
-	) {
273
-		$tables = lister_tables_objets_sql();
274
-		foreach ($tables as $t => $infos) {
275
-			if ($infos['principale'] and !isset($tables_principales[$t])) {
276
-				$tables_principales[$t] = true;
277
-			}
278
-			if (!$infos['principale'] and !isset($tables_auxiliaires[$t])) {
279
-				$tables_auxiliaires[$t] = true;
280
-			}
281
-			if (count($infos['tables_jointures'])) {
282
-				$tables_jointures[$t] = array_merge(isset($tables_jointures[$t]) ? $tables_jointures[$t] : array(),
283
-					$infos['tables_jointures']);
284
-			}
285
-		}
286
-	}
287
-
288
-	// on construit un index des tables de liens
289
-	// pour les ajouter SI les deux tables qu'ils connectent sont sauvegardees
290
-	$tables_for_link = array();
291
-	foreach ($tables_jointures as $table => $liste_relations) {
292
-		if (is_array($liste_relations)) {
293
-			$nom = $table;
294
-			if (!isset($tables_auxiliaires[$nom]) && !isset($tables_principales[$nom])) {
295
-				$nom = "spip_$table";
296
-			}
297
-			if (isset($tables_auxiliaires[$nom]) || isset($tables_principales[$nom])) {
298
-				foreach ($liste_relations as $link_table) {
299
-					if (isset($tables_auxiliaires[$link_table])/*||isset($tables_principales[$link_table])*/) {
300
-						$tables_for_link[$link_table][] = $nom;
301
-					} else {
302
-						if (isset($tables_auxiliaires["spip_$link_table"])/*||isset($tables_principales["spip_$link_table"])*/) {
303
-							$tables_for_link["spip_$link_table"][] = $nom;
304
-						}
305
-					}
306
-				}
307
-			}
308
-		}
309
-	}
310
-
311
-	$liste_tables = array_merge(array_keys($tables_principales), array_keys($tables_auxiliaires), array_keys($tables));
312
-	foreach ($liste_tables as $table) {
313
-		//		$name = preg_replace("{^spip_}","",$table);
314
-		if (!isset($tables_pointees[$table])
315
-			&& !in_array($table, $exclude_tables)
316
-			&& !isset($tables_for_link[$table])
317
-		) {
318
-			$tables_for_dump[] = $table;
319
-			$tables_pointees[$table] = 1;
320
-		}
321
-	}
322
-	foreach ($tables_for_link as $link_table => $liste) {
323
-		$connecte = true;
324
-		foreach ($liste as $connect_table) {
325
-			if (!in_array($connect_table, $tables_for_dump)) {
326
-				$connecte = false;
327
-			}
328
-		}
329
-		if ($connecte)
330
-			# on ajoute les liaisons en premier
331
-			# si une restauration est interrompue,
332
-			# cela se verra mieux si il manque des objets
333
-			# que des liens
334
-		{
335
-			array_unshift($tables_for_dump, $link_table);
336
-		}
337
-	}
338
-
339
-	return array($tables_for_dump, $tables_for_link);
263
+    $tables_for_dump = array();
264
+    $tables_pointees = array();
265
+    $tables = array();
266
+    $tables_principales = $GLOBALS['tables_principales'];
267
+    $tables_auxiliaires = $GLOBALS['tables_auxiliaires'];
268
+    $tables_jointures = $GLOBALS['tables_jointures'];
269
+
270
+    if (include_spip('base/objets')
271
+        and function_exists('lister_tables_objets_sql')
272
+    ) {
273
+        $tables = lister_tables_objets_sql();
274
+        foreach ($tables as $t => $infos) {
275
+            if ($infos['principale'] and !isset($tables_principales[$t])) {
276
+                $tables_principales[$t] = true;
277
+            }
278
+            if (!$infos['principale'] and !isset($tables_auxiliaires[$t])) {
279
+                $tables_auxiliaires[$t] = true;
280
+            }
281
+            if (count($infos['tables_jointures'])) {
282
+                $tables_jointures[$t] = array_merge(isset($tables_jointures[$t]) ? $tables_jointures[$t] : array(),
283
+                    $infos['tables_jointures']);
284
+            }
285
+        }
286
+    }
287
+
288
+    // on construit un index des tables de liens
289
+    // pour les ajouter SI les deux tables qu'ils connectent sont sauvegardees
290
+    $tables_for_link = array();
291
+    foreach ($tables_jointures as $table => $liste_relations) {
292
+        if (is_array($liste_relations)) {
293
+            $nom = $table;
294
+            if (!isset($tables_auxiliaires[$nom]) && !isset($tables_principales[$nom])) {
295
+                $nom = "spip_$table";
296
+            }
297
+            if (isset($tables_auxiliaires[$nom]) || isset($tables_principales[$nom])) {
298
+                foreach ($liste_relations as $link_table) {
299
+                    if (isset($tables_auxiliaires[$link_table])/*||isset($tables_principales[$link_table])*/) {
300
+                        $tables_for_link[$link_table][] = $nom;
301
+                    } else {
302
+                        if (isset($tables_auxiliaires["spip_$link_table"])/*||isset($tables_principales["spip_$link_table"])*/) {
303
+                            $tables_for_link["spip_$link_table"][] = $nom;
304
+                        }
305
+                    }
306
+                }
307
+            }
308
+        }
309
+    }
310
+
311
+    $liste_tables = array_merge(array_keys($tables_principales), array_keys($tables_auxiliaires), array_keys($tables));
312
+    foreach ($liste_tables as $table) {
313
+        //		$name = preg_replace("{^spip_}","",$table);
314
+        if (!isset($tables_pointees[$table])
315
+            && !in_array($table, $exclude_tables)
316
+            && !isset($tables_for_link[$table])
317
+        ) {
318
+            $tables_for_dump[] = $table;
319
+            $tables_pointees[$table] = 1;
320
+        }
321
+    }
322
+    foreach ($tables_for_link as $link_table => $liste) {
323
+        $connecte = true;
324
+        foreach ($liste as $connect_table) {
325
+            if (!in_array($connect_table, $tables_for_dump)) {
326
+                $connecte = false;
327
+            }
328
+        }
329
+        if ($connecte)
330
+            # on ajoute les liaisons en premier
331
+            # si une restauration est interrompue,
332
+            # cela se verra mieux si il manque des objets
333
+            # que des liens
334
+        {
335
+            array_unshift($tables_for_dump, $link_table);
336
+        }
337
+    }
338
+
339
+    return array($tables_for_dump, $tables_for_link);
340 340
 }
341 341
 
342 342
 /**
@@ -351,34 +351,34 @@  discard block
 block discarded – undo
351 351
  * @param string $serveur
352 352
  */
353 353
 function base_vider_tables_destination_copie($tables, $exclure_tables = array(), $serveur = '') {
354
-	$trouver_table = charger_fonction('trouver_table', 'base');
355
-
356
-	spip_log('Vider ' . count($tables) . " tables sur serveur '$serveur' : " . join(', ', $tables),
357
-		'base.' . _LOG_INFO_IMPORTANTE);
358
-	foreach ($tables as $table) {
359
-		if (!in_array($table, $exclure_tables)) {
360
-			// sur le serveur principal, il ne faut pas supprimer l'auteur loge !
361
-			if (($table != 'spip_auteurs') or $serveur != '') {
362
-				// regarder si il y a au moins un champ impt='non'
363
-				$desc = $trouver_table($table, $serveur);
364
-				if (isset($desc['field']['impt'])) {
365
-					sql_delete($table, "impt='oui'", $serveur);
366
-				} else {
367
-					sql_delete($table, "", $serveur);
368
-				}
369
-			}
370
-		}
371
-	}
372
-
373
-	// sur le serveur principal, il ne faut pas supprimer l'auteur loge !
374
-	// Bidouille pour garder l'acces admin actuel pendant toute la restauration
375
-	if ($serveur == ''
376
-		and in_array('spip_auteurs', $tables)
377
-		and !in_array('spip_auteurs', $exclure_tables)
378
-	) {
379
-		base_conserver_copieur(true, $serveur);
380
-		sql_delete("spip_auteurs", "id_auteur>0", $serveur);
381
-	}
354
+    $trouver_table = charger_fonction('trouver_table', 'base');
355
+
356
+    spip_log('Vider ' . count($tables) . " tables sur serveur '$serveur' : " . join(', ', $tables),
357
+        'base.' . _LOG_INFO_IMPORTANTE);
358
+    foreach ($tables as $table) {
359
+        if (!in_array($table, $exclure_tables)) {
360
+            // sur le serveur principal, il ne faut pas supprimer l'auteur loge !
361
+            if (($table != 'spip_auteurs') or $serveur != '') {
362
+                // regarder si il y a au moins un champ impt='non'
363
+                $desc = $trouver_table($table, $serveur);
364
+                if (isset($desc['field']['impt'])) {
365
+                    sql_delete($table, "impt='oui'", $serveur);
366
+                } else {
367
+                    sql_delete($table, "", $serveur);
368
+                }
369
+            }
370
+        }
371
+    }
372
+
373
+    // sur le serveur principal, il ne faut pas supprimer l'auteur loge !
374
+    // Bidouille pour garder l'acces admin actuel pendant toute la restauration
375
+    if ($serveur == ''
376
+        and in_array('spip_auteurs', $tables)
377
+        and !in_array('spip_auteurs', $exclure_tables)
378
+    ) {
379
+        base_conserver_copieur(true, $serveur);
380
+        sql_delete("spip_auteurs", "id_auteur>0", $serveur);
381
+    }
382 382
 }
383 383
 
384 384
 /**
@@ -389,21 +389,21 @@  discard block
 block discarded – undo
389 389
  * @return void
390 390
  */
391 391
 function base_conserver_copieur($move = true, $serveur = '') {
392
-	// s'asurer qu'on a pas deja fait la manip !
393
-	if ($GLOBALS['visiteur_session']['id_auteur'] > 0 and sql_countsel("spip_auteurs", "id_auteur>0")) {
394
-		spip_log('Conserver copieur dans id_auteur=' . $GLOBALS['visiteur_session']['id_auteur'] . " pour le serveur '$serveur'",
395
-			'dump.' . _LOG_INFO_IMPORTANTE);
396
-		sql_delete("spip_auteurs", "id_auteur<0", $serveur);
397
-		if ($move) {
398
-			sql_updateq('spip_auteurs', array('id_auteur' => -$GLOBALS['visiteur_session']['id_auteur']),
399
-				"id_auteur=" . intval($GLOBALS['visiteur_session']['id_auteur']), array(), $serveur);
400
-		} else {
401
-			$row = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . $GLOBALS['visiteur_session']['id_auteur'], '', '', '', '',
402
-				$serveur);
403
-			$row['id_auteur'] = -$GLOBALS['visiteur_session']['id_auteur'];
404
-			sql_insertq('spip_auteurs', $row, array(), $serveur);
405
-		}
406
-	}
392
+    // s'asurer qu'on a pas deja fait la manip !
393
+    if ($GLOBALS['visiteur_session']['id_auteur'] > 0 and sql_countsel("spip_auteurs", "id_auteur>0")) {
394
+        spip_log('Conserver copieur dans id_auteur=' . $GLOBALS['visiteur_session']['id_auteur'] . " pour le serveur '$serveur'",
395
+            'dump.' . _LOG_INFO_IMPORTANTE);
396
+        sql_delete("spip_auteurs", "id_auteur<0", $serveur);
397
+        if ($move) {
398
+            sql_updateq('spip_auteurs', array('id_auteur' => -$GLOBALS['visiteur_session']['id_auteur']),
399
+                "id_auteur=" . intval($GLOBALS['visiteur_session']['id_auteur']), array(), $serveur);
400
+        } else {
401
+            $row = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . $GLOBALS['visiteur_session']['id_auteur'], '', '', '', '',
402
+                $serveur);
403
+            $row['id_auteur'] = -$GLOBALS['visiteur_session']['id_auteur'];
404
+            sql_insertq('spip_auteurs', $row, array(), $serveur);
405
+        }
406
+    }
407 407
 }
408 408
 
409 409
 /**
@@ -418,19 +418,19 @@  discard block
 block discarded – undo
418 418
  * @param string $serveur
419 419
  */
420 420
 function base_detruire_copieur_si_besoin($serveur = '') {
421
-	// rien a faire si ce n'est pas le serveur principal !
422
-	if ($serveur == '') {
423
-		if (sql_countsel("spip_auteurs", "id_auteur>0")) {
424
-			spip_log("Detruire copieur id_auteur<0 pour le serveur '$serveur'", 'dump.' . _LOG_INFO_IMPORTANTE);
425
-			sql_delete("spip_auteurs", "id_auteur<0", $serveur);
426
-		} else {
427
-			spip_log("Restaurer copieur id_auteur<0 pour le serveur '$serveur' (aucun autre auteur en base)",
428
-				'dump.' . _LOG_INFO_IMPORTANTE);
429
-			sql_update('spip_auteurs', array('id_auteur' => '-id_auteur'), "id_auteur<0");
430
-		}
431
-	} else {
432
-		spip_log("Pas de destruction copieur sur serveur '$serveur'", 'dump.' . _LOG_INFO_IMPORTANTE);
433
-	}
421
+    // rien a faire si ce n'est pas le serveur principal !
422
+    if ($serveur == '') {
423
+        if (sql_countsel("spip_auteurs", "id_auteur>0")) {
424
+            spip_log("Detruire copieur id_auteur<0 pour le serveur '$serveur'", 'dump.' . _LOG_INFO_IMPORTANTE);
425
+            sql_delete("spip_auteurs", "id_auteur<0", $serveur);
426
+        } else {
427
+            spip_log("Restaurer copieur id_auteur<0 pour le serveur '$serveur' (aucun autre auteur en base)",
428
+                'dump.' . _LOG_INFO_IMPORTANTE);
429
+            sql_update('spip_auteurs', array('id_auteur' => '-id_auteur'), "id_auteur<0");
430
+        }
431
+    } else {
432
+        spip_log("Pas de destruction copieur sur serveur '$serveur'", 'dump.' . _LOG_INFO_IMPORTANTE);
433
+    }
434 434
 }
435 435
 
436 436
 /**
@@ -445,40 +445,40 @@  discard block
 block discarded – undo
445 445
  * @return array
446 446
  */
447 447
 function base_preparer_table_dest($table, $desc, $serveur_dest, $init = false) {
448
-	$upgrade = false;
449
-	// si la table existe et qu'on est a l'init, la dropper
450
-	if ($desc_dest = sql_showtable($table, true, $serveur_dest) and $init) {
451
-		if ($serveur_dest == '' and in_array($table, array('spip_meta', 'spip_auteurs'))) {
452
-			// ne pas dropper auteurs et meta sur le serveur principal
453
-			// faire un simple upgrade a la place
454
-			// pour ajouter les champs manquants
455
-			$upgrade = true;
456
-			// coherence avec le drop sur les autres tables
457
-			base_vider_tables_destination_copie(array($table), array(), $serveur_dest);
458
-			if ($table == 'spip_meta') {
459
-				// virer les version base qui vont venir avec l'import
460
-				sql_delete($table, "nom like '%_base_version'", $serveur_dest);
461
-				// hum casse la base si pas version_installee a l'import ...
462
-				sql_delete($table, "nom='version_installee'", $serveur_dest);
463
-			}
464
-		} else {
465
-			sql_drop_table($table, '', $serveur_dest);
466
-			spip_log("drop table '$table' sur serveur '$serveur_dest'", 'dump.' . _LOG_INFO_IMPORTANTE);
467
-		}
468
-		$desc_dest = false;
469
-	}
470
-	// si la table n'existe pas dans la destination, la creer a l'identique !
471
-	if (!$desc_dest) {
472
-		spip_log("creation '$table' sur serveur '$serveur_dest'", 'dump.' . _LOG_INFO_IMPORTANTE);
473
-		include_spip('base/create');
474
-		creer_ou_upgrader_table($table, $desc, 'auto', $upgrade, $serveur_dest);
475
-		$desc_dest = sql_showtable($table, true, $serveur_dest);
476
-	}
477
-	if (!$desc_dest) {
478
-		spip_log("Erreur creation '$table' sur serveur '$serveur_dest'" . var_export($desc, 1), 'dump.' . _LOG_ERREUR);
479
-	}
480
-
481
-	return $desc_dest;
448
+    $upgrade = false;
449
+    // si la table existe et qu'on est a l'init, la dropper
450
+    if ($desc_dest = sql_showtable($table, true, $serveur_dest) and $init) {
451
+        if ($serveur_dest == '' and in_array($table, array('spip_meta', 'spip_auteurs'))) {
452
+            // ne pas dropper auteurs et meta sur le serveur principal
453
+            // faire un simple upgrade a la place
454
+            // pour ajouter les champs manquants
455
+            $upgrade = true;
456
+            // coherence avec le drop sur les autres tables
457
+            base_vider_tables_destination_copie(array($table), array(), $serveur_dest);
458
+            if ($table == 'spip_meta') {
459
+                // virer les version base qui vont venir avec l'import
460
+                sql_delete($table, "nom like '%_base_version'", $serveur_dest);
461
+                // hum casse la base si pas version_installee a l'import ...
462
+                sql_delete($table, "nom='version_installee'", $serveur_dest);
463
+            }
464
+        } else {
465
+            sql_drop_table($table, '', $serveur_dest);
466
+            spip_log("drop table '$table' sur serveur '$serveur_dest'", 'dump.' . _LOG_INFO_IMPORTANTE);
467
+        }
468
+        $desc_dest = false;
469
+    }
470
+    // si la table n'existe pas dans la destination, la creer a l'identique !
471
+    if (!$desc_dest) {
472
+        spip_log("creation '$table' sur serveur '$serveur_dest'", 'dump.' . _LOG_INFO_IMPORTANTE);
473
+        include_spip('base/create');
474
+        creer_ou_upgrader_table($table, $desc, 'auto', $upgrade, $serveur_dest);
475
+        $desc_dest = sql_showtable($table, true, $serveur_dest);
476
+    }
477
+    if (!$desc_dest) {
478
+        spip_log("Erreur creation '$table' sur serveur '$serveur_dest'" . var_export($desc, 1), 'dump.' . _LOG_ERREUR);
479
+    }
480
+
481
+    return $desc_dest;
482 482
 }
483 483
 
484 484
 /**
@@ -524,186 +524,186 @@  discard block
 block discarded – undo
524 524
  */
525 525
 function base_copier_tables($status_file, $tables, $serveur_source, $serveur_dest, $options = array()) {
526 526
 
527
-	$callback_progression = isset($options['callback_progression']) ? $options['callback_progression'] : '';
528
-	$max_time = isset($options['max_time']) ? $options['max_time'] : 0;
529
-	$drop_source = isset($options['drop_source']) ? $options['drop_source'] : false;
530
-	$no_erase_dest = isset($options['no_erase_dest']) ? $options['no_erase_dest'] : array();
531
-	$where = isset($options['where']) ? $options['where'] : array();
532
-	$fonction_base_inserer = isset($options['fonction_base_inserer']) ? $options['fonction_base_inserer'] : 'inserer_copie';
533
-	$desc_tables_dest = isset($options['desc_tables_dest']) ? $options['desc_tables_dest'] : array();
534
-	$racine_fonctions = (isset($options['racine_fonctions_dest']) ? $options['racine_fonctions_dest'] : 'base');
535
-	$data_pool = (isset($options['data_pool']) ? $options['data_pool'] : 50 * 1024);
536
-
537
-	spip_log("Copier " . count($tables) . " tables de '$serveur_source' vers '$serveur_dest'",
538
-		'dump.' . _LOG_INFO_IMPORTANTE);
539
-
540
-	if (!$inserer_copie = charger_fonction($fonction_base_inserer, $racine_fonctions, true)) {
541
-		spip_log("Fonction '{$racine_fonctions}_$fonction_base_inserer' inconnue. Abandon", 'dump.' . _LOG_INFO_IMPORTANTE);
542
-
543
-		return true; // echec mais on a fini, donc true
544
-	}
545
-	if (!$preparer_table_dest = charger_fonction('preparer_table_dest', $racine_fonctions, true)) {
546
-		spip_log("Fonction '{$racine_fonctions}_$preparer_table_dest' inconnue. Abandon", 'dump.' . _LOG_INFO_IMPORTANTE);
547
-
548
-		return true; // echec mais on a fini, donc true
549
-	}
550
-
551
-	if (!lire_fichier($status_file, $status)
552
-		or !$status = unserialize($status)
553
-	) {
554
-		$status = array();
555
-	}
556
-	$status['etape'] = 'basecopie';
557
-
558
-	// puis relister les tables a importer
559
-	// et les vider si besoin, au moment du premier passage ici
560
-	$initialisation_copie = (!isset($status["dump_status_copie"])) ? 0 : $status["dump_status_copie"];
561
-
562
-	// si init pas encore faite, vider les tables du serveur destination
563
-	if (!$initialisation_copie) {
564
-		if (!$vider_tables_destination_copie = charger_fonction('vider_tables_destination_copie', $racine_fonctions,
565
-			true)
566
-		) {
567
-			spip_log("Fonction '{$racine_fonctions}_vider_tables_destination_copie' inconnue. Abandon",
568
-				'dump.' . _LOG_INFO_IMPORTANTE);
569
-
570
-			return true; // echec mais on a fini, donc true
571
-		}
572
-		$vider_tables_destination_copie($tables, $no_erase_dest, $serveur_dest);
573
-		$status["dump_status_copie"] = 'ok';
574
-		ecrire_fichier($status_file, serialize($status));
575
-	}
576
-
577
-	// les tables auteurs et meta doivent etre copiees en dernier !
578
-	if (in_array('spip_auteurs', $tables)) {
579
-		$tables = array_diff($tables, array('spip_auteurs'));
580
-		$tables[] = 'spip_auteurs';
581
-	}
582
-	if (in_array('spip_meta', $tables)) {
583
-		$tables = array_diff($tables, array('spip_meta'));
584
-		$tables[] = 'spip_meta';
585
-	}
586
-	spip_log("Tables a copier :" . implode(", ", $tables), 'dump.' . _LOG_INFO);
587
-
588
-	$trouver_table = charger_fonction('trouver_table', 'base');
589
-
590
-	foreach ($tables as $table) {
591
-		// si table commence par spip_ c'est une table SPIP, renommer le prefixe si besoin
592
-		// sinon chercher la vraie table
593
-		$desc_source = false;
594
-		if (strncmp($table, "spip_", 5) == 0) {
595
-			$desc_source = $trouver_table(preg_replace(",^spip_,", "", $table), $serveur_source, true);
596
-		}
597
-		if (!$desc_source or !isset($desc_source['exist']) or !$desc_source['exist']) {
598
-			$desc_source = $trouver_table($table, $serveur_source, false);
599
-		}
600
-
601
-		// verifier que la table est presente dans la base source
602
-		if ($desc_source) {
603
-			// $status['tables_copiees'][$table] contient l'avancement
604
-			// de la copie pour la $table : 0 a N et -N quand elle est finie (-1 si vide et finie...)
605
-			if (!isset($status['tables_copiees'][$table])) {
606
-				$status['tables_copiees'][$table] = 0;
607
-			}
608
-
609
-			if (is_numeric($status['tables_copiees'][$table])
610
-				and $status['tables_copiees'][$table] >= 0
611
-				and $desc_dest = $preparer_table_dest(
612
-					$table,
613
-					isset($desc_tables_dest[$table]) ? $desc_tables_dest[$table] : $desc_source,
614
-					$serveur_dest,
615
-					$status['tables_copiees'][$table] == 0)
616
-			) {
617
-				if ($callback_progression) {
618
-					$callback_progression($status['tables_copiees'][$table], 0, $table);
619
-				}
620
-				while (true) {
621
-					$n = intval($status['tables_copiees'][$table]);
622
-					// on copie par lot de 400
623
-					$res = sql_select('*', $table, isset($where[$table]) ? $where[$table] : '', '', '', "$n,400", '',
624
-						$serveur_source);
625
-					while ($row = sql_fetch($res, $serveur_source)) {
626
-						$rows = array($row);
627
-						// lire un groupe de donnees si demande en option
628
-						// (permet un envoi par lot vers la destination)
629
-						if ($data_pool > 0) {
630
-							$s = strlen(serialize($row));
631
-							while ($s < $data_pool and $row = sql_fetch($res, $serveur_source)) {
632
-								$s += strlen(serialize($row));
633
-								$rows[] = $row;
634
-							}
635
-						}
636
-						// si l'enregistrement est deja en base, ca fera un echec ou un doublon
637
-						// mais si ca renvoie false c'est une erreur fatale => abandon
638
-						if ($inserer_copie($table, $rows, $desc_dest, $serveur_dest) === false) {
639
-							// forcer la sortie, charge a l'appelant de gerer l'echec
640
-							spip_log("Erreur fatale dans $inserer_copie table $table", "dump" . _LOG_ERREUR);
641
-							$status['errors'][] = "Erreur fatale  lors de la copie de la table $table";
642
-							ecrire_fichier($status_file, serialize($status));
643
-
644
-							// copie finie
645
-							return true;
646
-						}
647
-						$status['tables_copiees'][$table] += count($rows);
648
-						if ($max_time and time() > $max_time) {
649
-							break;
650
-						}
651
-					}
652
-					if ($n == $status['tables_copiees'][$table]) {
653
-						break;
654
-					}
655
-					spip_log("recopie $table " . $status['tables_copiees'][$table], 'dump.' . _LOG_INFO_IMPORTANTE);
656
-					if ($callback_progression) {
657
-						$callback_progression($status['tables_copiees'][$table], 0, $table);
658
-					}
659
-					ecrire_fichier($status_file, serialize($status));
660
-					if ($max_time and time() > $max_time) {
661
-						return false;
662
-					} // on a pas fini, mais le temps imparti est ecoule
663
-				}
664
-				if ($drop_source) {
665
-					sql_drop_table($table, '', $serveur_source);
666
-					spip_log("drop $table sur serveur source '$serveur_source'", 'dump.' . _LOG_INFO_IMPORTANTE);
667
-				}
668
-				$status['tables_copiees'][$table] = ($status['tables_copiees'][$table] ? -$status['tables_copiees'][$table] : "zero");
669
-				ecrire_fichier($status_file, serialize($status));
670
-				spip_log("tables_recopiees " . implode(',', array_keys($status['tables_copiees'])), 'dump.' . _LOG_INFO);
671
-				if ($callback_progression) {
672
-					$callback_progression($status['tables_copiees'][$table], $status['tables_copiees'][$table], $table);
673
-				}
674
-			} else {
675
-				if ($status['tables_copiees'][$table] < 0) {
676
-					spip_log("Table $table deja copiee : " . $status['tables_copiees'][$table], "dump." . _LOG_INFO);
677
-				}
678
-				if ($callback_progression) {
679
-					$callback_progression(0, $status['tables_copiees'][$table],
680
-						"$table" . ((is_numeric($status['tables_copiees'][$table]) and $status['tables_copiees'][$table] >= 0) ? "[Echec]" : ""));
681
-				}
682
-			}
683
-		} else {
684
-			$status['errors'][] = "Impossible de lire la description de la table $table";
685
-			ecrire_fichier($status_file, serialize($status));
686
-			spip_log("Impossible de lire la description de la table $table", "dump." . _LOG_ERREUR);
687
-		}
688
-	}
689
-
690
-	// si le nombre de tables envoyees n'est pas egal au nombre de tables demandees
691
-	// abandonner
692
-	if (count($status['tables_copiees']) < count($tables)) {
693
-		spip_log("Nombre de tables copiees incorrect : " . count($status['tables_copiees']) . "/" . count($tables),
694
-			"dump." . _LOG_ERREUR);
695
-		$status['errors'][] = "Nombre de tables copiees incorrect : " . count($status['tables_copiees']) . "/" . count($tables);
696
-		ecrire_fichier($status_file, serialize($status));
697
-	}
698
-
699
-	if ($detruire_copieur_si_besoin = charger_fonction('detruire_copieur_si_besoin', $racine_fonctions, true)) {
700
-		$detruire_copieur_si_besoin($serveur_dest);
701
-	} else {
702
-		spip_log("Fonction '{$racine_fonctions}_detruire_copieur_si_besoin' inconnue.", 'dump.' . _LOG_INFO_IMPORTANTE);
703
-	}
704
-
705
-	// OK, copie complete
706
-	return true;
527
+    $callback_progression = isset($options['callback_progression']) ? $options['callback_progression'] : '';
528
+    $max_time = isset($options['max_time']) ? $options['max_time'] : 0;
529
+    $drop_source = isset($options['drop_source']) ? $options['drop_source'] : false;
530
+    $no_erase_dest = isset($options['no_erase_dest']) ? $options['no_erase_dest'] : array();
531
+    $where = isset($options['where']) ? $options['where'] : array();
532
+    $fonction_base_inserer = isset($options['fonction_base_inserer']) ? $options['fonction_base_inserer'] : 'inserer_copie';
533
+    $desc_tables_dest = isset($options['desc_tables_dest']) ? $options['desc_tables_dest'] : array();
534
+    $racine_fonctions = (isset($options['racine_fonctions_dest']) ? $options['racine_fonctions_dest'] : 'base');
535
+    $data_pool = (isset($options['data_pool']) ? $options['data_pool'] : 50 * 1024);
536
+
537
+    spip_log("Copier " . count($tables) . " tables de '$serveur_source' vers '$serveur_dest'",
538
+        'dump.' . _LOG_INFO_IMPORTANTE);
539
+
540
+    if (!$inserer_copie = charger_fonction($fonction_base_inserer, $racine_fonctions, true)) {
541
+        spip_log("Fonction '{$racine_fonctions}_$fonction_base_inserer' inconnue. Abandon", 'dump.' . _LOG_INFO_IMPORTANTE);
542
+
543
+        return true; // echec mais on a fini, donc true
544
+    }
545
+    if (!$preparer_table_dest = charger_fonction('preparer_table_dest', $racine_fonctions, true)) {
546
+        spip_log("Fonction '{$racine_fonctions}_$preparer_table_dest' inconnue. Abandon", 'dump.' . _LOG_INFO_IMPORTANTE);
547
+
548
+        return true; // echec mais on a fini, donc true
549
+    }
550
+
551
+    if (!lire_fichier($status_file, $status)
552
+        or !$status = unserialize($status)
553
+    ) {
554
+        $status = array();
555
+    }
556
+    $status['etape'] = 'basecopie';
557
+
558
+    // puis relister les tables a importer
559
+    // et les vider si besoin, au moment du premier passage ici
560
+    $initialisation_copie = (!isset($status["dump_status_copie"])) ? 0 : $status["dump_status_copie"];
561
+
562
+    // si init pas encore faite, vider les tables du serveur destination
563
+    if (!$initialisation_copie) {
564
+        if (!$vider_tables_destination_copie = charger_fonction('vider_tables_destination_copie', $racine_fonctions,
565
+            true)
566
+        ) {
567
+            spip_log("Fonction '{$racine_fonctions}_vider_tables_destination_copie' inconnue. Abandon",
568
+                'dump.' . _LOG_INFO_IMPORTANTE);
569
+
570
+            return true; // echec mais on a fini, donc true
571
+        }
572
+        $vider_tables_destination_copie($tables, $no_erase_dest, $serveur_dest);
573
+        $status["dump_status_copie"] = 'ok';
574
+        ecrire_fichier($status_file, serialize($status));
575
+    }
576
+
577
+    // les tables auteurs et meta doivent etre copiees en dernier !
578
+    if (in_array('spip_auteurs', $tables)) {
579
+        $tables = array_diff($tables, array('spip_auteurs'));
580
+        $tables[] = 'spip_auteurs';
581
+    }
582
+    if (in_array('spip_meta', $tables)) {
583
+        $tables = array_diff($tables, array('spip_meta'));
584
+        $tables[] = 'spip_meta';
585
+    }
586
+    spip_log("Tables a copier :" . implode(", ", $tables), 'dump.' . _LOG_INFO);
587
+
588
+    $trouver_table = charger_fonction('trouver_table', 'base');
589
+
590
+    foreach ($tables as $table) {
591
+        // si table commence par spip_ c'est une table SPIP, renommer le prefixe si besoin
592
+        // sinon chercher la vraie table
593
+        $desc_source = false;
594
+        if (strncmp($table, "spip_", 5) == 0) {
595
+            $desc_source = $trouver_table(preg_replace(",^spip_,", "", $table), $serveur_source, true);
596
+        }
597
+        if (!$desc_source or !isset($desc_source['exist']) or !$desc_source['exist']) {
598
+            $desc_source = $trouver_table($table, $serveur_source, false);
599
+        }
600
+
601
+        // verifier que la table est presente dans la base source
602
+        if ($desc_source) {
603
+            // $status['tables_copiees'][$table] contient l'avancement
604
+            // de la copie pour la $table : 0 a N et -N quand elle est finie (-1 si vide et finie...)
605
+            if (!isset($status['tables_copiees'][$table])) {
606
+                $status['tables_copiees'][$table] = 0;
607
+            }
608
+
609
+            if (is_numeric($status['tables_copiees'][$table])
610
+                and $status['tables_copiees'][$table] >= 0
611
+                and $desc_dest = $preparer_table_dest(
612
+                    $table,
613
+                    isset($desc_tables_dest[$table]) ? $desc_tables_dest[$table] : $desc_source,
614
+                    $serveur_dest,
615
+                    $status['tables_copiees'][$table] == 0)
616
+            ) {
617
+                if ($callback_progression) {
618
+                    $callback_progression($status['tables_copiees'][$table], 0, $table);
619
+                }
620
+                while (true) {
621
+                    $n = intval($status['tables_copiees'][$table]);
622
+                    // on copie par lot de 400
623
+                    $res = sql_select('*', $table, isset($where[$table]) ? $where[$table] : '', '', '', "$n,400", '',
624
+                        $serveur_source);
625
+                    while ($row = sql_fetch($res, $serveur_source)) {
626
+                        $rows = array($row);
627
+                        // lire un groupe de donnees si demande en option
628
+                        // (permet un envoi par lot vers la destination)
629
+                        if ($data_pool > 0) {
630
+                            $s = strlen(serialize($row));
631
+                            while ($s < $data_pool and $row = sql_fetch($res, $serveur_source)) {
632
+                                $s += strlen(serialize($row));
633
+                                $rows[] = $row;
634
+                            }
635
+                        }
636
+                        // si l'enregistrement est deja en base, ca fera un echec ou un doublon
637
+                        // mais si ca renvoie false c'est une erreur fatale => abandon
638
+                        if ($inserer_copie($table, $rows, $desc_dest, $serveur_dest) === false) {
639
+                            // forcer la sortie, charge a l'appelant de gerer l'echec
640
+                            spip_log("Erreur fatale dans $inserer_copie table $table", "dump" . _LOG_ERREUR);
641
+                            $status['errors'][] = "Erreur fatale  lors de la copie de la table $table";
642
+                            ecrire_fichier($status_file, serialize($status));
643
+
644
+                            // copie finie
645
+                            return true;
646
+                        }
647
+                        $status['tables_copiees'][$table] += count($rows);
648
+                        if ($max_time and time() > $max_time) {
649
+                            break;
650
+                        }
651
+                    }
652
+                    if ($n == $status['tables_copiees'][$table]) {
653
+                        break;
654
+                    }
655
+                    spip_log("recopie $table " . $status['tables_copiees'][$table], 'dump.' . _LOG_INFO_IMPORTANTE);
656
+                    if ($callback_progression) {
657
+                        $callback_progression($status['tables_copiees'][$table], 0, $table);
658
+                    }
659
+                    ecrire_fichier($status_file, serialize($status));
660
+                    if ($max_time and time() > $max_time) {
661
+                        return false;
662
+                    } // on a pas fini, mais le temps imparti est ecoule
663
+                }
664
+                if ($drop_source) {
665
+                    sql_drop_table($table, '', $serveur_source);
666
+                    spip_log("drop $table sur serveur source '$serveur_source'", 'dump.' . _LOG_INFO_IMPORTANTE);
667
+                }
668
+                $status['tables_copiees'][$table] = ($status['tables_copiees'][$table] ? -$status['tables_copiees'][$table] : "zero");
669
+                ecrire_fichier($status_file, serialize($status));
670
+                spip_log("tables_recopiees " . implode(',', array_keys($status['tables_copiees'])), 'dump.' . _LOG_INFO);
671
+                if ($callback_progression) {
672
+                    $callback_progression($status['tables_copiees'][$table], $status['tables_copiees'][$table], $table);
673
+                }
674
+            } else {
675
+                if ($status['tables_copiees'][$table] < 0) {
676
+                    spip_log("Table $table deja copiee : " . $status['tables_copiees'][$table], "dump." . _LOG_INFO);
677
+                }
678
+                if ($callback_progression) {
679
+                    $callback_progression(0, $status['tables_copiees'][$table],
680
+                        "$table" . ((is_numeric($status['tables_copiees'][$table]) and $status['tables_copiees'][$table] >= 0) ? "[Echec]" : ""));
681
+                }
682
+            }
683
+        } else {
684
+            $status['errors'][] = "Impossible de lire la description de la table $table";
685
+            ecrire_fichier($status_file, serialize($status));
686
+            spip_log("Impossible de lire la description de la table $table", "dump." . _LOG_ERREUR);
687
+        }
688
+    }
689
+
690
+    // si le nombre de tables envoyees n'est pas egal au nombre de tables demandees
691
+    // abandonner
692
+    if (count($status['tables_copiees']) < count($tables)) {
693
+        spip_log("Nombre de tables copiees incorrect : " . count($status['tables_copiees']) . "/" . count($tables),
694
+            "dump." . _LOG_ERREUR);
695
+        $status['errors'][] = "Nombre de tables copiees incorrect : " . count($status['tables_copiees']) . "/" . count($tables);
696
+        ecrire_fichier($status_file, serialize($status));
697
+    }
698
+
699
+    if ($detruire_copieur_si_besoin = charger_fonction('detruire_copieur_si_besoin', $racine_fonctions, true)) {
700
+        $detruire_copieur_si_besoin($serveur_dest);
701
+    } else {
702
+        spip_log("Fonction '{$racine_fonctions}_detruire_copieur_si_besoin' inconnue.", 'dump.' . _LOG_INFO_IMPORTANTE);
703
+    }
704
+
705
+    // OK, copie complete
706
+    return true;
707 707
 }
708 708
 
709 709
 /**
@@ -717,27 +717,27 @@  discard block
 block discarded – undo
717 717
  */
718 718
 function base_inserer_copie($table, $rows, $desc_dest, $serveur_dest) {
719 719
 
720
-	// verifier le nombre d'insertion
721
-	$nb1 = sql_countsel($table, '', '', '', $serveur_dest);
722
-	// si l'enregistrement est deja en base, ca fera un echec ou un doublon
723
-	$r = sql_insertq_multi($table, $rows, $desc_dest, $serveur_dest);
724
-	$nb = sql_countsel($table, '', '', '', $serveur_dest);
725
-	if ($nb - $nb1 < count($rows)) {
726
-		spip_log("base_inserer_copie : " . ($nb - $nb1) . " insertions au lieu de " . count($rows) . ". On retente 1 par 1",
727
-			"dump" . _LOG_INFO_IMPORTANTE);
728
-		foreach ($rows as $row) {
729
-			// si l'enregistrement est deja en base, ca fera un echec ou un doublon
730
-			$r = sql_insertq($table, $row, $desc_dest, $serveur_dest);
731
-		}
732
-		// on reverifie le total
733
-		$r = 0;
734
-		$nb = sql_countsel($table, '', '', '', $serveur_dest);
735
-		if ($nb - $nb1 < count($rows)) {
736
-			spip_log("base_inserer_copie : " . ($nb - $nb1) . " insertions au lieu de " . count($rows) . " apres insertion 1 par 1",
737
-				"dump" . _LOG_ERREUR);
738
-			$r = false;
739
-		}
740
-	}
741
-
742
-	return $r;
720
+    // verifier le nombre d'insertion
721
+    $nb1 = sql_countsel($table, '', '', '', $serveur_dest);
722
+    // si l'enregistrement est deja en base, ca fera un echec ou un doublon
723
+    $r = sql_insertq_multi($table, $rows, $desc_dest, $serveur_dest);
724
+    $nb = sql_countsel($table, '', '', '', $serveur_dest);
725
+    if ($nb - $nb1 < count($rows)) {
726
+        spip_log("base_inserer_copie : " . ($nb - $nb1) . " insertions au lieu de " . count($rows) . ". On retente 1 par 1",
727
+            "dump" . _LOG_INFO_IMPORTANTE);
728
+        foreach ($rows as $row) {
729
+            // si l'enregistrement est deja en base, ca fera un echec ou un doublon
730
+            $r = sql_insertq($table, $row, $desc_dest, $serveur_dest);
731
+        }
732
+        // on reverifie le total
733
+        $r = 0;
734
+        $nb = sql_countsel($table, '', '', '', $serveur_dest);
735
+        if ($nb - $nb1 < count($rows)) {
736
+            spip_log("base_inserer_copie : " . ($nb - $nb1) . " insertions au lieu de " . count($rows) . " apres insertion 1 par 1",
737
+                "dump" . _LOG_ERREUR);
738
+            $r = false;
739
+        }
740
+    }
741
+
742
+    return $r;
743 743
 }
Please login to merge, or discard this patch.
Spacing   +36 added lines, -36 removed lines patch added patch discarded remove patch
@@ -30,7 +30,7 @@  discard block
 block discarded – undo
30 30
 // donc il faut l'inclure "en globals"
31 31
 if ($f = find_in_path('mes_fonctions.php')) {
32 32
 	global $dossier_squelettes;
33
-	@include_once(_ROOT_CWD . $f);
33
+	@include_once(_ROOT_CWD.$f);
34 34
 }
35 35
 
36 36
 if (@is_readable(_CACHE_PLUGINS_FCT)) {
@@ -48,7 +48,7 @@  discard block
 block discarded – undo
48 48
  * @return string
49 49
  **/
50 50
 function base_dump_meta_name($rub) {
51
-	return $meta = "status_dump_{$rub}_" . abs($GLOBALS['visiteur_session']['id_auteur']);
51
+	return $meta = "status_dump_{$rub}_".abs($GLOBALS['visiteur_session']['id_auteur']);
52 52
 }
53 53
 
54 54
 /**
@@ -94,7 +94,7 @@  discard block
 block discarded – undo
94 94
 	$connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
95 95
 	$prefixe = $connexion['prefixe'];
96 96
 
97
-	$p = '/^' . $prefixe . '/';
97
+	$p = '/^'.$prefixe.'/';
98 98
 	$res = $tables;
99 99
 	foreach (sql_alltable(null, $serveur) as $t) {
100 100
 		if (preg_match($p, $t)) {
@@ -353,8 +353,8 @@  discard block
 block discarded – undo
353 353
 function base_vider_tables_destination_copie($tables, $exclure_tables = array(), $serveur = '') {
354 354
 	$trouver_table = charger_fonction('trouver_table', 'base');
355 355
 
356
-	spip_log('Vider ' . count($tables) . " tables sur serveur '$serveur' : " . join(', ', $tables),
357
-		'base.' . _LOG_INFO_IMPORTANTE);
356
+	spip_log('Vider '.count($tables)." tables sur serveur '$serveur' : ".join(', ', $tables),
357
+		'base.'._LOG_INFO_IMPORTANTE);
358 358
 	foreach ($tables as $table) {
359 359
 		if (!in_array($table, $exclure_tables)) {
360 360
 			// sur le serveur principal, il ne faut pas supprimer l'auteur loge !
@@ -391,14 +391,14 @@  discard block
 block discarded – undo
391 391
 function base_conserver_copieur($move = true, $serveur = '') {
392 392
 	// s'asurer qu'on a pas deja fait la manip !
393 393
 	if ($GLOBALS['visiteur_session']['id_auteur'] > 0 and sql_countsel("spip_auteurs", "id_auteur>0")) {
394
-		spip_log('Conserver copieur dans id_auteur=' . $GLOBALS['visiteur_session']['id_auteur'] . " pour le serveur '$serveur'",
395
-			'dump.' . _LOG_INFO_IMPORTANTE);
394
+		spip_log('Conserver copieur dans id_auteur='.$GLOBALS['visiteur_session']['id_auteur']." pour le serveur '$serveur'",
395
+			'dump.'._LOG_INFO_IMPORTANTE);
396 396
 		sql_delete("spip_auteurs", "id_auteur<0", $serveur);
397 397
 		if ($move) {
398 398
 			sql_updateq('spip_auteurs', array('id_auteur' => -$GLOBALS['visiteur_session']['id_auteur']),
399
-				"id_auteur=" . intval($GLOBALS['visiteur_session']['id_auteur']), array(), $serveur);
399
+				"id_auteur=".intval($GLOBALS['visiteur_session']['id_auteur']), array(), $serveur);
400 400
 		} else {
401
-			$row = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . $GLOBALS['visiteur_session']['id_auteur'], '', '', '', '',
401
+			$row = sql_fetsel('*', 'spip_auteurs', 'id_auteur='.$GLOBALS['visiteur_session']['id_auteur'], '', '', '', '',
402 402
 				$serveur);
403 403
 			$row['id_auteur'] = -$GLOBALS['visiteur_session']['id_auteur'];
404 404
 			sql_insertq('spip_auteurs', $row, array(), $serveur);
@@ -421,15 +421,15 @@  discard block
 block discarded – undo
421 421
 	// rien a faire si ce n'est pas le serveur principal !
422 422
 	if ($serveur == '') {
423 423
 		if (sql_countsel("spip_auteurs", "id_auteur>0")) {
424
-			spip_log("Detruire copieur id_auteur<0 pour le serveur '$serveur'", 'dump.' . _LOG_INFO_IMPORTANTE);
424
+			spip_log("Detruire copieur id_auteur<0 pour le serveur '$serveur'", 'dump.'._LOG_INFO_IMPORTANTE);
425 425
 			sql_delete("spip_auteurs", "id_auteur<0", $serveur);
426 426
 		} else {
427 427
 			spip_log("Restaurer copieur id_auteur<0 pour le serveur '$serveur' (aucun autre auteur en base)",
428
-				'dump.' . _LOG_INFO_IMPORTANTE);
428
+				'dump.'._LOG_INFO_IMPORTANTE);
429 429
 			sql_update('spip_auteurs', array('id_auteur' => '-id_auteur'), "id_auteur<0");
430 430
 		}
431 431
 	} else {
432
-		spip_log("Pas de destruction copieur sur serveur '$serveur'", 'dump.' . _LOG_INFO_IMPORTANTE);
432
+		spip_log("Pas de destruction copieur sur serveur '$serveur'", 'dump.'._LOG_INFO_IMPORTANTE);
433 433
 	}
434 434
 }
435 435
 
@@ -463,19 +463,19 @@  discard block
 block discarded – undo
463 463
 			}
464 464
 		} else {
465 465
 			sql_drop_table($table, '', $serveur_dest);
466
-			spip_log("drop table '$table' sur serveur '$serveur_dest'", 'dump.' . _LOG_INFO_IMPORTANTE);
466
+			spip_log("drop table '$table' sur serveur '$serveur_dest'", 'dump.'._LOG_INFO_IMPORTANTE);
467 467
 		}
468 468
 		$desc_dest = false;
469 469
 	}
470 470
 	// si la table n'existe pas dans la destination, la creer a l'identique !
471 471
 	if (!$desc_dest) {
472
-		spip_log("creation '$table' sur serveur '$serveur_dest'", 'dump.' . _LOG_INFO_IMPORTANTE);
472
+		spip_log("creation '$table' sur serveur '$serveur_dest'", 'dump.'._LOG_INFO_IMPORTANTE);
473 473
 		include_spip('base/create');
474 474
 		creer_ou_upgrader_table($table, $desc, 'auto', $upgrade, $serveur_dest);
475 475
 		$desc_dest = sql_showtable($table, true, $serveur_dest);
476 476
 	}
477 477
 	if (!$desc_dest) {
478
-		spip_log("Erreur creation '$table' sur serveur '$serveur_dest'" . var_export($desc, 1), 'dump.' . _LOG_ERREUR);
478
+		spip_log("Erreur creation '$table' sur serveur '$serveur_dest'".var_export($desc, 1), 'dump.'._LOG_ERREUR);
479 479
 	}
480 480
 
481 481
 	return $desc_dest;
@@ -534,16 +534,16 @@  discard block
 block discarded – undo
534 534
 	$racine_fonctions = (isset($options['racine_fonctions_dest']) ? $options['racine_fonctions_dest'] : 'base');
535 535
 	$data_pool = (isset($options['data_pool']) ? $options['data_pool'] : 50 * 1024);
536 536
 
537
-	spip_log("Copier " . count($tables) . " tables de '$serveur_source' vers '$serveur_dest'",
538
-		'dump.' . _LOG_INFO_IMPORTANTE);
537
+	spip_log("Copier ".count($tables)." tables de '$serveur_source' vers '$serveur_dest'",
538
+		'dump.'._LOG_INFO_IMPORTANTE);
539 539
 
540 540
 	if (!$inserer_copie = charger_fonction($fonction_base_inserer, $racine_fonctions, true)) {
541
-		spip_log("Fonction '{$racine_fonctions}_$fonction_base_inserer' inconnue. Abandon", 'dump.' . _LOG_INFO_IMPORTANTE);
541
+		spip_log("Fonction '{$racine_fonctions}_$fonction_base_inserer' inconnue. Abandon", 'dump.'._LOG_INFO_IMPORTANTE);
542 542
 
543 543
 		return true; // echec mais on a fini, donc true
544 544
 	}
545 545
 	if (!$preparer_table_dest = charger_fonction('preparer_table_dest', $racine_fonctions, true)) {
546
-		spip_log("Fonction '{$racine_fonctions}_$preparer_table_dest' inconnue. Abandon", 'dump.' . _LOG_INFO_IMPORTANTE);
546
+		spip_log("Fonction '{$racine_fonctions}_$preparer_table_dest' inconnue. Abandon", 'dump.'._LOG_INFO_IMPORTANTE);
547 547
 
548 548
 		return true; // echec mais on a fini, donc true
549 549
 	}
@@ -565,7 +565,7 @@  discard block
 block discarded – undo
565 565
 			true)
566 566
 		) {
567 567
 			spip_log("Fonction '{$racine_fonctions}_vider_tables_destination_copie' inconnue. Abandon",
568
-				'dump.' . _LOG_INFO_IMPORTANTE);
568
+				'dump.'._LOG_INFO_IMPORTANTE);
569 569
 
570 570
 			return true; // echec mais on a fini, donc true
571 571
 		}
@@ -583,7 +583,7 @@  discard block
 block discarded – undo
583 583
 		$tables = array_diff($tables, array('spip_meta'));
584 584
 		$tables[] = 'spip_meta';
585 585
 	}
586
-	spip_log("Tables a copier :" . implode(", ", $tables), 'dump.' . _LOG_INFO);
586
+	spip_log("Tables a copier :".implode(", ", $tables), 'dump.'._LOG_INFO);
587 587
 
588 588
 	$trouver_table = charger_fonction('trouver_table', 'base');
589 589
 
@@ -637,7 +637,7 @@  discard block
 block discarded – undo
637 637
 						// mais si ca renvoie false c'est une erreur fatale => abandon
638 638
 						if ($inserer_copie($table, $rows, $desc_dest, $serveur_dest) === false) {
639 639
 							// forcer la sortie, charge a l'appelant de gerer l'echec
640
-							spip_log("Erreur fatale dans $inserer_copie table $table", "dump" . _LOG_ERREUR);
640
+							spip_log("Erreur fatale dans $inserer_copie table $table", "dump"._LOG_ERREUR);
641 641
 							$status['errors'][] = "Erreur fatale  lors de la copie de la table $table";
642 642
 							ecrire_fichier($status_file, serialize($status));
643 643
 
@@ -652,7 +652,7 @@  discard block
 block discarded – undo
652 652
 					if ($n == $status['tables_copiees'][$table]) {
653 653
 						break;
654 654
 					}
655
-					spip_log("recopie $table " . $status['tables_copiees'][$table], 'dump.' . _LOG_INFO_IMPORTANTE);
655
+					spip_log("recopie $table ".$status['tables_copiees'][$table], 'dump.'._LOG_INFO_IMPORTANTE);
656 656
 					if ($callback_progression) {
657 657
 						$callback_progression($status['tables_copiees'][$table], 0, $table);
658 658
 					}
@@ -663,43 +663,43 @@  discard block
 block discarded – undo
663 663
 				}
664 664
 				if ($drop_source) {
665 665
 					sql_drop_table($table, '', $serveur_source);
666
-					spip_log("drop $table sur serveur source '$serveur_source'", 'dump.' . _LOG_INFO_IMPORTANTE);
666
+					spip_log("drop $table sur serveur source '$serveur_source'", 'dump.'._LOG_INFO_IMPORTANTE);
667 667
 				}
668 668
 				$status['tables_copiees'][$table] = ($status['tables_copiees'][$table] ? -$status['tables_copiees'][$table] : "zero");
669 669
 				ecrire_fichier($status_file, serialize($status));
670
-				spip_log("tables_recopiees " . implode(',', array_keys($status['tables_copiees'])), 'dump.' . _LOG_INFO);
670
+				spip_log("tables_recopiees ".implode(',', array_keys($status['tables_copiees'])), 'dump.'._LOG_INFO);
671 671
 				if ($callback_progression) {
672 672
 					$callback_progression($status['tables_copiees'][$table], $status['tables_copiees'][$table], $table);
673 673
 				}
674 674
 			} else {
675 675
 				if ($status['tables_copiees'][$table] < 0) {
676
-					spip_log("Table $table deja copiee : " . $status['tables_copiees'][$table], "dump." . _LOG_INFO);
676
+					spip_log("Table $table deja copiee : ".$status['tables_copiees'][$table], "dump."._LOG_INFO);
677 677
 				}
678 678
 				if ($callback_progression) {
679 679
 					$callback_progression(0, $status['tables_copiees'][$table],
680
-						"$table" . ((is_numeric($status['tables_copiees'][$table]) and $status['tables_copiees'][$table] >= 0) ? "[Echec]" : ""));
680
+						"$table".((is_numeric($status['tables_copiees'][$table]) and $status['tables_copiees'][$table] >= 0) ? "[Echec]" : ""));
681 681
 				}
682 682
 			}
683 683
 		} else {
684 684
 			$status['errors'][] = "Impossible de lire la description de la table $table";
685 685
 			ecrire_fichier($status_file, serialize($status));
686
-			spip_log("Impossible de lire la description de la table $table", "dump." . _LOG_ERREUR);
686
+			spip_log("Impossible de lire la description de la table $table", "dump."._LOG_ERREUR);
687 687
 		}
688 688
 	}
689 689
 
690 690
 	// si le nombre de tables envoyees n'est pas egal au nombre de tables demandees
691 691
 	// abandonner
692 692
 	if (count($status['tables_copiees']) < count($tables)) {
693
-		spip_log("Nombre de tables copiees incorrect : " . count($status['tables_copiees']) . "/" . count($tables),
694
-			"dump." . _LOG_ERREUR);
695
-		$status['errors'][] = "Nombre de tables copiees incorrect : " . count($status['tables_copiees']) . "/" . count($tables);
693
+		spip_log("Nombre de tables copiees incorrect : ".count($status['tables_copiees'])."/".count($tables),
694
+			"dump."._LOG_ERREUR);
695
+		$status['errors'][] = "Nombre de tables copiees incorrect : ".count($status['tables_copiees'])."/".count($tables);
696 696
 		ecrire_fichier($status_file, serialize($status));
697 697
 	}
698 698
 
699 699
 	if ($detruire_copieur_si_besoin = charger_fonction('detruire_copieur_si_besoin', $racine_fonctions, true)) {
700 700
 		$detruire_copieur_si_besoin($serveur_dest);
701 701
 	} else {
702
-		spip_log("Fonction '{$racine_fonctions}_detruire_copieur_si_besoin' inconnue.", 'dump.' . _LOG_INFO_IMPORTANTE);
702
+		spip_log("Fonction '{$racine_fonctions}_detruire_copieur_si_besoin' inconnue.", 'dump.'._LOG_INFO_IMPORTANTE);
703 703
 	}
704 704
 
705 705
 	// OK, copie complete
@@ -723,8 +723,8 @@  discard block
 block discarded – undo
723 723
 	$r = sql_insertq_multi($table, $rows, $desc_dest, $serveur_dest);
724 724
 	$nb = sql_countsel($table, '', '', '', $serveur_dest);
725 725
 	if ($nb - $nb1 < count($rows)) {
726
-		spip_log("base_inserer_copie : " . ($nb - $nb1) . " insertions au lieu de " . count($rows) . ". On retente 1 par 1",
727
-			"dump" . _LOG_INFO_IMPORTANTE);
726
+		spip_log("base_inserer_copie : ".($nb - $nb1)." insertions au lieu de ".count($rows).". On retente 1 par 1",
727
+			"dump"._LOG_INFO_IMPORTANTE);
728 728
 		foreach ($rows as $row) {
729 729
 			// si l'enregistrement est deja en base, ca fera un echec ou un doublon
730 730
 			$r = sql_insertq($table, $row, $desc_dest, $serveur_dest);
@@ -733,8 +733,8 @@  discard block
 block discarded – undo
733 733
 		$r = 0;
734 734
 		$nb = sql_countsel($table, '', '', '', $serveur_dest);
735 735
 		if ($nb - $nb1 < count($rows)) {
736
-			spip_log("base_inserer_copie : " . ($nb - $nb1) . " insertions au lieu de " . count($rows) . " apres insertion 1 par 1",
737
-				"dump" . _LOG_ERREUR);
736
+			spip_log("base_inserer_copie : ".($nb - $nb1)." insertions au lieu de ".count($rows)." apres insertion 1 par 1",
737
+				"dump"._LOG_ERREUR);
738 738
 			$r = false;
739 739
 		}
740 740
 	}
Please login to merge, or discard this patch.
ecrire/inc/cookie.php 3 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -35,7 +35,7 @@
 block discarded – undo
35 35
  *     Chemin sur lequel le cookie sera disponible
36 36
  * @param string $domain
37 37
  *     Domaine à partir duquel le cookie est disponible
38
- * @param bool $secure
38
+ * @param string|boolean $secure
39 39
  *     cookie sécurisé ou non ?
40 40
  * @return bool
41 41
  *     true si le cookie a été posé, false sinon.
Please login to merge, or discard this patch.
Indentation   +66 added lines, -66 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 
@@ -43,37 +43,37 @@  discard block
 block discarded – undo
43 43
  *     true si le cookie a été posé, false sinon.
44 44
  **/
45 45
 function spip_setcookie($name = '', $value = '', $expire = 0, $path = 'AUTO', $domain = '', $secure = '') {
46
-	// liste des cookies en httponly (a passer en define si besoin)
47
-	$httponly = in_array($name, explode(' ', 'spip_session'));
48
-
49
-	$name = preg_replace('/^spip_/', $GLOBALS['cookie_prefix'] . '_', $name);
50
-	if ($path == 'AUTO') {
51
-		$path = defined('_COOKIE_PATH') ? _COOKIE_PATH : preg_replace(',^\w+://[^/]*,', '', url_de_base());
52
-	}
53
-	if (!$domain and defined('_COOKIE_DOMAIN')) {
54
-		$domain = _COOKIE_DOMAIN;
55
-	}
56
-
57
-	#spip_log("cookie('$name', '$value', '$expire', '$path', '$domain', '$secure', '$httponly'");
58
-
59
-	$a =
60
-		$httponly ?
61
-			@setcookie($name, $value, $expire, $path, $domain, $secure, $httponly)
62
-			: ($secure ?
63
-			@setcookie($name, $value, $expire, $path, $domain, $secure)
64
-			: ($domain ?
65
-				@setcookie($name, $value, $expire, $path, $domain)
66
-				: ($path ?
67
-					@setcookie($name, $value, $expire, $path)
68
-					: ($expire ?
69
-						@setcookie($name, $value, $expire)
70
-						:
71
-						@setcookie($name, $value)
72
-					))));
73
-
74
-	spip_cookie_envoye(true);
75
-
76
-	return $a;
46
+    // liste des cookies en httponly (a passer en define si besoin)
47
+    $httponly = in_array($name, explode(' ', 'spip_session'));
48
+
49
+    $name = preg_replace('/^spip_/', $GLOBALS['cookie_prefix'] . '_', $name);
50
+    if ($path == 'AUTO') {
51
+        $path = defined('_COOKIE_PATH') ? _COOKIE_PATH : preg_replace(',^\w+://[^/]*,', '', url_de_base());
52
+    }
53
+    if (!$domain and defined('_COOKIE_DOMAIN')) {
54
+        $domain = _COOKIE_DOMAIN;
55
+    }
56
+
57
+    #spip_log("cookie('$name', '$value', '$expire', '$path', '$domain', '$secure', '$httponly'");
58
+
59
+    $a =
60
+        $httponly ?
61
+            @setcookie($name, $value, $expire, $path, $domain, $secure, $httponly)
62
+            : ($secure ?
63
+            @setcookie($name, $value, $expire, $path, $domain, $secure)
64
+            : ($domain ?
65
+                @setcookie($name, $value, $expire, $path, $domain)
66
+                : ($path ?
67
+                    @setcookie($name, $value, $expire, $path)
68
+                    : ($expire ?
69
+                        @setcookie($name, $value, $expire)
70
+                        :
71
+                        @setcookie($name, $value)
72
+                    ))));
73
+
74
+    spip_cookie_envoye(true);
75
+
76
+    return $a;
77 77
 }
78 78
 
79 79
 /**
@@ -89,12 +89,12 @@  discard block
 block discarded – undo
89 89
  * @return bool
90 90
  **/
91 91
 function spip_cookie_envoye($set = '') {
92
-	static $envoye = false;
93
-	if ($set) {
94
-		$envoye = true;
95
-	}
92
+    static $envoye = false;
93
+    if ($set) {
94
+        $envoye = true;
95
+    }
96 96
 
97
-	return $envoye;
97
+    return $envoye;
98 98
 }
99 99
 
100 100
 /**
@@ -113,21 +113,21 @@  discard block
 block discarded – undo
113 113
  *     Préfixe des cookies de SPIP
114 114
  **/
115 115
 function recuperer_cookies_spip($cookie_prefix) {
116
-	$prefix_long = strlen($cookie_prefix);
117
-
118
-	foreach ($_COOKIE as $name => $value) {
119
-		if (substr($name, 0, 5) == 'spip_' && substr($name, 0, $prefix_long) != $cookie_prefix) {
120
-			unset($_COOKIE[$name]);
121
-			unset($GLOBALS[$name]);
122
-		}
123
-	}
124
-	foreach ($_COOKIE as $name => $value) {
125
-		if (substr($name, 0, $prefix_long) == $cookie_prefix) {
126
-			$spipname = preg_replace('/^' . $cookie_prefix . '_/', 'spip_', $name);
127
-			$_COOKIE[$spipname] = $value;
128
-			$GLOBALS[$spipname] = $value;
129
-		}
130
-	}
116
+    $prefix_long = strlen($cookie_prefix);
117
+
118
+    foreach ($_COOKIE as $name => $value) {
119
+        if (substr($name, 0, 5) == 'spip_' && substr($name, 0, $prefix_long) != $cookie_prefix) {
120
+            unset($_COOKIE[$name]);
121
+            unset($GLOBALS[$name]);
122
+        }
123
+    }
124
+    foreach ($_COOKIE as $name => $value) {
125
+        if (substr($name, 0, $prefix_long) == $cookie_prefix) {
126
+            $spipname = preg_replace('/^' . $cookie_prefix . '_/', 'spip_', $name);
127
+            $_COOKIE[$spipname] = $value;
128
+            $GLOBALS[$spipname] = $value;
129
+        }
130
+    }
131 131
 
132 132
 }
133 133
 
@@ -147,18 +147,18 @@  discard block
 block discarded – undo
147 147
  *
148 148
  **/
149 149
 function exec_test_ajax_dist() {
150
-	switch (_request('js')) {
151
-		// on est appele par <noscript>
152
-		case -1:
153
-			spip_setcookie('spip_accepte_ajax', -1);
154
-			include_spip('inc/headers');
155
-			redirige_par_entete(chemin_image('puce-orange-anim.gif'));
156
-			break;
157
-
158
-		// ou par ajax
159
-		case 1:
160
-		default:
161
-			spip_setcookie('spip_accepte_ajax', 1);
162
-			break;
163
-	}
150
+    switch (_request('js')) {
151
+        // on est appele par <noscript>
152
+        case -1:
153
+            spip_setcookie('spip_accepte_ajax', -1);
154
+            include_spip('inc/headers');
155
+            redirige_par_entete(chemin_image('puce-orange-anim.gif'));
156
+            break;
157
+
158
+        // ou par ajax
159
+        case 1:
160
+        default:
161
+            spip_setcookie('spip_accepte_ajax', 1);
162
+            break;
163
+    }
164 164
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -46,7 +46,7 @@  discard block
 block discarded – undo
46 46
 	// liste des cookies en httponly (a passer en define si besoin)
47 47
 	$httponly = in_array($name, explode(' ', 'spip_session'));
48 48
 
49
-	$name = preg_replace('/^spip_/', $GLOBALS['cookie_prefix'] . '_', $name);
49
+	$name = preg_replace('/^spip_/', $GLOBALS['cookie_prefix'].'_', $name);
50 50
 	if ($path == 'AUTO') {
51 51
 		$path = defined('_COOKIE_PATH') ? _COOKIE_PATH : preg_replace(',^\w+://[^/]*,', '', url_de_base());
52 52
 	}
@@ -123,7 +123,7 @@  discard block
 block discarded – undo
123 123
 	}
124 124
 	foreach ($_COOKIE as $name => $value) {
125 125
 		if (substr($name, 0, $prefix_long) == $cookie_prefix) {
126
-			$spipname = preg_replace('/^' . $cookie_prefix . '_/', 'spip_', $name);
126
+			$spipname = preg_replace('/^'.$cookie_prefix.'_/', 'spip_', $name);
127 127
 			$_COOKIE[$spipname] = $value;
128 128
 			$GLOBALS[$spipname] = $value;
129 129
 		}
Please login to merge, or discard this patch.
ecrire/inc/modifier.php 3 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -83,7 +83,7 @@
 block discarded – undo
83 83
  *     Couples champ/valeur à modifier
84 84
  * @param string $serveur
85 85
  *     Nom du connecteur à la base de données
86
- * @return bool|string
86
+ * @return string|false
87 87
  *     - false  : Aucune modification, aucun champ n'est à modifier
88 88
  *     - chaîne vide : Vide si tout s'est bien passé
89 89
  *     - chaîne : Texte d'un message d'erreur
Please login to merge, or discard this patch.
Spacing   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -113,7 +113,7 @@  discard block
 block discarded – undo
113 113
 
114 114
 	// Appels incomplets (sans $c)
115 115
 	if (!is_array($c)) {
116
-		spip_log('erreur appel objet_modifier_champs(' . $objet . '), manque $c');
116
+		spip_log('erreur appel objet_modifier_champs('.$objet.'), manque $c');
117 117
 
118 118
 		return _T('erreur_technique_enregistrement_impossible');
119 119
 	}
@@ -181,7 +181,7 @@  discard block
 block discarded – undo
181 181
 
182 182
 	// Verifier si les mises a jour sont pertinentes, datees, en conflit etc
183 183
 	include_spip('inc/editer');
184
-	if (!isset($options['data']) or is_null($options['data'])){
184
+	if (!isset($options['data']) or is_null($options['data'])) {
185 185
 		$options['data'] = &$_POST;
186 186
 	}
187 187
 	$conflits = controler_md5($champs, $options['data'], $objet, $id_objet, $serveur);
@@ -199,7 +199,7 @@  discard block
 block discarded – undo
199 199
 				$id_rubrique = 0;
200 200
 				if (isset($desc['field']['id_rubrique'])) {
201 201
 					$parent = ($objet == 'rubrique') ? 'id_parent' : 'id_rubrique';
202
-					$id_rubrique = sql_getfetsel($parent, $spip_table_objet, "$id_table_objet=" . intval($id_objet));
202
+					$id_rubrique = sql_getfetsel($parent, $spip_table_objet, "$id_table_objet=".intval($id_objet));
203 203
 				}
204 204
 				$instituer_langue_objet = charger_fonction('instituer_langue_objet', 'action');
205 205
 				$champs['lang'] = $instituer_langue_objet($objet, $id_objet, $id_rubrique, $changer_lang, $serveur);
@@ -220,10 +220,10 @@  discard block
 block discarded – undo
220 220
 		}
221 221
 
222 222
 		// allez on commit la modif
223
-		sql_updateq($spip_table_objet, $champs, "$id_table_objet=" . intval($id_objet), $serveur);
223
+		sql_updateq($spip_table_objet, $champs, "$id_table_objet=".intval($id_objet), $serveur);
224 224
 
225 225
 		// on verifie si elle est bien passee
226
-		$moof = sql_fetsel(array_keys($champs), $spip_table_objet, "$id_table_objet=" . intval($id_objet), array(), array(),
226
+		$moof = sql_fetsel(array_keys($champs), $spip_table_objet, "$id_table_objet=".intval($id_objet), array(), array(),
227 227
 			'', array(), $serveur);
228 228
 		// si difference entre les champs, reperer les champs mal enregistres
229 229
 		if ($moof != $champs) {
@@ -250,11 +250,11 @@  discard block
 block discarded – undo
250 250
 			// si un champ n'a pas ete correctement enregistre, loger et retourner une erreur
251 251
 			// c'est un cas exceptionnel
252 252
 			if (count($liste)) {
253
-				spip_log("Erreur enregistrement en base $objet/$id_objet champs :" . var_export($conflits, true),
254
-					'modifier.' . _LOG_CRITIQUE);
253
+				spip_log("Erreur enregistrement en base $objet/$id_objet champs :".var_export($conflits, true),
254
+					'modifier.'._LOG_CRITIQUE);
255 255
 
256 256
 				return _T('erreur_technique_enregistrement_champs',
257
-					array('champs' => "<i>'" . implode("'</i>,<i>'", $liste) . "'</i>"));
257
+					array('champs' => "<i>'".implode("'</i>,<i>'", $liste)."'</i>"));
258 258
 			}
259 259
 		}
260 260
 
@@ -291,8 +291,8 @@  discard block
 block discarded – undo
291 291
 	// message a affiner :-)
292 292
 	include_spip('inc/filtres_mini');
293 293
 	$qui = isset($GLOBALS['visiteur_session']['nom']) and $GLOBALS['visiteur_session']['nom'] ? $GLOBALS['visiteur_session']['nom'] : $GLOBALS['ip'];
294
-	journal(_L($qui . ' a &#233;dit&#233; l&#8217;' . $objet . ' ' . $id_objet . ' (' . join('+',
295
-			array_diff(array_keys($champs), array('date_modif'))) . ')'), array(
294
+	journal(_L($qui.' a &#233;dit&#233; l&#8217;'.$objet.' '.$id_objet.' ('.join('+',
295
+			array_diff(array_keys($champs), array('date_modif'))).')'), array(
296 296
 		'faire' => 'modifier',
297 297
 		'quoi' => $objet,
298 298
 		'id' => $id_objet
Please login to merge, or discard this patch.
Indentation   +231 added lines, -231 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 /**
@@ -39,28 +39,28 @@  discard block
 block discarded – undo
39 39
  *     Tableau des champs et valeurs collectées
40 40
  */
41 41
 function collecter_requests($white_list, $black_list = array(), $set = null, $tous = false) {
42
-	$c = $set;
43
-	if (!$c) {
44
-		$c = array();
45
-		foreach ($white_list as $champ) {
46
-			// on ne collecte que les champs reellement envoyes par defaut.
47
-			// le cas d'un envoi de valeur NULL peut du coup poser probleme.
48
-			$val = _request($champ);
49
-			if ($tous or $val !== null) {
50
-				$c[$champ] = $val;
51
-			}
52
-		}
53
-		// on ajoute toujours la lang en saisie possible
54
-		// meme si pas prevu au depart pour l'objet concerne
55
-		if ($l = _request('changer_lang')) {
56
-			$c['lang'] = $l;
57
-		}
58
-	}
59
-	foreach ($black_list as $champ) {
60
-		unset($c[$champ]);
61
-	}
62
-
63
-	return $c;
42
+    $c = $set;
43
+    if (!$c) {
44
+        $c = array();
45
+        foreach ($white_list as $champ) {
46
+            // on ne collecte que les champs reellement envoyes par defaut.
47
+            // le cas d'un envoi de valeur NULL peut du coup poser probleme.
48
+            $val = _request($champ);
49
+            if ($tous or $val !== null) {
50
+                $c[$champ] = $val;
51
+            }
52
+        }
53
+        // on ajoute toujours la lang en saisie possible
54
+        // meme si pas prevu au depart pour l'objet concerne
55
+        if ($l = _request('changer_lang')) {
56
+            $c['lang'] = $l;
57
+        }
58
+    }
59
+    foreach ($black_list as $champ) {
60
+        unset($c[$champ]);
61
+    }
62
+
63
+    return $c;
64 64
 }
65 65
 
66 66
 /**
@@ -97,209 +97,209 @@  discard block
 block discarded – undo
97 97
  *     - chaîne : Texte d'un message d'erreur
98 98
  */
99 99
 function objet_modifier_champs($objet, $id_objet, $options, $c = null, $serveur = '') {
100
-	if (!$id_objet = intval($id_objet)) {
101
-		spip_log('Erreur $id_objet non defini', 'warn');
102
-
103
-		return _T('erreur_technique_enregistrement_impossible');
104
-	}
105
-
106
-	include_spip('inc/filtres');
107
-
108
-	$table_objet = table_objet($objet, $serveur);
109
-	$spip_table_objet = table_objet_sql($objet, $serveur);
110
-	$id_table_objet = id_table_objet($objet, $serveur);
111
-	$trouver_table = charger_fonction('trouver_table', 'base');
112
-	$desc = $trouver_table($spip_table_objet, $serveur);
113
-
114
-	// Appels incomplets (sans $c)
115
-	if (!is_array($c)) {
116
-		spip_log('erreur appel objet_modifier_champs(' . $objet . '), manque $c');
117
-
118
-		return _T('erreur_technique_enregistrement_impossible');
119
-	}
120
-
121
-	// Securite : certaines variables ne sont jamais acceptees ici
122
-	// car elles ne relevent pas de autoriser(xxx, modifier) ;
123
-	// il faut passer par instituer_XX()
124
-	// TODO: faut-il passer ces variables interdites
125
-	// dans un fichier de description separe ?
126
-	unset($c['statut']);
127
-	unset($c['id_parent']);
128
-	unset($c['id_rubrique']);
129
-	unset($c['id_secteur']);
130
-
131
-	// Gerer les champs non vides
132
-	if (isset($options['nonvide']) and is_array($options['nonvide'])) {
133
-		foreach ($options['nonvide'] as $champ => $sinon) {
134
-			if (isset($c[$champ]) and $c[$champ] === '') {
135
-				$c[$champ] = $sinon;
136
-			}
137
-		}
138
-	}
139
-
140
-
141
-	// N'accepter que les champs qui existent
142
-	// TODO: ici aussi on peut valider les contenus
143
-	// en fonction du type
144
-	$champs = array();
145
-	foreach ($desc['field'] as $champ => $ignore) {
146
-		if (isset($c[$champ])) {
147
-			$champs[$champ] = $c[$champ];
148
-		}
149
-	}
150
-
151
-	// Nettoyer les valeurs
152
-	$champs = array_map('corriger_caracteres', $champs);
153
-
154
-	// Envoyer aux plugins
155
-	$champs = pipeline('pre_edition',
156
-		array(
157
-			'args' => array(
158
-				'table' => $spip_table_objet, // compatibilite
159
-				'table_objet' => $table_objet,
160
-				'spip_table_objet' => $spip_table_objet,
161
-				'type' => $objet,
162
-				'id_objet' => $id_objet,
163
-				'data' => isset($options['data']) ? $options['data'] : null,
164
-				'champs' => isset($options['champs']) ? $options['champs'] : array(), // [doc] c'est quoi ?
165
-				'serveur' => $serveur,
166
-				'action' => isset($options['action']) ? $options['action'] : 'modifier'
167
-			),
168
-			'data' => $champs
169
-		)
170
-	);
171
-
172
-	if (!$champs) {
173
-		return false;
174
-	}
175
-
176
-
177
-	// marquer le fait que l'objet est travaille par toto a telle date
178
-	if ($GLOBALS['meta']['articles_modif'] != 'non') {
179
-		include_spip('inc/drapeau_edition');
180
-		signale_edition($id_objet, $GLOBALS['visiteur_session'], $objet);
181
-	}
182
-
183
-	// Verifier si les mises a jour sont pertinentes, datees, en conflit etc
184
-	include_spip('inc/editer');
185
-	if (!isset($options['data']) or is_null($options['data'])){
186
-		$options['data'] = &$_POST;
187
-	}
188
-	$conflits = controler_md5($champs, $options['data'], $objet, $id_objet, $serveur);
189
-	// cas hypothetique : normalement inc/editer verifie en amont le conflit edition
190
-	// et gere l'interface
191
-	// ici on ne renvoie donc qu'un messsage d'erreur, au cas ou on y arrive quand meme
192
-	if ($conflits) {
193
-		return _T('titre_conflit_edition');
194
-	}
195
-
196
-	if ($champs) {
197
-		// cas particulier de la langue : passer par instituer_langue_objet
198
-		if (isset($champs['lang'])) {
199
-			if ($changer_lang = $champs['lang']) {
200
-				$id_rubrique = 0;
201
-				if (isset($desc['field']['id_rubrique'])) {
202
-					$parent = ($objet == 'rubrique') ? 'id_parent' : 'id_rubrique';
203
-					$id_rubrique = sql_getfetsel($parent, $spip_table_objet, "$id_table_objet=" . intval($id_objet));
204
-				}
205
-				$instituer_langue_objet = charger_fonction('instituer_langue_objet', 'action');
206
-				$champs['lang'] = $instituer_langue_objet($objet, $id_objet, $id_rubrique, $changer_lang, $serveur);
207
-			}
208
-			// on laisse 'lang' dans $champs,
209
-			// ca permet de passer dans le pipeline post_edition et de journaliser
210
-			// et ca ne gene pas qu'on refasse un sql_updateq dessus apres l'avoir
211
-			// deja pris en compte
212
-		}
213
-
214
-		// la modif peut avoir lieu
215
-
216
-		// faut-il ajouter date_modif ?
217
-		if (isset($options['date_modif']) and $options['date_modif']
218
-			and !isset($champs[$options['date_modif']])
219
-		) {
220
-			$champs[$options['date_modif']] = date('Y-m-d H:i:s');
221
-		}
222
-
223
-		// allez on commit la modif
224
-		sql_updateq($spip_table_objet, $champs, "$id_table_objet=" . intval($id_objet), $serveur);
225
-
226
-		// on verifie si elle est bien passee
227
-		$moof = sql_fetsel(array_keys($champs), $spip_table_objet, "$id_table_objet=" . intval($id_objet), array(), array(),
228
-			'', array(), $serveur);
229
-		// si difference entre les champs, reperer les champs mal enregistres
230
-		if ($moof != $champs) {
231
-			$liste = array();
232
-			foreach ($moof as $k => $v) {
233
-				if ($v !== $champs[$k]
234
-					// ne pas alerter si le champ est numerique est que les valeurs sont equivalentes
235
-					and (!is_numeric($v) or intval($v) != intval($champs[$k]))
236
-				) {
237
-					$liste[] = $k;
238
-					$conflits[$k]['post'] = $champs[$k];
239
-					$conflits[$k]['save'] = $v;
240
-
241
-					// cas specifique MySQL+emoji : si l'un est la
242
-					// conversion utf8_noplanes de l'autre alors c'est OK
243
-					if (defined('_MYSQL_NOPLANES') && _MYSQL_NOPLANES) {
244
-						include_spip('inc/charsets');
245
-						if ($v == utf8_noplanes($champs[$k])) {
246
-							array_pop($liste);
247
-						}
248
-					}
249
-				}
250
-			}
251
-			// si un champ n'a pas ete correctement enregistre, loger et retourner une erreur
252
-			// c'est un cas exceptionnel
253
-			if (count($liste)) {
254
-				spip_log("Erreur enregistrement en base $objet/$id_objet champs :" . var_export($conflits, true),
255
-					'modifier.' . _LOG_CRITIQUE);
256
-
257
-				return _T('erreur_technique_enregistrement_champs',
258
-					array('champs' => "<i>'" . implode("'</i>,<i>'", $liste) . "'</i>"));
259
-			}
260
-		}
261
-
262
-		// Invalider les caches
263
-		if (isset($options['invalideur']) and $options['invalideur']) {
264
-			include_spip('inc/invalideur');
265
-			if (is_array($options['invalideur'])) {
266
-				array_map('suivre_invalideur', $options['invalideur']);
267
-			} else {
268
-				suivre_invalideur($options['invalideur']);
269
-			}
270
-		}
271
-
272
-		// Notifications, gestion des revisions...
273
-		// en standard, appelle |nouvelle_revision ci-dessous
274
-		pipeline('post_edition',
275
-			array(
276
-				'args' => array(
277
-					'table' => $spip_table_objet,
278
-					'table_objet' => $table_objet,
279
-					'spip_table_objet' => $spip_table_objet,
280
-					'type' => $objet,
281
-					'id_objet' => $id_objet,
282
-					'champs' => isset($options['champs']) ? $options['champs'] : array(), // [doc] kesako ?
283
-					'serveur' => $serveur,
284
-					'action' => isset($options['action']) ? $options['action'] : 'modifier'
285
-				),
286
-				'data' => $champs
287
-			)
288
-		);
289
-	}
290
-
291
-	// journaliser l'affaire
292
-	// message a affiner :-)
293
-	include_spip('inc/filtres_mini');
294
-	$qui = isset($GLOBALS['visiteur_session']['nom']) and $GLOBALS['visiteur_session']['nom'] ? $GLOBALS['visiteur_session']['nom'] : $GLOBALS['ip'];
295
-	journal(_L($qui . ' a &#233;dit&#233; l&#8217;' . $objet . ' ' . $id_objet . ' (' . join('+',
296
-			array_diff(array_keys($champs), array('date_modif'))) . ')'), array(
297
-		'faire' => 'modifier',
298
-		'quoi' => $objet,
299
-		'id' => $id_objet
300
-	));
301
-
302
-	return '';
100
+    if (!$id_objet = intval($id_objet)) {
101
+        spip_log('Erreur $id_objet non defini', 'warn');
102
+
103
+        return _T('erreur_technique_enregistrement_impossible');
104
+    }
105
+
106
+    include_spip('inc/filtres');
107
+
108
+    $table_objet = table_objet($objet, $serveur);
109
+    $spip_table_objet = table_objet_sql($objet, $serveur);
110
+    $id_table_objet = id_table_objet($objet, $serveur);
111
+    $trouver_table = charger_fonction('trouver_table', 'base');
112
+    $desc = $trouver_table($spip_table_objet, $serveur);
113
+
114
+    // Appels incomplets (sans $c)
115
+    if (!is_array($c)) {
116
+        spip_log('erreur appel objet_modifier_champs(' . $objet . '), manque $c');
117
+
118
+        return _T('erreur_technique_enregistrement_impossible');
119
+    }
120
+
121
+    // Securite : certaines variables ne sont jamais acceptees ici
122
+    // car elles ne relevent pas de autoriser(xxx, modifier) ;
123
+    // il faut passer par instituer_XX()
124
+    // TODO: faut-il passer ces variables interdites
125
+    // dans un fichier de description separe ?
126
+    unset($c['statut']);
127
+    unset($c['id_parent']);
128
+    unset($c['id_rubrique']);
129
+    unset($c['id_secteur']);
130
+
131
+    // Gerer les champs non vides
132
+    if (isset($options['nonvide']) and is_array($options['nonvide'])) {
133
+        foreach ($options['nonvide'] as $champ => $sinon) {
134
+            if (isset($c[$champ]) and $c[$champ] === '') {
135
+                $c[$champ] = $sinon;
136
+            }
137
+        }
138
+    }
139
+
140
+
141
+    // N'accepter que les champs qui existent
142
+    // TODO: ici aussi on peut valider les contenus
143
+    // en fonction du type
144
+    $champs = array();
145
+    foreach ($desc['field'] as $champ => $ignore) {
146
+        if (isset($c[$champ])) {
147
+            $champs[$champ] = $c[$champ];
148
+        }
149
+    }
150
+
151
+    // Nettoyer les valeurs
152
+    $champs = array_map('corriger_caracteres', $champs);
153
+
154
+    // Envoyer aux plugins
155
+    $champs = pipeline('pre_edition',
156
+        array(
157
+            'args' => array(
158
+                'table' => $spip_table_objet, // compatibilite
159
+                'table_objet' => $table_objet,
160
+                'spip_table_objet' => $spip_table_objet,
161
+                'type' => $objet,
162
+                'id_objet' => $id_objet,
163
+                'data' => isset($options['data']) ? $options['data'] : null,
164
+                'champs' => isset($options['champs']) ? $options['champs'] : array(), // [doc] c'est quoi ?
165
+                'serveur' => $serveur,
166
+                'action' => isset($options['action']) ? $options['action'] : 'modifier'
167
+            ),
168
+            'data' => $champs
169
+        )
170
+    );
171
+
172
+    if (!$champs) {
173
+        return false;
174
+    }
175
+
176
+
177
+    // marquer le fait que l'objet est travaille par toto a telle date
178
+    if ($GLOBALS['meta']['articles_modif'] != 'non') {
179
+        include_spip('inc/drapeau_edition');
180
+        signale_edition($id_objet, $GLOBALS['visiteur_session'], $objet);
181
+    }
182
+
183
+    // Verifier si les mises a jour sont pertinentes, datees, en conflit etc
184
+    include_spip('inc/editer');
185
+    if (!isset($options['data']) or is_null($options['data'])){
186
+        $options['data'] = &$_POST;
187
+    }
188
+    $conflits = controler_md5($champs, $options['data'], $objet, $id_objet, $serveur);
189
+    // cas hypothetique : normalement inc/editer verifie en amont le conflit edition
190
+    // et gere l'interface
191
+    // ici on ne renvoie donc qu'un messsage d'erreur, au cas ou on y arrive quand meme
192
+    if ($conflits) {
193
+        return _T('titre_conflit_edition');
194
+    }
195
+
196
+    if ($champs) {
197
+        // cas particulier de la langue : passer par instituer_langue_objet
198
+        if (isset($champs['lang'])) {
199
+            if ($changer_lang = $champs['lang']) {
200
+                $id_rubrique = 0;
201
+                if (isset($desc['field']['id_rubrique'])) {
202
+                    $parent = ($objet == 'rubrique') ? 'id_parent' : 'id_rubrique';
203
+                    $id_rubrique = sql_getfetsel($parent, $spip_table_objet, "$id_table_objet=" . intval($id_objet));
204
+                }
205
+                $instituer_langue_objet = charger_fonction('instituer_langue_objet', 'action');
206
+                $champs['lang'] = $instituer_langue_objet($objet, $id_objet, $id_rubrique, $changer_lang, $serveur);
207
+            }
208
+            // on laisse 'lang' dans $champs,
209
+            // ca permet de passer dans le pipeline post_edition et de journaliser
210
+            // et ca ne gene pas qu'on refasse un sql_updateq dessus apres l'avoir
211
+            // deja pris en compte
212
+        }
213
+
214
+        // la modif peut avoir lieu
215
+
216
+        // faut-il ajouter date_modif ?
217
+        if (isset($options['date_modif']) and $options['date_modif']
218
+            and !isset($champs[$options['date_modif']])
219
+        ) {
220
+            $champs[$options['date_modif']] = date('Y-m-d H:i:s');
221
+        }
222
+
223
+        // allez on commit la modif
224
+        sql_updateq($spip_table_objet, $champs, "$id_table_objet=" . intval($id_objet), $serveur);
225
+
226
+        // on verifie si elle est bien passee
227
+        $moof = sql_fetsel(array_keys($champs), $spip_table_objet, "$id_table_objet=" . intval($id_objet), array(), array(),
228
+            '', array(), $serveur);
229
+        // si difference entre les champs, reperer les champs mal enregistres
230
+        if ($moof != $champs) {
231
+            $liste = array();
232
+            foreach ($moof as $k => $v) {
233
+                if ($v !== $champs[$k]
234
+                    // ne pas alerter si le champ est numerique est que les valeurs sont equivalentes
235
+                    and (!is_numeric($v) or intval($v) != intval($champs[$k]))
236
+                ) {
237
+                    $liste[] = $k;
238
+                    $conflits[$k]['post'] = $champs[$k];
239
+                    $conflits[$k]['save'] = $v;
240
+
241
+                    // cas specifique MySQL+emoji : si l'un est la
242
+                    // conversion utf8_noplanes de l'autre alors c'est OK
243
+                    if (defined('_MYSQL_NOPLANES') && _MYSQL_NOPLANES) {
244
+                        include_spip('inc/charsets');
245
+                        if ($v == utf8_noplanes($champs[$k])) {
246
+                            array_pop($liste);
247
+                        }
248
+                    }
249
+                }
250
+            }
251
+            // si un champ n'a pas ete correctement enregistre, loger et retourner une erreur
252
+            // c'est un cas exceptionnel
253
+            if (count($liste)) {
254
+                spip_log("Erreur enregistrement en base $objet/$id_objet champs :" . var_export($conflits, true),
255
+                    'modifier.' . _LOG_CRITIQUE);
256
+
257
+                return _T('erreur_technique_enregistrement_champs',
258
+                    array('champs' => "<i>'" . implode("'</i>,<i>'", $liste) . "'</i>"));
259
+            }
260
+        }
261
+
262
+        // Invalider les caches
263
+        if (isset($options['invalideur']) and $options['invalideur']) {
264
+            include_spip('inc/invalideur');
265
+            if (is_array($options['invalideur'])) {
266
+                array_map('suivre_invalideur', $options['invalideur']);
267
+            } else {
268
+                suivre_invalideur($options['invalideur']);
269
+            }
270
+        }
271
+
272
+        // Notifications, gestion des revisions...
273
+        // en standard, appelle |nouvelle_revision ci-dessous
274
+        pipeline('post_edition',
275
+            array(
276
+                'args' => array(
277
+                    'table' => $spip_table_objet,
278
+                    'table_objet' => $table_objet,
279
+                    'spip_table_objet' => $spip_table_objet,
280
+                    'type' => $objet,
281
+                    'id_objet' => $id_objet,
282
+                    'champs' => isset($options['champs']) ? $options['champs'] : array(), // [doc] kesako ?
283
+                    'serveur' => $serveur,
284
+                    'action' => isset($options['action']) ? $options['action'] : 'modifier'
285
+                ),
286
+                'data' => $champs
287
+            )
288
+        );
289
+    }
290
+
291
+    // journaliser l'affaire
292
+    // message a affiner :-)
293
+    include_spip('inc/filtres_mini');
294
+    $qui = isset($GLOBALS['visiteur_session']['nom']) and $GLOBALS['visiteur_session']['nom'] ? $GLOBALS['visiteur_session']['nom'] : $GLOBALS['ip'];
295
+    journal(_L($qui . ' a &#233;dit&#233; l&#8217;' . $objet . ' ' . $id_objet . ' (' . join('+',
296
+            array_diff(array_keys($champs), array('date_modif'))) . ')'), array(
297
+        'faire' => 'modifier',
298
+        'quoi' => $objet,
299
+        'id' => $id_objet
300
+    ));
301
+
302
+    return '';
303 303
 }
304 304
 
305 305
 /**
@@ -324,9 +324,9 @@  discard block
 block discarded – undo
324 324
  *     false sinon (erreur ou aucun champ modifié)
325 325
  */
326 326
 function modifier_contenu($type, $id, $options, $c = null, $serveur = '') {
327
-	$res = objet_modifier_champs($type, $id, $options, $c, $serveur);
327
+    $res = objet_modifier_champs($type, $id, $options, $c, $serveur);
328 328
 
329
-	return ($res === '' ? true : false);
329
+    return ($res === '' ? true : false);
330 330
 }
331 331
 
332 332
 /**
@@ -347,8 +347,8 @@  discard block
 block discarded – undo
347 347
  * @return mixed|string
348 348
  */
349 349
 function revision_objet($objet, $id_objet, $c = null) {
350
-	$objet = objet_type($objet); // securite
351
-	include_spip('action/editer_objet');
350
+    $objet = objet_type($objet); // securite
351
+    include_spip('action/editer_objet');
352 352
 
353
-	return objet_modifier($objet, $id_objet, $c);
353
+    return objet_modifier($objet, $id_objet, $c);
354 354
 }
Please login to merge, or discard this patch.
ecrire/inc/filtres_images_mini.php 2 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -122,7 +122,7 @@
 block discarded – undo
122 122
  * @param int $height_max
123 123
  *    Hauteur minimale de l'image à traiter (10000 par défaut)
124 124
  * @return
125
- *    Le tag html `<img src=... />` avec une class `filtre_inactif` ou pas
125
+ string    Le tag html `<img src=... />` avec une class `filtre_inactif` ou pas
126 126
  */
127 127
 function image_select($img, $width_min = 0, $height_min = 0, $width_max = 10000, $height_max = 1000) {
128 128
 	if (!$img) {
Please login to merge, or discard this patch.
Indentation   +261 added lines, -261 removed lines patch added patch discarded remove patch
@@ -18,7 +18,7 @@  discard block
 block discarded – undo
18 18
  */
19 19
 
20 20
 if (!defined('_ECRIRE_INC_VERSION')) {
21
-	return;
21
+    return;
22 22
 }
23 23
 include_spip('inc/filtres_images_lib_mini'); // par precaution
24 24
 
@@ -31,161 +31,161 @@  discard block
 block discarded – undo
31 31
  *    Le code hexadécimal de la couleur (sans le #) ou le code couleur textuel si non trouvé
32 32
  */
33 33
 function couleur_html_to_hex($couleur) {
34
-	$couleurs_html = array(
35
-		'aliceblue' => 'F0F8FF',
36
-		'antiquewhite' => 'FAEBD7',
37
-		'aqua' => '00FFFF',
38
-		'aquamarine' => '7FFFD4',
39
-		'azure' => 'F0FFFF',
40
-		'beige' => 'F5F5DC',
41
-		'bisque' => 'FFE4C4',
42
-		'black' => '000000',
43
-		'blanchedalmond' => 'FFEBCD',
44
-		'blue' => '0000FF',
45
-		'blueviolet' => '8A2BE2',
46
-		'brown' => 'A52A2A',
47
-		'burlywood' => 'DEB887',
48
-		'cadetblue' => '5F9EA0',
49
-		'chartreuse' => '7FFF00',
50
-		'chocolate' => 'D2691E',
51
-		'coral' => 'FF7F50',
52
-		'cornflowerblue' => '6495ED',
53
-		'cornsilk' => 'FFF8DC',
54
-		'crimson' => 'DC143C',
55
-		'cyan' => '00FFFF',
56
-		'darkblue' => '00008B',
57
-		'darkcyan' => '008B8B',
58
-		'darkgoldenrod' => 'B8860B',
59
-		'darkgray' => 'A9A9A9',
60
-		'darkgreen' => '006400',
61
-		'darkgrey' => 'A9A9A9',
62
-		'darkkhaki' => 'BDB76B',
63
-		'darkmagenta' => '8B008B',
64
-		'darkolivegreen' => '556B2F',
65
-		'darkorange' => 'FF8C00',
66
-		'darkorchid' => '9932CC',
67
-		'darkred' => '8B0000',
68
-		'darksalmon' => 'E9967A',
69
-		'darkseagreen' => '8FBC8F',
70
-		'darkslateblue' => '483D8B',
71
-		'darkslategray' => '2F4F4F',
72
-		'darkslategrey' => '2F4F4F',
73
-		'darkturquoise' => '00CED1',
74
-		'darkviolet' => '9400D3',
75
-		'deeppink' => 'FF1493',
76
-		'deepskyblue' => '00BFFF',
77
-		'dimgray' => '696969',
78
-		'dimgrey' => '696969',
79
-		'dodgerblue' => '1E90FF',
80
-		'firebrick' => 'B22222',
81
-		'floralwhite' => 'FFFAF0',
82
-		'forestgreen' => '228B22',
83
-		'fuchsia' => 'FF00FF',
84
-		'gainsboro' => 'DCDCDC',
85
-		'ghostwhite' => 'F8F8FF',
86
-		'gold' => 'FFD700',
87
-		'goldenrod' => 'DAA520',
88
-		'gray' => '808080',
89
-		'green' => '008000',
90
-		'greenyellow' => 'ADFF2F',
91
-		'grey' => '808080',
92
-		'honeydew' => 'F0FFF0',
93
-		'hotpink' => 'FF69B4',
94
-		'indianred' => 'CD5C5C',
95
-		'indigo' => '4B0082',
96
-		'ivory' => 'FFFFF0',
97
-		'khaki' => 'F0E68C',
98
-		'lavender' => 'E6E6FA',
99
-		'lavenderblush' => 'FFF0F5',
100
-		'lawngreen' => '7CFC00',
101
-		'lemonchiffon' => 'FFFACD',
102
-		'lightblue' => 'ADD8E6',
103
-		'lightcoral' => 'F08080',
104
-		'lightcyan' => 'E0FFFF',
105
-		'lightgoldenrodyellow' => 'FAFAD2',
106
-		'lightgray' => 'D3D3D3',
107
-		'lightgreen' => '90EE90',
108
-		'lightgrey' => 'D3D3D3',
109
-		'lightpink' => 'FFB6C1',
110
-		'lightsalmon' => 'FFA07A',
111
-		'lightseagreen' => '20B2AA',
112
-		'lightskyblue' => '87CEFA',
113
-		'lightslategray' => '778899',
114
-		'lightslategrey' => '778899',
115
-		'lightsteelblue' => 'B0C4DE',
116
-		'lightyellow' => 'FFFFE0',
117
-		'lime' => '00FF00',
118
-		'limegreen' => '32CD32',
119
-		'linen' => 'FAF0E6',
120
-		'magenta' => 'FF00FF',
121
-		'maroon' => '800000',
122
-		'mediumaquamarine' => '66CDAA',
123
-		'mediumblue' => '0000CD',
124
-		'mediumorchid' => 'BA55D3',
125
-		'mediumpurple' => '9370DB',
126
-		'mediumseagreen' => '3CB371',
127
-		'mediumslateblue' => '7B68EE',
128
-		'mediumspringgreen' => '00FA9A',
129
-		'mediumturquoise' => '48D1CC',
130
-		'mediumvioletred' => 'C71585',
131
-		'midnightblue' => '191970',
132
-		'mintcream' => 'F5FFFA',
133
-		'mistyrose' => 'FFE4E1',
134
-		'moccasin' => 'FFE4B5',
135
-		'navajowhite' => 'FFDEAD',
136
-		'navy' => '000080',
137
-		'oldlace' => 'FDF5E6',
138
-		'olive' => '808000',
139
-		'olivedrab' => '6B8E23',
140
-		'orange' => 'FFA500',
141
-		'orangered' => 'FF4500',
142
-		'orchid' => 'DA70D6',
143
-		'palegoldenrod' => 'EEE8AA',
144
-		'palegreen' => '98FB98',
145
-		'paleturquoise' => 'AFEEEE',
146
-		'palevioletred' => 'DB7093',
147
-		'papayawhip' => 'FFEFD5',
148
-		'peachpuff' => 'FFDAB9',
149
-		'peru' => 'CD853F',
150
-		'pink' => 'FFC0CB',
151
-		'plum' => 'DDA0DD',
152
-		'powderblue' => 'B0E0E6',
153
-		'purple' => '800080',
154
-		'rebeccapurple' => '663399',
155
-		'red' => 'FF0000',
156
-		'rosybrown' => 'BC8F8F',
157
-		'royalblue' => '4169E1',
158
-		'saddlebrown' => '8B4513',
159
-		'salmon' => 'FA8072',
160
-		'sandybrown' => 'F4A460',
161
-		'seagreen' => '2E8B57',
162
-		'seashell' => 'FFF5EE',
163
-		'sienna' => 'A0522D',
164
-		'silver' => 'C0C0C0',
165
-		'skyblue' => '87CEEB',
166
-		'slateblue' => '6A5ACD',
167
-		'slategray' => '708090',
168
-		'slategrey' => '708090',
169
-		'snow' => 'FFFAFA',
170
-		'springgreen' => '00FF7F',
171
-		'steelblue' => '4682B4',
172
-		'tan' => 'D2B48C',
173
-		'teal' => '008080',
174
-		'thistle' => 'D8BFD8',
175
-		'tomato' => 'FF6347',
176
-		'turquoise' => '40E0D0',
177
-		'violet' => 'EE82EE',
178
-		'wheat' => 'F5DEB3',
179
-		'white' => 'FFFFFF',
180
-		'whitesmoke' => 'F5F5F5',
181
-		'yellow' => 'FFFF00',
182
-		'yellowgreen' => '9ACD32',
183
-	);
184
-	if (isset($couleurs_html[$lc = strtolower($couleur)])) {
185
-		return $couleurs_html[$lc];
186
-	}
187
-
188
-	return $couleur;
34
+    $couleurs_html = array(
35
+        'aliceblue' => 'F0F8FF',
36
+        'antiquewhite' => 'FAEBD7',
37
+        'aqua' => '00FFFF',
38
+        'aquamarine' => '7FFFD4',
39
+        'azure' => 'F0FFFF',
40
+        'beige' => 'F5F5DC',
41
+        'bisque' => 'FFE4C4',
42
+        'black' => '000000',
43
+        'blanchedalmond' => 'FFEBCD',
44
+        'blue' => '0000FF',
45
+        'blueviolet' => '8A2BE2',
46
+        'brown' => 'A52A2A',
47
+        'burlywood' => 'DEB887',
48
+        'cadetblue' => '5F9EA0',
49
+        'chartreuse' => '7FFF00',
50
+        'chocolate' => 'D2691E',
51
+        'coral' => 'FF7F50',
52
+        'cornflowerblue' => '6495ED',
53
+        'cornsilk' => 'FFF8DC',
54
+        'crimson' => 'DC143C',
55
+        'cyan' => '00FFFF',
56
+        'darkblue' => '00008B',
57
+        'darkcyan' => '008B8B',
58
+        'darkgoldenrod' => 'B8860B',
59
+        'darkgray' => 'A9A9A9',
60
+        'darkgreen' => '006400',
61
+        'darkgrey' => 'A9A9A9',
62
+        'darkkhaki' => 'BDB76B',
63
+        'darkmagenta' => '8B008B',
64
+        'darkolivegreen' => '556B2F',
65
+        'darkorange' => 'FF8C00',
66
+        'darkorchid' => '9932CC',
67
+        'darkred' => '8B0000',
68
+        'darksalmon' => 'E9967A',
69
+        'darkseagreen' => '8FBC8F',
70
+        'darkslateblue' => '483D8B',
71
+        'darkslategray' => '2F4F4F',
72
+        'darkslategrey' => '2F4F4F',
73
+        'darkturquoise' => '00CED1',
74
+        'darkviolet' => '9400D3',
75
+        'deeppink' => 'FF1493',
76
+        'deepskyblue' => '00BFFF',
77
+        'dimgray' => '696969',
78
+        'dimgrey' => '696969',
79
+        'dodgerblue' => '1E90FF',
80
+        'firebrick' => 'B22222',
81
+        'floralwhite' => 'FFFAF0',
82
+        'forestgreen' => '228B22',
83
+        'fuchsia' => 'FF00FF',
84
+        'gainsboro' => 'DCDCDC',
85
+        'ghostwhite' => 'F8F8FF',
86
+        'gold' => 'FFD700',
87
+        'goldenrod' => 'DAA520',
88
+        'gray' => '808080',
89
+        'green' => '008000',
90
+        'greenyellow' => 'ADFF2F',
91
+        'grey' => '808080',
92
+        'honeydew' => 'F0FFF0',
93
+        'hotpink' => 'FF69B4',
94
+        'indianred' => 'CD5C5C',
95
+        'indigo' => '4B0082',
96
+        'ivory' => 'FFFFF0',
97
+        'khaki' => 'F0E68C',
98
+        'lavender' => 'E6E6FA',
99
+        'lavenderblush' => 'FFF0F5',
100
+        'lawngreen' => '7CFC00',
101
+        'lemonchiffon' => 'FFFACD',
102
+        'lightblue' => 'ADD8E6',
103
+        'lightcoral' => 'F08080',
104
+        'lightcyan' => 'E0FFFF',
105
+        'lightgoldenrodyellow' => 'FAFAD2',
106
+        'lightgray' => 'D3D3D3',
107
+        'lightgreen' => '90EE90',
108
+        'lightgrey' => 'D3D3D3',
109
+        'lightpink' => 'FFB6C1',
110
+        'lightsalmon' => 'FFA07A',
111
+        'lightseagreen' => '20B2AA',
112
+        'lightskyblue' => '87CEFA',
113
+        'lightslategray' => '778899',
114
+        'lightslategrey' => '778899',
115
+        'lightsteelblue' => 'B0C4DE',
116
+        'lightyellow' => 'FFFFE0',
117
+        'lime' => '00FF00',
118
+        'limegreen' => '32CD32',
119
+        'linen' => 'FAF0E6',
120
+        'magenta' => 'FF00FF',
121
+        'maroon' => '800000',
122
+        'mediumaquamarine' => '66CDAA',
123
+        'mediumblue' => '0000CD',
124
+        'mediumorchid' => 'BA55D3',
125
+        'mediumpurple' => '9370DB',
126
+        'mediumseagreen' => '3CB371',
127
+        'mediumslateblue' => '7B68EE',
128
+        'mediumspringgreen' => '00FA9A',
129
+        'mediumturquoise' => '48D1CC',
130
+        'mediumvioletred' => 'C71585',
131
+        'midnightblue' => '191970',
132
+        'mintcream' => 'F5FFFA',
133
+        'mistyrose' => 'FFE4E1',
134
+        'moccasin' => 'FFE4B5',
135
+        'navajowhite' => 'FFDEAD',
136
+        'navy' => '000080',
137
+        'oldlace' => 'FDF5E6',
138
+        'olive' => '808000',
139
+        'olivedrab' => '6B8E23',
140
+        'orange' => 'FFA500',
141
+        'orangered' => 'FF4500',
142
+        'orchid' => 'DA70D6',
143
+        'palegoldenrod' => 'EEE8AA',
144
+        'palegreen' => '98FB98',
145
+        'paleturquoise' => 'AFEEEE',
146
+        'palevioletred' => 'DB7093',
147
+        'papayawhip' => 'FFEFD5',
148
+        'peachpuff' => 'FFDAB9',
149
+        'peru' => 'CD853F',
150
+        'pink' => 'FFC0CB',
151
+        'plum' => 'DDA0DD',
152
+        'powderblue' => 'B0E0E6',
153
+        'purple' => '800080',
154
+        'rebeccapurple' => '663399',
155
+        'red' => 'FF0000',
156
+        'rosybrown' => 'BC8F8F',
157
+        'royalblue' => '4169E1',
158
+        'saddlebrown' => '8B4513',
159
+        'salmon' => 'FA8072',
160
+        'sandybrown' => 'F4A460',
161
+        'seagreen' => '2E8B57',
162
+        'seashell' => 'FFF5EE',
163
+        'sienna' => 'A0522D',
164
+        'silver' => 'C0C0C0',
165
+        'skyblue' => '87CEEB',
166
+        'slateblue' => '6A5ACD',
167
+        'slategray' => '708090',
168
+        'slategrey' => '708090',
169
+        'snow' => 'FFFAFA',
170
+        'springgreen' => '00FF7F',
171
+        'steelblue' => '4682B4',
172
+        'tan' => 'D2B48C',
173
+        'teal' => '008080',
174
+        'thistle' => 'D8BFD8',
175
+        'tomato' => 'FF6347',
176
+        'turquoise' => '40E0D0',
177
+        'violet' => 'EE82EE',
178
+        'wheat' => 'F5DEB3',
179
+        'white' => 'FFFFFF',
180
+        'whitesmoke' => 'F5F5F5',
181
+        'yellow' => 'FFFF00',
182
+        'yellowgreen' => '9ACD32',
183
+    );
184
+    if (isset($couleurs_html[$lc = strtolower($couleur)])) {
185
+        return $couleurs_html[$lc];
186
+    }
187
+
188
+    return $couleur;
189 189
 }
190 190
 
191 191
 /**
@@ -201,15 +201,15 @@  discard block
 block discarded – undo
201 201
  *    Code hexadécimal de la couleur plus foncée
202 202
  */
203 203
 function couleur_foncer($couleur, $coeff = 0.5) {
204
-	$couleurs = _couleur_hex_to_dec($couleur);
204
+    $couleurs = _couleur_hex_to_dec($couleur);
205 205
 
206
-	$red = $couleurs['red'] - round(($couleurs['red']) * $coeff);
207
-	$green = $couleurs['green'] - round(($couleurs['green']) * $coeff);
208
-	$blue = $couleurs['blue'] - round(($couleurs['blue']) * $coeff);
206
+    $red = $couleurs['red'] - round(($couleurs['red']) * $coeff);
207
+    $green = $couleurs['green'] - round(($couleurs['green']) * $coeff);
208
+    $blue = $couleurs['blue'] - round(($couleurs['blue']) * $coeff);
209 209
 
210
-	$couleur = _couleur_dec_to_hex($red, $green, $blue);
210
+    $couleur = _couleur_dec_to_hex($red, $green, $blue);
211 211
 
212
-	return $couleur;
212
+    return $couleur;
213 213
 }
214 214
 
215 215
 /**
@@ -225,15 +225,15 @@  discard block
 block discarded – undo
225 225
  *    Code hexadécimal de la couleur éclaircie
226 226
  */
227 227
 function couleur_eclaircir($couleur, $coeff = 0.5) {
228
-	$couleurs = _couleur_hex_to_dec($couleur);
228
+    $couleurs = _couleur_hex_to_dec($couleur);
229 229
 
230
-	$red = $couleurs['red'] + round((255 - $couleurs['red']) * $coeff);
231
-	$green = $couleurs['green'] + round((255 - $couleurs['green']) * $coeff);
232
-	$blue = $couleurs['blue'] + round((255 - $couleurs['blue']) * $coeff);
230
+    $red = $couleurs['red'] + round((255 - $couleurs['red']) * $coeff);
231
+    $green = $couleurs['green'] + round((255 - $couleurs['green']) * $coeff);
232
+    $blue = $couleurs['blue'] + round((255 - $couleurs['blue']) * $coeff);
233 233
 
234
-	$couleur = _couleur_dec_to_hex($red, $green, $blue);
234
+    $couleur = _couleur_dec_to_hex($red, $green, $blue);
235 235
 
236
-	return $couleur;
236
+    return $couleur;
237 237
 }
238 238
 
239 239
 /**
@@ -256,28 +256,28 @@  discard block
 block discarded – undo
256 256
  *    Le tag html `<img src=... />` avec une class `filtre_inactif` ou pas
257 257
  */
258 258
 function image_select($img, $width_min = 0, $height_min = 0, $width_max = 10000, $height_max = 1000) {
259
-	if (!$img) {
260
-		return $img;
261
-	}
262
-	list($h, $l) = taille_image($img);
263
-	$select = true;
264
-	if ($l < $width_min or $l > $width_max or $h < $height_min or $h > $height_max) {
265
-		$select = false;
266
-	}
267
-
268
-	$class = extraire_attribut($img, 'class');
269
-	$p = strpos($class, 'filtre_inactif');
270
-	if (($select == false) and ($p === false)) {
271
-		$class .= ' filtre_inactif';
272
-		$img = inserer_attribut($img, 'class', $class);
273
-	}
274
-	if (($select == true) and ($p !== false)) {
275
-		// no_image_filtrer : historique, a virer
276
-		$class = preg_replace(',\s*(filtre_inactif|no_image_filtrer),', '', $class);
277
-		$img = inserer_attribut($img, 'class', $class);
278
-	}
279
-
280
-	return $img;
259
+    if (!$img) {
260
+        return $img;
261
+    }
262
+    list($h, $l) = taille_image($img);
263
+    $select = true;
264
+    if ($l < $width_min or $l > $width_max or $h < $height_min or $h > $height_max) {
265
+        $select = false;
266
+    }
267
+
268
+    $class = extraire_attribut($img, 'class');
269
+    $p = strpos($class, 'filtre_inactif');
270
+    if (($select == false) and ($p === false)) {
271
+        $class .= ' filtre_inactif';
272
+        $img = inserer_attribut($img, 'class', $class);
273
+    }
274
+    if (($select == true) and ($p !== false)) {
275
+        // no_image_filtrer : historique, a virer
276
+        $class = preg_replace(',\s*(filtre_inactif|no_image_filtrer),', '', $class);
277
+        $img = inserer_attribut($img, 'class', $class);
278
+    }
279
+
280
+    return $img;
281 281
 }
282 282
 
283 283
 /**
@@ -325,38 +325,38 @@  discard block
 block discarded – undo
325 325
  *     Code HTML de l'image ou du texte.
326 326
  **/
327 327
 function image_passe_partout(
328
-	$img,
329
-	$taille_x = -1,
330
-	$taille_y = -1,
331
-	$force = false,
332
-	$cherche_image = false,
333
-	$process = 'AUTO'
328
+    $img,
329
+    $taille_x = -1,
330
+    $taille_y = -1,
331
+    $force = false,
332
+    $cherche_image = false,
333
+    $process = 'AUTO'
334 334
 ) {
335
-	if (!$img) {
336
-		return '';
337
-	}
338
-	list($hauteur, $largeur) = taille_image($img);
339
-	if ($taille_x == -1) {
340
-		$taille_x = isset($GLOBALS['meta']['taille_preview']) ? $GLOBALS['meta']['taille_preview'] : 150;
341
-	}
342
-	if ($taille_y == -1) {
343
-		$taille_y = $taille_x;
344
-	}
345
-
346
-	if ($taille_x == 0 and $taille_y > 0) {
347
-		$taille_x = 1;
348
-	} # {0,300} -> c'est 300 qui compte
349
-	elseif ($taille_x > 0 and $taille_y == 0) {
350
-		$taille_y = 1;
351
-	} # {300,0} -> c'est 300 qui compte
352
-	elseif ($taille_x == 0 and $taille_y == 0) {
353
-		return '';
354
-	}
355
-
356
-	list($destWidth, $destHeight, $ratio) = ratio_passe_partout($largeur, $hauteur, $taille_x, $taille_y);
357
-	$fonction = array('image_passe_partout', func_get_args());
358
-
359
-	return process_image_reduire($fonction, $img, $destWidth, $destHeight, $force, $process);
335
+    if (!$img) {
336
+        return '';
337
+    }
338
+    list($hauteur, $largeur) = taille_image($img);
339
+    if ($taille_x == -1) {
340
+        $taille_x = isset($GLOBALS['meta']['taille_preview']) ? $GLOBALS['meta']['taille_preview'] : 150;
341
+    }
342
+    if ($taille_y == -1) {
343
+        $taille_y = $taille_x;
344
+    }
345
+
346
+    if ($taille_x == 0 and $taille_y > 0) {
347
+        $taille_x = 1;
348
+    } # {0,300} -> c'est 300 qui compte
349
+    elseif ($taille_x > 0 and $taille_y == 0) {
350
+        $taille_y = 1;
351
+    } # {300,0} -> c'est 300 qui compte
352
+    elseif ($taille_x == 0 and $taille_y == 0) {
353
+        return '';
354
+    }
355
+
356
+    list($destWidth, $destHeight, $ratio) = ratio_passe_partout($largeur, $hauteur, $taille_x, $taille_y);
357
+    $fonction = array('image_passe_partout', func_get_args());
358
+
359
+    return process_image_reduire($fonction, $img, $destWidth, $destHeight, $force, $process);
360 360
 }
361 361
 
362 362
 /**
@@ -399,28 +399,28 @@  discard block
 block discarded – undo
399 399
  *     Code HTML de l'image ou du texte.
400 400
  **/
401 401
 function image_reduire($img, $taille = -1, $taille_y = -1, $force = false, $cherche_image = false, $process = 'AUTO') {
402
-	// Determiner la taille x,y maxi
403
-	// prendre le reglage de previsu par defaut
404
-	if ($taille == -1) {
405
-		$taille = (isset($GLOBALS['meta']['taille_preview']) and intval($GLOBALS['meta']['taille_preview'])) ? intval($GLOBALS['meta']['taille_preview']) : 150;
406
-	}
407
-	if ($taille_y == -1) {
408
-		$taille_y = $taille;
409
-	}
410
-
411
-	if ($taille == 0 and $taille_y > 0) {
412
-		$taille = 10000;
413
-	} # {0,300} -> c'est 300 qui compte
414
-	elseif ($taille > 0 and $taille_y == 0) {
415
-		$taille_y = 10000;
416
-	} # {300,0} -> c'est 300 qui compte
417
-	elseif ($taille == 0 and $taille_y == 0) {
418
-		return '';
419
-	}
420
-
421
-	$fonction = array('image_reduire', func_get_args());
422
-
423
-	return process_image_reduire($fonction, $img, $taille, $taille_y, $force, $process);
402
+    // Determiner la taille x,y maxi
403
+    // prendre le reglage de previsu par defaut
404
+    if ($taille == -1) {
405
+        $taille = (isset($GLOBALS['meta']['taille_preview']) and intval($GLOBALS['meta']['taille_preview'])) ? intval($GLOBALS['meta']['taille_preview']) : 150;
406
+    }
407
+    if ($taille_y == -1) {
408
+        $taille_y = $taille;
409
+    }
410
+
411
+    if ($taille == 0 and $taille_y > 0) {
412
+        $taille = 10000;
413
+    } # {0,300} -> c'est 300 qui compte
414
+    elseif ($taille > 0 and $taille_y == 0) {
415
+        $taille_y = 10000;
416
+    } # {300,0} -> c'est 300 qui compte
417
+    elseif ($taille == 0 and $taille_y == 0) {
418
+        return '';
419
+    }
420
+
421
+    $fonction = array('image_reduire', func_get_args());
422
+
423
+    return process_image_reduire($fonction, $img, $taille, $taille_y, $force, $process);
424 424
 }
425 425
 
426 426
 
@@ -439,20 +439,20 @@  discard block
 block discarded – undo
439 439
  *     Code HTML de l'image ou du texte.
440 440
  **/
441 441
 function image_reduire_par($img, $val = 1, $force = false) {
442
-	list($hauteur, $largeur) = taille_image($img);
442
+    list($hauteur, $largeur) = taille_image($img);
443 443
 
444
-	$l = round($largeur / $val);
445
-	$h = round($hauteur / $val);
444
+    $l = round($largeur / $val);
445
+    $h = round($hauteur / $val);
446 446
 
447
-	if ($l > $h) {
448
-		$h = 0;
449
-	} else {
450
-		$l = 0;
451
-	}
447
+    if ($l > $h) {
448
+        $h = 0;
449
+    } else {
450
+        $l = 0;
451
+    }
452 452
 
453
-	$img = image_reduire($img, $l, $h, $force);
453
+    $img = image_reduire($img, $l, $h, $force);
454 454
 
455
-	return $img;
455
+    return $img;
456 456
 }
457 457
 
458 458
 /**
@@ -473,10 +473,10 @@  discard block
 block discarded – undo
473 473
  *      Couleur en écriture hexadécimale.
474 474
 **/
475 475
 function filtre_couleur_saturation_dist($couleur, $val) {
476
-	if (function_exists('couleur_saturation')) {
477
-		return couleur_saturation($couleur, $val);
478
-	}
479
-	return $couleur;
476
+    if (function_exists('couleur_saturation')) {
477
+        return couleur_saturation($couleur, $val);
478
+    }
479
+    return $couleur;
480 480
 }
481 481
 
482 482
 /**
@@ -497,8 +497,8 @@  discard block
 block discarded – undo
497 497
  *      Couleur en écriture hexadécimale.
498 498
 **/
499 499
 function filtre_couleur_luminance_dist($couleur, $val) {
500
-	if (function_exists('couleur_luminance')) {
501
-		return couleur_luminance($couleur, $val);
502
-	}
503
-	return $couleur;
500
+    if (function_exists('couleur_luminance')) {
501
+        return couleur_luminance($couleur, $val);
502
+    }
503
+    return $couleur;
504 504
 }
Please login to merge, or discard this patch.
ecrire/inc/flock.php 4 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -644,7 +644,7 @@
 block discarded – undo
644 644
  *
645 645
  * @param string $dir
646 646
  *     Répertoire à parcourir
647
- * @param int|string $pattern
647
+ * @param integer $pattern
648 648
  *     Expression régulière pour trouver des fichiers, tel que `[.]lock$`
649 649
  * @param int $maxfiles
650 650
  *     Nombre de fichiers maximums retournés
Please login to merge, or discard this patch.
Indentation   +394 added lines, -394 removed lines patch added patch discarded remove patch
@@ -17,12 +17,12 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 if (!defined('_TEST_FILE_EXISTS')) {
24
-	/** Permettre d'éviter des tests file_exists sur certains hébergeurs */
25
-	define('_TEST_FILE_EXISTS', preg_match(',(online|free)[.]fr$,', isset($_ENV["HTTP_HOST"]) ? $_ENV["HTTP_HOST"] : ""));
24
+    /** Permettre d'éviter des tests file_exists sur certains hébergeurs */
25
+    define('_TEST_FILE_EXISTS', preg_match(',(online|free)[.]fr$,', isset($_ENV["HTTP_HOST"]) ? $_ENV["HTTP_HOST"] : ""));
26 26
 }
27 27
 
28 28
 #define('_SPIP_LOCK_MODE',0); // ne pas utiliser de lock (deconseille)
@@ -30,7 +30,7 @@  discard block
 block discarded – undo
30 30
 #define('_SPIP_LOCK_MODE',2); // utiliser le nfslock de spip
31 31
 
32 32
 if (_SPIP_LOCK_MODE == 2) {
33
-	include_spip('inc/nfslock');
33
+    include_spip('inc/nfslock');
34 34
 }
35 35
 
36 36
 $GLOBALS['liste_verrous'] = array();
@@ -53,24 +53,24 @@  discard block
 block discarded – undo
53 53
  *     Ressource sur le fichier ouvert, sinon false.
54 54
  **/
55 55
 function spip_fopen_lock($fichier, $mode, $verrou) {
56
-	if (_SPIP_LOCK_MODE == 1) {
57
-		if ($fl = @fopen($fichier, $mode)) {
58
-			// verrou
59
-			@flock($fl, $verrou);
60
-		}
61
-
62
-		return $fl;
63
-	} elseif (_SPIP_LOCK_MODE == 2) {
64
-		if (($verrou = spip_nfslock($fichier)) && ($fl = @fopen($fichier, $mode))) {
65
-			$GLOBALS['liste_verrous'][$fl] = array($fichier, $verrou);
66
-
67
-			return $fl;
68
-		} else {
69
-			return false;
70
-		}
71
-	}
72
-
73
-	return @fopen($fichier, $mode);
56
+    if (_SPIP_LOCK_MODE == 1) {
57
+        if ($fl = @fopen($fichier, $mode)) {
58
+            // verrou
59
+            @flock($fl, $verrou);
60
+        }
61
+
62
+        return $fl;
63
+    } elseif (_SPIP_LOCK_MODE == 2) {
64
+        if (($verrou = spip_nfslock($fichier)) && ($fl = @fopen($fichier, $mode))) {
65
+            $GLOBALS['liste_verrous'][$fl] = array($fichier, $verrou);
66
+
67
+            return $fl;
68
+        } else {
69
+            return false;
70
+        }
71
+    }
72
+
73
+    return @fopen($fichier, $mode);
74 74
 }
75 75
 
76 76
 /**
@@ -85,14 +85,14 @@  discard block
 block discarded – undo
85 85
  *     true si succès, false sinon.
86 86
  **/
87 87
 function spip_fclose_unlock($handle) {
88
-	if (_SPIP_LOCK_MODE == 1) {
89
-		@flock($handle, LOCK_UN);
90
-	} elseif (_SPIP_LOCK_MODE == 2) {
91
-		spip_nfsunlock(reset($GLOBALS['liste_verrous'][$handle]), end($GLOBALS['liste_verrous'][$handle]));
92
-		unset($GLOBALS['liste_verrous'][$handle]);
93
-	}
94
-
95
-	return @fclose($handle);
88
+    if (_SPIP_LOCK_MODE == 1) {
89
+        @flock($handle, LOCK_UN);
90
+    } elseif (_SPIP_LOCK_MODE == 2) {
91
+        spip_nfsunlock(reset($GLOBALS['liste_verrous'][$handle]), end($GLOBALS['liste_verrous'][$handle]));
92
+        unset($GLOBALS['liste_verrous'][$handle]);
93
+    }
94
+
95
+    return @fclose($handle);
96 96
 }
97 97
 
98 98
 
@@ -106,23 +106,23 @@  discard block
 block discarded – undo
106 106
  *     Contenu du fichier
107 107
  **/
108 108
 function spip_file_get_contents($fichier) {
109
-	if (substr($fichier, -3) != '.gz') {
110
-		if (function_exists('file_get_contents')) {
111
-			// quand on est sous windows on ne sait pas si file_get_contents marche
112
-			// on essaye : si ca retourne du contenu alors c'est bon
113
-			// sinon on fait un file() pour avoir le coeur net
114
-			$contenu = @file_get_contents($fichier);
115
-			if (!$contenu and _OS_SERVEUR == 'windows') {
116
-				$contenu = @file($fichier);
117
-			}
118
-		} else {
119
-			$contenu = @file($fichier);
120
-		}
121
-	} else {
122
-		$contenu = @gzfile($fichier);
123
-	}
124
-
125
-	return is_array($contenu) ? join('', $contenu) : (string)$contenu;
109
+    if (substr($fichier, -3) != '.gz') {
110
+        if (function_exists('file_get_contents')) {
111
+            // quand on est sous windows on ne sait pas si file_get_contents marche
112
+            // on essaye : si ca retourne du contenu alors c'est bon
113
+            // sinon on fait un file() pour avoir le coeur net
114
+            $contenu = @file_get_contents($fichier);
115
+            if (!$contenu and _OS_SERVEUR == 'windows') {
116
+                $contenu = @file($fichier);
117
+            }
118
+        } else {
119
+            $contenu = @file($fichier);
120
+        }
121
+    } else {
122
+        $contenu = @gzfile($fichier);
123
+    }
124
+
125
+    return is_array($contenu) ? join('', $contenu) : (string)$contenu;
126 126
 }
127 127
 
128 128
 
@@ -147,48 +147,48 @@  discard block
 block discarded – undo
147 147
  *     true si l'opération a réussie, false sinon.
148 148
  **/
149 149
 function lire_fichier($fichier, &$contenu, $options = array()) {
150
-	$contenu = '';
151
-	// inutile car si le fichier n'existe pas, le lock va renvoyer false juste apres
152
-	// economisons donc les acces disque, sauf chez free qui rale pour un rien
153
-	if (_TEST_FILE_EXISTS and !@file_exists($fichier)) {
154
-		return false;
155
-	}
156
-
157
-	#spip_timer('lire_fichier');
158
-
159
-	// pas de @ sur spip_fopen_lock qui est silencieux de toute facon
160
-	if ($fl = spip_fopen_lock($fichier, 'r', LOCK_SH)) {
161
-		// lire le fichier avant tout
162
-		$contenu = spip_file_get_contents($fichier);
163
-
164
-		// le fichier a-t-il ete supprime par le locker ?
165
-		// on ne verifie que si la tentative de lecture a echoue
166
-		// pour discriminer un contenu vide d'un fichier absent
167
-		// et eviter un acces disque
168
-		if (!$contenu and !@file_exists($fichier)) {
169
-			spip_fclose_unlock($fl);
170
-
171
-			return false;
172
-		}
173
-
174
-		// liberer le verrou
175
-		spip_fclose_unlock($fl);
176
-
177
-		// Verifications
178
-		$ok = true;
179
-		if (isset($options['phpcheck']) and $options['phpcheck'] == 'oui') {
180
-			$ok &= (preg_match(",[?]>\n?$,", $contenu));
181
-		}
182
-
183
-		#spip_log("$fread $fichier ".spip_timer('lire_fichier'));
184
-		if (!$ok) {
185
-			spip_log("echec lecture $fichier");
186
-		}
187
-
188
-		return $ok;
189
-	}
190
-
191
-	return false;
150
+    $contenu = '';
151
+    // inutile car si le fichier n'existe pas, le lock va renvoyer false juste apres
152
+    // economisons donc les acces disque, sauf chez free qui rale pour un rien
153
+    if (_TEST_FILE_EXISTS and !@file_exists($fichier)) {
154
+        return false;
155
+    }
156
+
157
+    #spip_timer('lire_fichier');
158
+
159
+    // pas de @ sur spip_fopen_lock qui est silencieux de toute facon
160
+    if ($fl = spip_fopen_lock($fichier, 'r', LOCK_SH)) {
161
+        // lire le fichier avant tout
162
+        $contenu = spip_file_get_contents($fichier);
163
+
164
+        // le fichier a-t-il ete supprime par le locker ?
165
+        // on ne verifie que si la tentative de lecture a echoue
166
+        // pour discriminer un contenu vide d'un fichier absent
167
+        // et eviter un acces disque
168
+        if (!$contenu and !@file_exists($fichier)) {
169
+            spip_fclose_unlock($fl);
170
+
171
+            return false;
172
+        }
173
+
174
+        // liberer le verrou
175
+        spip_fclose_unlock($fl);
176
+
177
+        // Verifications
178
+        $ok = true;
179
+        if (isset($options['phpcheck']) and $options['phpcheck'] == 'oui') {
180
+            $ok &= (preg_match(",[?]>\n?$,", $contenu));
181
+        }
182
+
183
+        #spip_log("$fread $fichier ".spip_timer('lire_fichier'));
184
+        if (!$ok) {
185
+            spip_log("echec lecture $fichier");
186
+        }
187
+
188
+        return $ok;
189
+    }
190
+
191
+    return false;
192 192
 }
193 193
 
194 194
 
@@ -216,85 +216,85 @@  discard block
 block discarded – undo
216 216
  **/
217 217
 function ecrire_fichier($fichier, $contenu, $ignorer_echec = false, $truncate = true) {
218 218
 
219
-	#spip_timer('ecrire_fichier');
220
-
221
-	// verrouiller le fichier destination
222
-	if ($fp = spip_fopen_lock($fichier, 'a', LOCK_EX)) {
223
-		// ecrire les donnees, compressees le cas echeant
224
-		// (on ouvre un nouveau pointeur sur le fichier, ce qui a l'avantage
225
-		// de le recreer si le locker qui nous precede l'avait supprime...)
226
-		if (substr($fichier, -3) == '.gz') {
227
-			$contenu = gzencode($contenu);
228
-		}
229
-		// si c'est une ecriture avec troncation , on fait plutot une ecriture complete a cote suivie unlink+rename
230
-		// pour etre sur d'avoir une operation atomique
231
-		// y compris en NFS : http://www.ietf.org/rfc/rfc1094.txt
232
-		// sauf sous wintruc ou ca ne marche pas
233
-		$ok = false;
234
-		if ($truncate and _OS_SERVEUR != 'windows') {
235
-			if (!function_exists('creer_uniqid')) {
236
-				include_spip('inc/acces');
237
-			}
238
-			$id = creer_uniqid();
239
-			// on ouvre un pointeur sur un fichier temporaire en ecriture +raz
240
-			if ($fp2 = spip_fopen_lock("$fichier.$id", 'w', LOCK_EX)) {
241
-				$s = @fputs($fp2, $contenu, $a = strlen($contenu));
242
-				$ok = ($s == $a);
243
-				spip_fclose_unlock($fp2);
244
-				spip_fclose_unlock($fp);
245
-				// unlink direct et pas spip_unlink car on avait deja le verrou
246
-				// a priori pas besoin car rename ecrase la cible
247
-				// @unlink($fichier);
248
-				// le rename aussitot, atomique quand on est pas sous windows
249
-				// au pire on arrive en second en cas de concourance, et le rename echoue
250
-				// --> on a la version de l'autre process qui doit etre identique
251
-				@rename("$fichier.$id", $fichier);
252
-				// precaution en cas d'echec du rename
253
-				if (!_TEST_FILE_EXISTS or @file_exists("$fichier.$id")) {
254
-					@unlink("$fichier.$id");
255
-				}
256
-				if ($ok) {
257
-					$ok = file_exists($fichier);
258
-				}
259
-			} else // echec mais penser a fermer ..
260
-			{
261
-				spip_fclose_unlock($fp);
262
-			}
263
-		}
264
-		// sinon ou si methode precedente a echoueee
265
-		// on se rabat sur la methode ancienne
266
-		if (!$ok) {
267
-			// ici on est en ajout ou sous windows, cas desespere
268
-			if ($truncate) {
269
-				@ftruncate($fp, 0);
270
-			}
271
-			$s = @fputs($fp, $contenu, $a = strlen($contenu));
272
-
273
-			$ok = ($s == $a);
274
-			spip_fclose_unlock($fp);
275
-		}
276
-
277
-		// liberer le verrou et fermer le fichier
278
-		@chmod($fichier, _SPIP_CHMOD & 0666);
279
-		if ($ok) {
280
-			if (strpos($fichier, ".php") !== false) {
281
-				spip_clear_opcode_cache(realpath($fichier));
282
-			}
283
-
284
-			return $ok;
285
-		}
286
-	}
287
-
288
-	if (!$ignorer_echec) {
289
-		include_spip('inc/autoriser');
290
-		if (autoriser('chargerftp')) {
291
-			raler_fichier($fichier);
292
-		}
293
-		spip_unlink($fichier);
294
-	}
295
-	spip_log("Ecriture fichier $fichier impossible", _LOG_INFO_IMPORTANTE);
296
-
297
-	return false;
219
+    #spip_timer('ecrire_fichier');
220
+
221
+    // verrouiller le fichier destination
222
+    if ($fp = spip_fopen_lock($fichier, 'a', LOCK_EX)) {
223
+        // ecrire les donnees, compressees le cas echeant
224
+        // (on ouvre un nouveau pointeur sur le fichier, ce qui a l'avantage
225
+        // de le recreer si le locker qui nous precede l'avait supprime...)
226
+        if (substr($fichier, -3) == '.gz') {
227
+            $contenu = gzencode($contenu);
228
+        }
229
+        // si c'est une ecriture avec troncation , on fait plutot une ecriture complete a cote suivie unlink+rename
230
+        // pour etre sur d'avoir une operation atomique
231
+        // y compris en NFS : http://www.ietf.org/rfc/rfc1094.txt
232
+        // sauf sous wintruc ou ca ne marche pas
233
+        $ok = false;
234
+        if ($truncate and _OS_SERVEUR != 'windows') {
235
+            if (!function_exists('creer_uniqid')) {
236
+                include_spip('inc/acces');
237
+            }
238
+            $id = creer_uniqid();
239
+            // on ouvre un pointeur sur un fichier temporaire en ecriture +raz
240
+            if ($fp2 = spip_fopen_lock("$fichier.$id", 'w', LOCK_EX)) {
241
+                $s = @fputs($fp2, $contenu, $a = strlen($contenu));
242
+                $ok = ($s == $a);
243
+                spip_fclose_unlock($fp2);
244
+                spip_fclose_unlock($fp);
245
+                // unlink direct et pas spip_unlink car on avait deja le verrou
246
+                // a priori pas besoin car rename ecrase la cible
247
+                // @unlink($fichier);
248
+                // le rename aussitot, atomique quand on est pas sous windows
249
+                // au pire on arrive en second en cas de concourance, et le rename echoue
250
+                // --> on a la version de l'autre process qui doit etre identique
251
+                @rename("$fichier.$id", $fichier);
252
+                // precaution en cas d'echec du rename
253
+                if (!_TEST_FILE_EXISTS or @file_exists("$fichier.$id")) {
254
+                    @unlink("$fichier.$id");
255
+                }
256
+                if ($ok) {
257
+                    $ok = file_exists($fichier);
258
+                }
259
+            } else // echec mais penser a fermer ..
260
+            {
261
+                spip_fclose_unlock($fp);
262
+            }
263
+        }
264
+        // sinon ou si methode precedente a echoueee
265
+        // on se rabat sur la methode ancienne
266
+        if (!$ok) {
267
+            // ici on est en ajout ou sous windows, cas desespere
268
+            if ($truncate) {
269
+                @ftruncate($fp, 0);
270
+            }
271
+            $s = @fputs($fp, $contenu, $a = strlen($contenu));
272
+
273
+            $ok = ($s == $a);
274
+            spip_fclose_unlock($fp);
275
+        }
276
+
277
+        // liberer le verrou et fermer le fichier
278
+        @chmod($fichier, _SPIP_CHMOD & 0666);
279
+        if ($ok) {
280
+            if (strpos($fichier, ".php") !== false) {
281
+                spip_clear_opcode_cache(realpath($fichier));
282
+            }
283
+
284
+            return $ok;
285
+        }
286
+    }
287
+
288
+    if (!$ignorer_echec) {
289
+        include_spip('inc/autoriser');
290
+        if (autoriser('chargerftp')) {
291
+            raler_fichier($fichier);
292
+        }
293
+        spip_unlink($fichier);
294
+    }
295
+    spip_log("Ecriture fichier $fichier impossible", _LOG_INFO_IMPORTANTE);
296
+
297
+    return false;
298 298
 }
299 299
 
300 300
 /**
@@ -314,12 +314,12 @@  discard block
 block discarded – undo
314 314
  *     Écriture avec troncation ?
315 315
  */
316 316
 function ecrire_fichier_securise($fichier, $contenu, $ecrire_quand_meme = false, $truncate = true) {
317
-	if (substr($fichier, -4) !== '.php') {
318
-		spip_log('Erreur de programmation: ' . $fichier . ' doit finir par .php');
319
-	}
320
-	$contenu = "<" . "?php die ('Acces interdit'); ?" . ">\n" . $contenu;
317
+    if (substr($fichier, -4) !== '.php') {
318
+        spip_log('Erreur de programmation: ' . $fichier . ' doit finir par .php');
319
+    }
320
+    $contenu = "<" . "?php die ('Acces interdit'); ?" . ">\n" . $contenu;
321 321
 
322
-	return ecrire_fichier($fichier, $contenu, $ecrire_quand_meme, $truncate);
322
+    return ecrire_fichier($fichier, $contenu, $ecrire_quand_meme, $truncate);
323 323
 }
324 324
 
325 325
 
@@ -330,23 +330,23 @@  discard block
 block discarded – undo
330 330
  * @return bool
331 331
  */
332 332
 function ecrire_fichier_calcule_si_modifie($fichier, $contenu, $force=false, $use_copy=false) {
333
-	$fichier_tmp = $fichier . '.last';
334
-	if (!ecrire_fichier($fichier_tmp, $contenu, true)){
335
-		return false;
336
-	}
337
-	if ($force
338
-	  or !file_exists($fichier)
339
-		or md5_file($fichier) != md5_file($fichier_tmp)) {
340
-		if ($use_copy) {
341
-			@copy($fichier_tmp, $fichier);
342
-		}
343
-		else {
344
-			@rename($fichier_tmp, $fichier);
345
-		}
346
-		// eviter que PHP ne reserve le vieux timestamp
347
-		clearstatcache(true, $fichier);
348
-	}
349
-	return true;
333
+    $fichier_tmp = $fichier . '.last';
334
+    if (!ecrire_fichier($fichier_tmp, $contenu, true)){
335
+        return false;
336
+    }
337
+    if ($force
338
+      or !file_exists($fichier)
339
+        or md5_file($fichier) != md5_file($fichier_tmp)) {
340
+        if ($use_copy) {
341
+            @copy($fichier_tmp, $fichier);
342
+        }
343
+        else {
344
+            @rename($fichier_tmp, $fichier);
345
+        }
346
+        // eviter que PHP ne reserve le vieux timestamp
347
+        clearstatcache(true, $fichier);
348
+    }
349
+    return true;
350 350
 }
351 351
 
352 352
 
@@ -367,11 +367,11 @@  discard block
 block discarded – undo
367 367
  *     true si l'opération a réussie, false sinon.
368 368
  */
369 369
 function lire_fichier_securise($fichier, &$contenu, $options = array()) {
370
-	if ($res = lire_fichier($fichier, $contenu, $options)) {
371
-		$contenu = substr($contenu, strlen("<" . "?php die ('Acces interdit'); ?" . ">\n"));
372
-	}
370
+    if ($res = lire_fichier($fichier, $contenu, $options)) {
371
+        $contenu = substr($contenu, strlen("<" . "?php die ('Acces interdit'); ?" . ">\n"));
372
+    }
373 373
 
374
-	return $res;
374
+    return $res;
375 375
 }
376 376
 
377 377
 /**
@@ -386,20 +386,20 @@  discard block
 block discarded – undo
386 386
  *     Chemin du fichier
387 387
  **/
388 388
 function raler_fichier($fichier) {
389
-	include_spip('inc/minipres');
390
-	$dir = dirname($fichier);
391
-	http_status(401);
392
-	echo minipres(_T('texte_inc_meta_2'), "<h4 style='color: red'>"
393
-		. _T('texte_inc_meta_1', array('fichier' => $fichier))
394
-		. " <a href='"
395
-		. generer_url_ecrire('install', "etape=chmod&test_dir=$dir")
396
-		. "'>"
397
-		. _T('texte_inc_meta_2')
398
-		. "</a> "
399
-		. _T('texte_inc_meta_3',
400
-			array('repertoire' => joli_repertoire($dir)))
401
-		. "</h4>\n");
402
-	exit;
389
+    include_spip('inc/minipres');
390
+    $dir = dirname($fichier);
391
+    http_status(401);
392
+    echo minipres(_T('texte_inc_meta_2'), "<h4 style='color: red'>"
393
+        . _T('texte_inc_meta_1', array('fichier' => $fichier))
394
+        . " <a href='"
395
+        . generer_url_ecrire('install', "etape=chmod&test_dir=$dir")
396
+        . "'>"
397
+        . _T('texte_inc_meta_2')
398
+        . "</a> "
399
+        . _T('texte_inc_meta_3',
400
+            array('repertoire' => joli_repertoire($dir)))
401
+        . "</h4>\n");
402
+    exit;
403 403
 }
404 404
 
405 405
 
@@ -414,14 +414,14 @@  discard block
 block discarded – undo
414 414
  *     - true si récent, false sinon
415 415
  */
416 416
 function jeune_fichier($fichier, $n) {
417
-	if (!file_exists($fichier)) {
418
-		return false;
419
-	}
420
-	if (!$c = @filemtime($fichier)) {
421
-		return false;
422
-	}
423
-
424
-	return (time() - $n <= $c);
417
+    if (!file_exists($fichier)) {
418
+        return false;
419
+    }
420
+    if (!$c = @filemtime($fichier)) {
421
+        return false;
422
+    }
423
+
424
+    return (time() - $n <= $c);
425 425
 }
426 426
 
427 427
 /**
@@ -437,22 +437,22 @@  discard block
 block discarded – undo
437 437
  *     - void sinon
438 438
  */
439 439
 function supprimer_fichier($fichier, $lock = true) {
440
-	if (!@file_exists($fichier)) {
441
-		return true;
442
-	}
443
-
444
-	if ($lock) {
445
-		// verrouiller le fichier destination
446
-		if (!$fp = spip_fopen_lock($fichier, 'a', LOCK_EX)) {
447
-			return false;
448
-		}
449
-
450
-		// liberer le verrou
451
-		spip_fclose_unlock($fp);
452
-	}
453
-
454
-	// supprimer
455
-	return @unlink($fichier);
440
+    if (!@file_exists($fichier)) {
441
+        return true;
442
+    }
443
+
444
+    if ($lock) {
445
+        // verrouiller le fichier destination
446
+        if (!$fp = spip_fopen_lock($fichier, 'a', LOCK_EX)) {
447
+            return false;
448
+        }
449
+
450
+        // liberer le verrou
451
+        spip_fclose_unlock($fp);
452
+    }
453
+
454
+    // supprimer
455
+    return @unlink($fichier);
456 456
 }
457 457
 
458 458
 /**
@@ -462,12 +462,12 @@  discard block
 block discarded – undo
462 462
  *     Chemin du fichier
463 463
  */
464 464
 function spip_unlink($f) {
465
-	if (!is_dir($f)) {
466
-		supprimer_fichier($f, false);
467
-	} else {
468
-		@unlink("$f/.ok");
469
-		@rmdir($f);
470
-	}
465
+    if (!is_dir($f)) {
466
+        supprimer_fichier($f, false);
467
+    } else {
468
+        @unlink("$f/.ok");
469
+        @rmdir($f);
470
+    }
471 471
 }
472 472
 
473 473
 /**
@@ -481,26 +481,26 @@  discard block
 block discarded – undo
481 481
  *   The absolute path of the PHP file to invalidate.
482 482
  */
483 483
 function spip_clear_opcode_cache($filepath) {
484
-	clearstatcache(true, $filepath);
485
-
486
-	// Zend OPcache
487
-	if (function_exists('opcache_invalidate')) {
488
-		$invalidate = @opcache_invalidate($filepath, true);
489
-		// si l'invalidation a echoue lever un flag
490
-		if (!$invalidate and !defined('_spip_attend_invalidation_opcode_cache')) {
491
-			define('_spip_attend_invalidation_opcode_cache',true);
492
-		}
493
-	} elseif (!defined('_spip_attend_invalidation_opcode_cache')) {
494
-		// n'agira que si opcache est effectivement actif (il semble qu'on a pas toujours la fonction opcache_invalidate)
495
-		define('_spip_attend_invalidation_opcode_cache',true);
496
-	}
497
-	// APC.
498
-	if (function_exists('apc_delete_file')) {
499
-		// apc_delete_file() throws a PHP warning in case the specified file was
500
-		// not compiled yet.
501
-		// @see http://php.net/apc-delete-file
502
-		@apc_delete_file($filepath);
503
-	}
484
+    clearstatcache(true, $filepath);
485
+
486
+    // Zend OPcache
487
+    if (function_exists('opcache_invalidate')) {
488
+        $invalidate = @opcache_invalidate($filepath, true);
489
+        // si l'invalidation a echoue lever un flag
490
+        if (!$invalidate and !defined('_spip_attend_invalidation_opcode_cache')) {
491
+            define('_spip_attend_invalidation_opcode_cache',true);
492
+        }
493
+    } elseif (!defined('_spip_attend_invalidation_opcode_cache')) {
494
+        // n'agira que si opcache est effectivement actif (il semble qu'on a pas toujours la fonction opcache_invalidate)
495
+        define('_spip_attend_invalidation_opcode_cache',true);
496
+    }
497
+    // APC.
498
+    if (function_exists('apc_delete_file')) {
499
+        // apc_delete_file() throws a PHP warning in case the specified file was
500
+        // not compiled yet.
501
+        // @see http://php.net/apc-delete-file
502
+        @apc_delete_file($filepath);
503
+    }
504 504
 }
505 505
 
506 506
 /**
@@ -523,24 +523,24 @@  discard block
 block discarded – undo
523 523
  *
524 524
  */
525 525
 function spip_attend_invalidation_opcode_cache($timestamp = null) {
526
-	if (function_exists('opcache_get_configuration')
527
-		and @ini_get('opcache.enable')
528
-		and @ini_get('opcache.validate_timestamps')
529
-		and ($duree = intval(@ini_get('opcache.revalidate_freq')) or $duree = 2)
530
-		and defined('_spip_attend_invalidation_opcode_cache') // des invalidations ont echouees
531
-	) {
532
-		$wait = $duree + 1;
533
-		if ($timestamp) {
534
-			$wait -= (time() - $timestamp);
535
-			if ($wait<0) {
536
-				$wait = 0;
537
-			}
538
-		}
539
-		spip_log('Probleme de configuration opcache.revalidate_freq '. $duree .'s : on attend '.$wait.'s', _LOG_INFO_IMPORTANTE);
540
-		if ($wait) {
541
-			sleep($duree + 1);
542
-		}
543
-	}
526
+    if (function_exists('opcache_get_configuration')
527
+        and @ini_get('opcache.enable')
528
+        and @ini_get('opcache.validate_timestamps')
529
+        and ($duree = intval(@ini_get('opcache.revalidate_freq')) or $duree = 2)
530
+        and defined('_spip_attend_invalidation_opcode_cache') // des invalidations ont echouees
531
+    ) {
532
+        $wait = $duree + 1;
533
+        if ($timestamp) {
534
+            $wait -= (time() - $timestamp);
535
+            if ($wait<0) {
536
+                $wait = 0;
537
+            }
538
+        }
539
+        spip_log('Probleme de configuration opcache.revalidate_freq '. $duree .'s : on attend '.$wait.'s', _LOG_INFO_IMPORTANTE);
540
+        if ($wait) {
541
+            sleep($duree + 1);
542
+        }
543
+    }
544 544
 }
545 545
 
546 546
 
@@ -553,26 +553,26 @@  discard block
 block discarded – undo
553 553
  * @return bool Suppression reussie.
554 554
  */
555 555
 function supprimer_repertoire($dir) {
556
-	if (!file_exists($dir)) {
557
-		return true;
558
-	}
559
-	if (!is_dir($dir) || is_link($dir)) {
560
-		return @unlink($dir);
561
-	}
562
-
563
-	foreach (scandir($dir) as $item) {
564
-		if ($item == '.' || $item == '..') {
565
-			continue;
566
-		}
567
-		if (!supprimer_repertoire($dir . "/" . $item)) {
568
-			@chmod($dir . "/" . $item, 0777);
569
-			if (!supprimer_repertoire($dir . "/" . $item)) {
570
-				return false;
571
-			}
572
-		};
573
-	}
574
-
575
-	return @rmdir($dir);
556
+    if (!file_exists($dir)) {
557
+        return true;
558
+    }
559
+    if (!is_dir($dir) || is_link($dir)) {
560
+        return @unlink($dir);
561
+    }
562
+
563
+    foreach (scandir($dir) as $item) {
564
+        if ($item == '.' || $item == '..') {
565
+            continue;
566
+        }
567
+        if (!supprimer_repertoire($dir . "/" . $item)) {
568
+            @chmod($dir . "/" . $item, 0777);
569
+            if (!supprimer_repertoire($dir . "/" . $item)) {
570
+                return false;
571
+            }
572
+        };
573
+    }
574
+
575
+    return @rmdir($dir);
576 576
 }
577 577
 
578 578
 
@@ -601,57 +601,57 @@  discard block
 block discarded – undo
601 601
  *     Chemin du répertoire créé.
602 602
  **/
603 603
 function sous_repertoire($base, $subdir = '', $nobase = false, $tantpis = false) {
604
-	static $dirs = array();
605
-
606
-	$base = str_replace("//", "/", $base);
607
-
608
-	# suppr le dernier caractere si c'est un /
609
-	$base = rtrim($base, '/');
610
-
611
-	if (!strlen($subdir)) {
612
-		$n = strrpos($base, "/");
613
-		if ($n === false) {
614
-			return $nobase ? '' : ($base . '/');
615
-		}
616
-		$subdir = substr($base, $n + 1);
617
-		$base = substr($base, 0, $n + 1);
618
-	} else {
619
-		$base .= '/';
620
-		$subdir = str_replace("/", "", $subdir);
621
-	}
622
-
623
-	$baseaff = $nobase ? '' : $base;
624
-	if (isset($dirs[$base . $subdir])) {
625
-		return $baseaff . $dirs[$base . $subdir];
626
-	}
627
-
628
-	$path = $base . $subdir; # $path = 'IMG/distant/pdf' ou 'IMG/distant_pdf'
629
-
630
-	if (file_exists("$path/.ok")) {
631
-		return $baseaff . ($dirs[$base . $subdir] = "$subdir/");
632
-	}
633
-
634
-	@mkdir($path, _SPIP_CHMOD);
635
-	@chmod($path, _SPIP_CHMOD);
636
-
637
-	if (is_dir($path) && is_writable($path)) {
638
-		@touch("$path/.ok");
639
-		spip_log("creation $base$subdir/");
640
-
641
-		return $baseaff . ($dirs[$base . $subdir] = "$subdir/");
642
-	}
643
-
644
-	// en cas d'echec c'est peut etre tout simplement que le disque est plein :
645
-	// l'inode du fichier dir_test existe, mais impossible d'y mettre du contenu
646
-	spip_log("echec creation $base${subdir}");
647
-	if ($tantpis) {
648
-		return '';
649
-	}
650
-	if (!_DIR_RESTREINT) {
651
-		$base = preg_replace(',^' . _DIR_RACINE . ',', '', $base);
652
-	}
653
-	$base .= $subdir;
654
-	raler_fichier($base . '/.ok');
604
+    static $dirs = array();
605
+
606
+    $base = str_replace("//", "/", $base);
607
+
608
+    # suppr le dernier caractere si c'est un /
609
+    $base = rtrim($base, '/');
610
+
611
+    if (!strlen($subdir)) {
612
+        $n = strrpos($base, "/");
613
+        if ($n === false) {
614
+            return $nobase ? '' : ($base . '/');
615
+        }
616
+        $subdir = substr($base, $n + 1);
617
+        $base = substr($base, 0, $n + 1);
618
+    } else {
619
+        $base .= '/';
620
+        $subdir = str_replace("/", "", $subdir);
621
+    }
622
+
623
+    $baseaff = $nobase ? '' : $base;
624
+    if (isset($dirs[$base . $subdir])) {
625
+        return $baseaff . $dirs[$base . $subdir];
626
+    }
627
+
628
+    $path = $base . $subdir; # $path = 'IMG/distant/pdf' ou 'IMG/distant_pdf'
629
+
630
+    if (file_exists("$path/.ok")) {
631
+        return $baseaff . ($dirs[$base . $subdir] = "$subdir/");
632
+    }
633
+
634
+    @mkdir($path, _SPIP_CHMOD);
635
+    @chmod($path, _SPIP_CHMOD);
636
+
637
+    if (is_dir($path) && is_writable($path)) {
638
+        @touch("$path/.ok");
639
+        spip_log("creation $base$subdir/");
640
+
641
+        return $baseaff . ($dirs[$base . $subdir] = "$subdir/");
642
+    }
643
+
644
+    // en cas d'echec c'est peut etre tout simplement que le disque est plein :
645
+    // l'inode du fichier dir_test existe, mais impossible d'y mettre du contenu
646
+    spip_log("echec creation $base${subdir}");
647
+    if ($tantpis) {
648
+        return '';
649
+    }
650
+    if (!_DIR_RESTREINT) {
651
+        $base = preg_replace(',^' . _DIR_RACINE . ',', '', $base);
652
+    }
653
+    $base .= $subdir;
654
+    raler_fichier($base . '/.ok');
655 655
 }
656 656
 
657 657
 
@@ -684,51 +684,51 @@  discard block
 block discarded – undo
684 684
  *     Chemins des fichiers trouvés.
685 685
  **/
686 686
 function preg_files($dir, $pattern = -1 /* AUTO */, $maxfiles = 10000, $recurs = array()) {
687
-	$nbfiles = 0;
688
-	if ($pattern == -1) {
689
-		$pattern = "^$dir";
690
-	}
691
-	$fichiers = array();
692
-	// revenir au repertoire racine si on a recu dossier/truc
693
-	// pour regarder dossier/truc/ ne pas oublier le / final
694
-	$dir = preg_replace(',/[^/]*$,', '', $dir);
695
-	if ($dir == '') {
696
-		$dir = '.';
697
-	}
698
-
699
-	if (@is_dir($dir) and is_readable($dir) and $d = opendir($dir)) {
700
-		while (($f = readdir($d)) !== false && ($nbfiles < $maxfiles)) {
701
-			if ($f[0] != '.' # ignorer . .. .svn etc
702
-				and $f != 'CVS'
703
-				and $f != 'remove.txt'
704
-				and is_readable($f = "$dir/$f")
705
-			) {
706
-				if (is_file($f)) {
707
-					if (preg_match(";$pattern;iS", $f)) {
708
-						$fichiers[] = $f;
709
-						$nbfiles++;
710
-					}
711
-				} else {
712
-					if (is_dir($f) and is_array($recurs)) {
713
-						$rp = @realpath($f);
714
-						if (!is_string($rp) or !strlen($rp)) {
715
-							$rp = $f;
716
-						} # realpath n'est peut etre pas autorise
717
-						if (!isset($recurs[$rp])) {
718
-							$recurs[$rp] = true;
719
-							$beginning = $fichiers;
720
-							$end = preg_files("$f/", $pattern,
721
-								$maxfiles - $nbfiles, $recurs);
722
-							$fichiers = array_merge((array)$beginning, (array)$end);
723
-							$nbfiles = count($fichiers);
724
-						}
725
-					}
726
-				}
727
-			}
728
-		}
729
-		closedir($d);
730
-	}
731
-	sort($fichiers);
732
-
733
-	return $fichiers;
687
+    $nbfiles = 0;
688
+    if ($pattern == -1) {
689
+        $pattern = "^$dir";
690
+    }
691
+    $fichiers = array();
692
+    // revenir au repertoire racine si on a recu dossier/truc
693
+    // pour regarder dossier/truc/ ne pas oublier le / final
694
+    $dir = preg_replace(',/[^/]*$,', '', $dir);
695
+    if ($dir == '') {
696
+        $dir = '.';
697
+    }
698
+
699
+    if (@is_dir($dir) and is_readable($dir) and $d = opendir($dir)) {
700
+        while (($f = readdir($d)) !== false && ($nbfiles < $maxfiles)) {
701
+            if ($f[0] != '.' # ignorer . .. .svn etc
702
+                and $f != 'CVS'
703
+                and $f != 'remove.txt'
704
+                and is_readable($f = "$dir/$f")
705
+            ) {
706
+                if (is_file($f)) {
707
+                    if (preg_match(";$pattern;iS", $f)) {
708
+                        $fichiers[] = $f;
709
+                        $nbfiles++;
710
+                    }
711
+                } else {
712
+                    if (is_dir($f) and is_array($recurs)) {
713
+                        $rp = @realpath($f);
714
+                        if (!is_string($rp) or !strlen($rp)) {
715
+                            $rp = $f;
716
+                        } # realpath n'est peut etre pas autorise
717
+                        if (!isset($recurs[$rp])) {
718
+                            $recurs[$rp] = true;
719
+                            $beginning = $fichiers;
720
+                            $end = preg_files("$f/", $pattern,
721
+                                $maxfiles - $nbfiles, $recurs);
722
+                            $fichiers = array_merge((array)$beginning, (array)$end);
723
+                            $nbfiles = count($fichiers);
724
+                        }
725
+                    }
726
+                }
727
+            }
728
+        }
729
+        closedir($d);
730
+    }
731
+    sort($fichiers);
732
+
733
+    return $fichiers;
734 734
 }
Please login to merge, or discard this patch.
Spacing   +23 added lines, -23 removed lines patch added patch discarded remove patch
@@ -122,7 +122,7 @@  discard block
 block discarded – undo
122 122
 		$contenu = @gzfile($fichier);
123 123
 	}
124 124
 
125
-	return is_array($contenu) ? join('', $contenu) : (string)$contenu;
125
+	return is_array($contenu) ? join('', $contenu) : (string) $contenu;
126 126
 }
127 127
 
128 128
 
@@ -315,9 +315,9 @@  discard block
 block discarded – undo
315 315
  */
316 316
 function ecrire_fichier_securise($fichier, $contenu, $ecrire_quand_meme = false, $truncate = true) {
317 317
 	if (substr($fichier, -4) !== '.php') {
318
-		spip_log('Erreur de programmation: ' . $fichier . ' doit finir par .php');
318
+		spip_log('Erreur de programmation: '.$fichier.' doit finir par .php');
319 319
 	}
320
-	$contenu = "<" . "?php die ('Acces interdit'); ?" . ">\n" . $contenu;
320
+	$contenu = "<"."?php die ('Acces interdit'); ?".">\n".$contenu;
321 321
 
322 322
 	return ecrire_fichier($fichier, $contenu, $ecrire_quand_meme, $truncate);
323 323
 }
@@ -329,9 +329,9 @@  discard block
 block discarded – undo
329 329
  * @param bool $force
330 330
  * @return bool
331 331
  */
332
-function ecrire_fichier_calcule_si_modifie($fichier, $contenu, $force=false, $use_copy=false) {
333
-	$fichier_tmp = $fichier . '.last';
334
-	if (!ecrire_fichier($fichier_tmp, $contenu, true)){
332
+function ecrire_fichier_calcule_si_modifie($fichier, $contenu, $force = false, $use_copy = false) {
333
+	$fichier_tmp = $fichier.'.last';
334
+	if (!ecrire_fichier($fichier_tmp, $contenu, true)) {
335 335
 		return false;
336 336
 	}
337 337
 	if ($force
@@ -368,7 +368,7 @@  discard block
 block discarded – undo
368 368
  */
369 369
 function lire_fichier_securise($fichier, &$contenu, $options = array()) {
370 370
 	if ($res = lire_fichier($fichier, $contenu, $options)) {
371
-		$contenu = substr($contenu, strlen("<" . "?php die ('Acces interdit'); ?" . ">\n"));
371
+		$contenu = substr($contenu, strlen("<"."?php die ('Acces interdit'); ?".">\n"));
372 372
 	}
373 373
 
374 374
 	return $res;
@@ -488,11 +488,11 @@  discard block
 block discarded – undo
488 488
 		$invalidate = @opcache_invalidate($filepath, true);
489 489
 		// si l'invalidation a echoue lever un flag
490 490
 		if (!$invalidate and !defined('_spip_attend_invalidation_opcode_cache')) {
491
-			define('_spip_attend_invalidation_opcode_cache',true);
491
+			define('_spip_attend_invalidation_opcode_cache', true);
492 492
 		}
493 493
 	} elseif (!defined('_spip_attend_invalidation_opcode_cache')) {
494 494
 		// n'agira que si opcache est effectivement actif (il semble qu'on a pas toujours la fonction opcache_invalidate)
495
-		define('_spip_attend_invalidation_opcode_cache',true);
495
+		define('_spip_attend_invalidation_opcode_cache', true);
496 496
 	}
497 497
 	// APC.
498 498
 	if (function_exists('apc_delete_file')) {
@@ -532,11 +532,11 @@  discard block
 block discarded – undo
532 532
 		$wait = $duree + 1;
533 533
 		if ($timestamp) {
534 534
 			$wait -= (time() - $timestamp);
535
-			if ($wait<0) {
535
+			if ($wait < 0) {
536 536
 				$wait = 0;
537 537
 			}
538 538
 		}
539
-		spip_log('Probleme de configuration opcache.revalidate_freq '. $duree .'s : on attend '.$wait.'s', _LOG_INFO_IMPORTANTE);
539
+		spip_log('Probleme de configuration opcache.revalidate_freq '.$duree.'s : on attend '.$wait.'s', _LOG_INFO_IMPORTANTE);
540 540
 		if ($wait) {
541 541
 			sleep($duree + 1);
542 542
 		}
@@ -564,9 +564,9 @@  discard block
 block discarded – undo
564 564
 		if ($item == '.' || $item == '..') {
565 565
 			continue;
566 566
 		}
567
-		if (!supprimer_repertoire($dir . "/" . $item)) {
568
-			@chmod($dir . "/" . $item, 0777);
569
-			if (!supprimer_repertoire($dir . "/" . $item)) {
567
+		if (!supprimer_repertoire($dir."/".$item)) {
568
+			@chmod($dir."/".$item, 0777);
569
+			if (!supprimer_repertoire($dir."/".$item)) {
570 570
 				return false;
571 571
 			}
572 572
 		};
@@ -611,7 +611,7 @@  discard block
 block discarded – undo
611 611
 	if (!strlen($subdir)) {
612 612
 		$n = strrpos($base, "/");
613 613
 		if ($n === false) {
614
-			return $nobase ? '' : ($base . '/');
614
+			return $nobase ? '' : ($base.'/');
615 615
 		}
616 616
 		$subdir = substr($base, $n + 1);
617 617
 		$base = substr($base, 0, $n + 1);
@@ -621,14 +621,14 @@  discard block
 block discarded – undo
621 621
 	}
622 622
 
623 623
 	$baseaff = $nobase ? '' : $base;
624
-	if (isset($dirs[$base . $subdir])) {
625
-		return $baseaff . $dirs[$base . $subdir];
624
+	if (isset($dirs[$base.$subdir])) {
625
+		return $baseaff.$dirs[$base.$subdir];
626 626
 	}
627 627
 
628
-	$path = $base . $subdir; # $path = 'IMG/distant/pdf' ou 'IMG/distant_pdf'
628
+	$path = $base.$subdir; # $path = 'IMG/distant/pdf' ou 'IMG/distant_pdf'
629 629
 
630 630
 	if (file_exists("$path/.ok")) {
631
-		return $baseaff . ($dirs[$base . $subdir] = "$subdir/");
631
+		return $baseaff.($dirs[$base.$subdir] = "$subdir/");
632 632
 	}
633 633
 
634 634
 	@mkdir($path, _SPIP_CHMOD);
@@ -638,7 +638,7 @@  discard block
 block discarded – undo
638 638
 		@touch("$path/.ok");
639 639
 		spip_log("creation $base$subdir/");
640 640
 
641
-		return $baseaff . ($dirs[$base . $subdir] = "$subdir/");
641
+		return $baseaff.($dirs[$base.$subdir] = "$subdir/");
642 642
 	}
643 643
 
644 644
 	// en cas d'echec c'est peut etre tout simplement que le disque est plein :
@@ -648,10 +648,10 @@  discard block
 block discarded – undo
648 648
 		return '';
649 649
 	}
650 650
 	if (!_DIR_RESTREINT) {
651
-		$base = preg_replace(',^' . _DIR_RACINE . ',', '', $base);
651
+		$base = preg_replace(',^'._DIR_RACINE.',', '', $base);
652 652
 	}
653 653
 	$base .= $subdir;
654
-	raler_fichier($base . '/.ok');
654
+	raler_fichier($base.'/.ok');
655 655
 }
656 656
 
657 657
 
@@ -719,7 +719,7 @@  discard block
 block discarded – undo
719 719
 							$beginning = $fichiers;
720 720
 							$end = preg_files("$f/", $pattern,
721 721
 								$maxfiles - $nbfiles, $recurs);
722
-							$fichiers = array_merge((array)$beginning, (array)$end);
722
+							$fichiers = array_merge((array) $beginning, (array) $end);
723 723
 							$nbfiles = count($fichiers);
724 724
 						}
725 725
 					}
Please login to merge, or discard this patch.
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -339,8 +339,7 @@
 block discarded – undo
339 339
 		or md5_file($fichier) != md5_file($fichier_tmp)) {
340 340
 		if ($use_copy) {
341 341
 			@copy($fichier_tmp, $fichier);
342
-		}
343
-		else {
342
+		} else {
344 343
 			@rename($fichier_tmp, $fichier);
345 344
 		}
346 345
 		// eviter que PHP ne reserve le vieux timestamp
Please login to merge, or discard this patch.
ecrire/inc/lang.php 3 patches
Doc Comments   +11 added lines, -1 removed lines patch added patch discarded remove patch
@@ -31,7 +31,7 @@  discard block
 block discarded – undo
31 31
  *
32 32
  * @param string $lang
33 33
  *     La langue à utiliser
34
- * @return string|bool
34
+ * @return false|string
35 35
  *     string : La langue qui a été utilisée si trouvée
36 36
  *     false : aucune langue ne correspondait à la demande
37 37
  **/
@@ -80,6 +80,9 @@  discard block
 block discarded – undo
80 80
 // retourne son 2e argument si c'est un index du premier
81 81
 // ou un index approchant sinon et si possible, 
82 82
 // la langue X etant consideree comme une approche de X_Y
83
+/**
84
+ * @return string
85
+ */
83 86
 function approcher_langue($trads, $lang = '') {
84 87
 
85 88
 	if (!$lang) {
@@ -175,6 +178,9 @@  discard block
 block discarded – undo
175 178
 // pour 'changer_lang' (langue de l'article, espace prive), c'est en Ajax
176 179
 // 
177 180
 // http://code.spip.net/@menu_langues
181
+/**
182
+ * @param string $nom_select
183
+ */
178 184
 function menu_langues($nom_select, $default = '') {
179 185
 	include_spip('inc/actions');
180 186
 
@@ -209,6 +215,10 @@  discard block
 block discarded – undo
209 215
 }
210 216
 
211 217
 // http://code.spip.net/@select_langues
218
+/**
219
+ * @param string $change
220
+ * @param string $options
221
+ */
212 222
 function select_langues($nom_select, $change, $options, $label = "") {
213 223
 	static $cpt = 0;
214 224
 	$id = "menu_langues" . $cpt++;
Please login to merge, or discard this patch.
Indentation   +240 added lines, -240 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Core\Langue
17 17
  **/
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 
@@ -37,29 +37,29 @@  discard block
 block discarded – undo
37 37
  **/
38 38
 function changer_langue($lang) {
39 39
 
40
-	$liste_langues = ',' . @$GLOBALS['meta']['langues_proposees']
41
-		. ',' . @$GLOBALS['meta']['langues_multilingue'] . ',';
42
-
43
-	// Si la langue demandee n'existe pas, on essaie d'autres variantes
44
-	// Exemple : 'pt-br' => 'pt_br' => 'pt'
45
-	$lang = str_replace('-', '_', trim($lang));
46
-	if (!$lang) {
47
-		return false;
48
-	}
49
-
50
-	if (strpos($liste_langues, ",$lang,") !== false
51
-		or ($lang = preg_replace(',_.*,', '', $lang)
52
-			and strpos($liste_langues, ",$lang,") !== false)
53
-	) {
54
-
55
-		$GLOBALS['spip_lang_rtl'] = lang_dir($lang, '', '_rtl');
56
-		$GLOBALS['spip_lang_right'] = $GLOBALS['spip_lang_rtl'] ? 'left' : 'right';
57
-		$GLOBALS['spip_lang_left'] = $GLOBALS['spip_lang_rtl'] ? 'right' : 'left';
58
-
59
-		return $GLOBALS['spip_lang'] = $lang;
60
-	} else {
61
-		return false;
62
-	}
40
+    $liste_langues = ',' . @$GLOBALS['meta']['langues_proposees']
41
+        . ',' . @$GLOBALS['meta']['langues_multilingue'] . ',';
42
+
43
+    // Si la langue demandee n'existe pas, on essaie d'autres variantes
44
+    // Exemple : 'pt-br' => 'pt_br' => 'pt'
45
+    $lang = str_replace('-', '_', trim($lang));
46
+    if (!$lang) {
47
+        return false;
48
+    }
49
+
50
+    if (strpos($liste_langues, ",$lang,") !== false
51
+        or ($lang = preg_replace(',_.*,', '', $lang)
52
+            and strpos($liste_langues, ",$lang,") !== false)
53
+    ) {
54
+
55
+        $GLOBALS['spip_lang_rtl'] = lang_dir($lang, '', '_rtl');
56
+        $GLOBALS['spip_lang_right'] = $GLOBALS['spip_lang_rtl'] ? 'left' : 'right';
57
+        $GLOBALS['spip_lang_left'] = $GLOBALS['spip_lang_rtl'] ? 'right' : 'left';
58
+
59
+        return $GLOBALS['spip_lang'] = $lang;
60
+    } else {
61
+        return false;
62
+    }
63 63
 }
64 64
 
65 65
 //
@@ -72,9 +72,9 @@  discard block
 block discarded – undo
72 72
 // par exemple le francais pour l'espagnol, l'anglais pour l'allemand, etc.
73 73
 
74 74
 function choisir_traduction($trads, $lang = '') {
75
-	$k = approcher_langue($trads, $lang);
75
+    $k = approcher_langue($trads, $lang);
76 76
 
77
-	return $k ? $trads[$k] : array_shift($trads);
77
+    return $k ? $trads[$k] : array_shift($trads);
78 78
 }
79 79
 
80 80
 // retourne son 2e argument si c'est un index du premier
@@ -82,21 +82,21 @@  discard block
 block discarded – undo
82 82
 // la langue X etant consideree comme une approche de X_Y
83 83
 function approcher_langue($trads, $lang = '') {
84 84
 
85
-	if (!$lang) {
86
-		$lang = $GLOBALS['spip_lang'];
87
-	}
88
-
89
-	if (isset($trads[$lang])) {
90
-		return $lang;
91
-	} // cas des langues xx_yy
92
-	else {
93
-		$r = explode('_', $lang);
94
-		if (isset($trads[$r[0]])) {
95
-			return $r[0];
96
-		}
97
-	}
98
-
99
-	return '';
85
+    if (!$lang) {
86
+        $lang = $GLOBALS['spip_lang'];
87
+    }
88
+
89
+    if (isset($trads[$lang])) {
90
+        return $lang;
91
+    } // cas des langues xx_yy
92
+    else {
93
+        $r = explode('_', $lang);
94
+        if (isset($trads[$r[0]])) {
95
+            return $r[0];
96
+        }
97
+    }
98
+
99
+    return '';
100 100
 }
101 101
 
102 102
 /**
@@ -111,10 +111,10 @@  discard block
 block discarded – undo
111 111
  *     Nom de la langue, sinon son code.
112 112
  **/
113 113
 function traduire_nom_langue($lang) {
114
-	include_spip('inc/lang_liste');
115
-	include_spip('inc/charsets');
114
+    include_spip('inc/lang_liste');
115
+    include_spip('inc/charsets');
116 116
 
117
-	return html2unicode(isset($GLOBALS['codes_langues'][$lang]) ? $GLOBALS['codes_langues'][$lang] : $lang);
117
+    return html2unicode(isset($GLOBALS['codes_langues'][$lang]) ? $GLOBALS['codes_langues'][$lang] : $lang);
118 118
 }
119 119
 
120 120
 //
@@ -128,10 +128,10 @@  discard block
 block discarded – undo
128 128
 // C'est utilise par #LANG_DIR, #LANG_LEFT, #LANG_RIGHT.
129 129
 // http://code.spip.net/@lang_dir
130 130
 function lang_dir($lang = '', $droitier = 'ltr', $gaucher = 'rtl') {
131
-	static $lang_rtl = array('ar', 'fa', 'ku', 'prs', 'ps', 'ur', 'he', 'heb', 'hbo', 'yi');
131
+    static $lang_rtl = array('ar', 'fa', 'ku', 'prs', 'ps', 'ur', 'he', 'heb', 'hbo', 'yi');
132 132
 
133
-	return in_array(($lang ? $lang : $GLOBALS['spip_lang']), $lang_rtl) ?
134
-		$gaucher : $droitier;
133
+    return in_array(($lang ? $lang : $GLOBALS['spip_lang']), $lang_rtl) ?
134
+        $gaucher : $droitier;
135 135
 }
136 136
 
137 137
 // typo francaise ou anglaise ?
@@ -141,31 +141,31 @@  discard block
 block discarded – undo
141 141
 
142 142
 // http://code.spip.net/@lang_typo
143 143
 function lang_typo($lang = '') {
144
-	if (!$lang) {
145
-		$lang = isset($GLOBALS['lang_objet'])
146
-			? $GLOBALS['lang_objet']
147
-			: $GLOBALS['spip_lang'];
148
-	}
149
-	if ($lang == 'eo'
150
-		or $lang == 'fr'
151
-		or strncmp($lang, 'fr_', 3) == 0
152
-		or $lang == 'cpf'
153
-	) {
154
-		return 'fr';
155
-	} else {
156
-		return 'en';
157
-	}
144
+    if (!$lang) {
145
+        $lang = isset($GLOBALS['lang_objet'])
146
+            ? $GLOBALS['lang_objet']
147
+            : $GLOBALS['spip_lang'];
148
+    }
149
+    if ($lang == 'eo'
150
+        or $lang == 'fr'
151
+        or strncmp($lang, 'fr_', 3) == 0
152
+        or $lang == 'cpf'
153
+    ) {
154
+        return 'fr';
155
+    } else {
156
+        return 'en';
157
+    }
158 158
 }
159 159
 
160 160
 // gestion de la globale $lang_objet pour que les textes soient affiches
161 161
 // avec les memes typo et direction dans l'espace prive que dans le public
162 162
 // http://code.spip.net/@changer_typo
163 163
 function changer_typo($lang = '') {
164
-	if ($lang) {
165
-		$GLOBALS['lang_objet'] = $lang;
166
-	} else {
167
-		unset($GLOBALS['lang_objet']);
168
-	}
164
+    if ($lang) {
165
+        $GLOBALS['lang_objet'] = $lang;
166
+    } else {
167
+        unset($GLOBALS['lang_objet']);
168
+    }
169 169
 }
170 170
 
171 171
 //
@@ -176,55 +176,55 @@  discard block
 block discarded – undo
176 176
 // 
177 177
 // http://code.spip.net/@menu_langues
178 178
 function menu_langues($nom_select, $default = '') {
179
-	include_spip('inc/actions');
180
-
181
-	$langues = liste_options_langues($nom_select);
182
-	$ret = "";
183
-	if (!count($langues)) {
184
-		return '';
185
-	}
186
-
187
-	if (!$default) {
188
-		$default = $GLOBALS['spip_lang'];
189
-	}
190
-	foreach ($langues as $l) {
191
-		$selected = ($l == $default) ? ' selected=\'selected\'' : '';
192
-		$ret .= "<option value='$l'$selected>[" . $l . "] " . traduire_nom_langue($l) . "</option>\n";
193
-	}
194
-
195
-	if (!test_espace_prive()) {
196
-		$cible = self();
197
-		$base = '';
198
-	} else {
199
-		$cible = self();
200
-		$base = spip_connect() ? 'base' : '';
201
-	}
202
-
203
-	$change = ' onchange="this.parentNode.parentNode.submit()"';
204
-
205
-	return generer_action_auteur('converser', $base, $cible,
206
-		(select_langues($nom_select, $change, $ret)
207
-			. "<noscript><div style='display:inline'><input type='submit' class='fondo' value='" . _T('bouton_changer') . "' /></div></noscript>"),
208
-		" method='post'");
179
+    include_spip('inc/actions');
180
+
181
+    $langues = liste_options_langues($nom_select);
182
+    $ret = "";
183
+    if (!count($langues)) {
184
+        return '';
185
+    }
186
+
187
+    if (!$default) {
188
+        $default = $GLOBALS['spip_lang'];
189
+    }
190
+    foreach ($langues as $l) {
191
+        $selected = ($l == $default) ? ' selected=\'selected\'' : '';
192
+        $ret .= "<option value='$l'$selected>[" . $l . "] " . traduire_nom_langue($l) . "</option>\n";
193
+    }
194
+
195
+    if (!test_espace_prive()) {
196
+        $cible = self();
197
+        $base = '';
198
+    } else {
199
+        $cible = self();
200
+        $base = spip_connect() ? 'base' : '';
201
+    }
202
+
203
+    $change = ' onchange="this.parentNode.parentNode.submit()"';
204
+
205
+    return generer_action_auteur('converser', $base, $cible,
206
+        (select_langues($nom_select, $change, $ret)
207
+            . "<noscript><div style='display:inline'><input type='submit' class='fondo' value='" . _T('bouton_changer') . "' /></div></noscript>"),
208
+        " method='post'");
209 209
 }
210 210
 
211 211
 // http://code.spip.net/@select_langues
212 212
 function select_langues($nom_select, $change, $options, $label = "") {
213
-	static $cpt = 0;
214
-	$id = "menu_langues" . $cpt++;
215
-
216
-	return
217
-		"<label for='$id'>" . ($label ? $label : _T('info_langues')) . "</label> " .
218
-		"<select name='$nom_select' id='$id' "
219
-		. ((!test_espace_prive()) ?
220
-			("class='forml menu_langues'") :
221
-			(($nom_select == 'var_lang_ecrire') ?
222
-				("class='lang_ecrire'") :
223
-				"class='fondl'"))
224
-		. $change
225
-		. ">\n"
226
-		. $options
227
-		. "</select>";
213
+    static $cpt = 0;
214
+    $id = "menu_langues" . $cpt++;
215
+
216
+    return
217
+        "<label for='$id'>" . ($label ? $label : _T('info_langues')) . "</label> " .
218
+        "<select name='$nom_select' id='$id' "
219
+        . ((!test_espace_prive()) ?
220
+            ("class='forml menu_langues'") :
221
+            (($nom_select == 'var_lang_ecrire') ?
222
+                ("class='lang_ecrire'") :
223
+                "class='fondl'"))
224
+        . $change
225
+        . ">\n"
226
+        . $options
227
+        . "</select>";
228 228
 }
229 229
 
230 230
 /**
@@ -246,34 +246,34 @@  discard block
 block discarded – undo
246 246
  */
247 247
 function liste_options_langues($nom_select) {
248 248
 
249
-	switch ($nom_select) {
250
-		# #MENU_LANG
251
-		case 'var_lang':
252
-			# menu de changement de la langue d'un article
253
-			# les langues selectionnees dans la configuration "multilinguisme"
254
-		case 'changer_lang':
255
-			$langues = explode(',', $GLOBALS['meta']['langues_multilingue']);
256
-			break;
257
-		# menu de l'interface (privee, installation et panneau de login)
258
-		# les langues presentes sous forme de fichiers de langue
259
-		# on force la relecture du repertoire des langues pour etre synchrone.
260
-		case 'var_lang_ecrire':
261
-		default:
262
-			$GLOBALS['meta']['langues_proposees'] = '';
263
-			init_langues();
264
-			$langues = explode(',', $GLOBALS['meta']['langues_proposees']);
265
-			break;
249
+    switch ($nom_select) {
250
+        # #MENU_LANG
251
+        case 'var_lang':
252
+            # menu de changement de la langue d'un article
253
+            # les langues selectionnees dans la configuration "multilinguisme"
254
+        case 'changer_lang':
255
+            $langues = explode(',', $GLOBALS['meta']['langues_multilingue']);
256
+            break;
257
+        # menu de l'interface (privee, installation et panneau de login)
258
+        # les langues presentes sous forme de fichiers de langue
259
+        # on force la relecture du repertoire des langues pour etre synchrone.
260
+        case 'var_lang_ecrire':
261
+        default:
262
+            $GLOBALS['meta']['langues_proposees'] = '';
263
+            init_langues();
264
+            $langues = explode(',', $GLOBALS['meta']['langues_proposees']);
265
+            break;
266 266
 
267 267
 # dernier choix possible : toutes les langues = langues_proposees 
268 268
 # + langues_multilingues ; mais, ne sert pas
269 269
 #			$langues = explode(',', $GLOBALS['all_langs']);
270
-	}
271
-	if (count($langues) <= 1) {
272
-		return array();
273
-	}
274
-	sort($langues);
270
+    }
271
+    if (count($langues) <= 1) {
272
+        return array();
273
+    }
274
+    sort($langues);
275 275
 
276
-	return $langues;
276
+    return $langues;
277 277
 }
278 278
 
279 279
 
@@ -288,38 +288,38 @@  discard block
 block discarded – undo
288 288
  **/
289 289
 function verifier_lang_url() {
290 290
 
291
-	// quelle langue est demandee ?
292
-	$lang_demandee = (test_espace_prive() ? $GLOBALS['spip_lang'] : $GLOBALS['meta']['langue_site']);
293
-	if (isset($_COOKIE['spip_lang_ecrire'])) {
294
-		$lang_demandee = $_COOKIE['spip_lang_ecrire'];
295
-	}
296
-	if (!test_espace_prive() and isset($_COOKIE['spip_lang'])) {
297
-		$lang_demandee = $_COOKIE['spip_lang'];
298
-	}
299
-	if (isset($_GET['lang'])) {
300
-		$lang_demandee = $_GET['lang'];
301
-	}
302
-
303
-	// Renvoyer si besoin (et si la langue demandee existe)
304
-	if ($GLOBALS['spip_lang'] != $lang_demandee
305
-		and changer_langue($lang_demandee)
306
-		and $lang_demandee != @$_GET['lang']
307
-	) {
308
-		$destination = parametre_url(self(), 'lang', $lang_demandee, '&');
309
-		// ici on a besoin des var_truc
310
-		foreach ($_GET as $var => $val) {
311
-			if (!strncmp('var_', $var, 4)) {
312
-				$destination = parametre_url($destination, $var, $val, '&');
313
-			}
314
-		}
315
-		include_spip('inc/headers');
316
-		redirige_par_entete($destination);
317
-	}
318
-
319
-	// Subtilite : si la langue demandee par cookie est la bonne
320
-	// alors on fait comme si $lang etait passee dans l'URL
321
-	// (pour criteres {lang}).
322
-	$GLOBALS['lang'] = $_GET['lang'] = $GLOBALS['spip_lang'];
291
+    // quelle langue est demandee ?
292
+    $lang_demandee = (test_espace_prive() ? $GLOBALS['spip_lang'] : $GLOBALS['meta']['langue_site']);
293
+    if (isset($_COOKIE['spip_lang_ecrire'])) {
294
+        $lang_demandee = $_COOKIE['spip_lang_ecrire'];
295
+    }
296
+    if (!test_espace_prive() and isset($_COOKIE['spip_lang'])) {
297
+        $lang_demandee = $_COOKIE['spip_lang'];
298
+    }
299
+    if (isset($_GET['lang'])) {
300
+        $lang_demandee = $_GET['lang'];
301
+    }
302
+
303
+    // Renvoyer si besoin (et si la langue demandee existe)
304
+    if ($GLOBALS['spip_lang'] != $lang_demandee
305
+        and changer_langue($lang_demandee)
306
+        and $lang_demandee != @$_GET['lang']
307
+    ) {
308
+        $destination = parametre_url(self(), 'lang', $lang_demandee, '&');
309
+        // ici on a besoin des var_truc
310
+        foreach ($_GET as $var => $val) {
311
+            if (!strncmp('var_', $var, 4)) {
312
+                $destination = parametre_url($destination, $var, $val, '&');
313
+            }
314
+        }
315
+        include_spip('inc/headers');
316
+        redirige_par_entete($destination);
317
+    }
318
+
319
+    // Subtilite : si la langue demandee par cookie est la bonne
320
+    // alors on fait comme si $lang etait passee dans l'URL
321
+    // (pour criteres {lang}).
322
+    $GLOBALS['lang'] = $_GET['lang'] = $GLOBALS['spip_lang'];
323 323
 }
324 324
 
325 325
 
@@ -335,21 +335,21 @@  discard block
 block discarded – undo
335 335
  *     La langue sélectionnée
336 336
  **/
337 337
 function utiliser_langue_site() {
338
-	// s'il existe une langue du site (en gros tout le temps en théorie)
339
-	if (isset($GLOBALS['meta']['langue_site'])
340
-		// et si spip_langue est pas encore définie (ce que va faire changer_langue())
341
-		// ou qu'elle n'est pas identique à la langue du site
342
-		and (!isset($GLOBALS['spip_lang'])
343
-			or $GLOBALS['spip_lang'] != $GLOBALS['meta']['langue_site'])
344
-	) {
345
-		return changer_langue($GLOBALS['meta']['langue_site']);//@:install
346
-	}
347
-	// en theorie là, la globale est définie, sinon c'est un problème.
348
-	if (!isset($GLOBALS['spip_lang'])) {
349
-		spip_log("La globale spip_lang est indéfinie dans utiliser_langue_site() !", _LOG_ERREUR);
350
-	}
351
-
352
-	return $GLOBALS['spip_lang'];
338
+    // s'il existe une langue du site (en gros tout le temps en théorie)
339
+    if (isset($GLOBALS['meta']['langue_site'])
340
+        // et si spip_langue est pas encore définie (ce que va faire changer_langue())
341
+        // ou qu'elle n'est pas identique à la langue du site
342
+        and (!isset($GLOBALS['spip_lang'])
343
+            or $GLOBALS['spip_lang'] != $GLOBALS['meta']['langue_site'])
344
+    ) {
345
+        return changer_langue($GLOBALS['meta']['langue_site']);//@:install
346
+    }
347
+    // en theorie là, la globale est définie, sinon c'est un problème.
348
+    if (!isset($GLOBALS['spip_lang'])) {
349
+        spip_log("La globale spip_lang est indéfinie dans utiliser_langue_site() !", _LOG_ERREUR);
350
+    }
351
+
352
+    return $GLOBALS['spip_lang'];
353 353
 }
354 354
 
355 355
 /**
@@ -366,30 +366,30 @@  discard block
 block discarded – undo
366 366
  **/
367 367
 function utiliser_langue_visiteur() {
368 368
 
369
-	$l = (!test_espace_prive() ? 'spip_lang' : 'spip_lang_ecrire');
370
-	if (isset($_COOKIE[$l])) {
371
-		if (changer_langue($l = $_COOKIE[$l])) {
372
-			return $l;
373
-		}
374
-	}
375
-
376
-	if (isset($GLOBALS['visiteur_session']['lang'])) {
377
-		if (changer_langue($l = $GLOBALS['visiteur_session']['lang'])) {
378
-			return $l;
379
-		}
380
-	}
381
-
382
-	if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
383
-		foreach (explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']) as $s) {
384
-			if (preg_match('#^([a-z]{2,3})(-[a-z]{2,3})?(;q=[0-9.]+)?$#i', trim($s), $r)) {
385
-				if (changer_langue($l = strtolower($r[1]))) {
386
-					return $l;
387
-				}
388
-			}
389
-		}
390
-	}
391
-
392
-	return utiliser_langue_site();
369
+    $l = (!test_espace_prive() ? 'spip_lang' : 'spip_lang_ecrire');
370
+    if (isset($_COOKIE[$l])) {
371
+        if (changer_langue($l = $_COOKIE[$l])) {
372
+            return $l;
373
+        }
374
+    }
375
+
376
+    if (isset($GLOBALS['visiteur_session']['lang'])) {
377
+        if (changer_langue($l = $GLOBALS['visiteur_session']['lang'])) {
378
+            return $l;
379
+        }
380
+    }
381
+
382
+    if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
383
+        foreach (explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']) as $s) {
384
+            if (preg_match('#^([a-z]{2,3})(-[a-z]{2,3})?(;q=[0-9.]+)?$#i', trim($s), $r)) {
385
+                if (changer_langue($l = strtolower($r[1]))) {
386
+                    return $l;
387
+                }
388
+            }
389
+        }
390
+    }
391
+
392
+    return utiliser_langue_site();
393 393
 }
394 394
 
395 395
 
@@ -399,7 +399,7 @@  discard block
 block discarded – undo
399 399
  * @return int
400 400
  */
401 401
 function match_langue($chaine) {
402
-	return preg_match('/^[a-z]{2,3}(_[a-z]{2,3}){0,2}$/', $chaine);
402
+    return preg_match('/^[a-z]{2,3}(_[a-z]{2,3}){0,2}$/', $chaine);
403 403
 }
404 404
 
405 405
 /**
@@ -417,36 +417,36 @@  discard block
 block discarded – undo
417 417
  **/
418 418
 function init_langues() {
419 419
 
420
-	// liste des langues dans les meta, sauf a l'install
421
-	$all_langs = @$GLOBALS['meta']['langues_proposees'];
422
-
423
-	$tout = array();
424
-	if (!$all_langs) {
425
-		// trouver tous les modules lang/spip_xx.php
426
-		$modules = find_all_in_path("lang/", "/spip_([a-z_]+)\.php$");
427
-		foreach ($modules as $name => $path) {
428
-			if (preg_match(',^spip_([a-z_]+)\.php$,', $name, $regs)) {
429
-				if (match_langue($regs[1])) {
430
-					$tout[] = $regs[1];
431
-				}
432
-			}
433
-		}
434
-		sort($tout);
435
-		$tout = join(',', $tout);
436
-		// Si les langues n'ont pas change, ne rien faire
437
-		if ($tout != $all_langs) {
438
-			$GLOBALS['meta']['langues_proposees'] = $tout;
439
-			include_spip('inc/meta');
440
-			ecrire_meta('langues_proposees', $tout);
441
-		}
442
-	}
443
-	if (!isset($GLOBALS['meta']['langue_site'])) {
444
-		// Initialisation : le francais si dispo, sinon la premiere langue trouvee
445
-		$GLOBALS['meta']['langue_site'] = $tout =
446
-			(!$all_langs or (strpos(',' . _LANGUE_PAR_DEFAUT . ',', ",$all_langs,") !== false))
447
-				? _LANGUE_PAR_DEFAUT : substr($all_langs, 0, strpos($all_langs, ','));
448
-		ecrire_meta('langue_site', $tout);
449
-	}
420
+    // liste des langues dans les meta, sauf a l'install
421
+    $all_langs = @$GLOBALS['meta']['langues_proposees'];
422
+
423
+    $tout = array();
424
+    if (!$all_langs) {
425
+        // trouver tous les modules lang/spip_xx.php
426
+        $modules = find_all_in_path("lang/", "/spip_([a-z_]+)\.php$");
427
+        foreach ($modules as $name => $path) {
428
+            if (preg_match(',^spip_([a-z_]+)\.php$,', $name, $regs)) {
429
+                if (match_langue($regs[1])) {
430
+                    $tout[] = $regs[1];
431
+                }
432
+            }
433
+        }
434
+        sort($tout);
435
+        $tout = join(',', $tout);
436
+        // Si les langues n'ont pas change, ne rien faire
437
+        if ($tout != $all_langs) {
438
+            $GLOBALS['meta']['langues_proposees'] = $tout;
439
+            include_spip('inc/meta');
440
+            ecrire_meta('langues_proposees', $tout);
441
+        }
442
+    }
443
+    if (!isset($GLOBALS['meta']['langue_site'])) {
444
+        // Initialisation : le francais si dispo, sinon la premiere langue trouvee
445
+        $GLOBALS['meta']['langue_site'] = $tout =
446
+            (!$all_langs or (strpos(',' . _LANGUE_PAR_DEFAUT . ',', ",$all_langs,") !== false))
447
+                ? _LANGUE_PAR_DEFAUT : substr($all_langs, 0, strpos($all_langs, ','));
448
+        ecrire_meta('langue_site', $tout);
449
+    }
450 450
 }
451 451
 
452 452
 /**
@@ -460,10 +460,10 @@  discard block
 block discarded – undo
460 460
  *     Code html de la balise <html>
461 461
  **/
462 462
 function html_lang_attributes() {
463
-	$lang = $GLOBALS['spip_lang'];
464
-	$dir = ($GLOBALS['spip_lang_rtl'] ? 'rtl' : 'ltr');
463
+    $lang = $GLOBALS['spip_lang'];
464
+    $dir = ($GLOBALS['spip_lang_rtl'] ? 'rtl' : 'ltr');
465 465
 
466
-	return "<html class='$dir $lang no-js' xmlns='http://www.w3.org/1999/xhtml' lang='$lang' dir='$dir'>\n";
466
+    return "<html class='$dir $lang no-js' xmlns='http://www.w3.org/1999/xhtml' lang='$lang' dir='$dir'>\n";
467 467
 }
468 468
 
469 469
 
@@ -477,7 +477,7 @@  discard block
 block discarded – undo
477 477
  * @return string
478 478
  */
479 479
 function aide_lang_dir($spip_lang, $spip_lang_rtl) {
480
-	return ($spip_lang <> 'he') ? $spip_lang_rtl : '';
480
+    return ($spip_lang <> 'he') ? $spip_lang_rtl : '';
481 481
 }
482 482
 
483 483
 
Please login to merge, or discard this patch.
Spacing   +10 added lines, -12 removed lines patch added patch discarded remove patch
@@ -37,8 +37,8 @@  discard block
 block discarded – undo
37 37
  **/
38 38
 function changer_langue($lang) {
39 39
 
40
-	$liste_langues = ',' . @$GLOBALS['meta']['langues_proposees']
41
-		. ',' . @$GLOBALS['meta']['langues_multilingue'] . ',';
40
+	$liste_langues = ','.@$GLOBALS['meta']['langues_proposees']
41
+		. ','.@$GLOBALS['meta']['langues_multilingue'].',';
42 42
 
43 43
 	// Si la langue demandee n'existe pas, on essaie d'autres variantes
44 44
 	// Exemple : 'pt-br' => 'pt_br' => 'pt'
@@ -189,7 +189,7 @@  discard block
 block discarded – undo
189 189
 	}
190 190
 	foreach ($langues as $l) {
191 191
 		$selected = ($l == $default) ? ' selected=\'selected\'' : '';
192
-		$ret .= "<option value='$l'$selected>[" . $l . "] " . traduire_nom_langue($l) . "</option>\n";
192
+		$ret .= "<option value='$l'$selected>[".$l."] ".traduire_nom_langue($l)."</option>\n";
193 193
 	}
194 194
 
195 195
 	if (!test_espace_prive()) {
@@ -204,23 +204,21 @@  discard block
 block discarded – undo
204 204
 
205 205
 	return generer_action_auteur('converser', $base, $cible,
206 206
 		(select_langues($nom_select, $change, $ret)
207
-			. "<noscript><div style='display:inline'><input type='submit' class='fondo' value='" . _T('bouton_changer') . "' /></div></noscript>"),
207
+			. "<noscript><div style='display:inline'><input type='submit' class='fondo' value='"._T('bouton_changer')."' /></div></noscript>"),
208 208
 		" method='post'");
209 209
 }
210 210
 
211 211
 // http://code.spip.net/@select_langues
212 212
 function select_langues($nom_select, $change, $options, $label = "") {
213 213
 	static $cpt = 0;
214
-	$id = "menu_langues" . $cpt++;
214
+	$id = "menu_langues".$cpt++;
215 215
 
216 216
 	return
217
-		"<label for='$id'>" . ($label ? $label : _T('info_langues')) . "</label> " .
217
+		"<label for='$id'>".($label ? $label : _T('info_langues'))."</label> ".
218 218
 		"<select name='$nom_select' id='$id' "
219 219
 		. ((!test_espace_prive()) ?
220
-			("class='forml menu_langues'") :
221
-			(($nom_select == 'var_lang_ecrire') ?
222
-				("class='lang_ecrire'") :
223
-				"class='fondl'"))
220
+			("class='forml menu_langues'") : (($nom_select == 'var_lang_ecrire') ?
221
+				("class='lang_ecrire'") : "class='fondl'"))
224 222
 		. $change
225 223
 		. ">\n"
226 224
 		. $options
@@ -342,7 +340,7 @@  discard block
 block discarded – undo
342 340
 		and (!isset($GLOBALS['spip_lang'])
343 341
 			or $GLOBALS['spip_lang'] != $GLOBALS['meta']['langue_site'])
344 342
 	) {
345
-		return changer_langue($GLOBALS['meta']['langue_site']);//@:install
343
+		return changer_langue($GLOBALS['meta']['langue_site']); //@:install
346 344
 	}
347 345
 	// en theorie là, la globale est définie, sinon c'est un problème.
348 346
 	if (!isset($GLOBALS['spip_lang'])) {
@@ -443,7 +441,7 @@  discard block
 block discarded – undo
443 441
 	if (!isset($GLOBALS['meta']['langue_site'])) {
444 442
 		// Initialisation : le francais si dispo, sinon la premiere langue trouvee
445 443
 		$GLOBALS['meta']['langue_site'] = $tout =
446
-			(!$all_langs or (strpos(',' . _LANGUE_PAR_DEFAUT . ',', ",$all_langs,") !== false))
444
+			(!$all_langs or (strpos(','._LANGUE_PAR_DEFAUT.',', ",$all_langs,") !== false))
447 445
 				? _LANGUE_PAR_DEFAUT : substr($all_langs, 0, strpos($all_langs, ','));
448 446
 		ecrire_meta('langue_site', $tout);
449 447
 	}
Please login to merge, or discard this patch.
ecrire/inc/queue.php 4 patches
Doc Comments   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -32,7 +32,7 @@  discard block
 block discarded – undo
32 32
  *
33 33
  * @param $function
34 34
  *   The function name to call.
35
- * @param $description
35
+ * @param string $description
36 36
  *   A human-readable description of the queued job.
37 37
  * @param $arguments
38 38
  *   Optional array of arguments to pass to the function.
@@ -162,7 +162,7 @@  discard block
 block discarded – undo
162 162
  *
163 163
  * @param int $id_job
164 164
  *  id de la tache a retirer
165
- * @return bool
165
+ * @return boolean|string
166 166
  */
167 167
 function queue_remove_job($id_job) {
168 168
 	include_spip('base/abstract_sql');
@@ -466,7 +466,7 @@  discard block
 block discarded – undo
466 466
  *     Nom de la fonction de tâche
467 467
  * @param string $inclure
468 468
  *     Nom de l'inclusion contenant la fonction
469
- * @return bool|int
469
+ * @return integer
470 470
  *     Périodicité de la tâche en secondes, si tâche périodique, sinon false.
471 471
  */
472 472
 function queue_is_cron_job($function, $inclure) {
Please login to merge, or discard this patch.
Braces   +3 added lines, -1 removed lines patch added patch discarded remove patch
@@ -429,9 +429,11 @@
 block discarded – undo
429 429
 	if ($periode = queue_is_cron_job($row['fonction'], $row['inclure'])) {
430 430
 		// relancer avec les nouveaux arguments de temps
431 431
 		include_spip('inc/genie');
432
-		if ($result < 0) // relancer tout de suite, mais en baissant la priorite
432
+		if ($result < 0) {
433
+		    // relancer tout de suite, mais en baissant la priorite
433 434
 		{
434 435
 			queue_genie_replan_job($row['fonction'], $periode, 0 - $result, null, $row['priorite'] - 1);
436
+		}
435 437
 		} else // relancer avec la periode prevue
436 438
 		{
437 439
 			queue_genie_replan_job($row['fonction'], $periode, $time);
Please login to merge, or discard this patch.
Indentation   +486 added lines, -486 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Core\Queue
17 17
  **/
18 18
 if (!defined("_ECRIRE_INC_VERSION")) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 define('_JQ_SCHEDULED', 1);
@@ -50,98 +50,98 @@  discard block
 block discarded – undo
50 50
  *  id of job
51 51
  */
52 52
 function queue_add_job(
53
-	$function,
54
-	$description,
55
-	$arguments = array(),
56
-	$file = '',
57
-	$no_duplicate = false,
58
-	$time = 0,
59
-	$priority = 0
53
+    $function,
54
+    $description,
55
+    $arguments = array(),
56
+    $file = '',
57
+    $no_duplicate = false,
58
+    $time = 0,
59
+    $priority = 0
60 60
 ) {
61
-	include_spip('base/abstract_sql');
62
-
63
-	// cas pourri de ecrire/action/editer_site avec l'option reload=oui
64
-	if (defined('_GENIE_SYNDIC_NOW')) {
65
-		$arguments['id_syndic'] = _GENIE_SYNDIC_NOW;
66
-	}
67
-
68
-	// serialiser les arguments
69
-	$arguments = serialize($arguments);
70
-	$md5args = md5($arguments);
71
-
72
-	// si pas de date programee, des que possible
73
-	$duplicate_where = 'status=' . intval(_JQ_SCHEDULED) . ' AND ';
74
-	if (!$time) {
75
-		$time = time();
76
-		$duplicate_where = ""; // ne pas dupliquer si deja le meme job en cours d'execution
77
-	}
78
-	$date = date('Y-m-d H:i:s', $time);
79
-
80
-	$set_job = array(
81
-		'fonction' => $function,
82
-		'descriptif' => $description,
83
-		'args' => $arguments,
84
-		'md5args' => $md5args,
85
-		'inclure' => $file,
86
-		'priorite' => max(-10, min(10, intval($priority))),
87
-		'date' => $date,
88
-		'status' => _JQ_SCHEDULED,
89
-	);
90
-	// si option ne pas dupliquer, regarder si la fonction existe deja
91
-	// avec les memes args et file
92
-	if (
93
-		$no_duplicate
94
-		and
95
-		$id_job = sql_getfetsel('id_job', 'spip_jobs',
96
-			$duplicate_where =
97
-				$duplicate_where . 'fonction=' . sql_quote($function)
98
-				. (($no_duplicate === 'function_only') ? '' :
99
-					' AND md5args=' . sql_quote($md5args) . ' AND inclure=' . sql_quote($file)))
100
-	) {
101
-		return $id_job;
102
-	}
103
-
104
-	$id_job = sql_insertq('spip_jobs', $set_job);
105
-	// en cas de concurrence, deux process peuvent arriver jusqu'ici en parallele
106
-	// avec le meme job unique a inserer. Dans ce cas, celui qui a eu l'id le plus grand
107
-	// doit s'effacer
108
-	if (
109
-		$no_duplicate
110
-		and
111
-		$id_prev = sql_getfetsel('id_job', 'spip_jobs', "id_job<" . intval($id_job) . " AND $duplicate_where")
112
-	) {
113
-		sql_delete('spip_jobs', 'id_job=' . intval($id_job));
114
-
115
-		return $id_prev;
116
-	}
117
-
118
-	// verifier la non duplication qui peut etre problematique en cas de concurence
119
-	// il faut dans ce cas que seul le dernier ajoute se supprime !
120
-
121
-	// une option de debug pour verifier que les arguments en base sont bons
122
-	// ie cas d'un char non acceptables sur certains type de champs
123
-	// qui coupe la valeur
124
-	if (defined('_JQ_INSERT_CHECK_ARGS') and $id_job) {
125
-		$args = sql_getfetsel('args', 'spip_jobs', 'id_job=' . intval($id_job));
126
-		if ($args !== $arguments) {
127
-			spip_log('arguments job errones / longueur ' . strlen($args) . " vs " . strlen($arguments) . ' / valeur : ' . var_export($arguments,
128
-					true), 'queue');
129
-		}
130
-	}
131
-
132
-	if ($id_job) {
133
-		queue_update_next_job_time($time);
134
-	}
135
-	// si la mise en file d'attente du job echoue,
136
-	// il ne faut pas perdre l'execution de la fonction
137
-	// on la lance immediatement, c'est un fallback
138
-	// sauf en cas d'upgrade necessaire (table spip_jobs inexistante)
139
-	elseif ($GLOBALS['meta']['version_installee'] == $GLOBALS['spip_version_base']) {
140
-		$set_job['id_job'] = 0;
141
-		queue_start_job($set_job);
142
-	}
143
-
144
-	return $id_job;
61
+    include_spip('base/abstract_sql');
62
+
63
+    // cas pourri de ecrire/action/editer_site avec l'option reload=oui
64
+    if (defined('_GENIE_SYNDIC_NOW')) {
65
+        $arguments['id_syndic'] = _GENIE_SYNDIC_NOW;
66
+    }
67
+
68
+    // serialiser les arguments
69
+    $arguments = serialize($arguments);
70
+    $md5args = md5($arguments);
71
+
72
+    // si pas de date programee, des que possible
73
+    $duplicate_where = 'status=' . intval(_JQ_SCHEDULED) . ' AND ';
74
+    if (!$time) {
75
+        $time = time();
76
+        $duplicate_where = ""; // ne pas dupliquer si deja le meme job en cours d'execution
77
+    }
78
+    $date = date('Y-m-d H:i:s', $time);
79
+
80
+    $set_job = array(
81
+        'fonction' => $function,
82
+        'descriptif' => $description,
83
+        'args' => $arguments,
84
+        'md5args' => $md5args,
85
+        'inclure' => $file,
86
+        'priorite' => max(-10, min(10, intval($priority))),
87
+        'date' => $date,
88
+        'status' => _JQ_SCHEDULED,
89
+    );
90
+    // si option ne pas dupliquer, regarder si la fonction existe deja
91
+    // avec les memes args et file
92
+    if (
93
+        $no_duplicate
94
+        and
95
+        $id_job = sql_getfetsel('id_job', 'spip_jobs',
96
+            $duplicate_where =
97
+                $duplicate_where . 'fonction=' . sql_quote($function)
98
+                . (($no_duplicate === 'function_only') ? '' :
99
+                    ' AND md5args=' . sql_quote($md5args) . ' AND inclure=' . sql_quote($file)))
100
+    ) {
101
+        return $id_job;
102
+    }
103
+
104
+    $id_job = sql_insertq('spip_jobs', $set_job);
105
+    // en cas de concurrence, deux process peuvent arriver jusqu'ici en parallele
106
+    // avec le meme job unique a inserer. Dans ce cas, celui qui a eu l'id le plus grand
107
+    // doit s'effacer
108
+    if (
109
+        $no_duplicate
110
+        and
111
+        $id_prev = sql_getfetsel('id_job', 'spip_jobs', "id_job<" . intval($id_job) . " AND $duplicate_where")
112
+    ) {
113
+        sql_delete('spip_jobs', 'id_job=' . intval($id_job));
114
+
115
+        return $id_prev;
116
+    }
117
+
118
+    // verifier la non duplication qui peut etre problematique en cas de concurence
119
+    // il faut dans ce cas que seul le dernier ajoute se supprime !
120
+
121
+    // une option de debug pour verifier que les arguments en base sont bons
122
+    // ie cas d'un char non acceptables sur certains type de champs
123
+    // qui coupe la valeur
124
+    if (defined('_JQ_INSERT_CHECK_ARGS') and $id_job) {
125
+        $args = sql_getfetsel('args', 'spip_jobs', 'id_job=' . intval($id_job));
126
+        if ($args !== $arguments) {
127
+            spip_log('arguments job errones / longueur ' . strlen($args) . " vs " . strlen($arguments) . ' / valeur : ' . var_export($arguments,
128
+                    true), 'queue');
129
+        }
130
+    }
131
+
132
+    if ($id_job) {
133
+        queue_update_next_job_time($time);
134
+    }
135
+    // si la mise en file d'attente du job echoue,
136
+    // il ne faut pas perdre l'execution de la fonction
137
+    // on la lance immediatement, c'est un fallback
138
+    // sauf en cas d'upgrade necessaire (table spip_jobs inexistante)
139
+    elseif ($GLOBALS['meta']['version_installee'] == $GLOBALS['spip_version_base']) {
140
+        $set_job['id_job'] = 0;
141
+        queue_start_job($set_job);
142
+    }
143
+
144
+    return $id_job;
145 145
 }
146 146
 
147 147
 /**
@@ -150,11 +150,11 @@  discard block
 block discarded – undo
150 150
  * @return void
151 151
  */
152 152
 function queue_purger() {
153
-	include_spip('base/abstract_sql');
154
-	sql_delete('spip_jobs');
155
-	sql_delete("spip_jobs_liens", "id_job NOT IN (" . sql_get_select("id_job", "spip_jobs") . ")");
156
-	include_spip('inc/genie');
157
-	genie_queue_watch_dist();
153
+    include_spip('base/abstract_sql');
154
+    sql_delete('spip_jobs');
155
+    sql_delete("spip_jobs_liens", "id_job NOT IN (" . sql_get_select("id_job", "spip_jobs") . ")");
156
+    include_spip('inc/genie');
157
+    genie_queue_watch_dist();
158 158
 }
159 159
 
160 160
 /**
@@ -165,23 +165,23 @@  discard block
 block discarded – undo
165 165
  * @return bool
166 166
  */
167 167
 function queue_remove_job($id_job) {
168
-	include_spip('base/abstract_sql');
169
-
170
-	if ($row = sql_fetsel('fonction,inclure,date', 'spip_jobs', 'id_job=' . intval($id_job))
171
-		and $res = sql_delete('spip_jobs', 'id_job=' . intval($id_job))
172
-	) {
173
-		queue_unlink_job($id_job);
174
-		// est-ce une tache cron qu'il faut relancer ?
175
-		if ($periode = queue_is_cron_job($row['fonction'], $row['inclure'])) {
176
-			// relancer avec les nouveaux arguments de temps
177
-			include_spip('inc/genie');
178
-			// relancer avec la periode prevue
179
-			queue_genie_replan_job($row['fonction'], $periode, strtotime($row['date']));
180
-		}
181
-		queue_update_next_job_time();
182
-	}
183
-
184
-	return $res;
168
+    include_spip('base/abstract_sql');
169
+
170
+    if ($row = sql_fetsel('fonction,inclure,date', 'spip_jobs', 'id_job=' . intval($id_job))
171
+        and $res = sql_delete('spip_jobs', 'id_job=' . intval($id_job))
172
+    ) {
173
+        queue_unlink_job($id_job);
174
+        // est-ce une tache cron qu'il faut relancer ?
175
+        if ($periode = queue_is_cron_job($row['fonction'], $row['inclure'])) {
176
+            // relancer avec les nouveaux arguments de temps
177
+            include_spip('inc/genie');
178
+            // relancer avec la periode prevue
179
+            queue_genie_replan_job($row['fonction'], $periode, strtotime($row['date']));
180
+        }
181
+        queue_update_next_job_time();
182
+    }
183
+
184
+    return $res;
185 185
 }
186 186
 
187 187
 /**
@@ -194,18 +194,18 @@  discard block
 block discarded – undo
194 194
  *  ou un tableau composé de tableaux simples pour lieur plusieurs objets en une fois
195 195
  */
196 196
 function queue_link_job($id_job, $objets) {
197
-	include_spip('base/abstract_sql');
198
-
199
-	if (is_array($objets) and count($objets)) {
200
-		if (is_array(reset($objets))) {
201
-			foreach ($objets as $k => $o) {
202
-				$objets[$k]['id_job'] = $id_job;
203
-			}
204
-			sql_insertq_multi('spip_jobs_liens', $objets);
205
-		} else {
206
-			sql_insertq('spip_jobs_liens', array_merge(array('id_job' => $id_job), $objets));
207
-		}
208
-	}
197
+    include_spip('base/abstract_sql');
198
+
199
+    if (is_array($objets) and count($objets)) {
200
+        if (is_array(reset($objets))) {
201
+            foreach ($objets as $k => $o) {
202
+                $objets[$k]['id_job'] = $id_job;
203
+            }
204
+            sql_insertq_multi('spip_jobs_liens', $objets);
205
+        } else {
206
+            sql_insertq('spip_jobs_liens', array_merge(array('id_job' => $id_job), $objets));
207
+        }
208
+    }
209 209
 }
210 210
 
211 211
 /**
@@ -217,7 +217,7 @@  discard block
 block discarded – undo
217 217
  *  resultat du sql_delete
218 218
  */
219 219
 function queue_unlink_job($id_job) {
220
-	return sql_delete("spip_jobs_liens", "id_job=" . intval($id_job));
220
+    return sql_delete("spip_jobs_liens", "id_job=" . intval($id_job));
221 221
 }
222 222
 
223 223
 /**
@@ -230,74 +230,74 @@  discard block
 block discarded – undo
230 230
  */
231 231
 function queue_start_job($row) {
232 232
 
233
-	// deserialiser les arguments
234
-	$args = unserialize($row['args']);
235
-	if ($args === false) {
236
-		spip_log('arguments job errones ' . var_export($row, true), 'queue');
237
-		$args = array();
238
-	}
239
-
240
-	$fonction = $row['fonction'];
241
-	if (strlen($inclure = trim($row['inclure']))) {
242
-		if (substr($inclure, -1) == '/') { // c'est un chemin pour charger_fonction
243
-			$f = charger_fonction($fonction, rtrim($inclure, '/'), false);
244
-			if ($f) {
245
-				$fonction = $f;
246
-			}
247
-		} else {
248
-			include_spip($inclure);
249
-		}
250
-	}
251
-
252
-	if (!function_exists($fonction)) {
253
-		spip_log("fonction $fonction ($inclure) inexistante " . var_export($row, true), 'queue');
254
-
255
-		return false;
256
-	}
257
-
258
-	spip_log("queue [" . $row['id_job'] . "]: $fonction() start", 'queue');
259
-	switch (count($args)) {
260
-		case 0:
261
-			$res = $fonction();
262
-			break;
263
-		case 1:
264
-			$res = $fonction($args[0]);
265
-			break;
266
-		case 2:
267
-			$res = $fonction($args[0], $args[1]);
268
-			break;
269
-		case 3:
270
-			$res = $fonction($args[0], $args[1], $args[2]);
271
-			break;
272
-		case 4:
273
-			$res = $fonction($args[0], $args[1], $args[2], $args[3]);
274
-			break;
275
-		case 5:
276
-			$res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4]);
277
-			break;
278
-		case 6:
279
-			$res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4], $args[5]);
280
-			break;
281
-		case 7:
282
-			$res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6]);
283
-			break;
284
-		case 8:
285
-			$res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7]);
286
-			break;
287
-		case 9:
288
-			$res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8]);
289
-			break;
290
-		case 10:
291
-			$res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8],
292
-				$args[9]);
293
-			break;
294
-		default:
295
-			# plus lent mais completement generique
296
-			$res = call_user_func_array($fonction, $args);
297
-	}
298
-	spip_log("queue [" . $row['id_job'] . "]: $fonction() end", 'queue');
299
-
300
-	return $res;
233
+    // deserialiser les arguments
234
+    $args = unserialize($row['args']);
235
+    if ($args === false) {
236
+        spip_log('arguments job errones ' . var_export($row, true), 'queue');
237
+        $args = array();
238
+    }
239
+
240
+    $fonction = $row['fonction'];
241
+    if (strlen($inclure = trim($row['inclure']))) {
242
+        if (substr($inclure, -1) == '/') { // c'est un chemin pour charger_fonction
243
+            $f = charger_fonction($fonction, rtrim($inclure, '/'), false);
244
+            if ($f) {
245
+                $fonction = $f;
246
+            }
247
+        } else {
248
+            include_spip($inclure);
249
+        }
250
+    }
251
+
252
+    if (!function_exists($fonction)) {
253
+        spip_log("fonction $fonction ($inclure) inexistante " . var_export($row, true), 'queue');
254
+
255
+        return false;
256
+    }
257
+
258
+    spip_log("queue [" . $row['id_job'] . "]: $fonction() start", 'queue');
259
+    switch (count($args)) {
260
+        case 0:
261
+            $res = $fonction();
262
+            break;
263
+        case 1:
264
+            $res = $fonction($args[0]);
265
+            break;
266
+        case 2:
267
+            $res = $fonction($args[0], $args[1]);
268
+            break;
269
+        case 3:
270
+            $res = $fonction($args[0], $args[1], $args[2]);
271
+            break;
272
+        case 4:
273
+            $res = $fonction($args[0], $args[1], $args[2], $args[3]);
274
+            break;
275
+        case 5:
276
+            $res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4]);
277
+            break;
278
+        case 6:
279
+            $res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4], $args[5]);
280
+            break;
281
+        case 7:
282
+            $res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6]);
283
+            break;
284
+        case 8:
285
+            $res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7]);
286
+            break;
287
+        case 9:
288
+            $res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8]);
289
+            break;
290
+        case 10:
291
+            $res = $fonction($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8],
292
+                $args[9]);
293
+            break;
294
+        default:
295
+            # plus lent mais completement generique
296
+            $res = call_user_func_array($fonction, $args);
297
+    }
298
+    spip_log("queue [" . $row['id_job'] . "]: $fonction() end", 'queue');
299
+
300
+    return $res;
301 301
 
302 302
 }
303 303
 
@@ -325,89 +325,89 @@  discard block
 block discarded – undo
325 325
  *     - true : une planification a été faite.
326 326
  */
327 327
 function queue_schedule($force_jobs = null) {
328
-	$time = time();
329
-	if (defined('_DEBUG_BLOCK_QUEUE')) {
330
-		spip_log("_DEBUG_BLOCK_QUEUE : schedule stop", 'jq' . _LOG_DEBUG);
331
-
332
-		return;
333
-	}
334
-
335
-	// rien a faire si le prochain job est encore dans le futur
336
-	if (queue_sleep_time_to_next_job() > 0 and (!$force_jobs or !count($force_jobs))) {
337
-		spip_log("queue_sleep_time_to_next_job", 'jq' . _LOG_DEBUG);
338
-
339
-		return;
340
-	}
341
-
342
-	include_spip('base/abstract_sql');
343
-	// on ne peut rien faire si pas de connexion SQL
344
-	if (!spip_connect()) {
345
-		return false;
346
-	}
347
-
348
-	if (!defined('_JQ_MAX_JOBS_TIME_TO_EXECUTE')) {
349
-		$max_time = ini_get('max_execution_time') / 2;
350
-		// valeur conservatrice si on a pas reussi a lire le max_execution_time
351
-		if (!$max_time) {
352
-			$max_time = 5;
353
-		}
354
-		define('_JQ_MAX_JOBS_TIME_TO_EXECUTE', min($max_time, 15)); // une valeur maxi en temps.
355
-	}
356
-	$end_time = $time + _JQ_MAX_JOBS_TIME_TO_EXECUTE;
357
-
358
-	spip_log("JQ schedule $time / $end_time", 'jq' . _LOG_DEBUG);
359
-
360
-	if (!defined('_JQ_MAX_JOBS_EXECUTE')) {
361
-		define('_JQ_MAX_JOBS_EXECUTE', 200);
362
-	}
363
-	$nbj = 0;
364
-	// attraper les jobs
365
-	// dont la date est passee (echus en attente),
366
-	// par ordre :
367
-	//	- de priorite
368
-	//	- de date
369
-	// lorsqu'un job cron n'a pas fini, sa priorite est descendue
370
-	// pour qu'il ne bloque pas les autres jobs en attente
371
-	if (is_array($force_jobs) and count($force_jobs)) {
372
-		$cond = "status=" . intval(_JQ_SCHEDULED) . " AND " . sql_in("id_job", $force_jobs);
373
-	} else {
374
-		$now = date('Y-m-d H:i:s', $time);
375
-		$cond = "status=" . intval(_JQ_SCHEDULED) . " AND date<=" . sql_quote($now);
376
-	}
377
-
378
-	register_shutdown_function('queue_error_handler'); // recuperer les erreurs auant que possible
379
-	$res = sql_allfetsel('*', 'spip_jobs', $cond, '', 'priorite DESC,date', '0,' . (_JQ_MAX_JOBS_EXECUTE + 1));
380
-	do {
381
-		if ($row = array_shift($res)) {
382
-			$nbj++;
383
-			// il faut un verrou, a base de sql_delete
384
-			if (sql_delete('spip_jobs', "id_job=" . intval($row['id_job']) . " AND status=" . intval(_JQ_SCHEDULED))) {
385
-				#spip_log("JQ schedule job ".$nbj." OK",'jq');
386
-				// on reinsert dans la base aussitot avec un status=_JQ_PENDING
387
-				$row['status'] = _JQ_PENDING;
388
-				$row['date'] = date('Y-m-d H:i:s', $time);
389
-				sql_insertq('spip_jobs', $row);
390
-
391
-				// on a la main sur le job :
392
-				// l'executer
393
-				$result = queue_start_job($row);
394
-
395
-				$time = time();
396
-				queue_close_job($row, $time, $result);
397
-			}
398
-		}
399
-		spip_log("JQ schedule job end time " . $time, 'jq' . _LOG_DEBUG);
400
-	} while ($nbj < _JQ_MAX_JOBS_EXECUTE and $row and $time < $end_time);
401
-	spip_log("JQ schedule end time " . time(), 'jq' . _LOG_DEBUG);
402
-
403
-	if ($row = array_shift($res)) {
404
-		queue_update_next_job_time(0); // on sait qu'il y a encore des jobs a lancer ASAP
405
-		spip_log("JQ encore !", 'jq' . _LOG_DEBUG);
406
-	} else {
407
-		queue_update_next_job_time();
408
-	}
409
-
410
-	return true;
328
+    $time = time();
329
+    if (defined('_DEBUG_BLOCK_QUEUE')) {
330
+        spip_log("_DEBUG_BLOCK_QUEUE : schedule stop", 'jq' . _LOG_DEBUG);
331
+
332
+        return;
333
+    }
334
+
335
+    // rien a faire si le prochain job est encore dans le futur
336
+    if (queue_sleep_time_to_next_job() > 0 and (!$force_jobs or !count($force_jobs))) {
337
+        spip_log("queue_sleep_time_to_next_job", 'jq' . _LOG_DEBUG);
338
+
339
+        return;
340
+    }
341
+
342
+    include_spip('base/abstract_sql');
343
+    // on ne peut rien faire si pas de connexion SQL
344
+    if (!spip_connect()) {
345
+        return false;
346
+    }
347
+
348
+    if (!defined('_JQ_MAX_JOBS_TIME_TO_EXECUTE')) {
349
+        $max_time = ini_get('max_execution_time') / 2;
350
+        // valeur conservatrice si on a pas reussi a lire le max_execution_time
351
+        if (!$max_time) {
352
+            $max_time = 5;
353
+        }
354
+        define('_JQ_MAX_JOBS_TIME_TO_EXECUTE', min($max_time, 15)); // une valeur maxi en temps.
355
+    }
356
+    $end_time = $time + _JQ_MAX_JOBS_TIME_TO_EXECUTE;
357
+
358
+    spip_log("JQ schedule $time / $end_time", 'jq' . _LOG_DEBUG);
359
+
360
+    if (!defined('_JQ_MAX_JOBS_EXECUTE')) {
361
+        define('_JQ_MAX_JOBS_EXECUTE', 200);
362
+    }
363
+    $nbj = 0;
364
+    // attraper les jobs
365
+    // dont la date est passee (echus en attente),
366
+    // par ordre :
367
+    //	- de priorite
368
+    //	- de date
369
+    // lorsqu'un job cron n'a pas fini, sa priorite est descendue
370
+    // pour qu'il ne bloque pas les autres jobs en attente
371
+    if (is_array($force_jobs) and count($force_jobs)) {
372
+        $cond = "status=" . intval(_JQ_SCHEDULED) . " AND " . sql_in("id_job", $force_jobs);
373
+    } else {
374
+        $now = date('Y-m-d H:i:s', $time);
375
+        $cond = "status=" . intval(_JQ_SCHEDULED) . " AND date<=" . sql_quote($now);
376
+    }
377
+
378
+    register_shutdown_function('queue_error_handler'); // recuperer les erreurs auant que possible
379
+    $res = sql_allfetsel('*', 'spip_jobs', $cond, '', 'priorite DESC,date', '0,' . (_JQ_MAX_JOBS_EXECUTE + 1));
380
+    do {
381
+        if ($row = array_shift($res)) {
382
+            $nbj++;
383
+            // il faut un verrou, a base de sql_delete
384
+            if (sql_delete('spip_jobs', "id_job=" . intval($row['id_job']) . " AND status=" . intval(_JQ_SCHEDULED))) {
385
+                #spip_log("JQ schedule job ".$nbj." OK",'jq');
386
+                // on reinsert dans la base aussitot avec un status=_JQ_PENDING
387
+                $row['status'] = _JQ_PENDING;
388
+                $row['date'] = date('Y-m-d H:i:s', $time);
389
+                sql_insertq('spip_jobs', $row);
390
+
391
+                // on a la main sur le job :
392
+                // l'executer
393
+                $result = queue_start_job($row);
394
+
395
+                $time = time();
396
+                queue_close_job($row, $time, $result);
397
+            }
398
+        }
399
+        spip_log("JQ schedule job end time " . $time, 'jq' . _LOG_DEBUG);
400
+    } while ($nbj < _JQ_MAX_JOBS_EXECUTE and $row and $time < $end_time);
401
+    spip_log("JQ schedule end time " . time(), 'jq' . _LOG_DEBUG);
402
+
403
+    if ($row = array_shift($res)) {
404
+        queue_update_next_job_time(0); // on sait qu'il y a encore des jobs a lancer ASAP
405
+        spip_log("JQ encore !", 'jq' . _LOG_DEBUG);
406
+    } else {
407
+        queue_update_next_job_time();
408
+    }
409
+
410
+    return true;
411 411
 }
412 412
 
413 413
 /**
@@ -425,22 +425,22 @@  discard block
 block discarded – undo
425 425
  * @param int $result
426 426
  */
427 427
 function queue_close_job(&$row, $time, $result = 0) {
428
-	// est-ce une tache cron qu'il faut relancer ?
429
-	if ($periode = queue_is_cron_job($row['fonction'], $row['inclure'])) {
430
-		// relancer avec les nouveaux arguments de temps
431
-		include_spip('inc/genie');
432
-		if ($result < 0) // relancer tout de suite, mais en baissant la priorite
433
-		{
434
-			queue_genie_replan_job($row['fonction'], $periode, 0 - $result, null, $row['priorite'] - 1);
435
-		} else // relancer avec la periode prevue
436
-		{
437
-			queue_genie_replan_job($row['fonction'], $periode, $time);
438
-		}
439
-	}
440
-	// purger ses liens eventuels avec des objets
441
-	sql_delete("spip_jobs_liens", "id_job=" . intval($row['id_job']));
442
-	// supprimer le job fini
443
-	sql_delete('spip_jobs', 'id_job=' . intval($row['id_job']));
428
+    // est-ce une tache cron qu'il faut relancer ?
429
+    if ($periode = queue_is_cron_job($row['fonction'], $row['inclure'])) {
430
+        // relancer avec les nouveaux arguments de temps
431
+        include_spip('inc/genie');
432
+        if ($result < 0) // relancer tout de suite, mais en baissant la priorite
433
+        {
434
+            queue_genie_replan_job($row['fonction'], $periode, 0 - $result, null, $row['priorite'] - 1);
435
+        } else // relancer avec la periode prevue
436
+        {
437
+            queue_genie_replan_job($row['fonction'], $periode, $time);
438
+        }
439
+    }
440
+    // purger ses liens eventuels avec des objets
441
+    sql_delete("spip_jobs_liens", "id_job=" . intval($row['id_job']));
442
+    // supprimer le job fini
443
+    sql_delete('spip_jobs', 'id_job=' . intval($row['id_job']));
444 444
 }
445 445
 
446 446
 /**
@@ -450,10 +450,10 @@  discard block
 block discarded – undo
450 450
  * @uses queue_update_next_job_time()
451 451
  */
452 452
 function queue_error_handler() {
453
-	// se remettre dans le bon dossier, car Apache le change parfois (toujours?)
454
-	chdir(_ROOT_CWD);
453
+    // se remettre dans le bon dossier, car Apache le change parfois (toujours?)
454
+    chdir(_ROOT_CWD);
455 455
 
456
-	queue_update_next_job_time();
456
+    queue_update_next_job_time();
457 457
 }
458 458
 
459 459
 
@@ -470,18 +470,18 @@  discard block
 block discarded – undo
470 470
  *     Périodicité de la tâche en secondes, si tâche périodique, sinon false.
471 471
  */
472 472
 function queue_is_cron_job($function, $inclure) {
473
-	static $taches = null;
474
-	if (strncmp($inclure, 'genie/', 6) == 0) {
475
-		if (is_null($taches)) {
476
-			include_spip('inc/genie');
477
-			$taches = taches_generales();
478
-		}
479
-		if (isset($taches[$function])) {
480
-			return $taches[$function];
481
-		}
482
-	}
483
-
484
-	return false;
473
+    static $taches = null;
474
+    if (strncmp($inclure, 'genie/', 6) == 0) {
475
+        if (is_null($taches)) {
476
+            include_spip('inc/genie');
477
+            $taches = taches_generales();
478
+        }
479
+        if (isset($taches[$function])) {
480
+            return $taches[$function];
481
+        }
482
+    }
483
+
484
+    return false;
485 485
 }
486 486
 
487 487
 /**
@@ -495,57 +495,57 @@  discard block
 block discarded – undo
495 495
  *  temps de la tache ajoutee ou 0 pour ASAP
496 496
  */
497 497
 function queue_update_next_job_time($next_time = null) {
498
-	static $nb_jobs_scheduled = null;
499
-	static $deja_la = false;
500
-	// prendre le min des $next_time que l'on voit passer ici, en cas de reentrance
501
-	static $next = null;
502
-	// queue_close_job peut etre reentrant ici
503
-	if ($deja_la) {
504
-		return;
505
-	}
506
-	$deja_la = true;
507
-
508
-	include_spip('base/abstract_sql');
509
-	$time = time();
510
-
511
-	// traiter les jobs morts au combat (_JQ_PENDING depuis plus de 180s)
512
-	// pour cause de timeout ou autre erreur fatale
513
-	$res = sql_allfetsel("*", "spip_jobs",
514
-		"status=" . intval(_JQ_PENDING) . " AND date<" . sql_quote(date('Y-m-d H:i:s', $time - 180)));
515
-	if (is_array($res)) {
516
-		foreach ($res as $row) {
517
-			queue_close_job($row, $time);
518
-			spip_log ("queue_close_job car _JQ_PENDING depuis +180s : ".print_r($row,1), "job_mort"._LOG_ERREUR);
519
-		}
520
-	}
521
-
522
-	// chercher la date du prochain job si pas connu
523
-	if (is_null($next) or is_null(queue_sleep_time_to_next_job())) {
524
-		$date = sql_getfetsel('date', 'spip_jobs', "status=" . intval(_JQ_SCHEDULED), '', 'date', '0,1');
525
-		$next = strtotime($date);
526
-	}
527
-	if (!is_null($next_time)) {
528
-		if (is_null($next) or $next > $next_time) {
529
-			$next = $next_time;
530
-		}
531
-	}
532
-
533
-	if ($next) {
534
-		if (is_null($nb_jobs_scheduled)) {
535
-			$nb_jobs_scheduled = sql_countsel('spip_jobs',
536
-				"status=" . intval(_JQ_SCHEDULED) . " AND date<" . sql_quote(date('Y-m-d H:i:s', $time)));
537
-		} elseif ($next <= $time) {
538
-			$nb_jobs_scheduled++;
539
-		}
540
-		// si trop de jobs en attente, on force la purge en fin de hit
541
-		// pour assurer le coup
542
-		if ($nb_jobs_scheduled > (defined('_JQ_NB_JOBS_OVERFLOW') ? _JQ_NB_JOBS_OVERFLOW : 10000)) {
543
-			define('_DIRECT_CRON_FORCE', true);
544
-		}
545
-	}
546
-
547
-	queue_set_next_job_time($next);
548
-	$deja_la = false;
498
+    static $nb_jobs_scheduled = null;
499
+    static $deja_la = false;
500
+    // prendre le min des $next_time que l'on voit passer ici, en cas de reentrance
501
+    static $next = null;
502
+    // queue_close_job peut etre reentrant ici
503
+    if ($deja_la) {
504
+        return;
505
+    }
506
+    $deja_la = true;
507
+
508
+    include_spip('base/abstract_sql');
509
+    $time = time();
510
+
511
+    // traiter les jobs morts au combat (_JQ_PENDING depuis plus de 180s)
512
+    // pour cause de timeout ou autre erreur fatale
513
+    $res = sql_allfetsel("*", "spip_jobs",
514
+        "status=" . intval(_JQ_PENDING) . " AND date<" . sql_quote(date('Y-m-d H:i:s', $time - 180)));
515
+    if (is_array($res)) {
516
+        foreach ($res as $row) {
517
+            queue_close_job($row, $time);
518
+            spip_log ("queue_close_job car _JQ_PENDING depuis +180s : ".print_r($row,1), "job_mort"._LOG_ERREUR);
519
+        }
520
+    }
521
+
522
+    // chercher la date du prochain job si pas connu
523
+    if (is_null($next) or is_null(queue_sleep_time_to_next_job())) {
524
+        $date = sql_getfetsel('date', 'spip_jobs', "status=" . intval(_JQ_SCHEDULED), '', 'date', '0,1');
525
+        $next = strtotime($date);
526
+    }
527
+    if (!is_null($next_time)) {
528
+        if (is_null($next) or $next > $next_time) {
529
+            $next = $next_time;
530
+        }
531
+    }
532
+
533
+    if ($next) {
534
+        if (is_null($nb_jobs_scheduled)) {
535
+            $nb_jobs_scheduled = sql_countsel('spip_jobs',
536
+                "status=" . intval(_JQ_SCHEDULED) . " AND date<" . sql_quote(date('Y-m-d H:i:s', $time)));
537
+        } elseif ($next <= $time) {
538
+            $nb_jobs_scheduled++;
539
+        }
540
+        // si trop de jobs en attente, on force la purge en fin de hit
541
+        // pour assurer le coup
542
+        if ($nb_jobs_scheduled > (defined('_JQ_NB_JOBS_OVERFLOW') ? _JQ_NB_JOBS_OVERFLOW : 10000)) {
543
+            define('_DIRECT_CRON_FORCE', true);
544
+        }
545
+    }
546
+
547
+    queue_set_next_job_time($next);
548
+    $deja_la = false;
549 549
 }
550 550
 
551 551
 
@@ -556,26 +556,26 @@  discard block
 block discarded – undo
556 556
  */
557 557
 function queue_set_next_job_time($next) {
558 558
 
559
-	// utiliser le temps courant reel plutot que temps de la requete ici
560
-	$time = time();
561
-
562
-	// toujours relire la valeur pour comparer, pour tenir compte des maj concourrantes
563
-	// et ne mettre a jour que si il y a un interet a le faire
564
-	// permet ausis d'initialiser le nom de fichier a coup sur
565
-	$curr_next = $_SERVER['REQUEST_TIME'] + max(0, queue_sleep_time_to_next_job(true));
566
-	if (
567
-		($curr_next <= $time and $next > $time) // le prochain job est dans le futur mais pas la date planifiee actuelle
568
-		or $curr_next > $next // le prochain job est plus tot que la date planifiee actuelle
569
-	) {
570
-		if (function_exists("cache_set") and defined('_MEMOIZE_MEMORY') and _MEMOIZE_MEMORY) {
571
-			cache_set(_JQ_NEXT_JOB_TIME_FILENAME, intval($next));
572
-		} else {
573
-			ecrire_fichier(_JQ_NEXT_JOB_TIME_FILENAME, intval($next));
574
-		}
575
-		queue_sleep_time_to_next_job($next);
576
-	}
577
-
578
-	return queue_sleep_time_to_next_job();
559
+    // utiliser le temps courant reel plutot que temps de la requete ici
560
+    $time = time();
561
+
562
+    // toujours relire la valeur pour comparer, pour tenir compte des maj concourrantes
563
+    // et ne mettre a jour que si il y a un interet a le faire
564
+    // permet ausis d'initialiser le nom de fichier a coup sur
565
+    $curr_next = $_SERVER['REQUEST_TIME'] + max(0, queue_sleep_time_to_next_job(true));
566
+    if (
567
+        ($curr_next <= $time and $next > $time) // le prochain job est dans le futur mais pas la date planifiee actuelle
568
+        or $curr_next > $next // le prochain job est plus tot que la date planifiee actuelle
569
+    ) {
570
+        if (function_exists("cache_set") and defined('_MEMOIZE_MEMORY') and _MEMOIZE_MEMORY) {
571
+            cache_set(_JQ_NEXT_JOB_TIME_FILENAME, intval($next));
572
+        } else {
573
+            ecrire_fichier(_JQ_NEXT_JOB_TIME_FILENAME, intval($next));
574
+        }
575
+        queue_sleep_time_to_next_job($next);
576
+    }
577
+
578
+    return queue_sleep_time_to_next_job();
579 579
 }
580 580
 
581 581
 /**
@@ -592,60 +592,60 @@  discard block
 block discarded – undo
592 592
  * @return string
593 593
  */
594 594
 function queue_affichage_cron() {
595
-	$texte = "";
595
+    $texte = "";
596 596
 
597
-	$time_to_next = queue_sleep_time_to_next_job();
598
-	// rien a faire si le prochain job est encore dans le futur
599
-	if ($time_to_next > 0 or defined('_DEBUG_BLOCK_QUEUE')) {
600
-		return $texte;
601
-	}
597
+    $time_to_next = queue_sleep_time_to_next_job();
598
+    // rien a faire si le prochain job est encore dans le futur
599
+    if ($time_to_next > 0 or defined('_DEBUG_BLOCK_QUEUE')) {
600
+        return $texte;
601
+    }
602 602
 
603
-	// ne pas relancer si on vient de lancer dans la meme seconde par un hit concurent
604
-	if (file_exists($lock = _DIR_TMP . "cron.lock") and !(@filemtime($lock) < $_SERVER['REQUEST_TIME'])) {
605
-		return $texte;
606
-	}
603
+    // ne pas relancer si on vient de lancer dans la meme seconde par un hit concurent
604
+    if (file_exists($lock = _DIR_TMP . "cron.lock") and !(@filemtime($lock) < $_SERVER['REQUEST_TIME'])) {
605
+        return $texte;
606
+    }
607 607
 
608
-	@touch($lock);
608
+    @touch($lock);
609 609
 
610
-	// il y a des taches en attentes
611
-	// si depuis plus de 5min, on essaye de lancer le cron par tous les moyens pour rattraper le coup
612
-	// on est sans doute sur un site qui n'autorise pas http sortant ou avec peu de trafic
613
-	$urgent = false;
614
-	if ($time_to_next < -300) {
615
-		$urgent = true;
616
-	}
610
+    // il y a des taches en attentes
611
+    // si depuis plus de 5min, on essaye de lancer le cron par tous les moyens pour rattraper le coup
612
+    // on est sans doute sur un site qui n'autorise pas http sortant ou avec peu de trafic
613
+    $urgent = false;
614
+    if ($time_to_next < -300) {
615
+        $urgent = true;
616
+    }
617 617
 
618
-	$url_cron = generer_url_action('cron', '', false, true);
618
+    $url_cron = generer_url_action('cron', '', false, true);
619 619
 
620
-	if (!defined('_HTML_BG_CRON_FORCE') or !_HTML_BG_CRON_FORCE) {
620
+    if (!defined('_HTML_BG_CRON_FORCE') or !_HTML_BG_CRON_FORCE) {
621 621
 
622
-		if (queue_lancer_url_http_async($url_cron) and !$urgent) {
623
-			return $texte;
624
-		}
622
+        if (queue_lancer_url_http_async($url_cron) and !$urgent) {
623
+            return $texte;
624
+        }
625 625
 
626
-	}
626
+    }
627 627
 
628
-	// si deja force, on retourne sans rien
629
-	if (defined('_DIRECT_CRON_FORCE')) {
630
-		return $texte;
631
-	}
628
+    // si deja force, on retourne sans rien
629
+    if (defined('_DIRECT_CRON_FORCE')) {
630
+        return $texte;
631
+    }
632 632
 
633
-	// si c'est un bot
634
-	// inutile de faire un appel par image background,
635
-	// on force un appel direct en fin de hit
636
-	if ((defined('_IS_BOT') and _IS_BOT)) {
637
-		define('_DIRECT_CRON_FORCE', true);
633
+    // si c'est un bot
634
+    // inutile de faire un appel par image background,
635
+    // on force un appel direct en fin de hit
636
+    if ((defined('_IS_BOT') and _IS_BOT)) {
637
+        define('_DIRECT_CRON_FORCE', true);
638 638
 
639
-		return $texte;
640
-	}
639
+        return $texte;
640
+    }
641 641
 
642
-	// en derniere solution, on insere un appel xhr non bloquant ou une image background dans la page si pas de JS
643
-	$url_cron = generer_url_action('cron');
644
-	$texte = '<!-- SPIP-CRON -->'
645
-	  . "<script>setTimeout(function(){var xo = new XMLHttpRequest();xo.open('GET', '$url_cron', true);xo.send('');},100);</script>"
646
-	  . "<noscript><div style=\"background-image: url('$url_cron');\"></div></noscript>";
642
+    // en derniere solution, on insere un appel xhr non bloquant ou une image background dans la page si pas de JS
643
+    $url_cron = generer_url_action('cron');
644
+    $texte = '<!-- SPIP-CRON -->'
645
+        . "<script>setTimeout(function(){var xo = new XMLHttpRequest();xo.open('GET', '$url_cron', true);xo.send('');},100);</script>"
646
+        . "<noscript><div style=\"background-image: url('$url_cron');\"></div></noscript>";
647 647
 
648
-	return $texte;
648
+    return $texte;
649 649
 }
650 650
 
651 651
 /**
@@ -654,69 +654,69 @@  discard block
 block discarded – undo
654 654
  * @return bool
655 655
  */
656 656
 function queue_lancer_url_http_async($url_cron) {
657
-	// methode la plus rapide :
658
-	// Si fsockopen est possible, on lance le cron via un socket en asynchrone
659
-	// si fsockopen echoue (disponibilite serveur, firewall) on essaye pas cURL
660
-	// car on a toutes les chances d'echouer pareil mais sans moyen de le savoir
661
-	// on passe direct a la methode background-image
662
-	if (function_exists('fsockopen')) {
663
-		$parts = parse_url($url_cron);
664
-
665
-		switch ($parts['scheme']) {
666
-			case 'https':
667
-				$scheme = 'ssl://';
668
-				$port = 443;
669
-				break;
670
-			case 'http':
671
-			default:
672
-				$scheme = '';
673
-				$port = 80;
674
-		}
675
-		$fp = @fsockopen($scheme . $parts['host'],
676
-			isset($parts['port']) ? $parts['port'] : $port,
677
-			$errno, $errstr, 1);
678
-
679
-		if ($fp) {
680
-			$host_sent = $parts['host'];
681
-			if (isset($parts['port']) and $parts['port'] !== $port) {
682
-				$host_sent .= ':' . $parts['port'];
683
-			}
684
-			$timeout = 200; // ms
685
-			stream_set_timeout($fp, 0, $timeout * 1000);
686
-			$query = $parts['path'] . ($parts['query'] ? "?" . $parts['query'] : "");
687
-			$out = "GET " . $query . " HTTP/1.1\r\n";
688
-			$out .= "Host: " . $host_sent . "\r\n";
689
-			$out .= "Connection: Close\r\n\r\n";
690
-			fwrite($fp, $out);
691
-			spip_timer('read');
692
-			$t = 0;
693
-			// on lit la reponse si possible pour fermer proprement la connexion
694
-			// avec un timeout total de 200ms pour ne pas se bloquer
695
-			while (!feof($fp) and $t < $timeout) {
696
-				@fgets($fp, 1024);
697
-				$t += spip_timer('read', true);
698
-				spip_timer('read');
699
-			}
700
-			fclose($fp);
701
-			return true;
702
-		}
703
-	}
704
-	// si fsockopen n'est pas dispo on essaye cURL :
705
-	// lancer le cron par un cURL asynchrone si cURL est present
706
-	elseif (function_exists("curl_init")) {
707
-		//setting the curl parameters.
708
-		$ch = curl_init($url_cron);
709
-		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
710
-		// cf bug : http://www.php.net/manual/en/function.curl-setopt.php#104597
711
-		curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
712
-		// valeur mini pour que la requete soit lancee
713
-		curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200);
714
-		// lancer
715
-		curl_exec($ch);
716
-		// fermer
717
-		curl_close($ch);
718
-		return true;
719
-	}
720
-
721
-	return false;
657
+    // methode la plus rapide :
658
+    // Si fsockopen est possible, on lance le cron via un socket en asynchrone
659
+    // si fsockopen echoue (disponibilite serveur, firewall) on essaye pas cURL
660
+    // car on a toutes les chances d'echouer pareil mais sans moyen de le savoir
661
+    // on passe direct a la methode background-image
662
+    if (function_exists('fsockopen')) {
663
+        $parts = parse_url($url_cron);
664
+
665
+        switch ($parts['scheme']) {
666
+            case 'https':
667
+                $scheme = 'ssl://';
668
+                $port = 443;
669
+                break;
670
+            case 'http':
671
+            default:
672
+                $scheme = '';
673
+                $port = 80;
674
+        }
675
+        $fp = @fsockopen($scheme . $parts['host'],
676
+            isset($parts['port']) ? $parts['port'] : $port,
677
+            $errno, $errstr, 1);
678
+
679
+        if ($fp) {
680
+            $host_sent = $parts['host'];
681
+            if (isset($parts['port']) and $parts['port'] !== $port) {
682
+                $host_sent .= ':' . $parts['port'];
683
+            }
684
+            $timeout = 200; // ms
685
+            stream_set_timeout($fp, 0, $timeout * 1000);
686
+            $query = $parts['path'] . ($parts['query'] ? "?" . $parts['query'] : "");
687
+            $out = "GET " . $query . " HTTP/1.1\r\n";
688
+            $out .= "Host: " . $host_sent . "\r\n";
689
+            $out .= "Connection: Close\r\n\r\n";
690
+            fwrite($fp, $out);
691
+            spip_timer('read');
692
+            $t = 0;
693
+            // on lit la reponse si possible pour fermer proprement la connexion
694
+            // avec un timeout total de 200ms pour ne pas se bloquer
695
+            while (!feof($fp) and $t < $timeout) {
696
+                @fgets($fp, 1024);
697
+                $t += spip_timer('read', true);
698
+                spip_timer('read');
699
+            }
700
+            fclose($fp);
701
+            return true;
702
+        }
703
+    }
704
+    // si fsockopen n'est pas dispo on essaye cURL :
705
+    // lancer le cron par un cURL asynchrone si cURL est present
706
+    elseif (function_exists("curl_init")) {
707
+        //setting the curl parameters.
708
+        $ch = curl_init($url_cron);
709
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
710
+        // cf bug : http://www.php.net/manual/en/function.curl-setopt.php#104597
711
+        curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
712
+        // valeur mini pour que la requete soit lancee
713
+        curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200);
714
+        // lancer
715
+        curl_exec($ch);
716
+        // fermer
717
+        curl_close($ch);
718
+        return true;
719
+    }
720
+
721
+    return false;
722 722
 }
723 723
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +37 added lines, -38 removed lines patch added patch discarded remove patch
@@ -70,7 +70,7 @@  discard block
 block discarded – undo
70 70
 	$md5args = md5($arguments);
71 71
 
72 72
 	// si pas de date programee, des que possible
73
-	$duplicate_where = 'status=' . intval(_JQ_SCHEDULED) . ' AND ';
73
+	$duplicate_where = 'status='.intval(_JQ_SCHEDULED).' AND ';
74 74
 	if (!$time) {
75 75
 		$time = time();
76 76
 		$duplicate_where = ""; // ne pas dupliquer si deja le meme job en cours d'execution
@@ -94,9 +94,8 @@  discard block
 block discarded – undo
94 94
 		and
95 95
 		$id_job = sql_getfetsel('id_job', 'spip_jobs',
96 96
 			$duplicate_where =
97
-				$duplicate_where . 'fonction=' . sql_quote($function)
98
-				. (($no_duplicate === 'function_only') ? '' :
99
-					' AND md5args=' . sql_quote($md5args) . ' AND inclure=' . sql_quote($file)))
97
+				$duplicate_where.'fonction='.sql_quote($function)
98
+				. (($no_duplicate === 'function_only') ? '' : ' AND md5args='.sql_quote($md5args).' AND inclure='.sql_quote($file)))
100 99
 	) {
101 100
 		return $id_job;
102 101
 	}
@@ -108,9 +107,9 @@  discard block
 block discarded – undo
108 107
 	if (
109 108
 		$no_duplicate
110 109
 		and
111
-		$id_prev = sql_getfetsel('id_job', 'spip_jobs', "id_job<" . intval($id_job) . " AND $duplicate_where")
110
+		$id_prev = sql_getfetsel('id_job', 'spip_jobs', "id_job<".intval($id_job)." AND $duplicate_where")
112 111
 	) {
113
-		sql_delete('spip_jobs', 'id_job=' . intval($id_job));
112
+		sql_delete('spip_jobs', 'id_job='.intval($id_job));
114 113
 
115 114
 		return $id_prev;
116 115
 	}
@@ -122,9 +121,9 @@  discard block
 block discarded – undo
122 121
 	// ie cas d'un char non acceptables sur certains type de champs
123 122
 	// qui coupe la valeur
124 123
 	if (defined('_JQ_INSERT_CHECK_ARGS') and $id_job) {
125
-		$args = sql_getfetsel('args', 'spip_jobs', 'id_job=' . intval($id_job));
124
+		$args = sql_getfetsel('args', 'spip_jobs', 'id_job='.intval($id_job));
126 125
 		if ($args !== $arguments) {
127
-			spip_log('arguments job errones / longueur ' . strlen($args) . " vs " . strlen($arguments) . ' / valeur : ' . var_export($arguments,
126
+			spip_log('arguments job errones / longueur '.strlen($args)." vs ".strlen($arguments).' / valeur : '.var_export($arguments,
128 127
 					true), 'queue');
129 128
 		}
130 129
 	}
@@ -152,7 +151,7 @@  discard block
 block discarded – undo
152 151
 function queue_purger() {
153 152
 	include_spip('base/abstract_sql');
154 153
 	sql_delete('spip_jobs');
155
-	sql_delete("spip_jobs_liens", "id_job NOT IN (" . sql_get_select("id_job", "spip_jobs") . ")");
154
+	sql_delete("spip_jobs_liens", "id_job NOT IN (".sql_get_select("id_job", "spip_jobs").")");
156 155
 	include_spip('inc/genie');
157 156
 	genie_queue_watch_dist();
158 157
 }
@@ -167,8 +166,8 @@  discard block
 block discarded – undo
167 166
 function queue_remove_job($id_job) {
168 167
 	include_spip('base/abstract_sql');
169 168
 
170
-	if ($row = sql_fetsel('fonction,inclure,date', 'spip_jobs', 'id_job=' . intval($id_job))
171
-		and $res = sql_delete('spip_jobs', 'id_job=' . intval($id_job))
169
+	if ($row = sql_fetsel('fonction,inclure,date', 'spip_jobs', 'id_job='.intval($id_job))
170
+		and $res = sql_delete('spip_jobs', 'id_job='.intval($id_job))
172 171
 	) {
173 172
 		queue_unlink_job($id_job);
174 173
 		// est-ce une tache cron qu'il faut relancer ?
@@ -217,7 +216,7 @@  discard block
 block discarded – undo
217 216
  *  resultat du sql_delete
218 217
  */
219 218
 function queue_unlink_job($id_job) {
220
-	return sql_delete("spip_jobs_liens", "id_job=" . intval($id_job));
219
+	return sql_delete("spip_jobs_liens", "id_job=".intval($id_job));
221 220
 }
222 221
 
223 222
 /**
@@ -233,7 +232,7 @@  discard block
 block discarded – undo
233 232
 	// deserialiser les arguments
234 233
 	$args = unserialize($row['args']);
235 234
 	if ($args === false) {
236
-		spip_log('arguments job errones ' . var_export($row, true), 'queue');
235
+		spip_log('arguments job errones '.var_export($row, true), 'queue');
237 236
 		$args = array();
238 237
 	}
239 238
 
@@ -250,12 +249,12 @@  discard block
 block discarded – undo
250 249
 	}
251 250
 
252 251
 	if (!function_exists($fonction)) {
253
-		spip_log("fonction $fonction ($inclure) inexistante " . var_export($row, true), 'queue');
252
+		spip_log("fonction $fonction ($inclure) inexistante ".var_export($row, true), 'queue');
254 253
 
255 254
 		return false;
256 255
 	}
257 256
 
258
-	spip_log("queue [" . $row['id_job'] . "]: $fonction() start", 'queue');
257
+	spip_log("queue [".$row['id_job']."]: $fonction() start", 'queue');
259 258
 	switch (count($args)) {
260 259
 		case 0:
261 260
 			$res = $fonction();
@@ -295,7 +294,7 @@  discard block
 block discarded – undo
295 294
 			# plus lent mais completement generique
296 295
 			$res = call_user_func_array($fonction, $args);
297 296
 	}
298
-	spip_log("queue [" . $row['id_job'] . "]: $fonction() end", 'queue');
297
+	spip_log("queue [".$row['id_job']."]: $fonction() end", 'queue');
299 298
 
300 299
 	return $res;
301 300
 
@@ -327,14 +326,14 @@  discard block
 block discarded – undo
327 326
 function queue_schedule($force_jobs = null) {
328 327
 	$time = time();
329 328
 	if (defined('_DEBUG_BLOCK_QUEUE')) {
330
-		spip_log("_DEBUG_BLOCK_QUEUE : schedule stop", 'jq' . _LOG_DEBUG);
329
+		spip_log("_DEBUG_BLOCK_QUEUE : schedule stop", 'jq'._LOG_DEBUG);
331 330
 
332 331
 		return;
333 332
 	}
334 333
 
335 334
 	// rien a faire si le prochain job est encore dans le futur
336 335
 	if (queue_sleep_time_to_next_job() > 0 and (!$force_jobs or !count($force_jobs))) {
337
-		spip_log("queue_sleep_time_to_next_job", 'jq' . _LOG_DEBUG);
336
+		spip_log("queue_sleep_time_to_next_job", 'jq'._LOG_DEBUG);
338 337
 
339 338
 		return;
340 339
 	}
@@ -355,7 +354,7 @@  discard block
 block discarded – undo
355 354
 	}
356 355
 	$end_time = $time + _JQ_MAX_JOBS_TIME_TO_EXECUTE;
357 356
 
358
-	spip_log("JQ schedule $time / $end_time", 'jq' . _LOG_DEBUG);
357
+	spip_log("JQ schedule $time / $end_time", 'jq'._LOG_DEBUG);
359 358
 
360 359
 	if (!defined('_JQ_MAX_JOBS_EXECUTE')) {
361 360
 		define('_JQ_MAX_JOBS_EXECUTE', 200);
@@ -369,19 +368,19 @@  discard block
 block discarded – undo
369 368
 	// lorsqu'un job cron n'a pas fini, sa priorite est descendue
370 369
 	// pour qu'il ne bloque pas les autres jobs en attente
371 370
 	if (is_array($force_jobs) and count($force_jobs)) {
372
-		$cond = "status=" . intval(_JQ_SCHEDULED) . " AND " . sql_in("id_job", $force_jobs);
371
+		$cond = "status=".intval(_JQ_SCHEDULED)." AND ".sql_in("id_job", $force_jobs);
373 372
 	} else {
374 373
 		$now = date('Y-m-d H:i:s', $time);
375
-		$cond = "status=" . intval(_JQ_SCHEDULED) . " AND date<=" . sql_quote($now);
374
+		$cond = "status=".intval(_JQ_SCHEDULED)." AND date<=".sql_quote($now);
376 375
 	}
377 376
 
378 377
 	register_shutdown_function('queue_error_handler'); // recuperer les erreurs auant que possible
379
-	$res = sql_allfetsel('*', 'spip_jobs', $cond, '', 'priorite DESC,date', '0,' . (_JQ_MAX_JOBS_EXECUTE + 1));
378
+	$res = sql_allfetsel('*', 'spip_jobs', $cond, '', 'priorite DESC,date', '0,'.(_JQ_MAX_JOBS_EXECUTE + 1));
380 379
 	do {
381 380
 		if ($row = array_shift($res)) {
382 381
 			$nbj++;
383 382
 			// il faut un verrou, a base de sql_delete
384
-			if (sql_delete('spip_jobs', "id_job=" . intval($row['id_job']) . " AND status=" . intval(_JQ_SCHEDULED))) {
383
+			if (sql_delete('spip_jobs', "id_job=".intval($row['id_job'])." AND status=".intval(_JQ_SCHEDULED))) {
385 384
 				#spip_log("JQ schedule job ".$nbj." OK",'jq');
386 385
 				// on reinsert dans la base aussitot avec un status=_JQ_PENDING
387 386
 				$row['status'] = _JQ_PENDING;
@@ -396,13 +395,13 @@  discard block
 block discarded – undo
396 395
 				queue_close_job($row, $time, $result);
397 396
 			}
398 397
 		}
399
-		spip_log("JQ schedule job end time " . $time, 'jq' . _LOG_DEBUG);
398
+		spip_log("JQ schedule job end time ".$time, 'jq'._LOG_DEBUG);
400 399
 	} while ($nbj < _JQ_MAX_JOBS_EXECUTE and $row and $time < $end_time);
401
-	spip_log("JQ schedule end time " . time(), 'jq' . _LOG_DEBUG);
400
+	spip_log("JQ schedule end time ".time(), 'jq'._LOG_DEBUG);
402 401
 
403 402
 	if ($row = array_shift($res)) {
404 403
 		queue_update_next_job_time(0); // on sait qu'il y a encore des jobs a lancer ASAP
405
-		spip_log("JQ encore !", 'jq' . _LOG_DEBUG);
404
+		spip_log("JQ encore !", 'jq'._LOG_DEBUG);
406 405
 	} else {
407 406
 		queue_update_next_job_time();
408 407
 	}
@@ -438,9 +437,9 @@  discard block
 block discarded – undo
438 437
 		}
439 438
 	}
440 439
 	// purger ses liens eventuels avec des objets
441
-	sql_delete("spip_jobs_liens", "id_job=" . intval($row['id_job']));
440
+	sql_delete("spip_jobs_liens", "id_job=".intval($row['id_job']));
442 441
 	// supprimer le job fini
443
-	sql_delete('spip_jobs', 'id_job=' . intval($row['id_job']));
442
+	sql_delete('spip_jobs', 'id_job='.intval($row['id_job']));
444 443
 }
445 444
 
446 445
 /**
@@ -511,17 +510,17 @@  discard block
 block discarded – undo
511 510
 	// traiter les jobs morts au combat (_JQ_PENDING depuis plus de 180s)
512 511
 	// pour cause de timeout ou autre erreur fatale
513 512
 	$res = sql_allfetsel("*", "spip_jobs",
514
-		"status=" . intval(_JQ_PENDING) . " AND date<" . sql_quote(date('Y-m-d H:i:s', $time - 180)));
513
+		"status=".intval(_JQ_PENDING)." AND date<".sql_quote(date('Y-m-d H:i:s', $time - 180)));
515 514
 	if (is_array($res)) {
516 515
 		foreach ($res as $row) {
517 516
 			queue_close_job($row, $time);
518
-			spip_log ("queue_close_job car _JQ_PENDING depuis +180s : ".print_r($row,1), "job_mort"._LOG_ERREUR);
517
+			spip_log("queue_close_job car _JQ_PENDING depuis +180s : ".print_r($row, 1), "job_mort"._LOG_ERREUR);
519 518
 		}
520 519
 	}
521 520
 
522 521
 	// chercher la date du prochain job si pas connu
523 522
 	if (is_null($next) or is_null(queue_sleep_time_to_next_job())) {
524
-		$date = sql_getfetsel('date', 'spip_jobs', "status=" . intval(_JQ_SCHEDULED), '', 'date', '0,1');
523
+		$date = sql_getfetsel('date', 'spip_jobs', "status=".intval(_JQ_SCHEDULED), '', 'date', '0,1');
525 524
 		$next = strtotime($date);
526 525
 	}
527 526
 	if (!is_null($next_time)) {
@@ -533,7 +532,7 @@  discard block
 block discarded – undo
533 532
 	if ($next) {
534 533
 		if (is_null($nb_jobs_scheduled)) {
535 534
 			$nb_jobs_scheduled = sql_countsel('spip_jobs',
536
-				"status=" . intval(_JQ_SCHEDULED) . " AND date<" . sql_quote(date('Y-m-d H:i:s', $time)));
535
+				"status=".intval(_JQ_SCHEDULED)." AND date<".sql_quote(date('Y-m-d H:i:s', $time)));
537 536
 		} elseif ($next <= $time) {
538 537
 			$nb_jobs_scheduled++;
539 538
 		}
@@ -601,7 +600,7 @@  discard block
 block discarded – undo
601 600
 	}
602 601
 
603 602
 	// ne pas relancer si on vient de lancer dans la meme seconde par un hit concurent
604
-	if (file_exists($lock = _DIR_TMP . "cron.lock") and !(@filemtime($lock) < $_SERVER['REQUEST_TIME'])) {
603
+	if (file_exists($lock = _DIR_TMP."cron.lock") and !(@filemtime($lock) < $_SERVER['REQUEST_TIME'])) {
605 604
 		return $texte;
606 605
 	}
607 606
 
@@ -672,20 +671,20 @@  discard block
 block discarded – undo
672 671
 				$scheme = '';
673 672
 				$port = 80;
674 673
 		}
675
-		$fp = @fsockopen($scheme . $parts['host'],
674
+		$fp = @fsockopen($scheme.$parts['host'],
676 675
 			isset($parts['port']) ? $parts['port'] : $port,
677 676
 			$errno, $errstr, 1);
678 677
 
679 678
 		if ($fp) {
680 679
 			$host_sent = $parts['host'];
681 680
 			if (isset($parts['port']) and $parts['port'] !== $port) {
682
-				$host_sent .= ':' . $parts['port'];
681
+				$host_sent .= ':'.$parts['port'];
683 682
 			}
684 683
 			$timeout = 200; // ms
685 684
 			stream_set_timeout($fp, 0, $timeout * 1000);
686
-			$query = $parts['path'] . ($parts['query'] ? "?" . $parts['query'] : "");
687
-			$out = "GET " . $query . " HTTP/1.1\r\n";
688
-			$out .= "Host: " . $host_sent . "\r\n";
685
+			$query = $parts['path'].($parts['query'] ? "?".$parts['query'] : "");
686
+			$out = "GET ".$query." HTTP/1.1\r\n";
687
+			$out .= "Host: ".$host_sent."\r\n";
689 688
 			$out .= "Connection: Close\r\n\r\n";
690 689
 			fwrite($fp, $out);
691 690
 			spip_timer('read');
Please login to merge, or discard this patch.
ecrire/inc/texte_mini.php 4 patches
Doc Comments   +9 added lines patch added patch discarded remove patch
@@ -80,6 +80,9 @@  discard block
 block discarded – undo
80 80
 // une $source differente ; le script detecte automagiquement si ce qu'on
81 81
 // echappe est un div ou un span
82 82
 // http://code.spip.net/@code_echappement
83
+/**
84
+ * @param string $mode
85
+ */
83 86
 function code_echappement($rempl, $source = '', $no_transform = false, $mode = null) {
84 87
 	if (!strlen($rempl)) {
85 88
 		return '';
@@ -284,6 +287,9 @@  discard block
 block discarded – undo
284 287
 // Reinserer le javascript de confiance (venant des modeles)
285 288
 
286 289
 // http://code.spip.net/@echappe_retour_modeles
290
+/**
291
+ * @param string $letexte
292
+ */
287 293
 function echappe_retour_modeles($letexte, $interdire_scripts = false) {
288 294
 	$letexte = echappe_retour($letexte);
289 295
 
@@ -433,6 +439,9 @@  discard block
 block discarded – undo
433 439
 }
434 440
 
435 441
 
442
+/**
443
+ * @param string $letexte
444
+ */
436 445
 function echapper_faux_tags($letexte) {
437 446
 	if (strpos($letexte, '<') === false) {
438 447
 		return $letexte;
Please login to merge, or discard this patch.
Braces   +3 added lines, -1 removed lines patch added patch discarded remove patch
@@ -384,10 +384,12 @@
 block discarded – undo
384 384
 		$texte = $court;
385 385
 	}
386 386
 
387
-	if (strpos($texte, "\n"))  // la fin est encore la : c'est qu'on n'a pas de texte de suite
387
+	if (strpos($texte, "\n")) {
388
+	    // la fin est encore la : c'est qu'on n'a pas de texte de suite
388 389
 	{
389 390
 		$points = '';
390 391
 	}
392
+	}
391 393
 
392 394
 	// remettre les paragraphes
393 395
 	$texte = preg_replace("/\r+/", "\n\n", $texte);
Please login to merge, or discard this patch.
Indentation   +357 added lines, -357 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 include_spip('inc/filtres');
23 23
 include_spip('inc/lang');
@@ -39,21 +39,21 @@  discard block
 block discarded – undo
39 39
  **/
40 40
 function definir_puce() {
41 41
 
42
-	// Attention au sens, qui n'est pas defini de la meme facon dans
43
-	// l'espace prive (spip_lang est la langue de l'interface, lang_dir
44
-	// celle du texte) et public (spip_lang est la langue du texte)
45
-	$dir = _DIR_RESTREINT ? lang_dir() : lang_dir($GLOBALS['spip_lang']);
42
+    // Attention au sens, qui n'est pas defini de la meme facon dans
43
+    // l'espace prive (spip_lang est la langue de l'interface, lang_dir
44
+    // celle du texte) et public (spip_lang est la langue du texte)
45
+    $dir = _DIR_RESTREINT ? lang_dir() : lang_dir($GLOBALS['spip_lang']);
46 46
 
47
-	$p = 'puce' . (test_espace_prive() ? '_prive' : '');
48
-	if ($dir == 'rtl') {
49
-		$p .= '_rtl';
50
-	}
47
+    $p = 'puce' . (test_espace_prive() ? '_prive' : '');
48
+    if ($dir == 'rtl') {
49
+        $p .= '_rtl';
50
+    }
51 51
 
52
-	if (!isset($GLOBALS[$p])) {
53
-		$GLOBALS[$p] = '<span class="spip-puce '.$dir.'"><b>–</b></span>';
54
-	}
52
+    if (!isset($GLOBALS[$p])) {
53
+        $GLOBALS[$p] = '<span class="spip-puce '.$dir.'"><b>–</b></span>';
54
+    }
55 55
 
56
-	return $GLOBALS[$p];
56
+    return $GLOBALS[$p];
57 57
 }
58 58
 
59 59
 
@@ -61,13 +61,13 @@  discard block
 block discarded – undo
61 61
 // dont on souhaite qu'ils provoquent un saut de paragraphe
62 62
 
63 63
 if (!defined('_BALISES_BLOCS')) {
64
-	define('_BALISES_BLOCS',
65
-	'address|applet|article|aside|blockquote|button|center|d[ltd]|div|fieldset|fig(ure|caption)|footer|form|h[1-6r]|hgroup|head|header|iframe|li|map|marquee|nav|noscript|object|ol|pre|section|t(able|[rdh]|body|foot|extarea)|ul|script|style'
66
-	);
64
+    define('_BALISES_BLOCS',
65
+    'address|applet|article|aside|blockquote|button|center|d[ltd]|div|fieldset|fig(ure|caption)|footer|form|h[1-6r]|hgroup|head|header|iframe|li|map|marquee|nav|noscript|object|ol|pre|section|t(able|[rdh]|body|foot|extarea)|ul|script|style'
66
+    );
67 67
 }
68 68
 
69 69
 if (!defined('_BALISES_BLOCS_REGEXP')) {
70
-	define('_BALISES_BLOCS_REGEXP', ',</?(' . _BALISES_BLOCS . ')[>[:space:]],iS');
70
+    define('_BALISES_BLOCS_REGEXP', ',</?(' . _BALISES_BLOCS . ')[>[:space:]],iS');
71 71
 }
72 72
 
73 73
 //
@@ -79,26 +79,26 @@  discard block
 block discarded – undo
79 79
 // echappe est un div ou un span
80 80
 // http://code.spip.net/@code_echappement
81 81
 function code_echappement($rempl, $source = '', $no_transform = false, $mode = null) {
82
-	if (!strlen($rempl)) {
83
-		return '';
84
-	}
85
-
86
-	// Tester si on echappe en span ou en div
87
-	if (is_null($mode) or !in_array($mode, array('div', 'span'))) {
88
-		$mode = preg_match(',</?(' . _BALISES_BLOCS . ')[>[:space:]],iS', $rempl) ? 'div' : 'span';
89
-	}
90
-
91
-	// Decouper en morceaux, base64 a des probleme selon la taille de la pile
92
-	$taille = 30000;
93
-	$return = "";
94
-	for ($i = 0; $i < strlen($rempl); $i += $taille) {
95
-		// Convertir en base64 et cacher dans un attribut
96
-		// utiliser les " pour eviter le re-encodage de ' et &#8217
97
-		$base64 = base64_encode(substr($rempl, $i, $taille));
98
-		$return .= "<$mode class=\"base64$source\" title=\"$base64\"></$mode>";
99
-	}
100
-
101
-	return $return;
82
+    if (!strlen($rempl)) {
83
+        return '';
84
+    }
85
+
86
+    // Tester si on echappe en span ou en div
87
+    if (is_null($mode) or !in_array($mode, array('div', 'span'))) {
88
+        $mode = preg_match(',</?(' . _BALISES_BLOCS . ')[>[:space:]],iS', $rempl) ? 'div' : 'span';
89
+    }
90
+
91
+    // Decouper en morceaux, base64 a des probleme selon la taille de la pile
92
+    $taille = 30000;
93
+    $return = "";
94
+    for ($i = 0; $i < strlen($rempl); $i += $taille) {
95
+        // Convertir en base64 et cacher dans un attribut
96
+        // utiliser les " pour eviter le re-encodage de ' et &#8217
97
+        $base64 = base64_encode(substr($rempl, $i, $taille));
98
+        $return .= "<$mode class=\"base64$source\" title=\"$base64\"></$mode>";
99
+    }
100
+
101
+    return $return;
102 102
 
103 103
 }
104 104
 
@@ -106,64 +106,64 @@  discard block
 block discarded – undo
106 106
 // Echapper les <html>...</ html>
107 107
 // http://code.spip.net/@traiter_echap_html_dist
108 108
 function traiter_echap_html_dist($regs) {
109
-	return $regs[3];
109
+    return $regs[3];
110 110
 }
111 111
 
112 112
 // Echapper les <code>...</ code>
113 113
 // http://code.spip.net/@traiter_echap_code_dist
114 114
 function traiter_echap_code_dist($regs) {
115
-	list(, , $att, $corps) = $regs;
116
-	$echap = spip_htmlspecialchars($corps); // il ne faut pas passer dans entites_html, ne pas transformer les &#xxx; du code !
117
-
118
-	// ne pas mettre le <div...> s'il n'y a qu'une ligne
119
-	if (is_int(strpos($echap, "\n"))) {
120
-		// supprimer les sauts de ligne debut/fin
121
-		// (mais pas les espaces => ascii art).
122
-		$echap = preg_replace("/^[\n\r]+|[\n\r]+$/s", "", $echap);
123
-		$echap = nl2br($echap);
124
-		$echap = "<div style='text-align: left;' "
125
-			. "class='spip_code' dir='ltr'><code$att>"
126
-			. $echap . "</code></div>";
127
-	} else {
128
-		$echap = "<code$att class='spip_code' dir='ltr'>" . $echap . "</code>";
129
-	}
130
-
131
-	$echap = str_replace("\t", "&nbsp; &nbsp; &nbsp; &nbsp; ", $echap);
132
-	$echap = str_replace("  ", " &nbsp;", $echap);
133
-
134
-	return $echap;
115
+    list(, , $att, $corps) = $regs;
116
+    $echap = spip_htmlspecialchars($corps); // il ne faut pas passer dans entites_html, ne pas transformer les &#xxx; du code !
117
+
118
+    // ne pas mettre le <div...> s'il n'y a qu'une ligne
119
+    if (is_int(strpos($echap, "\n"))) {
120
+        // supprimer les sauts de ligne debut/fin
121
+        // (mais pas les espaces => ascii art).
122
+        $echap = preg_replace("/^[\n\r]+|[\n\r]+$/s", "", $echap);
123
+        $echap = nl2br($echap);
124
+        $echap = "<div style='text-align: left;' "
125
+            . "class='spip_code' dir='ltr'><code$att>"
126
+            . $echap . "</code></div>";
127
+    } else {
128
+        $echap = "<code$att class='spip_code' dir='ltr'>" . $echap . "</code>";
129
+    }
130
+
131
+    $echap = str_replace("\t", "&nbsp; &nbsp; &nbsp; &nbsp; ", $echap);
132
+    $echap = str_replace("  ", " &nbsp;", $echap);
133
+
134
+    return $echap;
135 135
 }
136 136
 
137 137
 // Echapper les <cadre>...</ cadre> aka <frame>...</ frame>
138 138
 // http://code.spip.net/@traiter_echap_cadre_dist
139 139
 function traiter_echap_cadre_dist($regs) {
140
-	$echap = trim(entites_html($regs[3]));
141
-	// compter les lignes un peu plus finement qu'avec les \n
142
-	$lignes = explode("\n", trim($echap));
143
-	$n = 0;
144
-	foreach ($lignes as $l) {
145
-		$n += floor(strlen($l) / 60) + 1;
146
-	}
147
-	$n = max($n, 2);
148
-	$echap = "\n<textarea readonly='readonly' cols='40' rows='$n' class='spip_cadre' dir='ltr'>$echap</textarea>";
149
-
150
-	return $echap;
140
+    $echap = trim(entites_html($regs[3]));
141
+    // compter les lignes un peu plus finement qu'avec les \n
142
+    $lignes = explode("\n", trim($echap));
143
+    $n = 0;
144
+    foreach ($lignes as $l) {
145
+        $n += floor(strlen($l) / 60) + 1;
146
+    }
147
+    $n = max($n, 2);
148
+    $echap = "\n<textarea readonly='readonly' cols='40' rows='$n' class='spip_cadre' dir='ltr'>$echap</textarea>";
149
+
150
+    return $echap;
151 151
 }
152 152
 
153 153
 // http://code.spip.net/@traiter_echap_frame_dist
154 154
 function traiter_echap_frame_dist($regs) {
155
-	return traiter_echap_cadre_dist($regs);
155
+    return traiter_echap_cadre_dist($regs);
156 156
 }
157 157
 
158 158
 // http://code.spip.net/@traiter_echap_script_dist
159 159
 function traiter_echap_script_dist($regs) {
160
-	// rendre joli (et inactif) si c'est un script language=php
161
-	if (preg_match(',<script\b[^>]+php,ims', $regs[0])) {
162
-		return highlight_string($regs[0], true);
163
-	}
160
+    // rendre joli (et inactif) si c'est un script language=php
161
+    if (preg_match(',<script\b[^>]+php,ims', $regs[0])) {
162
+        return highlight_string($regs[0], true);
163
+    }
164 164
 
165
-	// Cas normal : le script passe tel quel
166
-	return $regs[0];
165
+    // Cas normal : le script passe tel quel
166
+    return $regs[0];
167 167
 }
168 168
 
169 169
 define('_PROTEGE_BLOCS', ',<(html|code|cadre|frame|script|style)(\s[^>]*)?>(.*)</\1>,UimsS');
@@ -172,71 +172,71 @@  discard block
 block discarded – undo
172 172
 // - pour $no_transform voir le filtre post_autobr dans inc/filtres
173 173
 // http://code.spip.net/@echappe_html
174 174
 function echappe_html(
175
-	$letexte,
176
-	$source = '',
177
-	$no_transform = false,
178
-	$preg = ''
175
+    $letexte,
176
+    $source = '',
177
+    $no_transform = false,
178
+    $preg = ''
179 179
 ) {
180
-	if (!is_string($letexte) or !strlen($letexte)) {
181
-		return $letexte;
182
-	}
183
-
184
-	// si le texte recu est long PCRE risque d'exploser, on
185
-	// fait donc un mic-mac pour augmenter pcre.backtrack_limit
186
-	if (($len = strlen($letexte)) > 100000) {
187
-		if (!$old = @ini_get('pcre.backtrack_limit')) {
188
-			$old = 100000;
189
-		}
190
-		if ($len > $old) {
191
-			$a = @ini_set('pcre.backtrack_limit', $len);
192
-			spip_log("ini_set pcre.backtrack_limit=$len ($old)");
193
-		}
194
-	}
195
-
196
-	if (($preg or strpos($letexte, "<") !== false)
197
-		and preg_match_all($preg ? $preg : _PROTEGE_BLOCS, $letexte, $matches, PREG_SET_ORDER)
198
-	) {
199
-		foreach ($matches as $regs) {
200
-			// echappements tels quels ?
201
-			if ($no_transform) {
202
-				$echap = $regs[0];
203
-			} // sinon les traiter selon le cas
204
-			else {
205
-				if (function_exists($f = 'traiter_echap_' . strtolower($regs[1]))) {
206
-					$echap = $f($regs);
207
-				} else {
208
-					if (function_exists($f = $f . '_dist')) {
209
-						$echap = $f($regs);
210
-					}
211
-				}
212
-			}
213
-
214
-			$p = strpos($letexte, $regs[0]);
215
-			$letexte = substr_replace($letexte, code_echappement($echap, $source, $no_transform), $p, strlen($regs[0]));
216
-		}
217
-	}
218
-
219
-	if ($no_transform) {
220
-		return $letexte;
221
-	}
222
-
223
-	// Echapper le php pour faire joli (ici, c'est pas pour la securite)
224
-	// seulement si on a echappe les <script>
225
-	// (derogatoire car on ne peut pas faire passer < ? ... ? >
226
-	// dans une callback autonommee
227
-	if (strpos($preg ? $preg : _PROTEGE_BLOCS, 'script') !== false) {
228
-		if (strpos($letexte, "<" . "?") !== false and preg_match_all(',<[?].*($|[?]>),UisS',
229
-				$letexte, $matches, PREG_SET_ORDER)
230
-		) {
231
-			foreach ($matches as $regs) {
232
-				$letexte = str_replace($regs[0],
233
-					code_echappement(highlight_string($regs[0], true), $source),
234
-					$letexte);
235
-			}
236
-		}
237
-	}
238
-
239
-	return $letexte;
180
+    if (!is_string($letexte) or !strlen($letexte)) {
181
+        return $letexte;
182
+    }
183
+
184
+    // si le texte recu est long PCRE risque d'exploser, on
185
+    // fait donc un mic-mac pour augmenter pcre.backtrack_limit
186
+    if (($len = strlen($letexte)) > 100000) {
187
+        if (!$old = @ini_get('pcre.backtrack_limit')) {
188
+            $old = 100000;
189
+        }
190
+        if ($len > $old) {
191
+            $a = @ini_set('pcre.backtrack_limit', $len);
192
+            spip_log("ini_set pcre.backtrack_limit=$len ($old)");
193
+        }
194
+    }
195
+
196
+    if (($preg or strpos($letexte, "<") !== false)
197
+        and preg_match_all($preg ? $preg : _PROTEGE_BLOCS, $letexte, $matches, PREG_SET_ORDER)
198
+    ) {
199
+        foreach ($matches as $regs) {
200
+            // echappements tels quels ?
201
+            if ($no_transform) {
202
+                $echap = $regs[0];
203
+            } // sinon les traiter selon le cas
204
+            else {
205
+                if (function_exists($f = 'traiter_echap_' . strtolower($regs[1]))) {
206
+                    $echap = $f($regs);
207
+                } else {
208
+                    if (function_exists($f = $f . '_dist')) {
209
+                        $echap = $f($regs);
210
+                    }
211
+                }
212
+            }
213
+
214
+            $p = strpos($letexte, $regs[0]);
215
+            $letexte = substr_replace($letexte, code_echappement($echap, $source, $no_transform), $p, strlen($regs[0]));
216
+        }
217
+    }
218
+
219
+    if ($no_transform) {
220
+        return $letexte;
221
+    }
222
+
223
+    // Echapper le php pour faire joli (ici, c'est pas pour la securite)
224
+    // seulement si on a echappe les <script>
225
+    // (derogatoire car on ne peut pas faire passer < ? ... ? >
226
+    // dans une callback autonommee
227
+    if (strpos($preg ? $preg : _PROTEGE_BLOCS, 'script') !== false) {
228
+        if (strpos($letexte, "<" . "?") !== false and preg_match_all(',<[?].*($|[?]>),UisS',
229
+                $letexte, $matches, PREG_SET_ORDER)
230
+        ) {
231
+            foreach ($matches as $regs) {
232
+                $letexte = str_replace($regs[0],
233
+                    code_echappement(highlight_string($regs[0], true), $source),
234
+                    $letexte);
235
+            }
236
+        }
237
+    }
238
+
239
+    return $letexte;
240 240
 }
241 241
 
242 242
 //
@@ -245,52 +245,52 @@  discard block
 block discarded – undo
245 245
 // par propre() : exemple dans multi et dans typo()
246 246
 // http://code.spip.net/@echappe_retour
247 247
 function echappe_retour($letexte, $source = '', $filtre = "") {
248
-	if (strpos($letexte, "base64$source")) {
249
-		# spip_log(spip_htmlspecialchars($letexte));  ## pour les curieux
250
-		$max_prof = 5;
251
-		while (strpos($letexte, "<") !== false
252
-			and
253
-			preg_match_all(',<(span|div)\sclass=[\'"]base64' . $source . '[\'"]\s(.*)>\s*</\1>,UmsS',
254
-				$letexte, $regs, PREG_SET_ORDER)
255
-			and $max_prof--) {
256
-			foreach ($regs as $reg) {
257
-				$rempl = base64_decode(extraire_attribut($reg[0], 'title'));
258
-				// recherche d'attributs supplementaires
259
-				$at = array();
260
-				foreach (array('lang', 'dir') as $attr) {
261
-					if ($a = extraire_attribut($reg[0], $attr)) {
262
-						$at[$attr] = $a;
263
-					}
264
-				}
265
-				if ($at) {
266
-					$rempl = '<' . $reg[1] . '>' . $rempl . '</' . $reg[1] . '>';
267
-					foreach ($at as $attr => $a) {
268
-						$rempl = inserer_attribut($rempl, $attr, $a);
269
-					}
270
-				}
271
-				if ($filtre) {
272
-					$rempl = $filtre($rempl);
273
-				}
274
-				$letexte = str_replace($reg[0], $rempl, $letexte);
275
-			}
276
-		}
277
-	}
278
-
279
-	return $letexte;
248
+    if (strpos($letexte, "base64$source")) {
249
+        # spip_log(spip_htmlspecialchars($letexte));  ## pour les curieux
250
+        $max_prof = 5;
251
+        while (strpos($letexte, "<") !== false
252
+            and
253
+            preg_match_all(',<(span|div)\sclass=[\'"]base64' . $source . '[\'"]\s(.*)>\s*</\1>,UmsS',
254
+                $letexte, $regs, PREG_SET_ORDER)
255
+            and $max_prof--) {
256
+            foreach ($regs as $reg) {
257
+                $rempl = base64_decode(extraire_attribut($reg[0], 'title'));
258
+                // recherche d'attributs supplementaires
259
+                $at = array();
260
+                foreach (array('lang', 'dir') as $attr) {
261
+                    if ($a = extraire_attribut($reg[0], $attr)) {
262
+                        $at[$attr] = $a;
263
+                    }
264
+                }
265
+                if ($at) {
266
+                    $rempl = '<' . $reg[1] . '>' . $rempl . '</' . $reg[1] . '>';
267
+                    foreach ($at as $attr => $a) {
268
+                        $rempl = inserer_attribut($rempl, $attr, $a);
269
+                    }
270
+                }
271
+                if ($filtre) {
272
+                    $rempl = $filtre($rempl);
273
+                }
274
+                $letexte = str_replace($reg[0], $rempl, $letexte);
275
+            }
276
+        }
277
+    }
278
+
279
+    return $letexte;
280 280
 }
281 281
 
282 282
 // Reinserer le javascript de confiance (venant des modeles)
283 283
 
284 284
 // http://code.spip.net/@echappe_retour_modeles
285 285
 function echappe_retour_modeles($letexte, $interdire_scripts = false) {
286
-	$letexte = echappe_retour($letexte);
286
+    $letexte = echappe_retour($letexte);
287 287
 
288
-	// Dans les appels directs hors squelette, securiser aussi ici
289
-	if ($interdire_scripts) {
290
-		$letexte = interdire_scripts($letexte);
291
-	}
288
+    // Dans les appels directs hors squelette, securiser aussi ici
289
+    if ($interdire_scripts) {
290
+        $letexte = interdire_scripts($letexte);
291
+    }
292 292
 
293
-	return trim($letexte);
293
+    return trim($letexte);
294 294
 }
295 295
 
296 296
 
@@ -318,130 +318,130 @@  discard block
 block discarded – undo
318 318
  *     Texte coupé
319 319
  **/
320 320
 function couper($texte, $taille = 50, $suite = null) {
321
-	if (!($length = strlen($texte)) or $taille <= 0) {
322
-		return '';
323
-	}
324
-	$offset = 400 + 2 * $taille;
325
-	while ($offset < $length
326
-		and strlen(preg_replace(",<(!--|\w|/)[^>]+>,Uims", "", substr($texte, 0, $offset))) < $taille) {
327
-		$offset = 2 * $offset;
328
-	}
329
-	if ($offset < $length
330
-		&& ($p_tag_ouvrant = strpos($texte, '<', $offset)) !== null
331
-	) {
332
-		$p_tag_fermant = strpos($texte, '>', $offset);
333
-		if ($p_tag_fermant && ($p_tag_fermant < $p_tag_ouvrant)) {
334
-			$offset = $p_tag_fermant + 1;
335
-		} // prolonger la coupe jusqu'au tag fermant suivant eventuel
336
-	}
337
-	$texte = substr($texte, 0, $offset); /* eviter de travailler sur 10ko pour extraire 150 caracteres */
338
-
339
-	if (!function_exists('nettoyer_raccourcis_typo')) {
340
-		include_spip('inc/lien');
341
-	}
342
-	$texte = nettoyer_raccourcis_typo($texte);
343
-
344
-	// balises de sauts de ligne et paragraphe
345
-	$texte = preg_replace("/<p( [^>]*)?" . ">/", "\r", $texte);
346
-	$texte = preg_replace("/<br( [^>]*)?" . ">/", "\n", $texte);
347
-
348
-	// on repasse les doubles \n en \r que nettoyer_raccourcis_typo() a pu modifier
349
-	$texte = str_replace("\n\n", "\r", $texte);
350
-
351
-	// supprimer les tags
352
-	$texte = supprimer_tags($texte);
353
-	$texte = trim(str_replace("\n", " ", $texte));
354
-	$texte .= "\n";  // marquer la fin
355
-
356
-	// corriger la longueur de coupe
357
-	// en fonction de la presence de caracteres utf
358
-	if ($GLOBALS['meta']['charset'] == 'utf-8') {
359
-		$long = charset2unicode($texte);
360
-		$long = spip_substr($long, 0, max($taille, 1));
361
-		$nbcharutf = preg_match_all('/(&#[0-9]{3,6};)/S', $long, $matches);
362
-		$taille += $nbcharutf;
363
-	}
364
-
365
-
366
-	// couper au mot precedent
367
-	$long = spip_substr($texte, 0, max($taille - 4, 1));
368
-	$u = $GLOBALS['meta']['pcre_u'];
369
-	$court = preg_replace("/([^\s][\s]+)[^\s]*\n?$/" . $u, "\\1", $long);
370
-	if (is_null($suite)) {
371
-		$suite = (defined('_COUPER_SUITE') ? _COUPER_SUITE : '&nbsp;(...)');
372
-	}
373
-	$points = $suite;
374
-
375
-	// trop court ? ne pas faire de (...)
376
-	if (spip_strlen($court) < max(0.75 * $taille, 2)) {
377
-		$points = '';
378
-		$long = spip_substr($texte, 0, $taille);
379
-		$texte = preg_replace("/([^\s][\s]+)[^\s]*\n?$/" . $u, "\\1", $long);
380
-		// encore trop court ? couper au caractere
381
-		if (spip_strlen($texte) < 0.75 * $taille) {
382
-			$texte = $long;
383
-		}
384
-	} else {
385
-		$texte = $court;
386
-	}
387
-
388
-	if (strpos($texte, "\n"))  // la fin est encore la : c'est qu'on n'a pas de texte de suite
389
-	{
390
-		$points = '';
391
-	}
392
-
393
-	// remettre les paragraphes
394
-	$texte = preg_replace("/\r+/", "\n\n", $texte);
395
-
396
-	// supprimer l'eventuelle entite finale mal coupee
397
-	$texte = preg_replace('/&#?[a-z0-9]*$/S', '', $texte);
398
-
399
-	return quote_amp(trim($texte)) . $points;
321
+    if (!($length = strlen($texte)) or $taille <= 0) {
322
+        return '';
323
+    }
324
+    $offset = 400 + 2 * $taille;
325
+    while ($offset < $length
326
+        and strlen(preg_replace(",<(!--|\w|/)[^>]+>,Uims", "", substr($texte, 0, $offset))) < $taille) {
327
+        $offset = 2 * $offset;
328
+    }
329
+    if ($offset < $length
330
+        && ($p_tag_ouvrant = strpos($texte, '<', $offset)) !== null
331
+    ) {
332
+        $p_tag_fermant = strpos($texte, '>', $offset);
333
+        if ($p_tag_fermant && ($p_tag_fermant < $p_tag_ouvrant)) {
334
+            $offset = $p_tag_fermant + 1;
335
+        } // prolonger la coupe jusqu'au tag fermant suivant eventuel
336
+    }
337
+    $texte = substr($texte, 0, $offset); /* eviter de travailler sur 10ko pour extraire 150 caracteres */
338
+
339
+    if (!function_exists('nettoyer_raccourcis_typo')) {
340
+        include_spip('inc/lien');
341
+    }
342
+    $texte = nettoyer_raccourcis_typo($texte);
343
+
344
+    // balises de sauts de ligne et paragraphe
345
+    $texte = preg_replace("/<p( [^>]*)?" . ">/", "\r", $texte);
346
+    $texte = preg_replace("/<br( [^>]*)?" . ">/", "\n", $texte);
347
+
348
+    // on repasse les doubles \n en \r que nettoyer_raccourcis_typo() a pu modifier
349
+    $texte = str_replace("\n\n", "\r", $texte);
350
+
351
+    // supprimer les tags
352
+    $texte = supprimer_tags($texte);
353
+    $texte = trim(str_replace("\n", " ", $texte));
354
+    $texte .= "\n";  // marquer la fin
355
+
356
+    // corriger la longueur de coupe
357
+    // en fonction de la presence de caracteres utf
358
+    if ($GLOBALS['meta']['charset'] == 'utf-8') {
359
+        $long = charset2unicode($texte);
360
+        $long = spip_substr($long, 0, max($taille, 1));
361
+        $nbcharutf = preg_match_all('/(&#[0-9]{3,6};)/S', $long, $matches);
362
+        $taille += $nbcharutf;
363
+    }
364
+
365
+
366
+    // couper au mot precedent
367
+    $long = spip_substr($texte, 0, max($taille - 4, 1));
368
+    $u = $GLOBALS['meta']['pcre_u'];
369
+    $court = preg_replace("/([^\s][\s]+)[^\s]*\n?$/" . $u, "\\1", $long);
370
+    if (is_null($suite)) {
371
+        $suite = (defined('_COUPER_SUITE') ? _COUPER_SUITE : '&nbsp;(...)');
372
+    }
373
+    $points = $suite;
374
+
375
+    // trop court ? ne pas faire de (...)
376
+    if (spip_strlen($court) < max(0.75 * $taille, 2)) {
377
+        $points = '';
378
+        $long = spip_substr($texte, 0, $taille);
379
+        $texte = preg_replace("/([^\s][\s]+)[^\s]*\n?$/" . $u, "\\1", $long);
380
+        // encore trop court ? couper au caractere
381
+        if (spip_strlen($texte) < 0.75 * $taille) {
382
+            $texte = $long;
383
+        }
384
+    } else {
385
+        $texte = $court;
386
+    }
387
+
388
+    if (strpos($texte, "\n"))  // la fin est encore la : c'est qu'on n'a pas de texte de suite
389
+    {
390
+        $points = '';
391
+    }
392
+
393
+    // remettre les paragraphes
394
+    $texte = preg_replace("/\r+/", "\n\n", $texte);
395
+
396
+    // supprimer l'eventuelle entite finale mal coupee
397
+    $texte = preg_replace('/&#?[a-z0-9]*$/S', '', $texte);
398
+
399
+    return quote_amp(trim($texte)) . $points;
400 400
 }
401 401
 
402 402
 
403 403
 // http://code.spip.net/@protege_js_modeles
404 404
 function protege_js_modeles($t) {
405
-	if (isset($GLOBALS['visiteur_session'])) {
406
-		if (preg_match_all(',<script.*?($|</script.),isS', $t, $r, PREG_SET_ORDER)) {
407
-			if (!defined('_PROTEGE_JS_MODELES')) {
408
-				include_spip('inc/acces');
409
-				define('_PROTEGE_JS_MODELES', creer_uniqid());
410
-			}
411
-			foreach ($r as $regs) {
412
-				$t = str_replace($regs[0], code_echappement($regs[0], 'javascript' . _PROTEGE_JS_MODELES), $t);
413
-			}
414
-		}
415
-		if (preg_match_all(',<\?php.*?($|\?' . '>),isS', $t, $r, PREG_SET_ORDER)) {
416
-			if (!defined('_PROTEGE_PHP_MODELES')) {
417
-				include_spip('inc/acces');
418
-				define('_PROTEGE_PHP_MODELES', creer_uniqid());
419
-			}
420
-			foreach ($r as $regs) {
421
-				$t = str_replace($regs[0], code_echappement($regs[0], 'php' . _PROTEGE_PHP_MODELES), $t);
422
-			}
423
-		}
424
-	}
425
-
426
-	return $t;
405
+    if (isset($GLOBALS['visiteur_session'])) {
406
+        if (preg_match_all(',<script.*?($|</script.),isS', $t, $r, PREG_SET_ORDER)) {
407
+            if (!defined('_PROTEGE_JS_MODELES')) {
408
+                include_spip('inc/acces');
409
+                define('_PROTEGE_JS_MODELES', creer_uniqid());
410
+            }
411
+            foreach ($r as $regs) {
412
+                $t = str_replace($regs[0], code_echappement($regs[0], 'javascript' . _PROTEGE_JS_MODELES), $t);
413
+            }
414
+        }
415
+        if (preg_match_all(',<\?php.*?($|\?' . '>),isS', $t, $r, PREG_SET_ORDER)) {
416
+            if (!defined('_PROTEGE_PHP_MODELES')) {
417
+                include_spip('inc/acces');
418
+                define('_PROTEGE_PHP_MODELES', creer_uniqid());
419
+            }
420
+            foreach ($r as $regs) {
421
+                $t = str_replace($regs[0], code_echappement($regs[0], 'php' . _PROTEGE_PHP_MODELES), $t);
422
+            }
423
+        }
424
+    }
425
+
426
+    return $t;
427 427
 }
428 428
 
429 429
 
430 430
 function echapper_faux_tags($letexte) {
431
-	if (strpos($letexte, '<') === false) {
432
-		return $letexte;
433
-	}
434
-	$textMatches = preg_split(',(</?[a-z!][^<>]*>),', $letexte, null, PREG_SPLIT_DELIM_CAPTURE);
435
-
436
-	$letexte = "";
437
-	while (count($textMatches)) {
438
-		// un texte a echapper
439
-		$letexte .= str_replace("<", '&lt;', array_shift($textMatches));
440
-		// un tag html qui a servit a faite le split
441
-		$letexte .= array_shift($textMatches);
442
-	}
443
-
444
-	return $letexte;
431
+    if (strpos($letexte, '<') === false) {
432
+        return $letexte;
433
+    }
434
+    $textMatches = preg_split(',(</?[a-z!][^<>]*>),', $letexte, null, PREG_SPLIT_DELIM_CAPTURE);
435
+
436
+    $letexte = "";
437
+    while (count($textMatches)) {
438
+        // un texte a echapper
439
+        $letexte .= str_replace("<", '&lt;', array_shift($textMatches));
440
+        // un tag html qui a servit a faite le split
441
+        $letexte .= array_shift($textMatches);
442
+    }
443
+
444
+    return $letexte;
445 445
 }
446 446
 
447 447
 /**
@@ -454,44 +454,44 @@  discard block
 block discarded – undo
454 454
  * @return string
455 455
  */
456 456
 function echapper_html_suspect($texte, $strict=true) {
457
-	static $echapper_html_suspect;
458
-	if (!$texte or !is_string($texte)) {
459
-		return $texte;
460
-	}
461
-
462
-	if (!isset($echapper_html_suspect)) {
463
-		$echapper_html_suspect = charger_fonction('echapper_html_suspect', 'inc', true);
464
-	}
465
-	// si fonction personalisee, on delegue
466
-	if ($echapper_html_suspect) {
467
-		return $echapper_html_suspect($texte, $strict);
468
-	}
469
-
470
-	if (strpos($texte, '<') === false
471
-	  or strpos($texte, '=') === false) {
472
-		return $texte;
473
-	}
474
-
475
-	// quand c'est du texte qui passe par propre on est plus coulant tant qu'il y a pas d'attribut du type onxxx=
476
-	// car sinon on declenche sur les modeles ou ressources
477
-	if (!$strict and
478
-	  (strpos($texte,'on') === false or !preg_match(",<\w+.*\bon\w+\s*=,UimsS", $texte))
479
-	  ){
480
-		return $texte;
481
-	}
482
-
483
-	// on teste sur strlen car safehtml supprime le contenu dangereux
484
-	// mais il peut aussi changer des ' en " sur les attributs html,
485
-	// donc un test d'egalite est trop strict
486
-	if (strlen(safehtml($texte)) !== strlen($texte)) {
487
-		$texte = str_replace("<", "&lt;", $texte);
488
-		if (!function_exists('attribut_html')) {
489
-			include_spip('inc/filtres');
490
-		}
491
-		$texte = "<mark class='danger-js' title='".attribut_html(_T('erreur_contenu_suspect'))."'>⚠️</mark> ".$texte;
492
-	}
493
-
494
-	return $texte;
457
+    static $echapper_html_suspect;
458
+    if (!$texte or !is_string($texte)) {
459
+        return $texte;
460
+    }
461
+
462
+    if (!isset($echapper_html_suspect)) {
463
+        $echapper_html_suspect = charger_fonction('echapper_html_suspect', 'inc', true);
464
+    }
465
+    // si fonction personalisee, on delegue
466
+    if ($echapper_html_suspect) {
467
+        return $echapper_html_suspect($texte, $strict);
468
+    }
469
+
470
+    if (strpos($texte, '<') === false
471
+      or strpos($texte, '=') === false) {
472
+        return $texte;
473
+    }
474
+
475
+    // quand c'est du texte qui passe par propre on est plus coulant tant qu'il y a pas d'attribut du type onxxx=
476
+    // car sinon on declenche sur les modeles ou ressources
477
+    if (!$strict and
478
+      (strpos($texte,'on') === false or !preg_match(",<\w+.*\bon\w+\s*=,UimsS", $texte))
479
+        ){
480
+        return $texte;
481
+    }
482
+
483
+    // on teste sur strlen car safehtml supprime le contenu dangereux
484
+    // mais il peut aussi changer des ' en " sur les attributs html,
485
+    // donc un test d'egalite est trop strict
486
+    if (strlen(safehtml($texte)) !== strlen($texte)) {
487
+        $texte = str_replace("<", "&lt;", $texte);
488
+        if (!function_exists('attribut_html')) {
489
+            include_spip('inc/filtres');
490
+        }
491
+        $texte = "<mark class='danger-js' title='".attribut_html(_T('erreur_contenu_suspect'))."'>⚠️</mark> ".$texte;
492
+    }
493
+
494
+    return $texte;
495 495
 }
496 496
 
497 497
 
@@ -512,27 +512,27 @@  discard block
 block discarded – undo
512 512
  *      Texte sécurisé
513 513
  **/
514 514
 function safehtml($t) {
515
-	static $safehtml;
516
-
517
-	if (!$t or !is_string($t)) {
518
-		return $t;
519
-	}
520
-	# attention safehtml nettoie deux ou trois caracteres de plus. A voir
521
-	if (strpos($t, '<') === false) {
522
-		return str_replace("\x00", '', $t);
523
-	}
524
-
525
-	$t = interdire_scripts($t); // jolifier le php
526
-	$t = echappe_js($t);
527
-
528
-	if (!isset($safehtml)) {
529
-		$safehtml = charger_fonction('safehtml', 'inc', true);
530
-	}
531
-	if ($safehtml) {
532
-		$t = $safehtml($t);
533
-	}
534
-
535
-	return interdire_scripts($t); // interdire le php (2 precautions)
515
+    static $safehtml;
516
+
517
+    if (!$t or !is_string($t)) {
518
+        return $t;
519
+    }
520
+    # attention safehtml nettoie deux ou trois caracteres de plus. A voir
521
+    if (strpos($t, '<') === false) {
522
+        return str_replace("\x00", '', $t);
523
+    }
524
+
525
+    $t = interdire_scripts($t); // jolifier le php
526
+    $t = echappe_js($t);
527
+
528
+    if (!isset($safehtml)) {
529
+        $safehtml = charger_fonction('safehtml', 'inc', true);
530
+    }
531
+    if ($safehtml) {
532
+        $t = $safehtml($t);
533
+    }
534
+
535
+    return interdire_scripts($t); // interdire le php (2 precautions)
536 536
 }
537 537
 
538 538
 
@@ -554,10 +554,10 @@  discard block
 block discarded – undo
554 554
  *     Texte sans les modèles d'image
555 555
  **/
556 556
 function supprime_img($letexte, $message = null) {
557
-	if ($message === null) {
558
-		$message = '(' . _T('img_indisponible') . ')';
559
-	}
557
+    if ($message === null) {
558
+        $message = '(' . _T('img_indisponible') . ')';
559
+    }
560 560
 
561
-	return preg_replace(',<(img|doc|emb)([0-9]+)(\|([^>]*))?' . '\s*/?' . '>,i',
562
-		$message, $letexte);
561
+    return preg_replace(',<(img|doc|emb)([0-9]+)(\|([^>]*))?' . '\s*/?' . '>,i',
562
+        $message, $letexte);
563 563
 }
Please login to merge, or discard this patch.
Spacing   +25 added lines, -25 removed lines patch added patch discarded remove patch
@@ -44,7 +44,7 @@  discard block
 block discarded – undo
44 44
 	// celle du texte) et public (spip_lang est la langue du texte)
45 45
 	$dir = _DIR_RESTREINT ? lang_dir() : lang_dir($GLOBALS['spip_lang']);
46 46
 
47
-	$p = 'puce' . (test_espace_prive() ? '_prive' : '');
47
+	$p = 'puce'.(test_espace_prive() ? '_prive' : '');
48 48
 	if ($dir == 'rtl') {
49 49
 		$p .= '_rtl';
50 50
 	}
@@ -67,7 +67,7 @@  discard block
 block discarded – undo
67 67
 }
68 68
 
69 69
 if (!defined('_BALISES_BLOCS_REGEXP')) {
70
-	define('_BALISES_BLOCS_REGEXP', ',</?(' . _BALISES_BLOCS . ')[>[:space:]],iS');
70
+	define('_BALISES_BLOCS_REGEXP', ',</?('._BALISES_BLOCS.')[>[:space:]],iS');
71 71
 }
72 72
 
73 73
 //
@@ -85,7 +85,7 @@  discard block
 block discarded – undo
85 85
 
86 86
 	// Tester si on echappe en span ou en div
87 87
 	if (is_null($mode) or !in_array($mode, array('div', 'span'))) {
88
-		$mode = preg_match(',</?(' . _BALISES_BLOCS . ')[>[:space:]],iS', $rempl) ? 'div' : 'span';
88
+		$mode = preg_match(',</?('._BALISES_BLOCS.')[>[:space:]],iS', $rempl) ? 'div' : 'span';
89 89
 	}
90 90
 
91 91
 	// Decouper en morceaux, base64 a des probleme selon la taille de la pile
@@ -112,7 +112,7 @@  discard block
 block discarded – undo
112 112
 // Echapper les <code>...</ code>
113 113
 // http://code.spip.net/@traiter_echap_code_dist
114 114
 function traiter_echap_code_dist($regs) {
115
-	list(, , $att, $corps) = $regs;
115
+	list(,, $att, $corps) = $regs;
116 116
 	$echap = spip_htmlspecialchars($corps); // il ne faut pas passer dans entites_html, ne pas transformer les &#xxx; du code !
117 117
 
118 118
 	// ne pas mettre le <div...> s'il n'y a qu'une ligne
@@ -123,9 +123,9 @@  discard block
 block discarded – undo
123 123
 		$echap = nl2br($echap);
124 124
 		$echap = "<div style='text-align: left;' "
125 125
 			. "class='spip_code' dir='ltr'><code$att>"
126
-			. $echap . "</code></div>";
126
+			. $echap."</code></div>";
127 127
 	} else {
128
-		$echap = "<code$att class='spip_code' dir='ltr'>" . $echap . "</code>";
128
+		$echap = "<code$att class='spip_code' dir='ltr'>".$echap."</code>";
129 129
 	}
130 130
 
131 131
 	$echap = str_replace("\t", "&nbsp; &nbsp; &nbsp; &nbsp; ", $echap);
@@ -202,10 +202,10 @@  discard block
 block discarded – undo
202 202
 				$echap = $regs[0];
203 203
 			} // sinon les traiter selon le cas
204 204
 			else {
205
-				if (function_exists($f = 'traiter_echap_' . strtolower($regs[1]))) {
205
+				if (function_exists($f = 'traiter_echap_'.strtolower($regs[1]))) {
206 206
 					$echap = $f($regs);
207 207
 				} else {
208
-					if (function_exists($f = $f . '_dist')) {
208
+					if (function_exists($f = $f.'_dist')) {
209 209
 						$echap = $f($regs);
210 210
 					}
211 211
 				}
@@ -225,7 +225,7 @@  discard block
 block discarded – undo
225 225
 	// (derogatoire car on ne peut pas faire passer < ? ... ? >
226 226
 	// dans une callback autonommee
227 227
 	if (strpos($preg ? $preg : _PROTEGE_BLOCS, 'script') !== false) {
228
-		if (strpos($letexte, "<" . "?") !== false and preg_match_all(',<[?].*($|[?]>),UisS',
228
+		if (strpos($letexte, "<"."?") !== false and preg_match_all(',<[?].*($|[?]>),UisS',
229 229
 				$letexte, $matches, PREG_SET_ORDER)
230 230
 		) {
231 231
 			foreach ($matches as $regs) {
@@ -250,7 +250,7 @@  discard block
 block discarded – undo
250 250
 		$max_prof = 5;
251 251
 		while (strpos($letexte, "<") !== false
252 252
 			and
253
-			preg_match_all(',<(span|div)\sclass=[\'"]base64' . $source . '[\'"]\s(.*)>\s*</\1>,UmsS',
253
+			preg_match_all(',<(span|div)\sclass=[\'"]base64'.$source.'[\'"]\s(.*)>\s*</\1>,UmsS',
254 254
 				$letexte, $regs, PREG_SET_ORDER)
255 255
 			and $max_prof--) {
256 256
 			foreach ($regs as $reg) {
@@ -263,7 +263,7 @@  discard block
 block discarded – undo
263 263
 					}
264 264
 				}
265 265
 				if ($at) {
266
-					$rempl = '<' . $reg[1] . '>' . $rempl . '</' . $reg[1] . '>';
266
+					$rempl = '<'.$reg[1].'>'.$rempl.'</'.$reg[1].'>';
267 267
 					foreach ($at as $attr => $a) {
268 268
 						$rempl = inserer_attribut($rempl, $attr, $a);
269 269
 					}
@@ -342,8 +342,8 @@  discard block
 block discarded – undo
342 342
 	$texte = nettoyer_raccourcis_typo($texte);
343 343
 
344 344
 	// balises de sauts de ligne et paragraphe
345
-	$texte = preg_replace("/<p( [^>]*)?" . ">/", "\r", $texte);
346
-	$texte = preg_replace("/<br( [^>]*)?" . ">/", "\n", $texte);
345
+	$texte = preg_replace("/<p( [^>]*)?".">/", "\r", $texte);
346
+	$texte = preg_replace("/<br( [^>]*)?".">/", "\n", $texte);
347 347
 
348 348
 	// on repasse les doubles \n en \r que nettoyer_raccourcis_typo() a pu modifier
349 349
 	$texte = str_replace("\n\n", "\r", $texte);
@@ -351,7 +351,7 @@  discard block
 block discarded – undo
351 351
 	// supprimer les tags
352 352
 	$texte = supprimer_tags($texte);
353 353
 	$texte = trim(str_replace("\n", " ", $texte));
354
-	$texte .= "\n";  // marquer la fin
354
+	$texte .= "\n"; // marquer la fin
355 355
 
356 356
 	// corriger la longueur de coupe
357 357
 	// en fonction de la presence de caracteres utf
@@ -366,7 +366,7 @@  discard block
 block discarded – undo
366 366
 	// couper au mot precedent
367 367
 	$long = spip_substr($texte, 0, max($taille - 4, 1));
368 368
 	$u = $GLOBALS['meta']['pcre_u'];
369
-	$court = preg_replace("/([^\s][\s]+)[^\s]*\n?$/" . $u, "\\1", $long);
369
+	$court = preg_replace("/([^\s][\s]+)[^\s]*\n?$/".$u, "\\1", $long);
370 370
 	if (is_null($suite)) {
371 371
 		$suite = (defined('_COUPER_SUITE') ? _COUPER_SUITE : '&nbsp;(...)');
372 372
 	}
@@ -376,7 +376,7 @@  discard block
 block discarded – undo
376 376
 	if (spip_strlen($court) < max(0.75 * $taille, 2)) {
377 377
 		$points = '';
378 378
 		$long = spip_substr($texte, 0, $taille);
379
-		$texte = preg_replace("/([^\s][\s]+)[^\s]*\n?$/" . $u, "\\1", $long);
379
+		$texte = preg_replace("/([^\s][\s]+)[^\s]*\n?$/".$u, "\\1", $long);
380 380
 		// encore trop court ? couper au caractere
381 381
 		if (spip_strlen($texte) < 0.75 * $taille) {
382 382
 			$texte = $long;
@@ -396,7 +396,7 @@  discard block
 block discarded – undo
396 396
 	// supprimer l'eventuelle entite finale mal coupee
397 397
 	$texte = preg_replace('/&#?[a-z0-9]*$/S', '', $texte);
398 398
 
399
-	return quote_amp(trim($texte)) . $points;
399
+	return quote_amp(trim($texte)).$points;
400 400
 }
401 401
 
402 402
 
@@ -409,16 +409,16 @@  discard block
 block discarded – undo
409 409
 				define('_PROTEGE_JS_MODELES', creer_uniqid());
410 410
 			}
411 411
 			foreach ($r as $regs) {
412
-				$t = str_replace($regs[0], code_echappement($regs[0], 'javascript' . _PROTEGE_JS_MODELES), $t);
412
+				$t = str_replace($regs[0], code_echappement($regs[0], 'javascript'._PROTEGE_JS_MODELES), $t);
413 413
 			}
414 414
 		}
415
-		if (preg_match_all(',<\?php.*?($|\?' . '>),isS', $t, $r, PREG_SET_ORDER)) {
415
+		if (preg_match_all(',<\?php.*?($|\?'.'>),isS', $t, $r, PREG_SET_ORDER)) {
416 416
 			if (!defined('_PROTEGE_PHP_MODELES')) {
417 417
 				include_spip('inc/acces');
418 418
 				define('_PROTEGE_PHP_MODELES', creer_uniqid());
419 419
 			}
420 420
 			foreach ($r as $regs) {
421
-				$t = str_replace($regs[0], code_echappement($regs[0], 'php' . _PROTEGE_PHP_MODELES), $t);
421
+				$t = str_replace($regs[0], code_echappement($regs[0], 'php'._PROTEGE_PHP_MODELES), $t);
422 422
 			}
423 423
 		}
424 424
 	}
@@ -453,7 +453,7 @@  discard block
 block discarded – undo
453 453
  * @param bool $strict
454 454
  * @return string
455 455
  */
456
-function echapper_html_suspect($texte, $strict=true) {
456
+function echapper_html_suspect($texte, $strict = true) {
457 457
 	static $echapper_html_suspect;
458 458
 	if (!$texte or !is_string($texte)) {
459 459
 		return $texte;
@@ -475,8 +475,8 @@  discard block
 block discarded – undo
475 475
 	// quand c'est du texte qui passe par propre on est plus coulant tant qu'il y a pas d'attribut du type onxxx=
476 476
 	// car sinon on declenche sur les modeles ou ressources
477 477
 	if (!$strict and
478
-	  (strpos($texte,'on') === false or !preg_match(",<\w+.*\bon\w+\s*=,UimsS", $texte))
479
-	  ){
478
+	  (strpos($texte, 'on') === false or !preg_match(",<\w+.*\bon\w+\s*=,UimsS", $texte))
479
+	  ) {
480 480
 		return $texte;
481 481
 	}
482 482
 
@@ -555,9 +555,9 @@  discard block
 block discarded – undo
555 555
  **/
556 556
 function supprime_img($letexte, $message = null) {
557 557
 	if ($message === null) {
558
-		$message = '(' . _T('img_indisponible') . ')';
558
+		$message = '('._T('img_indisponible').')';
559 559
 	}
560 560
 
561
-	return preg_replace(',<(img|doc|emb)([0-9]+)(\|([^>]*))?' . '\s*/?' . '>,i',
561
+	return preg_replace(',<(img|doc|emb)([0-9]+)(\|([^>]*))?'.'\s*/?'.'>,i',
562 562
 		$message, $letexte);
563 563
 }
Please login to merge, or discard this patch.
ecrire/req/mysql.php 4 patches
Doc Comments   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -337,8 +337,8 @@  discard block
 block discarded – undo
337 337
  * @param string|array $select Champs sélectionnés
338 338
  * @param string|array $from Tables sélectionnées
339 339
  * @param string|array $where Contraintes
340
- * @param string|array $groupby Regroupements
341
- * @param string|array $orderby Tris
340
+ * @param string $groupby Regroupements
341
+ * @param string $orderby Tris
342 342
  * @param string $limit Limites de résultats
343 343
  * @param string|array $having Contraintes posts sélections
344 344
  * @param string $serveur Nom de la connexion
@@ -970,7 +970,7 @@  discard block
 block discarded – undo
970 970
  * @param int $row_number Position. Déplacer le pointeur à cette ligne
971 971
  * @param string $serveur Nom de la connexion
972 972
  * @param bool $requeter Inutilisé
973
- * @return bool True si déplacement réussi, false sinon.
973
+ * @return boolean|null True si déplacement réussi, false sinon.
974 974
  **/
975 975
 function spip_mysql_seek($r, $row_number, $serveur = '', $requeter = true) {
976 976
 	if ($r and mysqli_num_rows($r)) {
Please login to merge, or discard this patch.
Braces   +2 added lines, -4 removed lines patch added patch discarded remove patch
@@ -50,11 +50,9 @@
 block discarded – undo
50 50
 		$port and !is_numeric($socket = $port)
51 51
 		and (!$host or $host=='localhost')) {
52 52
 		$link = @mysqli_connect($host, $login, $pass, '', null, $socket);
53
-	}
54
-	elseif ($port) {
53
+	} elseif ($port) {
55 54
 		$link = @mysqli_connect($host, $login, $pass, '', $port);
56
-	}
57
-	else {
55
+	} else {
58 56
 		$link = @mysqli_connect($host, $login, $pass);
59 57
 	}
60 58
 
Please login to merge, or discard this patch.
Indentation   +786 added lines, -786 removed lines patch added patch discarded remove patch
@@ -20,11 +20,11 @@  discard block
 block discarded – undo
20 20
  */
21 21
 
22 22
 if (!defined('_ECRIRE_INC_VERSION')) {
23
-	return;
23
+    return;
24 24
 }
25 25
 
26 26
 if (!defined('_MYSQL_NOPLANES')) {
27
-	define('_MYSQL_NOPLANES', true);
27
+    define('_MYSQL_NOPLANES', true);
28 28
 }
29 29
 
30 30
 /**
@@ -41,104 +41,104 @@  discard block
 block discarded – undo
41 41
  *     - tableau décrivant la connexion sinon
42 42
  */
43 43
 function req_mysql_dist($host, $port, $login, $pass, $db = '', $prefixe = '') {
44
-	if (!extension_loaded('mysqli')) {
45
-		return false;
46
-	}
47
-
48
-	// si port est fourni mais pas host, c'est un socket -> compat avec vieille syntaxe de mysql_connect() et anciens fichiers connect.php
49
-	if (
50
-		$port and !is_numeric($socket = $port)
51
-		and (!$host or $host=='localhost')) {
52
-		$link = @mysqli_connect($host, $login, $pass, '', null, $socket);
53
-	}
54
-	elseif ($port) {
55
-		$link = @mysqli_connect($host, $login, $pass, '', $port);
56
-	}
57
-	else {
58
-		$link = @mysqli_connect($host, $login, $pass);
59
-	}
60
-
61
-	if (!$link) {
62
-		spip_log('Echec mysqli_connect. Erreur : ' . mysqli_connect_error(), 'mysql.' . _LOG_HS);
63
-
64
-		return false;
65
-	}
66
-	$last = '';
67
-	if (!$db) {
68
-		$ok = $link;
69
-		$db = 'spip';
70
-	} else {
71
-		$ok = mysqli_select_db($link, $db);
72
-		if (defined('_MYSQL_SET_SQL_MODE')
73
-			or defined('_MYSQL_SQL_MODE_TEXT_NOT_NULL') // compatibilite
74
-		) {
75
-			mysqli_query($link, $last = "set sql_mode=''");
76
-		}
77
-	}
78
-
79
-	spip_log("Connexion MySQLi vers $host, base $db, prefixe $prefixe " . ($ok ? "operationnelle" : 'impossible'),
80
-		_LOG_DEBUG);
81
-
82
-	return !$ok ? false : array(
83
-		'db' => $db,
84
-		'last' => $last,
85
-		'prefixe' => $prefixe ? $prefixe : $db,
86
-		'link' => $link,
87
-		'total_requetes' => 0,
88
-	);
44
+    if (!extension_loaded('mysqli')) {
45
+        return false;
46
+    }
47
+
48
+    // si port est fourni mais pas host, c'est un socket -> compat avec vieille syntaxe de mysql_connect() et anciens fichiers connect.php
49
+    if (
50
+        $port and !is_numeric($socket = $port)
51
+        and (!$host or $host=='localhost')) {
52
+        $link = @mysqli_connect($host, $login, $pass, '', null, $socket);
53
+    }
54
+    elseif ($port) {
55
+        $link = @mysqli_connect($host, $login, $pass, '', $port);
56
+    }
57
+    else {
58
+        $link = @mysqli_connect($host, $login, $pass);
59
+    }
60
+
61
+    if (!$link) {
62
+        spip_log('Echec mysqli_connect. Erreur : ' . mysqli_connect_error(), 'mysql.' . _LOG_HS);
63
+
64
+        return false;
65
+    }
66
+    $last = '';
67
+    if (!$db) {
68
+        $ok = $link;
69
+        $db = 'spip';
70
+    } else {
71
+        $ok = mysqli_select_db($link, $db);
72
+        if (defined('_MYSQL_SET_SQL_MODE')
73
+            or defined('_MYSQL_SQL_MODE_TEXT_NOT_NULL') // compatibilite
74
+        ) {
75
+            mysqli_query($link, $last = "set sql_mode=''");
76
+        }
77
+    }
78
+
79
+    spip_log("Connexion MySQLi vers $host, base $db, prefixe $prefixe " . ($ok ? "operationnelle" : 'impossible'),
80
+        _LOG_DEBUG);
81
+
82
+    return !$ok ? false : array(
83
+        'db' => $db,
84
+        'last' => $last,
85
+        'prefixe' => $prefixe ? $prefixe : $db,
86
+        'link' => $link,
87
+        'total_requetes' => 0,
88
+    );
89 89
 }
90 90
 
91 91
 
92 92
 $GLOBALS['spip_mysql_functions_1'] = array(
93
-	'alter' => 'spip_mysql_alter',
94
-	'count' => 'spip_mysql_count',
95
-	'countsel' => 'spip_mysql_countsel',
96
-	'create' => 'spip_mysql_create',
97
-	'create_base' => 'spip_mysql_create_base',
98
-	'create_view' => 'spip_mysql_create_view',
99
-	'date_proche' => 'spip_mysql_date_proche',
100
-	'delete' => 'spip_mysql_delete',
101
-	'drop_table' => 'spip_mysql_drop_table',
102
-	'drop_view' => 'spip_mysql_drop_view',
103
-	'errno' => 'spip_mysql_errno',
104
-	'error' => 'spip_mysql_error',
105
-	'explain' => 'spip_mysql_explain',
106
-	'fetch' => 'spip_mysql_fetch',
107
-	'seek' => 'spip_mysql_seek',
108
-	'free' => 'spip_mysql_free',
109
-	'hex' => 'spip_mysql_hex',
110
-	'in' => 'spip_mysql_in',
111
-	'insert' => 'spip_mysql_insert',
112
-	'insertq' => 'spip_mysql_insertq',
113
-	'insertq_multi' => 'spip_mysql_insertq_multi',
114
-	'listdbs' => 'spip_mysql_listdbs',
115
-	'multi' => 'spip_mysql_multi',
116
-	'optimize' => 'spip_mysql_optimize',
117
-	'query' => 'spip_mysql_query',
118
-	'quote' => 'spip_mysql_quote',
119
-	'replace' => 'spip_mysql_replace',
120
-	'replace_multi' => 'spip_mysql_replace_multi',
121
-	'repair' => 'spip_mysql_repair',
122
-	'select' => 'spip_mysql_select',
123
-	'selectdb' => 'spip_mysql_selectdb',
124
-	'set_charset' => 'spip_mysql_set_charset',
125
-	'get_charset' => 'spip_mysql_get_charset',
126
-	'showbase' => 'spip_mysql_showbase',
127
-	'showtable' => 'spip_mysql_showtable',
128
-	'update' => 'spip_mysql_update',
129
-	'updateq' => 'spip_mysql_updateq',
130
-
131
-	// association de chaque nom http d'un charset aux couples MySQL
132
-	'charsets' => array(
133
-		'cp1250' => array('charset' => 'cp1250', 'collation' => 'cp1250_general_ci'),
134
-		'cp1251' => array('charset' => 'cp1251', 'collation' => 'cp1251_general_ci'),
135
-		'cp1256' => array('charset' => 'cp1256', 'collation' => 'cp1256_general_ci'),
136
-		'iso-8859-1' => array('charset' => 'latin1', 'collation' => 'latin1_swedish_ci'),
93
+    'alter' => 'spip_mysql_alter',
94
+    'count' => 'spip_mysql_count',
95
+    'countsel' => 'spip_mysql_countsel',
96
+    'create' => 'spip_mysql_create',
97
+    'create_base' => 'spip_mysql_create_base',
98
+    'create_view' => 'spip_mysql_create_view',
99
+    'date_proche' => 'spip_mysql_date_proche',
100
+    'delete' => 'spip_mysql_delete',
101
+    'drop_table' => 'spip_mysql_drop_table',
102
+    'drop_view' => 'spip_mysql_drop_view',
103
+    'errno' => 'spip_mysql_errno',
104
+    'error' => 'spip_mysql_error',
105
+    'explain' => 'spip_mysql_explain',
106
+    'fetch' => 'spip_mysql_fetch',
107
+    'seek' => 'spip_mysql_seek',
108
+    'free' => 'spip_mysql_free',
109
+    'hex' => 'spip_mysql_hex',
110
+    'in' => 'spip_mysql_in',
111
+    'insert' => 'spip_mysql_insert',
112
+    'insertq' => 'spip_mysql_insertq',
113
+    'insertq_multi' => 'spip_mysql_insertq_multi',
114
+    'listdbs' => 'spip_mysql_listdbs',
115
+    'multi' => 'spip_mysql_multi',
116
+    'optimize' => 'spip_mysql_optimize',
117
+    'query' => 'spip_mysql_query',
118
+    'quote' => 'spip_mysql_quote',
119
+    'replace' => 'spip_mysql_replace',
120
+    'replace_multi' => 'spip_mysql_replace_multi',
121
+    'repair' => 'spip_mysql_repair',
122
+    'select' => 'spip_mysql_select',
123
+    'selectdb' => 'spip_mysql_selectdb',
124
+    'set_charset' => 'spip_mysql_set_charset',
125
+    'get_charset' => 'spip_mysql_get_charset',
126
+    'showbase' => 'spip_mysql_showbase',
127
+    'showtable' => 'spip_mysql_showtable',
128
+    'update' => 'spip_mysql_update',
129
+    'updateq' => 'spip_mysql_updateq',
130
+
131
+    // association de chaque nom http d'un charset aux couples MySQL
132
+    'charsets' => array(
133
+        'cp1250' => array('charset' => 'cp1250', 'collation' => 'cp1250_general_ci'),
134
+        'cp1251' => array('charset' => 'cp1251', 'collation' => 'cp1251_general_ci'),
135
+        'cp1256' => array('charset' => 'cp1256', 'collation' => 'cp1256_general_ci'),
136
+        'iso-8859-1' => array('charset' => 'latin1', 'collation' => 'latin1_swedish_ci'),
137 137
 //'iso-8859-6'=>array('charset'=>'latin1','collation'=>'latin1_swedish_ci'),
138
-		'iso-8859-9' => array('charset' => 'latin5', 'collation' => 'latin5_turkish_ci'),
138
+        'iso-8859-9' => array('charset' => 'latin5', 'collation' => 'latin5_turkish_ci'),
139 139
 //'iso-8859-15'=>array('charset'=>'latin1','collation'=>'latin1_swedish_ci'),
140
-		'utf-8' => array('charset' => 'utf8', 'collation' => 'utf8_general_ci')
141
-	)
140
+        'utf-8' => array('charset' => 'utf8', 'collation' => 'utf8_general_ci')
141
+    )
142 142
 );
143 143
 
144 144
 
@@ -149,9 +149,9 @@  discard block
 block discarded – undo
149 149
  * @return Object Information de connexion pour mysqli
150 150
  */
151 151
 function _mysql_link($serveur = '') {
152
-	$link = &$GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
152
+    $link = &$GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
153 153
 
154
-	return $link;
154
+    return $link;
155 155
 }
156 156
 
157 157
 
@@ -164,10 +164,10 @@  discard block
 block discarded – undo
164 164
  * @return resource       Ressource de résultats pour fetch()
165 165
  */
166 166
 function spip_mysql_set_charset($charset, $serveur = '', $requeter = true) {
167
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
168
-	spip_log("changement de charset sql : " . "SET NAMES " . _q($charset), _LOG_DEBUG);
167
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
168
+    spip_log("changement de charset sql : " . "SET NAMES " . _q($charset), _LOG_DEBUG);
169 169
 
170
-	return mysqli_query($connexion['link'], $connexion['last'] = "SET NAMES " . _q($charset));
170
+    return mysqli_query($connexion['link'], $connexion['last'] = "SET NAMES " . _q($charset));
171 171
 }
172 172
 
173 173
 
@@ -180,11 +180,11 @@  discard block
 block discarded – undo
180 180
  * @return array                Description du charset (son nom est dans 'charset')
181 181
  */
182 182
 function spip_mysql_get_charset($charset = array(), $serveur = '', $requeter = true) {
183
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
184
-	$connexion['last'] = $c = "SHOW CHARACTER SET"
185
-		. (!$charset ? '' : (" LIKE " . _q($charset['charset'])));
183
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
184
+    $connexion['last'] = $c = "SHOW CHARACTER SET"
185
+        . (!$charset ? '' : (" LIKE " . _q($charset['charset'])));
186 186
 
187
-	return spip_mysql_fetch(mysqli_query($connexion['link'], $c), null, $serveur);
187
+    return spip_mysql_fetch(mysqli_query($connexion['link'], $c), null, $serveur);
188 188
 }
189 189
 
190 190
 
@@ -199,7 +199,7 @@  discard block
 block discarded – undo
199 199
  * @return Resource        Ressource pour fetch()
200 200
  **/
201 201
 function spip_query_db($query, $serveur = '', $requeter = true) {
202
-	return spip_mysql_query($query, $serveur, $requeter);
202
+    return spip_mysql_query($query, $serveur, $requeter);
203 203
 }
204 204
 
205 205
 
@@ -216,61 +216,61 @@  discard block
 block discarded – undo
216 216
  */
217 217
 function spip_mysql_query($query, $serveur = '', $requeter = true) {
218 218
 
219
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
220
-	$prefixe = $connexion['prefixe'];
221
-	$link = $connexion['link'];
222
-	$db = $connexion['db'];
223
-
224
-	$query = _mysql_traite_query($query, $db, $prefixe);
225
-
226
-	// renvoyer la requete inerte si demandee
227
-	if (!$requeter) {
228
-		return $query;
229
-	}
230
-
231
-	if (isset($_GET['var_profile'])) {
232
-		include_spip('public/tracer');
233
-		$t = trace_query_start();
234
-	} else {
235
-		$t = 0;
236
-	}
237
-
238
-	$connexion['last'] = $query;
239
-	$connexion['total_requetes']++;
240
-
241
-	// ajouter un debug utile dans log/mysql-slow.log ?
242
-	$debug = '';
243
-	if (defined('_DEBUG_SLOW_QUERIES') and _DEBUG_SLOW_QUERIES) {
244
-		if (isset($GLOBALS['debug']['aucasou'])) {
245
-			list(, $id, , $infos) = $GLOBALS['debug']['aucasou'];
246
-			$debug .= "BOUCLE$id @ " . (isset($infos[0]) ? $infos[0] : '') . " | ";
247
-		}
248
-		$debug .= $_SERVER['REQUEST_URI'] . ' + ' . $GLOBALS['ip'];
249
-		$debug = ' /* ' . mysqli_real_escape_string($link, str_replace('*/', '@/', $debug)) . ' */';
250
-	}
251
-
252
-	$r = mysqli_query($link, $query . $debug);
253
-
254
-	//Eviter de propager le GoneAway sur les autres requetes d'un même processus PHP
255
-	if ($e = spip_mysql_errno($serveur)) {  // Log d'un Gone Away
256
-		if ($e == 2006) { //Si Gone Away on relance une connexion vierge
257
-			//Fermer la connexion defaillante
258
-			mysqli_close($connexion['link']);
259
-			unset($GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]);
260
-			//Relancer une connexion vierge
261
-			spip_connect($serveur);
262
-			$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
263
-			$link = $connexion['link'];
264
-			//On retente au cas où
265
-			$r = mysqli_query($link, $query . $debug);
266
-		}
267
-	}
268
-
269
-	// Log de l'erreur eventuelle
270
-	if ($e = spip_mysql_errno($serveur)) {
271
-		$e .= spip_mysql_error($query, $serveur);
272
-	} // et du fautif
273
-	return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
219
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
220
+    $prefixe = $connexion['prefixe'];
221
+    $link = $connexion['link'];
222
+    $db = $connexion['db'];
223
+
224
+    $query = _mysql_traite_query($query, $db, $prefixe);
225
+
226
+    // renvoyer la requete inerte si demandee
227
+    if (!$requeter) {
228
+        return $query;
229
+    }
230
+
231
+    if (isset($_GET['var_profile'])) {
232
+        include_spip('public/tracer');
233
+        $t = trace_query_start();
234
+    } else {
235
+        $t = 0;
236
+    }
237
+
238
+    $connexion['last'] = $query;
239
+    $connexion['total_requetes']++;
240
+
241
+    // ajouter un debug utile dans log/mysql-slow.log ?
242
+    $debug = '';
243
+    if (defined('_DEBUG_SLOW_QUERIES') and _DEBUG_SLOW_QUERIES) {
244
+        if (isset($GLOBALS['debug']['aucasou'])) {
245
+            list(, $id, , $infos) = $GLOBALS['debug']['aucasou'];
246
+            $debug .= "BOUCLE$id @ " . (isset($infos[0]) ? $infos[0] : '') . " | ";
247
+        }
248
+        $debug .= $_SERVER['REQUEST_URI'] . ' + ' . $GLOBALS['ip'];
249
+        $debug = ' /* ' . mysqli_real_escape_string($link, str_replace('*/', '@/', $debug)) . ' */';
250
+    }
251
+
252
+    $r = mysqli_query($link, $query . $debug);
253
+
254
+    //Eviter de propager le GoneAway sur les autres requetes d'un même processus PHP
255
+    if ($e = spip_mysql_errno($serveur)) {  // Log d'un Gone Away
256
+        if ($e == 2006) { //Si Gone Away on relance une connexion vierge
257
+            //Fermer la connexion defaillante
258
+            mysqli_close($connexion['link']);
259
+            unset($GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]);
260
+            //Relancer une connexion vierge
261
+            spip_connect($serveur);
262
+            $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
263
+            $link = $connexion['link'];
264
+            //On retente au cas où
265
+            $r = mysqli_query($link, $query . $debug);
266
+        }
267
+    }
268
+
269
+    // Log de l'erreur eventuelle
270
+    if ($e = spip_mysql_errno($serveur)) {
271
+        $e .= spip_mysql_error($query, $serveur);
272
+    } // et du fautif
273
+    return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
274 274
 }
275 275
 
276 276
 /**
@@ -285,12 +285,12 @@  discard block
 block discarded – undo
285 285
  *     - array  : Tableau décrivant requête et temps d'exécution si var_profile actif pour tracer.
286 286
  */
287 287
 function spip_mysql_alter($query, $serveur = '', $requeter = true) {
288
-	// ici on supprime les ` entourant le nom de table pour permettre
289
-	// la transposition du prefixe, compte tenu que les plugins ont la mauvaise habitude
290
-	// d'utiliser ceux-ci, copie-colle de phpmyadmin
291
-	$query = preg_replace(",^TABLE\s*`([^`]*)`,i", "TABLE \\1", $query);
288
+    // ici on supprime les ` entourant le nom de table pour permettre
289
+    // la transposition du prefixe, compte tenu que les plugins ont la mauvaise habitude
290
+    // d'utiliser ceux-ci, copie-colle de phpmyadmin
291
+    $query = preg_replace(",^TABLE\s*`([^`]*)`,i", "TABLE \\1", $query);
292 292
 
293
-	return spip_mysql_query("ALTER " . $query, $serveur, $requeter); # i.e. que PG se debrouille
293
+    return spip_mysql_query("ALTER " . $query, $serveur, $requeter); # i.e. que PG se debrouille
294 294
 }
295 295
 
296 296
 
@@ -303,9 +303,9 @@  discard block
 block discarded – undo
303 303
  * @return bool            Toujours true
304 304
  */
305 305
 function spip_mysql_optimize($table, $serveur = '', $requeter = true) {
306
-	spip_mysql_query("OPTIMIZE TABLE " . $table);
306
+    spip_mysql_query("OPTIMIZE TABLE " . $table);
307 307
 
308
-	return true;
308
+    return true;
309 309
 }
310 310
 
311 311
 
@@ -318,18 +318,18 @@  discard block
 block discarded – undo
318 318
  * @return array           Tableau de l'explication
319 319
  */
320 320
 function spip_mysql_explain($query, $serveur = '', $requeter = true) {
321
-	if (strpos(ltrim($query), 'SELECT') !== 0) {
322
-		return array();
323
-	}
324
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
325
-	$prefixe = $connexion['prefixe'];
326
-	$link = $connexion['link'];
327
-	$db = $connexion['db'];
328
-
329
-	$query = 'EXPLAIN ' . _mysql_traite_query($query, $db, $prefixe);
330
-	$r = mysqli_query($link, $query);
331
-
332
-	return spip_mysql_fetch($r, null, $serveur);
321
+    if (strpos(ltrim($query), 'SELECT') !== 0) {
322
+        return array();
323
+    }
324
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
325
+    $prefixe = $connexion['prefixe'];
326
+    $link = $connexion['link'];
327
+    $db = $connexion['db'];
328
+
329
+    $query = 'EXPLAIN ' . _mysql_traite_query($query, $db, $prefixe);
330
+    $r = mysqli_query($link, $query);
331
+
332
+    return spip_mysql_fetch($r, null, $serveur);
333 333
 }
334 334
 
335 335
 
@@ -358,35 +358,35 @@  discard block
 block discarded – undo
358 358
  *     - array  : Tableau décrivant requête et temps d'exécution si var_profile actif pour tracer.
359 359
  */
360 360
 function spip_mysql_select(
361
-	$select,
362
-	$from,
363
-	$where = '',
364
-	$groupby = '',
365
-	$orderby = '',
366
-	$limit = '',
367
-	$having = '',
368
-	$serveur = '',
369
-	$requeter = true
361
+    $select,
362
+    $from,
363
+    $where = '',
364
+    $groupby = '',
365
+    $orderby = '',
366
+    $limit = '',
367
+    $having = '',
368
+    $serveur = '',
369
+    $requeter = true
370 370
 ) {
371 371
 
372 372
 
373
-	$from = (!is_array($from) ? $from : spip_mysql_select_as($from));
374
-	$query =
375
-		calculer_mysql_expression('SELECT', $select, ', ')
376
-		. calculer_mysql_expression('FROM', $from, ', ')
377
-		. calculer_mysql_expression('WHERE', $where)
378
-		. calculer_mysql_expression('GROUP BY', $groupby, ',')
379
-		. calculer_mysql_expression('HAVING', $having)
380
-		. ($orderby ? ("\nORDER BY " . spip_mysql_order($orderby)) : '')
381
-		. ($limit ? "\nLIMIT $limit" : '');
373
+    $from = (!is_array($from) ? $from : spip_mysql_select_as($from));
374
+    $query =
375
+        calculer_mysql_expression('SELECT', $select, ', ')
376
+        . calculer_mysql_expression('FROM', $from, ', ')
377
+        . calculer_mysql_expression('WHERE', $where)
378
+        . calculer_mysql_expression('GROUP BY', $groupby, ',')
379
+        . calculer_mysql_expression('HAVING', $having)
380
+        . ($orderby ? ("\nORDER BY " . spip_mysql_order($orderby)) : '')
381
+        . ($limit ? "\nLIMIT $limit" : '');
382 382
 
383
-	// renvoyer la requete inerte si demandee
384
-	if ($requeter === false) {
385
-		return $query;
386
-	}
387
-	$r = spip_mysql_query($query, $serveur, $requeter);
383
+    // renvoyer la requete inerte si demandee
384
+    if ($requeter === false) {
385
+        return $query;
386
+    }
387
+    $r = spip_mysql_query($query, $serveur, $requeter);
388 388
 
389
-	return $r ? $r : $query;
389
+    return $r ? $r : $query;
390 390
 }
391 391
 
392 392
 
@@ -403,7 +403,7 @@  discard block
 block discarded – undo
403 403
  * @return string Texte du orderby préparé
404 404
  */
405 405
 function spip_mysql_order($orderby) {
406
-	return (is_array($orderby)) ? join(", ", $orderby) : $orderby;
406
+    return (is_array($orderby)) ? join(", ", $orderby) : $orderby;
407 407
 }
408 408
 
409 409
 
@@ -426,26 +426,26 @@  discard block
 block discarded – undo
426 426
  *     Contrainte pour clause WHERE
427 427
  */
428 428
 function calculer_mysql_where($v) {
429
-	if (!is_array($v)) {
430
-		return $v;
431
-	}
432
-
433
-	$op = array_shift($v);
434
-	if (!($n = count($v))) {
435
-		return $op;
436
-	} else {
437
-		$arg = calculer_mysql_where(array_shift($v));
438
-		if ($n == 1) {
439
-			return "$op($arg)";
440
-		} else {
441
-			$arg2 = calculer_mysql_where(array_shift($v));
442
-			if ($n == 2) {
443
-				return "($arg $op $arg2)";
444
-			} else {
445
-				return "($arg $op ($arg2) : $v[0])";
446
-			}
447
-		}
448
-	}
429
+    if (!is_array($v)) {
430
+        return $v;
431
+    }
432
+
433
+    $op = array_shift($v);
434
+    if (!($n = count($v))) {
435
+        return $op;
436
+    } else {
437
+        $arg = calculer_mysql_where(array_shift($v));
438
+        if ($n == 1) {
439
+            return "$op($arg)";
440
+        } else {
441
+            $arg2 = calculer_mysql_where(array_shift($v));
442
+            if ($n == 2) {
443
+                return "($arg $op $arg2)";
444
+            } else {
445
+                return "($arg $op ($arg2) : $v[0])";
446
+            }
447
+        }
448
+    }
449 449
 }
450 450
 
451 451
 /**
@@ -460,21 +460,21 @@  discard block
 block discarded – undo
460 460
  * @return string            Texte de l'expression, une partie donc, du texte la requête.
461 461
  */
462 462
 function calculer_mysql_expression($expression, $v, $join = 'AND') {
463
-	if (empty($v)) {
464
-		return '';
465
-	}
466
-
467
-	$exp = "\n$expression ";
468
-
469
-	if (!is_array($v)) {
470
-		return $exp . $v;
471
-	} else {
472
-		if (strtoupper($join) === 'AND') {
473
-			return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v));
474
-		} else {
475
-			return $exp . join($join, $v);
476
-		}
477
-	}
463
+    if (empty($v)) {
464
+        return '';
465
+    }
466
+
467
+    $exp = "\n$expression ";
468
+
469
+    if (!is_array($v)) {
470
+        return $exp . $v;
471
+    } else {
472
+        if (strtoupper($join) === 'AND') {
473
+            return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v));
474
+        } else {
475
+            return $exp . join($join, $v);
476
+        }
477
+    }
478 478
 }
479 479
 
480 480
 
@@ -485,26 +485,26 @@  discard block
 block discarded – undo
485 485
  * @return string Sélection de colonnes pour une clause SELECT
486 486
  */
487 487
 function spip_mysql_select_as($args) {
488
-	$res = '';
489
-	foreach ($args as $k => $v) {
490
-		if (substr($k, -1) == '@') {
491
-			// c'est une jointure qui se refere au from precedent
492
-			// pas de virgule
493
-			$res .= '  ' . $v;
494
-		} else {
495
-			if (!is_numeric($k)) {
496
-				$p = strpos($v, " ");
497
-				if ($p) {
498
-					$v = substr($v, 0, $p) . " AS `$k`" . substr($v, $p);
499
-				} else {
500
-					$v .= " AS `$k`";
501
-				}
502
-			}
503
-			$res .= ', ' . $v;
504
-		}
505
-	}
506
-
507
-	return substr($res, 2);
488
+    $res = '';
489
+    foreach ($args as $k => $v) {
490
+        if (substr($k, -1) == '@') {
491
+            // c'est une jointure qui se refere au from precedent
492
+            // pas de virgule
493
+            $res .= '  ' . $v;
494
+        } else {
495
+            if (!is_numeric($k)) {
496
+                $p = strpos($v, " ");
497
+                if ($p) {
498
+                    $v = substr($v, 0, $p) . " AS `$k`" . substr($v, $p);
499
+                } else {
500
+                    $v .= " AS `$k`";
501
+                }
502
+            }
503
+            $res .= ', ' . $v;
504
+        }
505
+    }
506
+
507
+    return substr($res, 2);
508 508
 }
509 509
 
510 510
 
@@ -528,42 +528,42 @@  discard block
 block discarded – undo
528 528
  */
529 529
 function _mysql_traite_query($query, $db = '', $prefixe = '') {
530 530
 
531
-	if ($GLOBALS['mysql_rappel_nom_base'] and $db) {
532
-		$pref = '`' . $db . '`.';
533
-	} else {
534
-		$pref = '';
535
-	}
536
-
537
-	if ($prefixe) {
538
-		$pref .= $prefixe . "_";
539
-	}
540
-
541
-	if (!preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/i', $query, $regs)) {
542
-		$suite = '';
543
-	} else {
544
-		$suite = strstr($query, $regs[0]);
545
-		$query = substr($query, 0, -strlen($suite));
546
-		// propager le prefixe en cas de requete imbriquee
547
-		// il faut alors echapper les chaine avant de le faire, pour ne pas risquer de
548
-		// modifier une requete qui est en fait juste du texte dans un champ
549
-		if (stripos($suite, "SELECT") !== false) {
550
-			list($suite, $textes) = query_echappe_textes($suite);
551
-			if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite, $r)) {
552
-				$suite = $r[1] . _mysql_traite_query($r[2], $db, $prefixe);
553
-			}
554
-			$suite = query_reinjecte_textes($suite, $textes);
555
-		}
556
-	}
557
-	$r = preg_replace(_SQL_PREFIXE_TABLE_MYSQL, '\1' . $pref, $query) . $suite;
558
-
559
-	// en option, remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
560
-	if (defined('_MYSQL_NOPLANES') and _MYSQL_NOPLANES and lire_meta('charset_sql_connexion') == 'utf8') {
561
-		include_spip('inc/charsets');
562
-		$r = utf8_noplanes($r);
563
-	}
564
-
565
-	#spip_log("_mysql_traite_query: " . substr($r,0, 50) . ".... $db, $prefixe", _LOG_DEBUG);
566
-	return $r;
531
+    if ($GLOBALS['mysql_rappel_nom_base'] and $db) {
532
+        $pref = '`' . $db . '`.';
533
+    } else {
534
+        $pref = '';
535
+    }
536
+
537
+    if ($prefixe) {
538
+        $pref .= $prefixe . "_";
539
+    }
540
+
541
+    if (!preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/i', $query, $regs)) {
542
+        $suite = '';
543
+    } else {
544
+        $suite = strstr($query, $regs[0]);
545
+        $query = substr($query, 0, -strlen($suite));
546
+        // propager le prefixe en cas de requete imbriquee
547
+        // il faut alors echapper les chaine avant de le faire, pour ne pas risquer de
548
+        // modifier une requete qui est en fait juste du texte dans un champ
549
+        if (stripos($suite, "SELECT") !== false) {
550
+            list($suite, $textes) = query_echappe_textes($suite);
551
+            if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite, $r)) {
552
+                $suite = $r[1] . _mysql_traite_query($r[2], $db, $prefixe);
553
+            }
554
+            $suite = query_reinjecte_textes($suite, $textes);
555
+        }
556
+    }
557
+    $r = preg_replace(_SQL_PREFIXE_TABLE_MYSQL, '\1' . $pref, $query) . $suite;
558
+
559
+    // en option, remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
560
+    if (defined('_MYSQL_NOPLANES') and _MYSQL_NOPLANES and lire_meta('charset_sql_connexion') == 'utf8') {
561
+        include_spip('inc/charsets');
562
+        $r = utf8_noplanes($r);
563
+    }
564
+
565
+    #spip_log("_mysql_traite_query: " . substr($r,0, 50) . ".... $db, $prefixe", _LOG_DEBUG);
566
+    return $r;
567 567
 }
568 568
 
569 569
 /**
@@ -581,13 +581,13 @@  discard block
 block discarded – undo
581 581
  *     - False en cas d'erreur.
582 582
  **/
583 583
 function spip_mysql_selectdb($db, $serveur = '', $requeter = true) {
584
-	$link = _mysql_link($serveur);
585
-	$ok = mysqli_select_db($link, $db);
586
-	if (!$ok) {
587
-		spip_log('Echec mysqli_selectdb. Erreur : ' . mysqli_error($link), 'mysql.' . _LOG_CRITIQUE);
588
-	}
584
+    $link = _mysql_link($serveur);
585
+    $ok = mysqli_select_db($link, $db);
586
+    if (!$ok) {
587
+        spip_log('Echec mysqli_selectdb. Erreur : ' . mysqli_error($link), 'mysql.' . _LOG_CRITIQUE);
588
+    }
589 589
 
590
-	return $ok;
590
+    return $ok;
591 591
 }
592 592
 
593 593
 
@@ -608,14 +608,14 @@  discard block
 block discarded – undo
608 608
  *     Liste de noms de bases de données
609 609
  **/
610 610
 function spip_mysql_listdbs($serveur = '', $requeter = true) {
611
-	$dbs = array();
612
-	if ($res = spip_mysql_query("SHOW DATABASES", $serveur)) {
613
-		while ($row = mysqli_fetch_assoc($res)) {
614
-			$dbs[] = $row['Database'];
615
-		}
616
-	}
617
-
618
-	return $dbs;
611
+    $dbs = array();
612
+    if ($res = spip_mysql_query("SHOW DATABASES", $serveur)) {
613
+        while ($row = mysqli_fetch_assoc($res)) {
614
+            $dbs[] = $row['Database'];
615
+        }
616
+    }
617
+
618
+    return $dbs;
619 619
 }
620 620
 
621 621
 
@@ -638,72 +638,72 @@  discard block
 block discarded – undo
638 638
  *     - true si la requête réussie, false sinon.
639 639
  */
640 640
 function spip_mysql_create(
641
-	$nom,
642
-	$champs,
643
-	$cles,
644
-	$autoinc = false,
645
-	$temporary = false,
646
-	$serveur = '',
647
-	$requeter = true
641
+    $nom,
642
+    $champs,
643
+    $cles,
644
+    $autoinc = false,
645
+    $temporary = false,
646
+    $serveur = '',
647
+    $requeter = true
648 648
 ) {
649 649
 
650
-	$query = '';
651
-	$keys = '';
652
-	$s = '';
653
-	$p = '';
654
-
655
-	// certains plugins declarent les tables  (permet leur inclusion dans le dump)
656
-	// sans les renseigner (laisse le compilo recuperer la description)
657
-	if (!is_array($champs) || !is_array($cles)) {
658
-		return;
659
-	}
660
-
661
-	$res = spip_mysql_query("SELECT version() as v", $serveur);
662
-	if (($row = mysqli_fetch_array($res)) && (version_compare($row['v'], '5.0', '>='))) {
663
-		spip_mysql_query("SET sql_mode=''", $serveur);
664
-	}
665
-
666
-	foreach ($cles as $k => $v) {
667
-		$keys .= "$s\n\t\t$k ($v)";
668
-		if ($k == "PRIMARY KEY") {
669
-			$p = $v;
670
-		}
671
-		$s = ",";
672
-	}
673
-	$s = '';
674
-
675
-	$character_set = "";
676
-	if (@$GLOBALS['meta']['charset_sql_base']) {
677
-		$character_set .= " CHARACTER SET " . $GLOBALS['meta']['charset_sql_base'];
678
-	}
679
-	if (@$GLOBALS['meta']['charset_collation_sql_base']) {
680
-		$character_set .= " COLLATE " . $GLOBALS['meta']['charset_collation_sql_base'];
681
-	}
682
-
683
-	foreach ($champs as $k => $v) {
684
-		$v = _mysql_remplacements_definitions_table($v);
685
-		if (preg_match(',([a-z]*\s*(\(\s*[0-9]*\s*\))?(\s*binary)?),i', $v, $defs)) {
686
-			if (preg_match(',(char|text),i', $defs[1])
687
-				and !preg_match(',(binary|CHARACTER|COLLATE),i', $v)
688
-			) {
689
-				$v = $defs[1] . $character_set . ' ' . substr($v, strlen($defs[1]));
690
-			}
691
-		}
692
-
693
-		$query .= "$s\n\t\t$k $v"
694
-			. (($autoinc && ($p == $k) && preg_match(',\b(big|small|medium)?int\b,i', $v))
695
-				? " auto_increment"
696
-				: ''
697
-			);
698
-		$s = ",";
699
-	}
700
-	$temporary = $temporary ? 'TEMPORARY' : '';
701
-	$q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query" . ($keys ? ",$keys" : '') . ")"
702
-		. " ENGINE=MyISAM"
703
-		. ($character_set ? " DEFAULT $character_set" : "")
704
-		. "\n";
705
-
706
-	return spip_mysql_query($q, $serveur);
650
+    $query = '';
651
+    $keys = '';
652
+    $s = '';
653
+    $p = '';
654
+
655
+    // certains plugins declarent les tables  (permet leur inclusion dans le dump)
656
+    // sans les renseigner (laisse le compilo recuperer la description)
657
+    if (!is_array($champs) || !is_array($cles)) {
658
+        return;
659
+    }
660
+
661
+    $res = spip_mysql_query("SELECT version() as v", $serveur);
662
+    if (($row = mysqli_fetch_array($res)) && (version_compare($row['v'], '5.0', '>='))) {
663
+        spip_mysql_query("SET sql_mode=''", $serveur);
664
+    }
665
+
666
+    foreach ($cles as $k => $v) {
667
+        $keys .= "$s\n\t\t$k ($v)";
668
+        if ($k == "PRIMARY KEY") {
669
+            $p = $v;
670
+        }
671
+        $s = ",";
672
+    }
673
+    $s = '';
674
+
675
+    $character_set = "";
676
+    if (@$GLOBALS['meta']['charset_sql_base']) {
677
+        $character_set .= " CHARACTER SET " . $GLOBALS['meta']['charset_sql_base'];
678
+    }
679
+    if (@$GLOBALS['meta']['charset_collation_sql_base']) {
680
+        $character_set .= " COLLATE " . $GLOBALS['meta']['charset_collation_sql_base'];
681
+    }
682
+
683
+    foreach ($champs as $k => $v) {
684
+        $v = _mysql_remplacements_definitions_table($v);
685
+        if (preg_match(',([a-z]*\s*(\(\s*[0-9]*\s*\))?(\s*binary)?),i', $v, $defs)) {
686
+            if (preg_match(',(char|text),i', $defs[1])
687
+                and !preg_match(',(binary|CHARACTER|COLLATE),i', $v)
688
+            ) {
689
+                $v = $defs[1] . $character_set . ' ' . substr($v, strlen($defs[1]));
690
+            }
691
+        }
692
+
693
+        $query .= "$s\n\t\t$k $v"
694
+            . (($autoinc && ($p == $k) && preg_match(',\b(big|small|medium)?int\b,i', $v))
695
+                ? " auto_increment"
696
+                : ''
697
+            );
698
+        $s = ",";
699
+    }
700
+    $temporary = $temporary ? 'TEMPORARY' : '';
701
+    $q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query" . ($keys ? ",$keys" : '') . ")"
702
+        . " ENGINE=MyISAM"
703
+        . ($character_set ? " DEFAULT $character_set" : "")
704
+        . "\n";
705
+
706
+    return spip_mysql_query($q, $serveur);
707 707
 }
708 708
 
709 709
 
@@ -716,25 +716,25 @@  discard block
 block discarded – undo
716 716
  *     Définition SQL adaptée pour MySQL d'un champ de table
717 717
  */
718 718
 function _mysql_remplacements_definitions_table($query) {
719
-	// quelques remplacements
720
-	$num = "(\s*\([0-9]*\))?";
721
-	$enum = "(\s*\([^\)]*\))?";
722
-
723
-	$remplace = array(
724
-		'/VARCHAR(\s*[^\s\(])/is' => 'VARCHAR(255)\\1',
725
-		'/^TIMESTAMP($| NULL DEFAULT NULL)/is' => 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
726
-	);
727
-
728
-	if (is_string($query)) {
729
-		$query = preg_replace(array_keys($remplace), $remplace, $query);
730
-	} elseif (is_array($query)) {
731
-		$keys = array_keys($remplace);
732
-		foreach ($query as $k => $q) {
733
-			$query[$k] = preg_replace($keys, $remplace, $q);
734
-		}
735
-	}
736
-
737
-	return $query;
719
+    // quelques remplacements
720
+    $num = "(\s*\([0-9]*\))?";
721
+    $enum = "(\s*\([^\)]*\))?";
722
+
723
+    $remplace = array(
724
+        '/VARCHAR(\s*[^\s\(])/is' => 'VARCHAR(255)\\1',
725
+        '/^TIMESTAMP($| NULL DEFAULT NULL)/is' => 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
726
+    );
727
+
728
+    if (is_string($query)) {
729
+        $query = preg_replace(array_keys($remplace), $remplace, $query);
730
+    } elseif (is_array($query)) {
731
+        $keys = array_keys($remplace);
732
+        foreach ($query as $k => $q) {
733
+            $query[$k] = preg_replace($keys, $remplace, $q);
734
+        }
735
+    }
736
+
737
+    return $query;
738 738
 }
739 739
 
740 740
 
@@ -747,7 +747,7 @@  discard block
 block discarded – undo
747 747
  * @return bool true si la base est créee.
748 748
  **/
749 749
 function spip_mysql_create_base($nom, $serveur = '', $requeter = true) {
750
-	return spip_mysql_query("CREATE DATABASE `$nom`", $serveur, $requeter);
750
+    return spip_mysql_query("CREATE DATABASE `$nom`", $serveur, $requeter);
751 751
 }
752 752
 
753 753
 
@@ -768,19 +768,19 @@  discard block
 block discarded – undo
768 768
  *     - string texte de la requête si $requeter vaut false
769 769
  */
770 770
 function spip_mysql_create_view($nom, $query_select, $serveur = '', $requeter = true) {
771
-	if (!$query_select) {
772
-		return false;
773
-	}
774
-	// vue deja presente
775
-	if (sql_showtable($nom, false, $serveur)) {
776
-		spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", _LOG_ERREUR);
771
+    if (!$query_select) {
772
+        return false;
773
+    }
774
+    // vue deja presente
775
+    if (sql_showtable($nom, false, $serveur)) {
776
+        spip_log("Echec creation d'une vue sql ($nom) car celle-ci existe deja (serveur:$serveur)", _LOG_ERREUR);
777 777
 
778
-		return false;
779
-	}
778
+        return false;
779
+    }
780 780
 
781
-	$query = "CREATE VIEW $nom AS " . $query_select;
781
+    $query = "CREATE VIEW $nom AS " . $query_select;
782 782
 
783
-	return spip_mysql_query($query, $serveur, $requeter);
783
+    return spip_mysql_query($query, $serveur, $requeter);
784 784
 }
785 785
 
786 786
 
@@ -796,11 +796,11 @@  discard block
 block discarded – undo
796 796
  *     - true si la requête a réussie, false sinon
797 797
  */
798 798
 function spip_mysql_drop_table($table, $exist = '', $serveur = '', $requeter = true) {
799
-	if ($exist) {
800
-		$exist = " IF EXISTS";
801
-	}
799
+    if ($exist) {
800
+        $exist = " IF EXISTS";
801
+    }
802 802
 
803
-	return spip_mysql_query("DROP TABLE$exist $table", $serveur, $requeter);
803
+    return spip_mysql_query("DROP TABLE$exist $table", $serveur, $requeter);
804 804
 }
805 805
 
806 806
 /**
@@ -815,11 +815,11 @@  discard block
 block discarded – undo
815 815
  *     - true si la requête a réussie, false sinon
816 816
  */
817 817
 function spip_mysql_drop_view($view, $exist = '', $serveur = '', $requeter = true) {
818
-	if ($exist) {
819
-		$exist = " IF EXISTS";
820
-	}
818
+    if ($exist) {
819
+        $exist = " IF EXISTS";
820
+    }
821 821
 
822
-	return spip_mysql_query("DROP VIEW$exist $view", $serveur, $requeter);
822
+    return spip_mysql_query("DROP VIEW$exist $view", $serveur, $requeter);
823 823
 }
824 824
 
825 825
 /**
@@ -836,7 +836,7 @@  discard block
 block discarded – undo
836 836
  *     Ressource à utiliser avec sql_fetch()
837 837
  **/
838 838
 function spip_mysql_showbase($match, $serveur = '', $requeter = true) {
839
-	return spip_mysql_query("SHOW TABLES LIKE " . _q($match), $serveur, $requeter);
839
+    return spip_mysql_query("SHOW TABLES LIKE " . _q($match), $serveur, $requeter);
840 840
 }
841 841
 
842 842
 /**
@@ -852,7 +852,7 @@  discard block
 block discarded – undo
852 852
  *     - true si la requête a réussie, false sinon
853 853
  */
854 854
 function spip_mysql_repair($table, $serveur = '', $requeter = true) {
855
-	return spip_mysql_query("REPAIR TABLE `$table`", $serveur, $requeter);
855
+    return spip_mysql_query("REPAIR TABLE `$table`", $serveur, $requeter);
856 856
 }
857 857
 
858 858
 
@@ -876,86 +876,86 @@  discard block
 block discarded – undo
876 876
  *     - array description de la table sinon
877 877
  */
878 878
 function spip_mysql_showtable($nom_table, $serveur = '', $requeter = true) {
879
-	$s = spip_mysql_query("SHOW CREATE TABLE `$nom_table`", $serveur, $requeter);
880
-	if (!$s) {
881
-		return '';
882
-	}
883
-	if (!$requeter) {
884
-		return $s;
885
-	}
886
-
887
-	list(, $a) = mysqli_fetch_array($s, MYSQLI_NUM);
888
-	if (preg_match(_MYSQL_RE_SHOW_TABLE, $a, $r)) {
889
-		$desc = $r[1];
890
-		// extraction d'une KEY éventuelle en prenant garde de ne pas
891
-		// relever un champ dont le nom contient KEY (ex. ID_WHISKEY)
892
-		if (preg_match("/^(.*?),([^,]*\sKEY[ (].*)$/s", $desc, $r)) {
893
-			$namedkeys = $r[2];
894
-			$desc = $r[1];
895
-		} else {
896
-			$namedkeys = "";
897
-		}
898
-
899
-		$fields = array();
900
-		foreach (preg_split("/,\s*`/", $desc) as $v) {
901
-			preg_match("/^\s*`?([^`]*)`\s*(.*)/", $v, $r);
902
-			$fields[strtolower($r[1])] = $r[2];
903
-		}
904
-		$keys = array();
905
-
906
-		foreach (preg_split('/\)\s*(,|$)/', $namedkeys) as $v) {
907
-			if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/", $v, $r)) {
908
-				$k = str_replace("`", '', trim($r[1]));
909
-				$t = strtolower(str_replace("`", '', $r[2]));
910
-				if ($k && !isset($keys[$k])) {
911
-					$keys[$k] = $t;
912
-				} else {
913
-					$keys[] = $t;
914
-				}
915
-			}
916
-		}
917
-		spip_mysql_free($s);
918
-
919
-		return array('field' => $fields, 'key' => $keys);
920
-	}
921
-
922
-	$res = spip_mysql_query("SHOW COLUMNS FROM `$nom_table`", $serveur);
923
-	if ($res) {
924
-		$nfields = array();
925
-		$nkeys = array();
926
-		while ($val = spip_mysql_fetch($res)) {
927
-			$nfields[$val["Field"]] = $val['Type'];
928
-			if ($val['Null'] == 'NO') {
929
-				$nfields[$val["Field"]] .= ' NOT NULL';
930
-			}
931
-			if ($val['Default'] === '0' || $val['Default']) {
932
-				if (preg_match('/[A-Z_]/', $val['Default'])) {
933
-					$nfields[$val["Field"]] .= ' DEFAULT ' . $val['Default'];
934
-				} else {
935
-					$nfields[$val["Field"]] .= " DEFAULT '" . $val['Default'] . "'";
936
-				}
937
-			}
938
-			if ($val['Extra']) {
939
-				$nfields[$val["Field"]] .= ' ' . $val['Extra'];
940
-			}
941
-			if ($val['Key'] == 'PRI') {
942
-				$nkeys['PRIMARY KEY'] = $val["Field"];
943
-			} else {
944
-				if ($val['Key'] == 'MUL') {
945
-					$nkeys['KEY ' . $val["Field"]] = $val["Field"];
946
-				} else {
947
-					if ($val['Key'] == 'UNI') {
948
-						$nkeys['UNIQUE KEY ' . $val["Field"]] = $val["Field"];
949
-					}
950
-				}
951
-			}
952
-		}
953
-		spip_mysql_free($res);
954
-
955
-		return array('field' => $nfields, 'key' => $nkeys);
956
-	}
957
-
958
-	return "";
879
+    $s = spip_mysql_query("SHOW CREATE TABLE `$nom_table`", $serveur, $requeter);
880
+    if (!$s) {
881
+        return '';
882
+    }
883
+    if (!$requeter) {
884
+        return $s;
885
+    }
886
+
887
+    list(, $a) = mysqli_fetch_array($s, MYSQLI_NUM);
888
+    if (preg_match(_MYSQL_RE_SHOW_TABLE, $a, $r)) {
889
+        $desc = $r[1];
890
+        // extraction d'une KEY éventuelle en prenant garde de ne pas
891
+        // relever un champ dont le nom contient KEY (ex. ID_WHISKEY)
892
+        if (preg_match("/^(.*?),([^,]*\sKEY[ (].*)$/s", $desc, $r)) {
893
+            $namedkeys = $r[2];
894
+            $desc = $r[1];
895
+        } else {
896
+            $namedkeys = "";
897
+        }
898
+
899
+        $fields = array();
900
+        foreach (preg_split("/,\s*`/", $desc) as $v) {
901
+            preg_match("/^\s*`?([^`]*)`\s*(.*)/", $v, $r);
902
+            $fields[strtolower($r[1])] = $r[2];
903
+        }
904
+        $keys = array();
905
+
906
+        foreach (preg_split('/\)\s*(,|$)/', $namedkeys) as $v) {
907
+            if (preg_match("/^\s*([^(]*)\(([^(]*(\(\d+\))?)$/", $v, $r)) {
908
+                $k = str_replace("`", '', trim($r[1]));
909
+                $t = strtolower(str_replace("`", '', $r[2]));
910
+                if ($k && !isset($keys[$k])) {
911
+                    $keys[$k] = $t;
912
+                } else {
913
+                    $keys[] = $t;
914
+                }
915
+            }
916
+        }
917
+        spip_mysql_free($s);
918
+
919
+        return array('field' => $fields, 'key' => $keys);
920
+    }
921
+
922
+    $res = spip_mysql_query("SHOW COLUMNS FROM `$nom_table`", $serveur);
923
+    if ($res) {
924
+        $nfields = array();
925
+        $nkeys = array();
926
+        while ($val = spip_mysql_fetch($res)) {
927
+            $nfields[$val["Field"]] = $val['Type'];
928
+            if ($val['Null'] == 'NO') {
929
+                $nfields[$val["Field"]] .= ' NOT NULL';
930
+            }
931
+            if ($val['Default'] === '0' || $val['Default']) {
932
+                if (preg_match('/[A-Z_]/', $val['Default'])) {
933
+                    $nfields[$val["Field"]] .= ' DEFAULT ' . $val['Default'];
934
+                } else {
935
+                    $nfields[$val["Field"]] .= " DEFAULT '" . $val['Default'] . "'";
936
+                }
937
+            }
938
+            if ($val['Extra']) {
939
+                $nfields[$val["Field"]] .= ' ' . $val['Extra'];
940
+            }
941
+            if ($val['Key'] == 'PRI') {
942
+                $nkeys['PRIMARY KEY'] = $val["Field"];
943
+            } else {
944
+                if ($val['Key'] == 'MUL') {
945
+                    $nkeys['KEY ' . $val["Field"]] = $val["Field"];
946
+                } else {
947
+                    if ($val['Key'] == 'UNI') {
948
+                        $nkeys['UNIQUE KEY ' . $val["Field"]] = $val["Field"];
949
+                    }
950
+                }
951
+            }
952
+        }
953
+        spip_mysql_free($res);
954
+
955
+        return array('field' => $nfields, 'key' => $nkeys);
956
+    }
957
+
958
+    return "";
959 959
 }
960 960
 
961 961
 
@@ -971,12 +971,12 @@  discard block
 block discarded – undo
971 971
  * @return array           Ligne de résultat
972 972
  */
973 973
 function spip_mysql_fetch($r, $t = '', $serveur = '', $requeter = true) {
974
-	if (!$t) {
975
-		$t = MYSQLI_ASSOC;
976
-	}
977
-	if ($r) {
978
-		return mysqli_fetch_array($r, $t);
979
-	}
974
+    if (!$t) {
975
+        $t = MYSQLI_ASSOC;
976
+    }
977
+    if ($r) {
978
+        return mysqli_fetch_array($r, $t);
979
+    }
980 980
 }
981 981
 
982 982
 /**
@@ -989,9 +989,9 @@  discard block
 block discarded – undo
989 989
  * @return bool True si déplacement réussi, false sinon.
990 990
  **/
991 991
 function spip_mysql_seek($r, $row_number, $serveur = '', $requeter = true) {
992
-	if ($r and mysqli_num_rows($r)) {
993
-		return mysqli_data_seek($r, $row_number);
994
-	}
992
+    if ($r and mysqli_num_rows($r)) {
993
+        return mysqli_data_seek($r, $row_number);
994
+    }
995 995
 }
996 996
 
997 997
 
@@ -1009,26 +1009,26 @@  discard block
 block discarded – undo
1009 1009
  *     - int Nombre de lignes (0 si la requête n'a pas réussie)
1010 1010
  **/
1011 1011
 function spip_mysql_countsel(
1012
-	$from = array(),
1013
-	$where = array(),
1014
-	$groupby = '',
1015
-	$having = array(),
1016
-	$serveur = '',
1017
-	$requeter = true
1012
+    $from = array(),
1013
+    $where = array(),
1014
+    $groupby = '',
1015
+    $having = array(),
1016
+    $serveur = '',
1017
+    $requeter = true
1018 1018
 ) {
1019
-	$c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby)));
1020
-
1021
-	$r = spip_mysql_select("COUNT($c)", $from, $where, '', '', '', $having, $serveur, $requeter);
1022
-	if (!$requeter) {
1023
-		return $r;
1024
-	}
1025
-	if (!$r instanceof mysqli_result) {
1026
-		return 0;
1027
-	}
1028
-	list($c) = mysqli_fetch_array($r, MYSQLI_NUM);
1029
-	mysqli_free_result($r);
1030
-
1031
-	return $c;
1019
+    $c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby)));
1020
+
1021
+    $r = spip_mysql_select("COUNT($c)", $from, $where, '', '', '', $having, $serveur, $requeter);
1022
+    if (!$requeter) {
1023
+        return $r;
1024
+    }
1025
+    if (!$r instanceof mysqli_result) {
1026
+        return 0;
1027
+    }
1028
+    list($c) = mysqli_fetch_array($r, MYSQLI_NUM);
1029
+    mysqli_free_result($r);
1030
+
1031
+    return $c;
1032 1032
 }
1033 1033
 
1034 1034
 
@@ -1051,16 +1051,16 @@  discard block
 block discarded – undo
1051 1051
  *     Erreur eventuelle
1052 1052
  **/
1053 1053
 function spip_mysql_error($query = '', $serveur = '', $requeter = true) {
1054
-	$link = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]['link'];
1055
-	$s = mysqli_error($link);
1056
-	if ($s) {
1057
-		$trace = debug_backtrace();
1058
-		if ($trace[0]['function'] != "spip_mysql_error") {
1059
-			spip_log("$s - $query - " . sql_error_backtrace(), 'mysql.' . _LOG_ERREUR);
1060
-		}
1061
-	}
1062
-
1063
-	return $s;
1054
+    $link = $GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]['link'];
1055
+    $s = mysqli_error($link);
1056
+    if ($s) {
1057
+        $trace = debug_backtrace();
1058
+        if ($trace[0]['function'] != "spip_mysql_error") {
1059
+            spip_log("$s - $query - " . sql_error_backtrace(), 'mysql.' . _LOG_ERREUR);
1060
+        }
1061
+    }
1062
+
1063
+    return $s;
1064 1064
 }
1065 1065
 
1066 1066
 
@@ -1075,18 +1075,18 @@  discard block
 block discarded – undo
1075 1075
  *     0, pas d'erreur. Autre, numéro de l'erreur.
1076 1076
  **/
1077 1077
 function spip_mysql_errno($serveur = '', $requeter = true) {
1078
-	$link = $GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
1079
-	$s = mysqli_errno($link);
1080
-	// 2006 MySQL server has gone away
1081
-	// 2013 Lost connection to MySQL server during query
1082
-	if (in_array($s, array(2006, 2013))) {
1083
-		define('spip_interdire_cache', true);
1084
-	}
1085
-	if ($s) {
1086
-		spip_log("Erreur mysql $s", _LOG_ERREUR);
1087
-	}
1088
-
1089
-	return $s;
1078
+    $link = $GLOBALS['connexions'][$serveur ? $serveur : 0]['link'];
1079
+    $s = mysqli_errno($link);
1080
+    // 2006 MySQL server has gone away
1081
+    // 2013 Lost connection to MySQL server during query
1082
+    if (in_array($s, array(2006, 2013))) {
1083
+        define('spip_interdire_cache', true);
1084
+    }
1085
+    if ($s) {
1086
+        spip_log("Erreur mysql $s", _LOG_ERREUR);
1087
+    }
1088
+
1089
+    return $s;
1090 1090
 }
1091 1091
 
1092 1092
 
@@ -1100,9 +1100,9 @@  discard block
 block discarded – undo
1100 1100
  * @return int               Nombre de lignes
1101 1101
  */
1102 1102
 function spip_mysql_count($r, $serveur = '', $requeter = true) {
1103
-	if ($r) {
1104
-		return mysqli_num_rows($r);
1105
-	}
1103
+    if ($r) {
1104
+        return mysqli_num_rows($r);
1105
+    }
1106 1106
 }
1107 1107
 
1108 1108
 
@@ -1118,7 +1118,7 @@  discard block
 block discarded – undo
1118 1118
  * @return bool              True si réussi
1119 1119
  */
1120 1120
 function spip_mysql_free($r, $serveur = '', $requeter = true) {
1121
-	return (($r instanceof mysqli_result) ? mysqli_free_result($r) : false);
1121
+    return (($r instanceof mysqli_result) ? mysqli_free_result($r) : false);
1122 1122
 }
1123 1123
 
1124 1124
 
@@ -1146,38 +1146,38 @@  discard block
 block discarded – undo
1146 1146
  **/
1147 1147
 function spip_mysql_insert($table, $champs, $valeurs, $desc = array(), $serveur = '', $requeter = true) {
1148 1148
 
1149
-	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
1150
-	$link = $connexion['link'];
1151
-	$table = prefixer_table_spip($table, $connexion['prefixe']);
1152
-
1153
-	$query = "INSERT INTO $table $champs VALUES $valeurs";
1154
-	if (!$requeter) {
1155
-		return $query;
1156
-	}
1157
-
1158
-	if (isset($_GET['var_profile'])) {
1159
-		include_spip('public/tracer');
1160
-		$t = trace_query_start();
1161
-		$e = '';
1162
-	} else {
1163
-		$t = 0;
1164
-	}
1165
-
1166
-	$connexion['last'] = $query;
1167
-	#spip_log($query, 'mysql.'._LOG_DEBUG);
1168
-	$r = false;
1169
-	if (mysqli_query($link, $query)) {
1170
-		$r = mysqli_insert_id($link);
1171
-	} else {
1172
-		// Log de l'erreur eventuelle
1173
-		if ($e = spip_mysql_errno($serveur)) {
1174
-			$e .= spip_mysql_error($query, $serveur);
1175
-		} // et du fautif
1176
-	}
1177
-
1178
-	return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
1179
-
1180
-	// return $r ? $r : (($r===0) ? -1 : 0); pb avec le multi-base.
1149
+    $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
1150
+    $link = $connexion['link'];
1151
+    $table = prefixer_table_spip($table, $connexion['prefixe']);
1152
+
1153
+    $query = "INSERT INTO $table $champs VALUES $valeurs";
1154
+    if (!$requeter) {
1155
+        return $query;
1156
+    }
1157
+
1158
+    if (isset($_GET['var_profile'])) {
1159
+        include_spip('public/tracer');
1160
+        $t = trace_query_start();
1161
+        $e = '';
1162
+    } else {
1163
+        $t = 0;
1164
+    }
1165
+
1166
+    $connexion['last'] = $query;
1167
+    #spip_log($query, 'mysql.'._LOG_DEBUG);
1168
+    $r = false;
1169
+    if (mysqli_query($link, $query)) {
1170
+        $r = mysqli_insert_id($link);
1171
+    } else {
1172
+        // Log de l'erreur eventuelle
1173
+        if ($e = spip_mysql_errno($serveur)) {
1174
+            $e .= spip_mysql_error($query, $serveur);
1175
+        } // et du fautif
1176
+    }
1177
+
1178
+    return $t ? trace_query_end($query, $t, $r, $e, $serveur) : $r;
1179
+
1180
+    // return $r ? $r : (($r===0) ? -1 : 0); pb avec le multi-base.
1181 1181
 }
1182 1182
 
1183 1183
 /**
@@ -1202,20 +1202,20 @@  discard block
 block discarded – undo
1202 1202
  **/
1203 1203
 function spip_mysql_insertq($table, $couples = array(), $desc = array(), $serveur = '', $requeter = true) {
1204 1204
 
1205
-	if (!$desc) {
1206
-		$desc = description_table($table, $serveur);
1207
-	}
1208
-	if (!$desc) {
1209
-		$couples = array();
1210
-	}
1211
-	$fields = isset($desc['field']) ? $desc['field'] : array();
1205
+    if (!$desc) {
1206
+        $desc = description_table($table, $serveur);
1207
+    }
1208
+    if (!$desc) {
1209
+        $couples = array();
1210
+    }
1211
+    $fields = isset($desc['field']) ? $desc['field'] : array();
1212 1212
 
1213
-	foreach ($couples as $champ => $val) {
1214
-		$couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1215
-	}
1213
+    foreach ($couples as $champ => $val) {
1214
+        $couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1215
+    }
1216 1216
 
1217
-	return spip_mysql_insert($table, "(" . join(',', array_keys($couples)) . ")", "(" . join(',', $couples) . ")", $desc,
1218
-		$serveur, $requeter);
1217
+    return spip_mysql_insert($table, "(" . join(',', array_keys($couples)) . ")", "(" . join(',', $couples) . ")", $desc,
1218
+        $serveur, $requeter);
1219 1219
 }
1220 1220
 
1221 1221
 
@@ -1240,34 +1240,34 @@  discard block
 block discarded – undo
1240 1240
  **/
1241 1241
 function spip_mysql_insertq_multi($table, $tab_couples = array(), $desc = array(), $serveur = '', $requeter = true) {
1242 1242
 
1243
-	if (!$desc) {
1244
-		$desc = description_table($table, $serveur);
1245
-	}
1246
-	if (!$desc) {
1247
-		$tab_couples = array();
1248
-	}
1249
-	$fields = isset($desc['field']) ? $desc['field'] : array();
1250
-
1251
-	$cles = "(" . join(',', array_keys(reset($tab_couples))) . ')';
1252
-	$valeurs = array();
1253
-	$r = false;
1254
-
1255
-	// Quoter et Inserer par groupes de 100 max pour eviter un debordement de pile
1256
-	foreach ($tab_couples as $couples) {
1257
-		foreach ($couples as $champ => $val) {
1258
-			$couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1259
-		}
1260
-		$valeurs[] = '(' . join(',', $couples) . ')';
1261
-		if (count($valeurs) >= 100) {
1262
-			$r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1263
-			$valeurs = array();
1264
-		}
1265
-	}
1266
-	if (count($valeurs)) {
1267
-		$r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1268
-	}
1269
-
1270
-	return $r; // dans le cas d'une table auto_increment, le dernier insert_id
1243
+    if (!$desc) {
1244
+        $desc = description_table($table, $serveur);
1245
+    }
1246
+    if (!$desc) {
1247
+        $tab_couples = array();
1248
+    }
1249
+    $fields = isset($desc['field']) ? $desc['field'] : array();
1250
+
1251
+    $cles = "(" . join(',', array_keys(reset($tab_couples))) . ')';
1252
+    $valeurs = array();
1253
+    $r = false;
1254
+
1255
+    // Quoter et Inserer par groupes de 100 max pour eviter un debordement de pile
1256
+    foreach ($tab_couples as $couples) {
1257
+        foreach ($couples as $champ => $val) {
1258
+            $couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1259
+        }
1260
+        $valeurs[] = '(' . join(',', $couples) . ')';
1261
+        if (count($valeurs) >= 100) {
1262
+            $r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1263
+            $valeurs = array();
1264
+        }
1265
+    }
1266
+    if (count($valeurs)) {
1267
+        $r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1268
+    }
1269
+
1270
+    return $r; // dans le cas d'une table auto_increment, le dernier insert_id
1271 1271
 }
1272 1272
 
1273 1273
 /**
@@ -1292,17 +1292,17 @@  discard block
 block discarded – undo
1292 1292
  *     - array Tableau décrivant la requête et son temps d'exécution si var_profile est actif
1293 1293
  */
1294 1294
 function spip_mysql_update($table, $champs, $where = '', $desc = array(), $serveur = '', $requeter = true) {
1295
-	$set = array();
1296
-	foreach ($champs as $champ => $val) {
1297
-		$set[] = $champ . "=$val";
1298
-	}
1299
-	if (!empty($set)) {
1300
-		return spip_mysql_query(
1301
-			calculer_mysql_expression('UPDATE', $table, ',')
1302
-			. calculer_mysql_expression('SET', $set, ',')
1303
-			. calculer_mysql_expression('WHERE', $where),
1304
-			$serveur, $requeter);
1305
-	}
1295
+    $set = array();
1296
+    foreach ($champs as $champ => $val) {
1297
+        $set[] = $champ . "=$val";
1298
+    }
1299
+    if (!empty($set)) {
1300
+        return spip_mysql_query(
1301
+            calculer_mysql_expression('UPDATE', $table, ',')
1302
+            . calculer_mysql_expression('SET', $set, ',')
1303
+            . calculer_mysql_expression('WHERE', $where),
1304
+            $serveur, $requeter);
1305
+    }
1306 1306
 }
1307 1307
 
1308 1308
 /**
@@ -1335,27 +1335,27 @@  discard block
 block discarded – undo
1335 1335
  */
1336 1336
 function spip_mysql_updateq($table, $champs, $where = '', $desc = array(), $serveur = '', $requeter = true) {
1337 1337
 
1338
-	if (!$champs) {
1339
-		return;
1340
-	}
1341
-	if (!$desc) {
1342
-		$desc = description_table($table, $serveur);
1343
-	}
1344
-	if (!$desc) {
1345
-		$champs = array();
1346
-	} else {
1347
-		$fields = $desc['field'];
1348
-	}
1349
-	$set = array();
1350
-	foreach ($champs as $champ => $val) {
1351
-		$set[] = $champ . '=' . spip_mysql_cite($val, @$fields[$champ]);
1352
-	}
1353
-
1354
-	return spip_mysql_query(
1355
-		calculer_mysql_expression('UPDATE', $table, ',')
1356
-		. calculer_mysql_expression('SET', $set, ',')
1357
-		. calculer_mysql_expression('WHERE', $where),
1358
-		$serveur, $requeter);
1338
+    if (!$champs) {
1339
+        return;
1340
+    }
1341
+    if (!$desc) {
1342
+        $desc = description_table($table, $serveur);
1343
+    }
1344
+    if (!$desc) {
1345
+        $champs = array();
1346
+    } else {
1347
+        $fields = $desc['field'];
1348
+    }
1349
+    $set = array();
1350
+    foreach ($champs as $champ => $val) {
1351
+        $set[] = $champ . '=' . spip_mysql_cite($val, @$fields[$champ]);
1352
+    }
1353
+
1354
+    return spip_mysql_query(
1355
+        calculer_mysql_expression('UPDATE', $table, ',')
1356
+        . calculer_mysql_expression('SET', $set, ',')
1357
+        . calculer_mysql_expression('WHERE', $where),
1358
+        $serveur, $requeter);
1359 1359
 }
1360 1360
 
1361 1361
 /**
@@ -1371,20 +1371,20 @@  discard block
 block discarded – undo
1371 1371
  *     - False en cas d'erreur.
1372 1372
  **/
1373 1373
 function spip_mysql_delete($table, $where = '', $serveur = '', $requeter = true) {
1374
-	$res = spip_mysql_query(
1375
-		calculer_mysql_expression('DELETE FROM', $table, ',')
1376
-		. calculer_mysql_expression('WHERE', $where),
1377
-		$serveur, $requeter);
1378
-	if (!$requeter) {
1379
-		return $res;
1380
-	}
1381
-	if ($res) {
1382
-		$link = _mysql_link($serveur);
1383
-
1384
-		return mysqli_affected_rows($link);
1385
-	} else {
1386
-		return false;
1387
-	}
1374
+    $res = spip_mysql_query(
1375
+        calculer_mysql_expression('DELETE FROM', $table, ',')
1376
+        . calculer_mysql_expression('WHERE', $where),
1377
+        $serveur, $requeter);
1378
+    if (!$requeter) {
1379
+        return $res;
1380
+    }
1381
+    if ($res) {
1382
+        $link = _mysql_link($serveur);
1383
+
1384
+        return mysqli_affected_rows($link);
1385
+    } else {
1386
+        return false;
1387
+    }
1388 1388
 }
1389 1389
 
1390 1390
 
@@ -1413,8 +1413,8 @@  discard block
 block discarded – undo
1413 1413
  *     - False en cas d'erreur.
1414 1414
  **/
1415 1415
 function spip_mysql_replace($table, $couples, $desc = array(), $serveur = '', $requeter = true) {
1416
-	return spip_mysql_query("REPLACE $table (" . join(',', array_keys($couples)) . ') VALUES (' . join(',',
1417
-			array_map('_q', $couples)) . ')', $serveur, $requeter);
1416
+    return spip_mysql_query("REPLACE $table (" . join(',', array_keys($couples)) . ') VALUES (' . join(',',
1417
+            array_map('_q', $couples)) . ')', $serveur, $requeter);
1418 1418
 }
1419 1419
 
1420 1420
 
@@ -1443,14 +1443,14 @@  discard block
 block discarded – undo
1443 1443
  *     - False en cas d'erreur.
1444 1444
  **/
1445 1445
 function spip_mysql_replace_multi($table, $tab_couples, $desc = array(), $serveur = '', $requeter = true) {
1446
-	$cles = "(" . join(',', array_keys($tab_couples[0])) . ')';
1447
-	$valeurs = array();
1448
-	foreach ($tab_couples as $couples) {
1449
-		$valeurs[] = '(' . join(',', array_map('_q', $couples)) . ')';
1450
-	}
1451
-	$valeurs = implode(', ', $valeurs);
1452
-
1453
-	return spip_mysql_query("REPLACE $table $cles VALUES $valeurs", $serveur, $requeter);
1446
+    $cles = "(" . join(',', array_keys($tab_couples[0])) . ')';
1447
+    $valeurs = array();
1448
+    foreach ($tab_couples as $couples) {
1449
+        $valeurs[] = '(' . join(',', array_map('_q', $couples)) . ')';
1450
+    }
1451
+    $valeurs = implode(', ', $valeurs);
1452
+
1453
+    return spip_mysql_query("REPLACE $table $cles VALUES $valeurs", $serveur, $requeter);
1454 1454
 }
1455 1455
 
1456 1456
 
@@ -1465,32 +1465,32 @@  discard block
 block discarded – undo
1465 1465
  * @return string       Texte de sélection pour la requête
1466 1466
  */
1467 1467
 function spip_mysql_multi($objet, $lang) {
1468
-	$lengthlang = strlen("[$lang]");
1469
-	$posmulti = "INSTR(" . $objet . ", '<multi>')";
1470
-	$posfinmulti = "INSTR(" . $objet . ", '</multi>')";
1471
-	$debutchaine = "LEFT(" . $objet . ", $posmulti-1)";
1472
-	$finchaine = "RIGHT(" . $objet . ", CHAR_LENGTH(" . $objet . ") -(7+$posfinmulti))";
1473
-	$chainemulti = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7, $posfinmulti -(7+$posmulti)))";
1474
-	$poslang = "INSTR($chainemulti,'[" . $lang . "]')";
1475
-	$poslang = "IF($poslang=0,INSTR($chainemulti,']')+1,$poslang+$lengthlang)";
1476
-	$chainelang = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))";
1477
-	$posfinlang = "INSTR(" . $chainelang . ", '[')";
1478
-	$chainelang = "IF($posfinlang>0,LEFT($chainelang,$posfinlang-1),$chainelang)";
1479
-	//$chainelang = "LEFT($chainelang,$posfinlang-1)";
1480
-	$retour = "(TRIM(IF($posmulti = 0 , " .
1481
-		"     TRIM(" . $objet . "), " .
1482
-		"     CONCAT( " .
1483
-		"          $debutchaine, " .
1484
-		"          IF( " .
1485
-		"               $poslang = 0, " .
1486
-		"                     $chainemulti, " .
1487
-		"               $chainelang" .
1488
-		"          ), " .
1489
-		"          $finchaine" .
1490
-		"     ) " .
1491
-		"))) AS multi";
1492
-
1493
-	return $retour;
1468
+    $lengthlang = strlen("[$lang]");
1469
+    $posmulti = "INSTR(" . $objet . ", '<multi>')";
1470
+    $posfinmulti = "INSTR(" . $objet . ", '</multi>')";
1471
+    $debutchaine = "LEFT(" . $objet . ", $posmulti-1)";
1472
+    $finchaine = "RIGHT(" . $objet . ", CHAR_LENGTH(" . $objet . ") -(7+$posfinmulti))";
1473
+    $chainemulti = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7, $posfinmulti -(7+$posmulti)))";
1474
+    $poslang = "INSTR($chainemulti,'[" . $lang . "]')";
1475
+    $poslang = "IF($poslang=0,INSTR($chainemulti,']')+1,$poslang+$lengthlang)";
1476
+    $chainelang = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))";
1477
+    $posfinlang = "INSTR(" . $chainelang . ", '[')";
1478
+    $chainelang = "IF($posfinlang>0,LEFT($chainelang,$posfinlang-1),$chainelang)";
1479
+    //$chainelang = "LEFT($chainelang,$posfinlang-1)";
1480
+    $retour = "(TRIM(IF($posmulti = 0 , " .
1481
+        "     TRIM(" . $objet . "), " .
1482
+        "     CONCAT( " .
1483
+        "          $debutchaine, " .
1484
+        "          IF( " .
1485
+        "               $poslang = 0, " .
1486
+        "                     $chainemulti, " .
1487
+        "               $chainelang" .
1488
+        "          ), " .
1489
+        "          $finchaine" .
1490
+        "     ) " .
1491
+        "))) AS multi";
1492
+
1493
+    return $retour;
1494 1494
 }
1495 1495
 
1496 1496
 /**
@@ -1504,7 +1504,7 @@  discard block
 block discarded – undo
1504 1504
  *     Valeur hexadécimale pour MySQL
1505 1505
  **/
1506 1506
 function spip_mysql_hex($v) {
1507
-	return "0x" . $v;
1507
+    return "0x" . $v;
1508 1508
 }
1509 1509
 
1510 1510
 /**
@@ -1520,15 +1520,15 @@  discard block
 block discarded – undo
1520 1520
  *    Donnée prête à être utilisée par le gestionnaire SQL
1521 1521
  */
1522 1522
 function spip_mysql_quote($v, $type = '') {
1523
-	if (!is_array($v)) {
1524
-		return spip_mysql_cite($v, $type);
1525
-	}
1526
-
1527
-	// si c'est un tableau, le parcourir en propageant le type
1528
-	foreach ($v as $k => $r) {
1529
-		$v[$k] = spip_mysql_quote($r, $type);
1530
-	}
1531
-	return implode(',', $v);
1523
+    if (!is_array($v)) {
1524
+        return spip_mysql_cite($v, $type);
1525
+    }
1526
+
1527
+    // si c'est un tableau, le parcourir en propageant le type
1528
+    foreach ($v as $k => $r) {
1529
+        $v[$k] = spip_mysql_quote($r, $type);
1530
+    }
1531
+    return implode(',', $v);
1532 1532
 }
1533 1533
 
1534 1534
 /**
@@ -1544,18 +1544,18 @@  discard block
 block discarded – undo
1544 1544
  *     Expression SQL
1545 1545
  **/
1546 1546
 function spip_mysql_date_proche($champ, $interval, $unite) {
1547
-	$use_now = ( ($champ === 'maj' or strpos($champ, '.maj')) ? true : false );
1548
-	return '('
1549
-	. $champ
1550
-	. (($interval <= 0) ? '>' : '<')
1551
-	. (($interval <= 0) ? 'DATE_SUB' : 'DATE_ADD')
1552
-	. '('
1553
-	. ($use_now ? 'NOW()' : sql_quote(date('Y-m-d H:i:s')))
1554
-	. ', INTERVAL '
1555
-	. (($interval > 0) ? $interval : (0 - $interval))
1556
-	. ' '
1557
-	. $unite
1558
-	. '))';
1547
+    $use_now = ( ($champ === 'maj' or strpos($champ, '.maj')) ? true : false );
1548
+    return '('
1549
+    . $champ
1550
+    . (($interval <= 0) ? '>' : '<')
1551
+    . (($interval <= 0) ? 'DATE_SUB' : 'DATE_ADD')
1552
+    . '('
1553
+    . ($use_now ? 'NOW()' : sql_quote(date('Y-m-d H:i:s')))
1554
+    . ', INTERVAL '
1555
+    . (($interval > 0) ? $interval : (0 - $interval))
1556
+    . ' '
1557
+    . $unite
1558
+    . '))';
1559 1559
 }
1560 1560
 
1561 1561
 
@@ -1579,7 +1579,7 @@  discard block
 block discarded – undo
1579 1579
  *     Expression de requête SQL
1580 1580
  **/
1581 1581
 function spip_mysql_in($val, $valeurs, $not = '', $serveur = '', $requeter = true) {
1582
-	return "($val $not IN ($valeurs))";
1582
+    return "($val $not IN ($valeurs))";
1583 1583
 }
1584 1584
 
1585 1585
 
@@ -1591,33 +1591,33 @@  discard block
 block discarded – undo
1591 1591
  * @return string|number     Texte ou nombre échappé
1592 1592
  */
1593 1593
 function spip_mysql_cite($v, $type) {
1594
-	if (!$type) {
1595
-		if (is_numeric($v)) {
1596
-			return strval($v);
1597
-		}
1598
-		return "'" . addslashes($v) . "'";
1599
-	}
1600
-
1601
-	if (is_null($v)
1602
-		and stripos($type, "NOT NULL") === false
1603
-	) {
1604
-		return 'NULL';
1605
-	} // null php se traduit en NULL SQL
1606
-	if (sql_test_date($type) and preg_match('/^\w+\(/', $v)) {
1607
-		return $v;
1608
-	}
1609
-	if (sql_test_int($type)) {
1610
-		if (is_numeric($v) or (ctype_xdigit(substr($v, 2))
1611
-				and $v[0] == '0' and $v[1] == 'x')
1612
-		) {
1613
-			return $v;
1614
-		} // si pas numerique, forcer le intval
1615
-		else {
1616
-			return intval($v);
1617
-		}
1618
-	}
1619
-
1620
-	return ("'" . addslashes($v) . "'");
1594
+    if (!$type) {
1595
+        if (is_numeric($v)) {
1596
+            return strval($v);
1597
+        }
1598
+        return "'" . addslashes($v) . "'";
1599
+    }
1600
+
1601
+    if (is_null($v)
1602
+        and stripos($type, "NOT NULL") === false
1603
+    ) {
1604
+        return 'NULL';
1605
+    } // null php se traduit en NULL SQL
1606
+    if (sql_test_date($type) and preg_match('/^\w+\(/', $v)) {
1607
+        return $v;
1608
+    }
1609
+    if (sql_test_int($type)) {
1610
+        if (is_numeric($v) or (ctype_xdigit(substr($v, 2))
1611
+                and $v[0] == '0' and $v[1] == 'x')
1612
+        ) {
1613
+            return $v;
1614
+        } // si pas numerique, forcer le intval
1615
+        else {
1616
+            return intval($v);
1617
+        }
1618
+    }
1619
+
1620
+    return ("'" . addslashes($v) . "'");
1621 1621
 }
1622 1622
 
1623 1623
 
@@ -1641,21 +1641,21 @@  discard block
 block discarded – undo
1641 1641
  */
1642 1642
 function spip_get_lock($nom, $timeout = 0) {
1643 1643
 
1644
-	define('_LOCK_TIME', intval(time() / 3600 - 316982));
1644
+    define('_LOCK_TIME', intval(time() / 3600 - 316982));
1645 1645
 
1646
-	$connexion = &$GLOBALS['connexions'][0];
1647
-	$bd = $connexion['db'];
1648
-	$prefixe = $connexion['prefixe'];
1649
-	$nom = "$bd:$prefixe:$nom" . _LOCK_TIME;
1646
+    $connexion = &$GLOBALS['connexions'][0];
1647
+    $bd = $connexion['db'];
1648
+    $prefixe = $connexion['prefixe'];
1649
+    $nom = "$bd:$prefixe:$nom" . _LOCK_TIME;
1650 1650
 
1651
-	$connexion['last'] = $q = "SELECT GET_LOCK(" . _q($nom) . ", $timeout) AS n";
1651
+    $connexion['last'] = $q = "SELECT GET_LOCK(" . _q($nom) . ", $timeout) AS n";
1652 1652
 
1653
-	$q = @sql_fetch(mysqli_query(_mysql_link(), $q));
1654
-	if (!$q) {
1655
-		spip_log("pas de lock sql pour $nom", _LOG_ERREUR);
1656
-	}
1653
+    $q = @sql_fetch(mysqli_query(_mysql_link(), $q));
1654
+    if (!$q) {
1655
+        spip_log("pas de lock sql pour $nom", _LOG_ERREUR);
1656
+    }
1657 1657
 
1658
-	return $q['n'];
1658
+    return $q['n'];
1659 1659
 }
1660 1660
 
1661 1661
 
@@ -1672,13 +1672,13 @@  discard block
 block discarded – undo
1672 1672
  */
1673 1673
 function spip_release_lock($nom) {
1674 1674
 
1675
-	$connexion = &$GLOBALS['connexions'][0];
1676
-	$bd = $connexion['db'];
1677
-	$prefixe = $connexion['prefixe'];
1678
-	$nom = "$bd:$prefixe:$nom" . _LOCK_TIME;
1675
+    $connexion = &$GLOBALS['connexions'][0];
1676
+    $bd = $connexion['db'];
1677
+    $prefixe = $connexion['prefixe'];
1678
+    $nom = "$bd:$prefixe:$nom" . _LOCK_TIME;
1679 1679
 
1680
-	$connexion['last'] = $q = "SELECT RELEASE_LOCK(" . _q($nom) . ")";
1681
-	mysqli_query(_mysql_link(), $q);
1680
+    $connexion['last'] = $q = "SELECT RELEASE_LOCK(" . _q($nom) . ")";
1681
+    mysqli_query(_mysql_link(), $q);
1682 1682
 }
1683 1683
 
1684 1684
 
@@ -1689,7 +1689,7 @@  discard block
 block discarded – undo
1689 1689
  *     True si on a les fonctions, false sinon
1690 1690
  */
1691 1691
 function spip_versions_mysql() {
1692
-	return function_exists('mysqli_query');
1692
+    return function_exists('mysqli_query');
1693 1693
 }
1694 1694
 
1695 1695
 
@@ -1702,20 +1702,20 @@  discard block
 block discarded – undo
1702 1702
  *     - chaîne : code compilé pour le faire désactiver par SPIP sinon
1703 1703
  */
1704 1704
 function test_rappel_nom_base_mysql($server_db) {
1705
-	$GLOBALS['mysql_rappel_nom_base'] = true;
1706
-	sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1707
-	$ok = spip_query("INSERT INTO spip_meta (nom,valeur) VALUES ('mysql_rappel_nom_base', 'test')", $server_db);
1705
+    $GLOBALS['mysql_rappel_nom_base'] = true;
1706
+    sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1707
+    $ok = spip_query("INSERT INTO spip_meta (nom,valeur) VALUES ('mysql_rappel_nom_base', 'test')", $server_db);
1708 1708
 
1709
-	if ($ok) {
1710
-		sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1709
+    if ($ok) {
1710
+        sql_delete('spip_meta', "nom='mysql_rappel_nom_base'", $server_db);
1711 1711
 
1712
-		return '';
1713
-	} else {
1714
-		$GLOBALS['mysql_rappel_nom_base'] = false;
1712
+        return '';
1713
+    } else {
1714
+        $GLOBALS['mysql_rappel_nom_base'] = false;
1715 1715
 
1716
-		return "\$GLOBALS['mysql_rappel_nom_base'] = false; " .
1717
-		"/* echec de test_rappel_nom_base_mysql a l'installation. */\n";
1718
-	}
1716
+        return "\$GLOBALS['mysql_rappel_nom_base'] = false; " .
1717
+        "/* echec de test_rappel_nom_base_mysql a l'installation. */\n";
1718
+    }
1719 1719
 }
1720 1720
 
1721 1721
 /**
@@ -1729,13 +1729,13 @@  discard block
 block discarded – undo
1729 1729
  *     - chaîne : code compilé pour l'indiquer le résultat du test à SPIP
1730 1730
  */
1731 1731
 function test_sql_mode_mysql($server_db) {
1732
-	$res = sql_select("version() as v", '', '', '', '', '', '', $server_db);
1733
-	$row = sql_fetch($res, $server_db);
1734
-	if (version_compare($row['v'], '5.0.0', '>=')) {
1735
-		defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE', true);
1732
+    $res = sql_select("version() as v", '', '', '', '', '', '', $server_db);
1733
+    $row = sql_fetch($res, $server_db);
1734
+    if (version_compare($row['v'], '5.0.0', '>=')) {
1735
+        defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE', true);
1736 1736
 
1737
-		return "defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE',true);\n";
1738
-	}
1737
+        return "defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE',true);\n";
1738
+    }
1739 1739
 
1740
-	return '';
1740
+    return '';
1741 1741
 }
Please login to merge, or discard this patch.
Spacing   +77 added lines, -77 removed lines patch added patch discarded remove patch
@@ -48,7 +48,7 @@  discard block
 block discarded – undo
48 48
 	// si port est fourni mais pas host, c'est un socket -> compat avec vieille syntaxe de mysql_connect() et anciens fichiers connect.php
49 49
 	if (
50 50
 		$port and !is_numeric($socket = $port)
51
-		and (!$host or $host=='localhost')) {
51
+		and (!$host or $host == 'localhost')) {
52 52
 		$link = @mysqli_connect($host, $login, $pass, '', null, $socket);
53 53
 	}
54 54
 	elseif ($port) {
@@ -59,7 +59,7 @@  discard block
 block discarded – undo
59 59
 	}
60 60
 
61 61
 	if (!$link) {
62
-		spip_log('Echec mysqli_connect. Erreur : ' . mysqli_connect_error(), 'mysql.' . _LOG_HS);
62
+		spip_log('Echec mysqli_connect. Erreur : '.mysqli_connect_error(), 'mysql.'._LOG_HS);
63 63
 
64 64
 		return false;
65 65
 	}
@@ -76,7 +76,7 @@  discard block
 block discarded – undo
76 76
 		}
77 77
 	}
78 78
 
79
-	spip_log("Connexion MySQLi vers $host, base $db, prefixe $prefixe " . ($ok ? "operationnelle" : 'impossible'),
79
+	spip_log("Connexion MySQLi vers $host, base $db, prefixe $prefixe ".($ok ? "operationnelle" : 'impossible'),
80 80
 		_LOG_DEBUG);
81 81
 
82 82
 	return !$ok ? false : array(
@@ -165,9 +165,9 @@  discard block
 block discarded – undo
165 165
  */
166 166
 function spip_mysql_set_charset($charset, $serveur = '', $requeter = true) {
167 167
 	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
168
-	spip_log("changement de charset sql : " . "SET NAMES " . _q($charset), _LOG_DEBUG);
168
+	spip_log("changement de charset sql : "."SET NAMES "._q($charset), _LOG_DEBUG);
169 169
 
170
-	return mysqli_query($connexion['link'], $connexion['last'] = "SET NAMES " . _q($charset));
170
+	return mysqli_query($connexion['link'], $connexion['last'] = "SET NAMES "._q($charset));
171 171
 }
172 172
 
173 173
 
@@ -182,7 +182,7 @@  discard block
 block discarded – undo
182 182
 function spip_mysql_get_charset($charset = array(), $serveur = '', $requeter = true) {
183 183
 	$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
184 184
 	$connexion['last'] = $c = "SHOW CHARACTER SET"
185
-		. (!$charset ? '' : (" LIKE " . _q($charset['charset'])));
185
+		. (!$charset ? '' : (" LIKE "._q($charset['charset'])));
186 186
 
187 187
 	return spip_mysql_fetch(mysqli_query($connexion['link'], $c), null, $serveur);
188 188
 }
@@ -242,14 +242,14 @@  discard block
 block discarded – undo
242 242
 	$debug = '';
243 243
 	if (defined('_DEBUG_SLOW_QUERIES') and _DEBUG_SLOW_QUERIES) {
244 244
 		if (isset($GLOBALS['debug']['aucasou'])) {
245
-			list(, $id, , $infos) = $GLOBALS['debug']['aucasou'];
246
-			$debug .= "BOUCLE$id @ " . (isset($infos[0]) ? $infos[0] : '') . " | ";
245
+			list(, $id,, $infos) = $GLOBALS['debug']['aucasou'];
246
+			$debug .= "BOUCLE$id @ ".(isset($infos[0]) ? $infos[0] : '')." | ";
247 247
 		}
248
-		$debug .= $_SERVER['REQUEST_URI'] . ' + ' . $GLOBALS['ip'];
249
-		$debug = ' /* ' . mysqli_real_escape_string($link, str_replace('*/', '@/', $debug)) . ' */';
248
+		$debug .= $_SERVER['REQUEST_URI'].' + '.$GLOBALS['ip'];
249
+		$debug = ' /* '.mysqli_real_escape_string($link, str_replace('*/', '@/', $debug)).' */';
250 250
 	}
251 251
 
252
-	$r = mysqli_query($link, $query . $debug);
252
+	$r = mysqli_query($link, $query.$debug);
253 253
 
254 254
 	//Eviter de propager le GoneAway sur les autres requetes d'un même processus PHP
255 255
 	if ($e = spip_mysql_errno($serveur)) {  // Log d'un Gone Away
@@ -262,7 +262,7 @@  discard block
 block discarded – undo
262 262
 			$connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0];
263 263
 			$link = $connexion['link'];
264 264
 			//On retente au cas où
265
-			$r = mysqli_query($link, $query . $debug);
265
+			$r = mysqli_query($link, $query.$debug);
266 266
 		}
267 267
 	}
268 268
 
@@ -290,7 +290,7 @@  discard block
 block discarded – undo
290 290
 	// d'utiliser ceux-ci, copie-colle de phpmyadmin
291 291
 	$query = preg_replace(",^TABLE\s*`([^`]*)`,i", "TABLE \\1", $query);
292 292
 
293
-	return spip_mysql_query("ALTER " . $query, $serveur, $requeter); # i.e. que PG se debrouille
293
+	return spip_mysql_query("ALTER ".$query, $serveur, $requeter); # i.e. que PG se debrouille
294 294
 }
295 295
 
296 296
 
@@ -303,7 +303,7 @@  discard block
 block discarded – undo
303 303
  * @return bool            Toujours true
304 304
  */
305 305
 function spip_mysql_optimize($table, $serveur = '', $requeter = true) {
306
-	spip_mysql_query("OPTIMIZE TABLE " . $table);
306
+	spip_mysql_query("OPTIMIZE TABLE ".$table);
307 307
 
308 308
 	return true;
309 309
 }
@@ -326,7 +326,7 @@  discard block
 block discarded – undo
326 326
 	$link = $connexion['link'];
327 327
 	$db = $connexion['db'];
328 328
 
329
-	$query = 'EXPLAIN ' . _mysql_traite_query($query, $db, $prefixe);
329
+	$query = 'EXPLAIN '._mysql_traite_query($query, $db, $prefixe);
330 330
 	$r = mysqli_query($link, $query);
331 331
 
332 332
 	return spip_mysql_fetch($r, null, $serveur);
@@ -377,7 +377,7 @@  discard block
 block discarded – undo
377 377
 		. calculer_mysql_expression('WHERE', $where)
378 378
 		. calculer_mysql_expression('GROUP BY', $groupby, ',')
379 379
 		. calculer_mysql_expression('HAVING', $having)
380
-		. ($orderby ? ("\nORDER BY " . spip_mysql_order($orderby)) : '')
380
+		. ($orderby ? ("\nORDER BY ".spip_mysql_order($orderby)) : '')
381 381
 		. ($limit ? "\nLIMIT $limit" : '');
382 382
 
383 383
 	// renvoyer la requete inerte si demandee
@@ -467,12 +467,12 @@  discard block
 block discarded – undo
467 467
 	$exp = "\n$expression ";
468 468
 
469 469
 	if (!is_array($v)) {
470
-		return $exp . $v;
470
+		return $exp.$v;
471 471
 	} else {
472 472
 		if (strtoupper($join) === 'AND') {
473
-			return $exp . join("\n\t$join ", array_map('calculer_mysql_where', $v));
473
+			return $exp.join("\n\t$join ", array_map('calculer_mysql_where', $v));
474 474
 		} else {
475
-			return $exp . join($join, $v);
475
+			return $exp.join($join, $v);
476 476
 		}
477 477
 	}
478 478
 }
@@ -490,17 +490,17 @@  discard block
 block discarded – undo
490 490
 		if (substr($k, -1) == '@') {
491 491
 			// c'est une jointure qui se refere au from precedent
492 492
 			// pas de virgule
493
-			$res .= '  ' . $v;
493
+			$res .= '  '.$v;
494 494
 		} else {
495 495
 			if (!is_numeric($k)) {
496 496
 				$p = strpos($v, " ");
497 497
 				if ($p) {
498
-					$v = substr($v, 0, $p) . " AS `$k`" . substr($v, $p);
498
+					$v = substr($v, 0, $p)." AS `$k`".substr($v, $p);
499 499
 				} else {
500 500
 					$v .= " AS `$k`";
501 501
 				}
502 502
 			}
503
-			$res .= ', ' . $v;
503
+			$res .= ', '.$v;
504 504
 		}
505 505
 	}
506 506
 
@@ -529,13 +529,13 @@  discard block
 block discarded – undo
529 529
 function _mysql_traite_query($query, $db = '', $prefixe = '') {
530 530
 
531 531
 	if ($GLOBALS['mysql_rappel_nom_base'] and $db) {
532
-		$pref = '`' . $db . '`.';
532
+		$pref = '`'.$db.'`.';
533 533
 	} else {
534 534
 		$pref = '';
535 535
 	}
536 536
 
537 537
 	if ($prefixe) {
538
-		$pref .= $prefixe . "_";
538
+		$pref .= $prefixe."_";
539 539
 	}
540 540
 
541 541
 	if (!preg_match('/\s(SET|VALUES|WHERE|DATABASE)\s/i', $query, $regs)) {
@@ -549,12 +549,12 @@  discard block
 block discarded – undo
549 549
 		if (stripos($suite, "SELECT") !== false) {
550 550
 			list($suite, $textes) = query_echappe_textes($suite);
551 551
 			if (preg_match('/^(.*?)([(]\s*SELECT\b.*)$/si', $suite, $r)) {
552
-				$suite = $r[1] . _mysql_traite_query($r[2], $db, $prefixe);
552
+				$suite = $r[1]._mysql_traite_query($r[2], $db, $prefixe);
553 553
 			}
554 554
 			$suite = query_reinjecte_textes($suite, $textes);
555 555
 		}
556 556
 	}
557
-	$r = preg_replace(_SQL_PREFIXE_TABLE_MYSQL, '\1' . $pref, $query) . $suite;
557
+	$r = preg_replace(_SQL_PREFIXE_TABLE_MYSQL, '\1'.$pref, $query).$suite;
558 558
 
559 559
 	// en option, remplacer les emoji (que mysql ne sait pas gérer) en &#128169;
560 560
 	if (defined('_MYSQL_NOPLANES') and _MYSQL_NOPLANES and lire_meta('charset_sql_connexion') == 'utf8') {
@@ -584,7 +584,7 @@  discard block
 block discarded – undo
584 584
 	$link = _mysql_link($serveur);
585 585
 	$ok = mysqli_select_db($link, $db);
586 586
 	if (!$ok) {
587
-		spip_log('Echec mysqli_selectdb. Erreur : ' . mysqli_error($link), 'mysql.' . _LOG_CRITIQUE);
587
+		spip_log('Echec mysqli_selectdb. Erreur : '.mysqli_error($link), 'mysql.'._LOG_CRITIQUE);
588 588
 	}
589 589
 
590 590
 	return $ok;
@@ -674,10 +674,10 @@  discard block
 block discarded – undo
674 674
 
675 675
 	$character_set = "";
676 676
 	if (@$GLOBALS['meta']['charset_sql_base']) {
677
-		$character_set .= " CHARACTER SET " . $GLOBALS['meta']['charset_sql_base'];
677
+		$character_set .= " CHARACTER SET ".$GLOBALS['meta']['charset_sql_base'];
678 678
 	}
679 679
 	if (@$GLOBALS['meta']['charset_collation_sql_base']) {
680
-		$character_set .= " COLLATE " . $GLOBALS['meta']['charset_collation_sql_base'];
680
+		$character_set .= " COLLATE ".$GLOBALS['meta']['charset_collation_sql_base'];
681 681
 	}
682 682
 
683 683
 	foreach ($champs as $k => $v) {
@@ -686,7 +686,7 @@  discard block
 block discarded – undo
686 686
 			if (preg_match(',(char|text),i', $defs[1])
687 687
 				and !preg_match(',(binary|CHARACTER|COLLATE),i', $v)
688 688
 			) {
689
-				$v = $defs[1] . $character_set . ' ' . substr($v, strlen($defs[1]));
689
+				$v = $defs[1].$character_set.' '.substr($v, strlen($defs[1]));
690 690
 			}
691 691
 		}
692 692
 
@@ -698,7 +698,7 @@  discard block
 block discarded – undo
698 698
 		$s = ",";
699 699
 	}
700 700
 	$temporary = $temporary ? 'TEMPORARY' : '';
701
-	$q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query" . ($keys ? ",$keys" : '') . ")"
701
+	$q = "CREATE $temporary TABLE IF NOT EXISTS $nom ($query".($keys ? ",$keys" : '').")"
702 702
 		. " ENGINE=MyISAM"
703 703
 		. ($character_set ? " DEFAULT $character_set" : "")
704 704
 		. "\n";
@@ -778,7 +778,7 @@  discard block
 block discarded – undo
778 778
 		return false;
779 779
 	}
780 780
 
781
-	$query = "CREATE VIEW $nom AS " . $query_select;
781
+	$query = "CREATE VIEW $nom AS ".$query_select;
782 782
 
783 783
 	return spip_mysql_query($query, $serveur, $requeter);
784 784
 }
@@ -836,7 +836,7 @@  discard block
 block discarded – undo
836 836
  *     Ressource à utiliser avec sql_fetch()
837 837
  **/
838 838
 function spip_mysql_showbase($match, $serveur = '', $requeter = true) {
839
-	return spip_mysql_query("SHOW TABLES LIKE " . _q($match), $serveur, $requeter);
839
+	return spip_mysql_query("SHOW TABLES LIKE "._q($match), $serveur, $requeter);
840 840
 }
841 841
 
842 842
 /**
@@ -930,22 +930,22 @@  discard block
 block discarded – undo
930 930
 			}
931 931
 			if ($val['Default'] === '0' || $val['Default']) {
932 932
 				if (preg_match('/[A-Z_]/', $val['Default'])) {
933
-					$nfields[$val["Field"]] .= ' DEFAULT ' . $val['Default'];
933
+					$nfields[$val["Field"]] .= ' DEFAULT '.$val['Default'];
934 934
 				} else {
935
-					$nfields[$val["Field"]] .= " DEFAULT '" . $val['Default'] . "'";
935
+					$nfields[$val["Field"]] .= " DEFAULT '".$val['Default']."'";
936 936
 				}
937 937
 			}
938 938
 			if ($val['Extra']) {
939
-				$nfields[$val["Field"]] .= ' ' . $val['Extra'];
939
+				$nfields[$val["Field"]] .= ' '.$val['Extra'];
940 940
 			}
941 941
 			if ($val['Key'] == 'PRI') {
942 942
 				$nkeys['PRIMARY KEY'] = $val["Field"];
943 943
 			} else {
944 944
 				if ($val['Key'] == 'MUL') {
945
-					$nkeys['KEY ' . $val["Field"]] = $val["Field"];
945
+					$nkeys['KEY '.$val["Field"]] = $val["Field"];
946 946
 				} else {
947 947
 					if ($val['Key'] == 'UNI') {
948
-						$nkeys['UNIQUE KEY ' . $val["Field"]] = $val["Field"];
948
+						$nkeys['UNIQUE KEY '.$val["Field"]] = $val["Field"];
949 949
 					}
950 950
 				}
951 951
 			}
@@ -1016,7 +1016,7 @@  discard block
 block discarded – undo
1016 1016
 	$serveur = '',
1017 1017
 	$requeter = true
1018 1018
 ) {
1019
-	$c = !$groupby ? '*' : ('DISTINCT ' . (is_string($groupby) ? $groupby : join(',', $groupby)));
1019
+	$c = !$groupby ? '*' : ('DISTINCT '.(is_string($groupby) ? $groupby : join(',', $groupby)));
1020 1020
 
1021 1021
 	$r = spip_mysql_select("COUNT($c)", $from, $where, '', '', '', $having, $serveur, $requeter);
1022 1022
 	if (!$requeter) {
@@ -1056,7 +1056,7 @@  discard block
 block discarded – undo
1056 1056
 	if ($s) {
1057 1057
 		$trace = debug_backtrace();
1058 1058
 		if ($trace[0]['function'] != "spip_mysql_error") {
1059
-			spip_log("$s - $query - " . sql_error_backtrace(), 'mysql.' . _LOG_ERREUR);
1059
+			spip_log("$s - $query - ".sql_error_backtrace(), 'mysql.'._LOG_ERREUR);
1060 1060
 		}
1061 1061
 	}
1062 1062
 
@@ -1214,7 +1214,7 @@  discard block
 block discarded – undo
1214 1214
 		$couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1215 1215
 	}
1216 1216
 
1217
-	return spip_mysql_insert($table, "(" . join(',', array_keys($couples)) . ")", "(" . join(',', $couples) . ")", $desc,
1217
+	return spip_mysql_insert($table, "(".join(',', array_keys($couples)).")", "(".join(',', $couples).")", $desc,
1218 1218
 		$serveur, $requeter);
1219 1219
 }
1220 1220
 
@@ -1248,7 +1248,7 @@  discard block
 block discarded – undo
1248 1248
 	}
1249 1249
 	$fields = isset($desc['field']) ? $desc['field'] : array();
1250 1250
 
1251
-	$cles = "(" . join(',', array_keys(reset($tab_couples))) . ')';
1251
+	$cles = "(".join(',', array_keys(reset($tab_couples))).')';
1252 1252
 	$valeurs = array();
1253 1253
 	$r = false;
1254 1254
 
@@ -1257,7 +1257,7 @@  discard block
 block discarded – undo
1257 1257
 		foreach ($couples as $champ => $val) {
1258 1258
 			$couples[$champ] = spip_mysql_cite($val, $fields[$champ]);
1259 1259
 		}
1260
-		$valeurs[] = '(' . join(',', $couples) . ')';
1260
+		$valeurs[] = '('.join(',', $couples).')';
1261 1261
 		if (count($valeurs) >= 100) {
1262 1262
 			$r = spip_mysql_insert($table, $cles, join(', ', $valeurs), $desc, $serveur, $requeter);
1263 1263
 			$valeurs = array();
@@ -1294,7 +1294,7 @@  discard block
 block discarded – undo
1294 1294
 function spip_mysql_update($table, $champs, $where = '', $desc = array(), $serveur = '', $requeter = true) {
1295 1295
 	$set = array();
1296 1296
 	foreach ($champs as $champ => $val) {
1297
-		$set[] = $champ . "=$val";
1297
+		$set[] = $champ."=$val";
1298 1298
 	}
1299 1299
 	if (!empty($set)) {
1300 1300
 		return spip_mysql_query(
@@ -1348,7 +1348,7 @@  discard block
 block discarded – undo
1348 1348
 	}
1349 1349
 	$set = array();
1350 1350
 	foreach ($champs as $champ => $val) {
1351
-		$set[] = $champ . '=' . spip_mysql_cite($val, @$fields[$champ]);
1351
+		$set[] = $champ.'='.spip_mysql_cite($val, @$fields[$champ]);
1352 1352
 	}
1353 1353
 
1354 1354
 	return spip_mysql_query(
@@ -1413,8 +1413,8 @@  discard block
 block discarded – undo
1413 1413
  *     - False en cas d'erreur.
1414 1414
  **/
1415 1415
 function spip_mysql_replace($table, $couples, $desc = array(), $serveur = '', $requeter = true) {
1416
-	return spip_mysql_query("REPLACE $table (" . join(',', array_keys($couples)) . ') VALUES (' . join(',',
1417
-			array_map('_q', $couples)) . ')', $serveur, $requeter);
1416
+	return spip_mysql_query("REPLACE $table (".join(',', array_keys($couples)).') VALUES ('.join(',',
1417
+			array_map('_q', $couples)).')', $serveur, $requeter);
1418 1418
 }
1419 1419
 
1420 1420
 
@@ -1443,10 +1443,10 @@  discard block
 block discarded – undo
1443 1443
  *     - False en cas d'erreur.
1444 1444
  **/
1445 1445
 function spip_mysql_replace_multi($table, $tab_couples, $desc = array(), $serveur = '', $requeter = true) {
1446
-	$cles = "(" . join(',', array_keys($tab_couples[0])) . ')';
1446
+	$cles = "(".join(',', array_keys($tab_couples[0])).')';
1447 1447
 	$valeurs = array();
1448 1448
 	foreach ($tab_couples as $couples) {
1449
-		$valeurs[] = '(' . join(',', array_map('_q', $couples)) . ')';
1449
+		$valeurs[] = '('.join(',', array_map('_q', $couples)).')';
1450 1450
 	}
1451 1451
 	$valeurs = implode(', ', $valeurs);
1452 1452
 
@@ -1466,28 +1466,28 @@  discard block
 block discarded – undo
1466 1466
  */
1467 1467
 function spip_mysql_multi($objet, $lang) {
1468 1468
 	$lengthlang = strlen("[$lang]");
1469
-	$posmulti = "INSTR(" . $objet . ", '<multi>')";
1470
-	$posfinmulti = "INSTR(" . $objet . ", '</multi>')";
1471
-	$debutchaine = "LEFT(" . $objet . ", $posmulti-1)";
1472
-	$finchaine = "RIGHT(" . $objet . ", CHAR_LENGTH(" . $objet . ") -(7+$posfinmulti))";
1473
-	$chainemulti = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7, $posfinmulti -(7+$posmulti)))";
1474
-	$poslang = "INSTR($chainemulti,'[" . $lang . "]')";
1469
+	$posmulti = "INSTR(".$objet.", '<multi>')";
1470
+	$posfinmulti = "INSTR(".$objet.", '</multi>')";
1471
+	$debutchaine = "LEFT(".$objet.", $posmulti-1)";
1472
+	$finchaine = "RIGHT(".$objet.", CHAR_LENGTH(".$objet.") -(7+$posfinmulti))";
1473
+	$chainemulti = "TRIM(SUBSTRING(".$objet.", $posmulti+7, $posfinmulti -(7+$posmulti)))";
1474
+	$poslang = "INSTR($chainemulti,'[".$lang."]')";
1475 1475
 	$poslang = "IF($poslang=0,INSTR($chainemulti,']')+1,$poslang+$lengthlang)";
1476
-	$chainelang = "TRIM(SUBSTRING(" . $objet . ", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))";
1477
-	$posfinlang = "INSTR(" . $chainelang . ", '[')";
1476
+	$chainelang = "TRIM(SUBSTRING(".$objet.", $posmulti+7+$poslang-1,$posfinmulti -($posmulti+7+$poslang-1) ))";
1477
+	$posfinlang = "INSTR(".$chainelang.", '[')";
1478 1478
 	$chainelang = "IF($posfinlang>0,LEFT($chainelang,$posfinlang-1),$chainelang)";
1479 1479
 	//$chainelang = "LEFT($chainelang,$posfinlang-1)";
1480
-	$retour = "(TRIM(IF($posmulti = 0 , " .
1481
-		"     TRIM(" . $objet . "), " .
1482
-		"     CONCAT( " .
1483
-		"          $debutchaine, " .
1484
-		"          IF( " .
1485
-		"               $poslang = 0, " .
1486
-		"                     $chainemulti, " .
1487
-		"               $chainelang" .
1488
-		"          ), " .
1489
-		"          $finchaine" .
1490
-		"     ) " .
1480
+	$retour = "(TRIM(IF($posmulti = 0 , ".
1481
+		"     TRIM(".$objet."), ".
1482
+		"     CONCAT( ".
1483
+		"          $debutchaine, ".
1484
+		"          IF( ".
1485
+		"               $poslang = 0, ".
1486
+		"                     $chainemulti, ".
1487
+		"               $chainelang".
1488
+		"          ), ".
1489
+		"          $finchaine".
1490
+		"     ) ".
1491 1491
 		"))) AS multi";
1492 1492
 
1493 1493
 	return $retour;
@@ -1504,7 +1504,7 @@  discard block
 block discarded – undo
1504 1504
  *     Valeur hexadécimale pour MySQL
1505 1505
  **/
1506 1506
 function spip_mysql_hex($v) {
1507
-	return "0x" . $v;
1507
+	return "0x".$v;
1508 1508
 }
1509 1509
 
1510 1510
 /**
@@ -1544,7 +1544,7 @@  discard block
 block discarded – undo
1544 1544
  *     Expression SQL
1545 1545
  **/
1546 1546
 function spip_mysql_date_proche($champ, $interval, $unite) {
1547
-	$use_now = ( ($champ === 'maj' or strpos($champ, '.maj')) ? true : false );
1547
+	$use_now = (($champ === 'maj' or strpos($champ, '.maj')) ? true : false);
1548 1548
 	return '('
1549 1549
 	. $champ
1550 1550
 	. (($interval <= 0) ? '>' : '<')
@@ -1595,7 +1595,7 @@  discard block
 block discarded – undo
1595 1595
 		if (is_numeric($v)) {
1596 1596
 			return strval($v);
1597 1597
 		}
1598
-		return "'" . addslashes($v) . "'";
1598
+		return "'".addslashes($v)."'";
1599 1599
 	}
1600 1600
 
1601 1601
 	if (is_null($v)
@@ -1617,7 +1617,7 @@  discard block
 block discarded – undo
1617 1617
 		}
1618 1618
 	}
1619 1619
 
1620
-	return ("'" . addslashes($v) . "'");
1620
+	return ("'".addslashes($v)."'");
1621 1621
 }
1622 1622
 
1623 1623
 
@@ -1646,9 +1646,9 @@  discard block
 block discarded – undo
1646 1646
 	$connexion = &$GLOBALS['connexions'][0];
1647 1647
 	$bd = $connexion['db'];
1648 1648
 	$prefixe = $connexion['prefixe'];
1649
-	$nom = "$bd:$prefixe:$nom" . _LOCK_TIME;
1649
+	$nom = "$bd:$prefixe:$nom"._LOCK_TIME;
1650 1650
 
1651
-	$connexion['last'] = $q = "SELECT GET_LOCK(" . _q($nom) . ", $timeout) AS n";
1651
+	$connexion['last'] = $q = "SELECT GET_LOCK("._q($nom).", $timeout) AS n";
1652 1652
 
1653 1653
 	$q = @sql_fetch(mysqli_query(_mysql_link(), $q));
1654 1654
 	if (!$q) {
@@ -1675,9 +1675,9 @@  discard block
 block discarded – undo
1675 1675
 	$connexion = &$GLOBALS['connexions'][0];
1676 1676
 	$bd = $connexion['db'];
1677 1677
 	$prefixe = $connexion['prefixe'];
1678
-	$nom = "$bd:$prefixe:$nom" . _LOCK_TIME;
1678
+	$nom = "$bd:$prefixe:$nom"._LOCK_TIME;
1679 1679
 
1680
-	$connexion['last'] = $q = "SELECT RELEASE_LOCK(" . _q($nom) . ")";
1680
+	$connexion['last'] = $q = "SELECT RELEASE_LOCK("._q($nom).")";
1681 1681
 	mysqli_query(_mysql_link(), $q);
1682 1682
 }
1683 1683
 
@@ -1713,7 +1713,7 @@  discard block
 block discarded – undo
1713 1713
 	} else {
1714 1714
 		$GLOBALS['mysql_rappel_nom_base'] = false;
1715 1715
 
1716
-		return "\$GLOBALS['mysql_rappel_nom_base'] = false; " .
1716
+		return "\$GLOBALS['mysql_rappel_nom_base'] = false; ".
1717 1717
 		"/* echec de test_rappel_nom_base_mysql a l'installation. */\n";
1718 1718
 	}
1719 1719
 }
Please login to merge, or discard this patch.