Completed
Push — master ( 0528ed...3f7b24 )
by cam
01:54
created
ecrire/inc/meta.php 2 patches
Indentation   +195 added lines, -195 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  **/
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 // Les parametres generaux du site sont dans une table SQL;
@@ -26,51 +26,51 @@  discard block
 block discarded – undo
26 26
 define('_META_CACHE_TIME', 1 << 24);
27 27
 
28 28
 function inc_meta_dist($table = 'meta') {
29
-	$new = null;
30
-	// Lire les meta, en cache si present, valide et lisible
31
-	// en cas d'install ne pas faire confiance au meta_cache eventuel
32
-	$cache = cache_meta($table);
29
+    $new = null;
30
+    // Lire les meta, en cache si present, valide et lisible
31
+    // en cas d'install ne pas faire confiance au meta_cache eventuel
32
+    $cache = cache_meta($table);
33 33
 
34
-	if (
35
-		(!($exec = _request('exec')) || !autoriser_sans_cookie($exec))
36
-		 && ($new = jeune_fichier($cache, _META_CACHE_TIME))
37
-		 && lire_fichier_securise($cache, $meta)
38
-		 && ($meta = @unserialize($meta))
39
-	) {
40
-		$GLOBALS[$table] = $meta;
41
-	}
34
+    if (
35
+        (!($exec = _request('exec')) || !autoriser_sans_cookie($exec))
36
+         && ($new = jeune_fichier($cache, _META_CACHE_TIME))
37
+         && lire_fichier_securise($cache, $meta)
38
+         && ($meta = @unserialize($meta))
39
+    ) {
40
+        $GLOBALS[$table] = $meta;
41
+    }
42 42
 
43
-	if (
44
-		isset($GLOBALS[$table]['touch'])
45
-		&& $GLOBALS[$table]['touch'] < time() - _META_CACHE_TIME
46
-	) {
47
-		$GLOBALS[$table] = [];
48
-	}
49
-	// sinon lire en base
50
-	if (!$GLOBALS[$table]) {
51
-		$new = !lire_metas($table);
52
-	}
43
+    if (
44
+        isset($GLOBALS[$table]['touch'])
45
+        && $GLOBALS[$table]['touch'] < time() - _META_CACHE_TIME
46
+    ) {
47
+        $GLOBALS[$table] = [];
48
+    }
49
+    // sinon lire en base
50
+    if (!$GLOBALS[$table]) {
51
+        $new = !lire_metas($table);
52
+    }
53 53
 
54
-	// renouveller l'alea general si trop vieux ou sur demande explicite
55
-	if (
56
-		(test_espace_prive() || isset($_GET['renouvelle_alea']))
57
-		&& $GLOBALS[$table]
58
-		&& time() > _RENOUVELLE_ALEA + ($GLOBALS['meta']['alea_ephemere_date'] ?? 0)
59
-	) {
60
-		// si on n'a pas l'acces en ecriture sur le cache,
61
-		// ne pas renouveller l'alea sinon le cache devient faux
62
-		if (supprimer_fichier($cache)) {
63
-			include_spip('inc/acces');
64
-			renouvelle_alea();
65
-			$new = false;
66
-		} else {
67
-			spip_logger()->info("impossible d'ecrire dans " . $cache);
68
-		}
69
-	}
70
-	// et refaire le cache si on a du lire en base
71
-	if (!$new) {
72
-		touch_meta(false, $table);
73
-	}
54
+    // renouveller l'alea general si trop vieux ou sur demande explicite
55
+    if (
56
+        (test_espace_prive() || isset($_GET['renouvelle_alea']))
57
+        && $GLOBALS[$table]
58
+        && time() > _RENOUVELLE_ALEA + ($GLOBALS['meta']['alea_ephemere_date'] ?? 0)
59
+    ) {
60
+        // si on n'a pas l'acces en ecriture sur le cache,
61
+        // ne pas renouveller l'alea sinon le cache devient faux
62
+        if (supprimer_fichier($cache)) {
63
+            include_spip('inc/acces');
64
+            renouvelle_alea();
65
+            $new = false;
66
+        } else {
67
+            spip_logger()->info("impossible d'ecrire dans " . $cache);
68
+        }
69
+    }
70
+    // et refaire le cache si on a du lire en base
71
+    if (!$new) {
72
+        touch_meta(false, $table);
73
+    }
74 74
 }
75 75
 
76 76
 // fonctions aussi appelees a l'install ==> spip_query en premiere requete
@@ -78,39 +78,39 @@  discard block
 block discarded – undo
78 78
 
79 79
 function lire_metas($table = 'meta') {
80 80
 
81
-	if ($result = spip_query("SELECT nom,valeur FROM spip_$table")) {
82
-		include_spip('base/abstract_sql');
83
-		$GLOBALS[$table] = [];
84
-		while ($row = sql_fetch($result)) {
85
-			$GLOBALS[$table][$row['nom']] = $row['valeur'];
86
-		}
87
-		sql_free($result);
81
+    if ($result = spip_query("SELECT nom,valeur FROM spip_$table")) {
82
+        include_spip('base/abstract_sql');
83
+        $GLOBALS[$table] = [];
84
+        while ($row = sql_fetch($result)) {
85
+            $GLOBALS[$table][$row['nom']] = $row['valeur'];
86
+        }
87
+        sql_free($result);
88 88
 
89
-		if (
90
-			!isset($GLOBALS[$table]['charset'])
91
-			|| !$GLOBALS[$table]['charset']
92
-			|| $GLOBALS[$table]['charset'] == '_DEFAULT_CHARSET' // hum, correction d'un bug ayant abime quelques install
93
-		) {
94
-			ecrire_meta('charset', _DEFAULT_CHARSET, null, $table);
95
-		}
89
+        if (
90
+            !isset($GLOBALS[$table]['charset'])
91
+            || !$GLOBALS[$table]['charset']
92
+            || $GLOBALS[$table]['charset'] == '_DEFAULT_CHARSET' // hum, correction d'un bug ayant abime quelques install
93
+        ) {
94
+            ecrire_meta('charset', _DEFAULT_CHARSET, null, $table);
95
+        }
96 96
 
97
-		// noter cette table de configuration dans les meta de SPIP
98
-		if ($table !== 'meta') {
99
-			$liste = [];
100
-			if (isset($GLOBALS['meta']['tables_config'])) {
101
-				$liste = unserialize($GLOBALS['meta']['tables_config']);
102
-			}
103
-			if (!$liste) {
104
-				$liste = [];
105
-			}
106
-			if (!in_array($table, $liste)) {
107
-				$liste[] = $table;
108
-				ecrire_meta('tables_config', serialize($liste));
109
-			}
110
-		}
111
-	}
97
+        // noter cette table de configuration dans les meta de SPIP
98
+        if ($table !== 'meta') {
99
+            $liste = [];
100
+            if (isset($GLOBALS['meta']['tables_config'])) {
101
+                $liste = unserialize($GLOBALS['meta']['tables_config']);
102
+            }
103
+            if (!$liste) {
104
+                $liste = [];
105
+            }
106
+            if (!in_array($table, $liste)) {
107
+                $liste[] = $table;
108
+                ecrire_meta('tables_config', serialize($liste));
109
+            }
110
+        }
111
+    }
112 112
 
113
-	return $GLOBALS[$table] ?? null;
113
+    return $GLOBALS[$table] ?? null;
114 114
 }
115 115
 
116 116
 
@@ -124,22 +124,22 @@  discard block
 block discarded – undo
124 124
  *      Table SQL d'enregistrement des meta.
125 125
  **/
126 126
 function touch_meta($antidate = false, $table = 'meta') {
127
-	$file = cache_meta($table);
128
-	if (!$antidate || !@touch($file, $antidate)) {
129
-		$r = $GLOBALS[$table] ?? [];
130
-		if ($table == 'meta') {
131
-			unset($r['alea_ephemere']);
132
-			unset($r['alea_ephemere_ancien']);
133
-			// le secret du site est utilise pour encoder les contextes ajax que l'on considere fiables
134
-			// mais le sortir deu cache meta implique une requete sql des qu'on a un form dynamique
135
-			// meme si son squelette est en cache
136
-			//unset($r['secret_du_site']);
137
-			if ($antidate) {
138
-				$r['touch'] = $antidate;
139
-			}
140
-		}
141
-		ecrire_fichier_securise($file, serialize($r));
142
-	}
127
+    $file = cache_meta($table);
128
+    if (!$antidate || !@touch($file, $antidate)) {
129
+        $r = $GLOBALS[$table] ?? [];
130
+        if ($table == 'meta') {
131
+            unset($r['alea_ephemere']);
132
+            unset($r['alea_ephemere_ancien']);
133
+            // le secret du site est utilise pour encoder les contextes ajax que l'on considere fiables
134
+            // mais le sortir deu cache meta implique une requete sql des qu'on a un form dynamique
135
+            // meme si son squelette est en cache
136
+            //unset($r['secret_du_site']);
137
+            if ($antidate) {
138
+                $r['touch'] = $antidate;
139
+            }
140
+        }
141
+        ecrire_fichier_securise($file, serialize($r));
142
+    }
143 143
 }
144 144
 
145 145
 /**
@@ -155,21 +155,21 @@  discard block
 block discarded – undo
155 155
  *     Table SQL d'enregistrement de la meta.
156 156
  **/
157 157
 function effacer_meta($nom, $table = 'meta') {
158
-	// section critique sur le cache:
159
-	// l'invalider avant et apres la MAJ de la BD
160
-	// c'est un peu moins bien qu'un vrai verrou mais ca suffira
161
-	// et utiliser une statique pour eviter des acces disques a repetition
162
-	static $touch = [];
163
-	$antidate = time() - (_META_CACHE_TIME << 4);
164
-	if (!isset($touch[$table])) {
165
-		touch_meta($antidate, $table);
166
-	}
167
-	sql_delete('spip_' . $table, "nom='$nom'", '', 'continue');
168
-	unset($GLOBALS[$table][$nom]);
169
-	if (!isset($touch[$table])) {
170
-		touch_meta($antidate, $table);
171
-		$touch[$table] = false;
172
-	}
158
+    // section critique sur le cache:
159
+    // l'invalider avant et apres la MAJ de la BD
160
+    // c'est un peu moins bien qu'un vrai verrou mais ca suffira
161
+    // et utiliser une statique pour eviter des acces disques a repetition
162
+    static $touch = [];
163
+    $antidate = time() - (_META_CACHE_TIME << 4);
164
+    if (!isset($touch[$table])) {
165
+        touch_meta($antidate, $table);
166
+    }
167
+    sql_delete('spip_' . $table, "nom='$nom'", '', 'continue');
168
+    unset($GLOBALS[$table][$nom]);
169
+    if (!isset($touch[$table])) {
170
+        touch_meta($antidate, $table);
171
+        $touch[$table] = false;
172
+    }
173 173
 }
174 174
 
175 175
 /**
@@ -191,54 +191,54 @@  discard block
 block discarded – undo
191 191
  **/
192 192
 function ecrire_meta($nom, $valeur, $importable = null, $table = 'meta') {
193 193
 
194
-	static $touch = [];
195
-	if (!$nom) {
196
-		return;
197
-	}
198
-	include_spip('base/abstract_sql');
199
-	$res = sql_select('*', 'spip_' . $table, 'nom=' . sql_quote($nom), '', '', '', '', '', 'continue');
200
-	// table pas encore installee, travailler en php seulement
201
-	if (!$res) {
202
-		$GLOBALS[$table][$nom] = $valeur;
194
+    static $touch = [];
195
+    if (!$nom) {
196
+        return;
197
+    }
198
+    include_spip('base/abstract_sql');
199
+    $res = sql_select('*', 'spip_' . $table, 'nom=' . sql_quote($nom), '', '', '', '', '', 'continue');
200
+    // table pas encore installee, travailler en php seulement
201
+    if (!$res) {
202
+        $GLOBALS[$table][$nom] = $valeur;
203 203
 
204
-		return;
205
-	}
206
-	$row = sql_fetch($res);
207
-	sql_free($res);
204
+        return;
205
+    }
206
+    $row = sql_fetch($res);
207
+    sql_free($res);
208 208
 
209
-	// ne pas invalider le cache si affectation a l'identique
210
-	// (tant pis si impt aurait du changer)
211
-	if (
212
-		$row
213
-		&& $valeur == $row['valeur']
214
-		&& isset($GLOBALS[$table][$nom])
215
-		&& $GLOBALS[$table][$nom] == $valeur
216
-	) {
217
-		return;
218
-	}
209
+    // ne pas invalider le cache si affectation a l'identique
210
+    // (tant pis si impt aurait du changer)
211
+    if (
212
+        $row
213
+        && $valeur == $row['valeur']
214
+        && isset($GLOBALS[$table][$nom])
215
+        && $GLOBALS[$table][$nom] == $valeur
216
+    ) {
217
+        return;
218
+    }
219 219
 
220
-	$GLOBALS[$table][$nom] = $valeur;
221
-	// cf effacer pour comprendre le double touch
222
-	$antidate = time() - (_META_CACHE_TIME << 1);
223
-	if (!isset($touch[$table])) {
224
-		touch_meta($antidate, $table);
225
-	}
226
-	$r = ['nom' => sql_quote($nom, '', 'text'), 'valeur' => sql_quote($valeur, '', 'text')];
227
-	// Gaffe aux tables sans impt (vieilles versions de SPIP notamment)
228
-	// ici on utilise pas sql_updateq et sql_insertq pour ne pas provoquer trop tot
229
-	// de lecture des descriptions des tables
230
-	if ($importable && isset($row['impt'])) {
231
-		$r['impt'] = sql_quote($importable, '', 'text');
232
-	}
233
-	if ($row) {
234
-		sql_update('spip_' . $table, $r, 'nom=' . sql_quote($nom));
235
-	} else {
236
-		sql_insert('spip_' . $table, '(' . implode(',', array_keys($r)) . ')', '(' . implode(',', array_values($r)) . ')');
237
-	}
238
-	if (!isset($touch[$table])) {
239
-		touch_meta($antidate, $table);
240
-		$touch[$table] = false;
241
-	}
220
+    $GLOBALS[$table][$nom] = $valeur;
221
+    // cf effacer pour comprendre le double touch
222
+    $antidate = time() - (_META_CACHE_TIME << 1);
223
+    if (!isset($touch[$table])) {
224
+        touch_meta($antidate, $table);
225
+    }
226
+    $r = ['nom' => sql_quote($nom, '', 'text'), 'valeur' => sql_quote($valeur, '', 'text')];
227
+    // Gaffe aux tables sans impt (vieilles versions de SPIP notamment)
228
+    // ici on utilise pas sql_updateq et sql_insertq pour ne pas provoquer trop tot
229
+    // de lecture des descriptions des tables
230
+    if ($importable && isset($row['impt'])) {
231
+        $r['impt'] = sql_quote($importable, '', 'text');
232
+    }
233
+    if ($row) {
234
+        sql_update('spip_' . $table, $r, 'nom=' . sql_quote($nom));
235
+    } else {
236
+        sql_insert('spip_' . $table, '(' . implode(',', array_keys($r)) . ')', '(' . implode(',', array_values($r)) . ')');
237
+    }
238
+    if (!isset($touch[$table])) {
239
+        touch_meta($antidate, $table);
240
+        $touch[$table] = false;
241
+    }
242 242
 }
243 243
 
244 244
 /**
@@ -250,7 +250,7 @@  discard block
 block discarded – undo
250 250
  *     Nom du fichier cache
251 251
  **/
252 252
 function cache_meta($table = 'meta') {
253
-	return ($table == 'meta') ? _FILE_META : (_DIR_CACHE . $table . '.php');
253
+    return ($table == 'meta') ? _FILE_META : (_DIR_CACHE . $table . '.php');
254 254
 }
255 255
 
256 256
 /**
@@ -259,14 +259,14 @@  discard block
 block discarded – undo
259 259
  * @param string $table
260 260
  */
261 261
 function installer_table_meta($table) {
262
-	$trouver_table = charger_fonction('trouver_table', 'base');
263
-	if (!$trouver_table("spip_$table")) {
264
-		include_spip('base/auxiliaires');
265
-		include_spip('base/create');
266
-		creer_ou_upgrader_table("spip_$table", $GLOBALS['tables_auxiliaires']['spip_meta'], false, false);
267
-		$trouver_table('');
268
-	}
269
-	lire_metas($table);
262
+    $trouver_table = charger_fonction('trouver_table', 'base');
263
+    if (!$trouver_table("spip_$table")) {
264
+        include_spip('base/auxiliaires');
265
+        include_spip('base/create');
266
+        creer_ou_upgrader_table("spip_$table", $GLOBALS['tables_auxiliaires']['spip_meta'], false, false);
267
+        $trouver_table('');
268
+    }
269
+    lire_metas($table);
270 270
 }
271 271
 
272 272
 /**
@@ -278,44 +278,44 @@  discard block
 block discarded – undo
278 278
  * @param bool $force
279 279
  */
280 280
 function supprimer_table_meta($table, $force = false) {
281
-	if ($table !== 'meta') {
282
-		// Vérifier le contenu restant de la table
283
-		$nb_variables = sql_countsel("spip_$table");
281
+    if ($table !== 'meta') {
282
+        // Vérifier le contenu restant de la table
283
+        $nb_variables = sql_countsel("spip_$table");
284 284
 
285
-		// Supprimer si :
286
-		// - la table est vide
287
-		// - ou limitée à la variable charset
288
-		// - ou qu'on force la suppression
289
-		if (
290
-			$force
291
-			|| !$nb_variables
292
-			|| $nb_variables == 1 && isset($GLOBALS[$table]['charset'])
293
-		) {
294
-			// Supprimer la table des globaleset de la base
295
-			unset($GLOBALS[$table]);
296
-			sql_drop_table("spip_$table");
297
-			// Supprimer le fichier cache
298
-			include_spip('inc/flock');
299
-			$cache = cache_meta($table);
300
-			supprimer_fichier($cache);
285
+        // Supprimer si :
286
+        // - la table est vide
287
+        // - ou limitée à la variable charset
288
+        // - ou qu'on force la suppression
289
+        if (
290
+            $force
291
+            || !$nb_variables
292
+            || $nb_variables == 1 && isset($GLOBALS[$table]['charset'])
293
+        ) {
294
+            // Supprimer la table des globaleset de la base
295
+            unset($GLOBALS[$table]);
296
+            sql_drop_table("spip_$table");
297
+            // Supprimer le fichier cache
298
+            include_spip('inc/flock');
299
+            $cache = cache_meta($table);
300
+            supprimer_fichier($cache);
301 301
 
302
-			// vider le cache des tables
303
-			$trouver_table = charger_fonction('trouver_table', 'base');
304
-			$trouver_table('');
302
+            // vider le cache des tables
303
+            $trouver_table = charger_fonction('trouver_table', 'base');
304
+            $trouver_table('');
305 305
 
306
-			// Supprimer la table de la liste des tables de configuration autres que spip_meta
307
-			if (isset($GLOBALS['meta']['tables_config'])) {
308
-				$liste = unserialize($GLOBALS['meta']['tables_config']);
309
-				$cle = array_search($table, $liste);
310
-				if ($cle !== false) {
311
-					unset($liste[$cle]);
312
-					if ($liste) {
313
-						ecrire_meta('tables_config', serialize($liste));
314
-					} else {
315
-						effacer_meta('tables_config');
316
-					}
317
-				}
318
-			}
319
-		}
320
-	}
306
+            // Supprimer la table de la liste des tables de configuration autres que spip_meta
307
+            if (isset($GLOBALS['meta']['tables_config'])) {
308
+                $liste = unserialize($GLOBALS['meta']['tables_config']);
309
+                $cle = array_search($table, $liste);
310
+                if ($cle !== false) {
311
+                    unset($liste[$cle]);
312
+                    if ($liste) {
313
+                        ecrire_meta('tables_config', serialize($liste));
314
+                    } else {
315
+                        effacer_meta('tables_config');
316
+                    }
317
+                }
318
+            }
319
+        }
320
+    }
321 321
 }
Please login to merge, or discard this patch.
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -64,7 +64,7 @@  discard block
 block discarded – undo
64 64
 			renouvelle_alea();
65 65
 			$new = false;
66 66
 		} else {
67
-			spip_logger()->info("impossible d'ecrire dans " . $cache);
67
+			spip_logger()->info("impossible d'ecrire dans ".$cache);
68 68
 		}
69 69
 	}
70 70
 	// et refaire le cache si on a du lire en base
@@ -164,7 +164,7 @@  discard block
 block discarded – undo
164 164
 	if (!isset($touch[$table])) {
165 165
 		touch_meta($antidate, $table);
166 166
 	}
167
-	sql_delete('spip_' . $table, "nom='$nom'", '', 'continue');
167
+	sql_delete('spip_'.$table, "nom='$nom'", '', 'continue');
168 168
 	unset($GLOBALS[$table][$nom]);
169 169
 	if (!isset($touch[$table])) {
170 170
 		touch_meta($antidate, $table);
@@ -196,7 +196,7 @@  discard block
 block discarded – undo
196 196
 		return;
197 197
 	}
198 198
 	include_spip('base/abstract_sql');
199
-	$res = sql_select('*', 'spip_' . $table, 'nom=' . sql_quote($nom), '', '', '', '', '', 'continue');
199
+	$res = sql_select('*', 'spip_'.$table, 'nom='.sql_quote($nom), '', '', '', '', '', 'continue');
200 200
 	// table pas encore installee, travailler en php seulement
201 201
 	if (!$res) {
202 202
 		$GLOBALS[$table][$nom] = $valeur;
@@ -231,9 +231,9 @@  discard block
 block discarded – undo
231 231
 		$r['impt'] = sql_quote($importable, '', 'text');
232 232
 	}
233 233
 	if ($row) {
234
-		sql_update('spip_' . $table, $r, 'nom=' . sql_quote($nom));
234
+		sql_update('spip_'.$table, $r, 'nom='.sql_quote($nom));
235 235
 	} else {
236
-		sql_insert('spip_' . $table, '(' . implode(',', array_keys($r)) . ')', '(' . implode(',', array_values($r)) . ')');
236
+		sql_insert('spip_'.$table, '('.implode(',', array_keys($r)).')', '('.implode(',', array_values($r)).')');
237 237
 	}
238 238
 	if (!isset($touch[$table])) {
239 239
 		touch_meta($antidate, $table);
@@ -250,7 +250,7 @@  discard block
 block discarded – undo
250 250
  *     Nom du fichier cache
251 251
  **/
252 252
 function cache_meta($table = 'meta') {
253
-	return ($table == 'meta') ? _FILE_META : (_DIR_CACHE . $table . '.php');
253
+	return ($table == 'meta') ? _FILE_META : (_DIR_CACHE.$table.'.php');
254 254
 }
255 255
 
256 256
 /**
Please login to merge, or discard this patch.
ecrire/inc/admin.php 2 patches
Indentation   +134 added lines, -134 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  **/
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 /**
@@ -44,29 +44,29 @@  discard block
 block discarded – undo
44 44
  *     sinon code HTML de la page après le traitement effectué.
45 45
  **/
46 46
 function inc_admin_dist($script, $titre, $comment = '', $anonymous = false) {
47
-	$reprise = true;
48
-	if (
49
-		!isset($GLOBALS['meta'][$script])
50
-		|| !isset($GLOBALS['meta']['admin'])
51
-	) {
52
-		$reprise = false;
53
-		$res = debut_admin($script, $titre, $comment);
54
-		if ($res) {
55
-			return $res;
56
-		}
57
-		spip_logger()->info("meta: $script " . print_r($_POST, true));
58
-		ecrire_meta($script, serialize($_POST));
59
-	}
47
+    $reprise = true;
48
+    if (
49
+        !isset($GLOBALS['meta'][$script])
50
+        || !isset($GLOBALS['meta']['admin'])
51
+    ) {
52
+        $reprise = false;
53
+        $res = debut_admin($script, $titre, $comment);
54
+        if ($res) {
55
+            return $res;
56
+        }
57
+        spip_logger()->info("meta: $script " . print_r($_POST, true));
58
+        ecrire_meta($script, serialize($_POST));
59
+    }
60 60
 
61
-	$res = admin_verifie_session($script, $anonymous);
62
-	if ($res) {
63
-		return $res;
64
-	}
65
-	$base = charger_fonction($script, 'base');
66
-	$base($titre, $reprise);
67
-	fin_admin($script);
61
+    $res = admin_verifie_session($script, $anonymous);
62
+    if ($res) {
63
+        return $res;
64
+    }
65
+    $base = charger_fonction($script, 'base');
66
+    $base($titre, $reprise);
67
+    fin_admin($script);
68 68
 
69
-	return '';
69
+    return '';
70 70
 }
71 71
 
72 72
 /**
@@ -97,36 +97,36 @@  discard block
 block discarded – undo
97 97
  *     Code HTML si message d'erreur, '' sinon;
98 98
  */
99 99
 function admin_verifie_session($script, $anonymous = false) {
100
-	include_spip('base/abstract_sql');
101
-	$pref = sprintf('_%d_', $GLOBALS['visiteur_session']['id_auteur']);
102
-	$signal = fichier_admin($script, "$script$pref");
103
-	$valeur = sql_getfetsel('valeur', 'spip_meta', "nom='admin'");
104
-	if ($valeur === null) {
105
-		ecrire_meta('admin', $signal, 'non');
106
-	} else {
107
-		if (
108
-			!$anonymous
109
-			&& $valeur != $signal
110
-			&& (
111
-				!preg_match('/^(.*)_(\d+)_/', (string) $GLOBALS['meta']['admin'], $l)
112
-				|| (int) $l[2] != $GLOBALS['visiteur_session']['id_auteur']
113
-			)
114
-		) {
115
-			include_spip('inc/minipres');
116
-			spip_logger()->info("refus de lancer $script, priorite a $valeur");
117
-			return minipres(_T('info_travaux_texte'), '', ['status' => 503]);
118
-		}
119
-	}
120
-	$journal = 'spip';
121
-	if (autoriser('configurer')) {
122
-		// c'est une action webmestre, soit par ftp soit par statut webmestre
123
-		$journal = 'webmestre';
124
-	}
125
-	// on pourrait statuer automatiquement les webmestres a l'init d'une action auth par ftp ... ?
100
+    include_spip('base/abstract_sql');
101
+    $pref = sprintf('_%d_', $GLOBALS['visiteur_session']['id_auteur']);
102
+    $signal = fichier_admin($script, "$script$pref");
103
+    $valeur = sql_getfetsel('valeur', 'spip_meta', "nom='admin'");
104
+    if ($valeur === null) {
105
+        ecrire_meta('admin', $signal, 'non');
106
+    } else {
107
+        if (
108
+            !$anonymous
109
+            && $valeur != $signal
110
+            && (
111
+                !preg_match('/^(.*)_(\d+)_/', (string) $GLOBALS['meta']['admin'], $l)
112
+                || (int) $l[2] != $GLOBALS['visiteur_session']['id_auteur']
113
+            )
114
+        ) {
115
+            include_spip('inc/minipres');
116
+            spip_logger()->info("refus de lancer $script, priorite a $valeur");
117
+            return minipres(_T('info_travaux_texte'), '', ['status' => 503]);
118
+        }
119
+    }
120
+    $journal = 'spip';
121
+    if (autoriser('configurer')) {
122
+        // c'est une action webmestre, soit par ftp soit par statut webmestre
123
+        $journal = 'webmestre';
124
+    }
125
+    // on pourrait statuer automatiquement les webmestres a l'init d'une action auth par ftp ... ?
126 126
 
127
-	spip_logger($journal)->info("admin $pref" . ($valeur ? ' (reprise)' : ' (init)'));
127
+    spip_logger($journal)->info("admin $pref" . ($valeur ? ' (reprise)' : ' (init)'));
128 128
 
129
-	return '';
129
+    return '';
130 130
 }
131 131
 
132 132
 /**
@@ -139,11 +139,11 @@  discard block
 block discarded – undo
139 139
  *     Chemin du répertoire.
140 140
  **/
141 141
 function dir_admin() {
142
-	if (autoriser('configurer')) {
143
-		return _DIR_TMP;
144
-	} else {
145
-		return _DIR_TRANSFERT . $GLOBALS['visiteur_session']['login'] . '/';
146
-	}
142
+    if (autoriser('configurer')) {
143
+        return _DIR_TMP;
144
+    } else {
145
+        return _DIR_TRANSFERT . $GLOBALS['visiteur_session']['login'] . '/';
146
+    }
147 147
 }
148 148
 
149 149
 /**
@@ -160,8 +160,8 @@  discard block
 block discarded – undo
160 160
  *     Nom du fichier
161 161
  **/
162 162
 function fichier_admin($action, $pref = 'admin_') {
163
-	return $pref .
164
-	substr(md5($action . (time() & ~2047) . $GLOBALS['visiteur_session']['login']), 0, 10);
163
+    return $pref .
164
+    substr(md5($action . (time() & ~2047) . $GLOBALS['visiteur_session']['login']), 0, 10);
165 165
 }
166 166
 
167 167
 /**
@@ -187,76 +187,76 @@  discard block
 block discarded – undo
187 187
  *     sinon chaîne vide si déjà fait.
188 188
  **/
189 189
 function debut_admin($script, $action = '', $corps = '') {
190
-	if (
191
-		!$action
192
-		|| !autoriser('webmestre') && !autoriser('chargerftp')
193
-	) {
194
-		include_spip('inc/minipres');
190
+    if (
191
+        !$action
192
+        || !autoriser('webmestre') && !autoriser('chargerftp')
193
+    ) {
194
+        include_spip('inc/minipres');
195 195
 
196
-		return minipres();
197
-	} else {
198
-		$dir = dir_admin();
199
-		$signal = fichier_admin($script);
200
-		if (@file_exists($dir . $signal)) {
201
-			spip_logger()->info("Action admin: $action");
196
+        return minipres();
197
+    } else {
198
+        $dir = dir_admin();
199
+        $signal = fichier_admin($script);
200
+        if (@file_exists($dir . $signal)) {
201
+            spip_logger()->info("Action admin: $action");
202 202
 
203
-			return '';
204
-		}
205
-		include_spip('inc/minipres');
203
+            return '';
204
+        }
205
+        include_spip('inc/minipres');
206 206
 
207
-		// Si on est un super-admin, un bouton de validation suffit
208
-		// sauf dans les cas destroy
209
-		if (
210
-			(autoriser('webmestre') || $script === 'repair')
211
-			&& $script != 'delete_all'
212
-		) {
213
-			if (_request('validation_admin') == $signal) {
214
-				spip_logger()->info("Action super-admin: $action");
207
+        // Si on est un super-admin, un bouton de validation suffit
208
+        // sauf dans les cas destroy
209
+        if (
210
+            (autoriser('webmestre') || $script === 'repair')
211
+            && $script != 'delete_all'
212
+        ) {
213
+            if (_request('validation_admin') == $signal) {
214
+                spip_logger()->info("Action super-admin: $action");
215 215
 
216
-				return '';
217
-			}
218
-			$corps .= '<input type="hidden" name="validation_admin" value="' . $signal . '" />';
219
-			$suivant = _T('bouton_valider');
220
-			$js = '';
221
-		} else {
222
-			// cet appel permet d'assurer un copier-coller du nom du repertoire a creer dans tmp (esj)
223
-			// l'insertion du script a cet endroit n'est pas xhtml licite
224
-			// mais evite de l'embarquer dans toutes les pages minipres
225
-			$corps .= http_script('', 'spip_barre.js');
216
+                return '';
217
+            }
218
+            $corps .= '<input type="hidden" name="validation_admin" value="' . $signal . '" />';
219
+            $suivant = _T('bouton_valider');
220
+            $js = '';
221
+        } else {
222
+            // cet appel permet d'assurer un copier-coller du nom du repertoire a creer dans tmp (esj)
223
+            // l'insertion du script a cet endroit n'est pas xhtml licite
224
+            // mais evite de l'embarquer dans toutes les pages minipres
225
+            $corps .= http_script('', 'spip_barre.js');
226 226
 
227
-			$corps .= '<fieldset><legend>'
228
-				. _T('info_authentification_ftp')
229
-				. aider('ftp_auth')
230
-				. "</legend>\n<label for='fichier'>"
231
-				. _T('info_creer_repertoire')
232
-				. "</label>\n"
233
-				. "<span id='signal' class='formo'>" . $signal . '</span>'
234
-				. "<input type='hidden' id='fichier' name='fichier' value='"
235
-				. $signal
236
-				. "' />"
237
-				. _T('info_creer_repertoire_2', ['repertoire' => joli_repertoire($dir)])
238
-				. '</fieldset>';
227
+            $corps .= '<fieldset><legend>'
228
+                . _T('info_authentification_ftp')
229
+                . aider('ftp_auth')
230
+                . "</legend>\n<label for='fichier'>"
231
+                . _T('info_creer_repertoire')
232
+                . "</label>\n"
233
+                . "<span id='signal' class='formo'>" . $signal . '</span>'
234
+                . "<input type='hidden' id='fichier' name='fichier' value='"
235
+                . $signal
236
+                . "' />"
237
+                . _T('info_creer_repertoire_2', ['repertoire' => joli_repertoire($dir)])
238
+                . '</fieldset>';
239 239
 
240
-			$suivant = _T('bouton_recharger_page');
240
+            $suivant = _T('bouton_recharger_page');
241 241
 
242
-			// code volontairement tordu:
243
-			// provoquer la copie dans le presse papier du nom du repertoire
244
-			// en remettant a vide le champ pour que ca marche aussi en cas
245
-			// de JavaScript inactif.
246
-			$js = " onload='var range=document.createRange(); var signal = document.getElementById(\"signal\"); var userSelection = window.getSelection(); range.setStart(signal,0); range.setEnd(signal,1); userSelection.addRange(range);'";
247
-		}
242
+            // code volontairement tordu:
243
+            // provoquer la copie dans le presse papier du nom du repertoire
244
+            // en remettant a vide le champ pour que ca marche aussi en cas
245
+            // de JavaScript inactif.
246
+            $js = " onload='var range=document.createRange(); var signal = document.getElementById(\"signal\"); var userSelection = window.getSelection(); range.setStart(signal,0); range.setEnd(signal,1); userSelection.addRange(range);'";
247
+        }
248 248
 
249
-		// admin/xxx correspond
250
-		// a exec/base_xxx de preference
251
-		// et exec/xxx sinon (compat)
252
-		if (tester_url_ecrire("base_$script")) {
253
-			$script = "base_$script";
254
-		}
255
-		$form = copy_request($script, $corps, $suivant);
256
-		$info_action = _T('info_action', ['action' => "$action"]);
249
+        // admin/xxx correspond
250
+        // a exec/base_xxx de preference
251
+        // et exec/xxx sinon (compat)
252
+        if (tester_url_ecrire("base_$script")) {
253
+            $script = "base_$script";
254
+        }
255
+        $form = copy_request($script, $corps, $suivant);
256
+        $info_action = _T('info_action', ['action' => "$action"]);
257 257
 
258
-		return minipres($info_action, $form, ['onload' => $js]);
259
-	}
258
+        return minipres($info_action, $form, ['onload' => $js]);
259
+    }
260 260
 }
261 261
 
262 262
 /**
@@ -267,13 +267,13 @@  discard block
 block discarded – undo
267 267
  *     Nom de l'action (en base) qui a été exécutée
268 268
  **/
269 269
 function fin_admin($action) {
270
-	$signal = dir_admin() . fichier_admin($action);
271
-	spip_unlink($signal);
272
-	if ($action != 'delete_all') {
273
-		effacer_meta($action);
274
-		effacer_meta('admin');
275
-		spip_logger()->info("efface les meta admin et $action");
276
-	}
270
+    $signal = dir_admin() . fichier_admin($action);
271
+    spip_unlink($signal);
272
+    if ($action != 'delete_all') {
273
+        effacer_meta($action);
274
+        effacer_meta('admin');
275
+        spip_logger()->info("efface les meta admin et $action");
276
+    }
277 277
 }
278 278
 
279 279
 /**
@@ -292,14 +292,14 @@  discard block
 block discarded – undo
292 292
  *     Code HTML du formulaire
293 293
  **/
294 294
 function copy_request($script, $suite, $submit = '') {
295
-	include_spip('inc/filtres');
296
-	foreach ([...$_POST, ...$_GET] as $n => $c) {
297
-		if (!in_array($n, ['fichier', 'exec', 'validation_admin']) && !is_array($c)) {
298
-			$suite .= "\n<input type='hidden' name='" . spip_htmlspecialchars($n) . "' value='" .
299
-				entites_html($c) .
300
-				"'  />";
301
-		}
302
-	}
295
+    include_spip('inc/filtres');
296
+    foreach ([...$_POST, ...$_GET] as $n => $c) {
297
+        if (!in_array($n, ['fichier', 'exec', 'validation_admin']) && !is_array($c)) {
298
+            $suite .= "\n<input type='hidden' name='" . spip_htmlspecialchars($n) . "' value='" .
299
+                entites_html($c) .
300
+                "'  />";
301
+        }
302
+    }
303 303
 
304
-	return generer_form_ecrire($script, $suite, '', $submit);
304
+    return generer_form_ecrire($script, $suite, '', $submit);
305 305
 }
Please login to merge, or discard this patch.
Spacing   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -54,7 +54,7 @@  discard block
 block discarded – undo
54 54
 		if ($res) {
55 55
 			return $res;
56 56
 		}
57
-		spip_logger()->info("meta: $script " . print_r($_POST, true));
57
+		spip_logger()->info("meta: $script ".print_r($_POST, true));
58 58
 		ecrire_meta($script, serialize($_POST));
59 59
 	}
60 60
 
@@ -124,7 +124,7 @@  discard block
 block discarded – undo
124 124
 	}
125 125
 	// on pourrait statuer automatiquement les webmestres a l'init d'une action auth par ftp ... ?
126 126
 
127
-	spip_logger($journal)->info("admin $pref" . ($valeur ? ' (reprise)' : ' (init)'));
127
+	spip_logger($journal)->info("admin $pref".($valeur ? ' (reprise)' : ' (init)'));
128 128
 
129 129
 	return '';
130 130
 }
@@ -142,7 +142,7 @@  discard block
 block discarded – undo
142 142
 	if (autoriser('configurer')) {
143 143
 		return _DIR_TMP;
144 144
 	} else {
145
-		return _DIR_TRANSFERT . $GLOBALS['visiteur_session']['login'] . '/';
145
+		return _DIR_TRANSFERT.$GLOBALS['visiteur_session']['login'].'/';
146 146
 	}
147 147
 }
148 148
 
@@ -160,8 +160,8 @@  discard block
 block discarded – undo
160 160
  *     Nom du fichier
161 161
  **/
162 162
 function fichier_admin($action, $pref = 'admin_') {
163
-	return $pref .
164
-	substr(md5($action . (time() & ~2047) . $GLOBALS['visiteur_session']['login']), 0, 10);
163
+	return $pref.
164
+	substr(md5($action.(time() & ~2047).$GLOBALS['visiteur_session']['login']), 0, 10);
165 165
 }
166 166
 
167 167
 /**
@@ -197,7 +197,7 @@  discard block
 block discarded – undo
197 197
 	} else {
198 198
 		$dir = dir_admin();
199 199
 		$signal = fichier_admin($script);
200
-		if (@file_exists($dir . $signal)) {
200
+		if (@file_exists($dir.$signal)) {
201 201
 			spip_logger()->info("Action admin: $action");
202 202
 
203 203
 			return '';
@@ -215,7 +215,7 @@  discard block
 block discarded – undo
215 215
 
216 216
 				return '';
217 217
 			}
218
-			$corps .= '<input type="hidden" name="validation_admin" value="' . $signal . '" />';
218
+			$corps .= '<input type="hidden" name="validation_admin" value="'.$signal.'" />';
219 219
 			$suivant = _T('bouton_valider');
220 220
 			$js = '';
221 221
 		} else {
@@ -230,7 +230,7 @@  discard block
 block discarded – undo
230 230
 				. "</legend>\n<label for='fichier'>"
231 231
 				. _T('info_creer_repertoire')
232 232
 				. "</label>\n"
233
-				. "<span id='signal' class='formo'>" . $signal . '</span>'
233
+				. "<span id='signal' class='formo'>".$signal.'</span>'
234 234
 				. "<input type='hidden' id='fichier' name='fichier' value='"
235 235
 				. $signal
236 236
 				. "' />"
@@ -267,7 +267,7 @@  discard block
 block discarded – undo
267 267
  *     Nom de l'action (en base) qui a été exécutée
268 268
  **/
269 269
 function fin_admin($action) {
270
-	$signal = dir_admin() . fichier_admin($action);
270
+	$signal = dir_admin().fichier_admin($action);
271 271
 	spip_unlink($signal);
272 272
 	if ($action != 'delete_all') {
273 273
 		effacer_meta($action);
@@ -295,8 +295,8 @@  discard block
 block discarded – undo
295 295
 	include_spip('inc/filtres');
296 296
 	foreach ([...$_POST, ...$_GET] as $n => $c) {
297 297
 		if (!in_array($n, ['fichier', 'exec', 'validation_admin']) && !is_array($c)) {
298
-			$suite .= "\n<input type='hidden' name='" . spip_htmlspecialchars($n) . "' value='" .
299
-				entites_html($c) .
298
+			$suite .= "\n<input type='hidden' name='".spip_htmlspecialchars($n)."' value='".
299
+				entites_html($c).
300 300
 				"'  />";
301 301
 		}
302 302
 	}
Please login to merge, or discard this patch.
ecrire/inc/queue.php 2 patches
Indentation   +477 added lines, -477 removed lines patch added patch discarded remove patch
@@ -15,7 +15,7 @@  discard block
 block discarded – undo
15 15
  * @package SPIP\Core\Queue
16 16
  **/
17 17
 if (!defined('_ECRIRE_INC_VERSION')) {
18
-	return;
18
+    return;
19 19
 }
20 20
 
21 21
 define('_JQ_SCHEDULED', 1);
@@ -49,101 +49,101 @@  discard block
 block discarded – undo
49 49
  *  id of job
50 50
  */
51 51
 function queue_add_job(
52
-	$function,
53
-	$description,
54
-	$arguments = [],
55
-	$file = '',
56
-	$no_duplicate = false,
57
-	$time = 0,
58
-	$priority = 0
52
+    $function,
53
+    $description,
54
+    $arguments = [],
55
+    $file = '',
56
+    $no_duplicate = false,
57
+    $time = 0,
58
+    $priority = 0
59 59
 ) {
60
-	include_spip('base/abstract_sql');
61
-
62
-	// cas pourri de ecrire/action/editer_site avec l'option reload=oui
63
-	if (defined('_GENIE_SYNDIC_NOW')) {
64
-		$arguments['id_syndic'] = _GENIE_SYNDIC_NOW;
65
-	}
66
-
67
-	// serialiser les arguments
68
-	$arguments = serialize($arguments);
69
-	$md5args = md5($arguments);
70
-
71
-	// si pas de date programee, des que possible
72
-	$duplicate_where = 'status=' . intval(_JQ_SCHEDULED) . ' AND ';
73
-	if (!$time) {
74
-		$time = time();
75
-		$duplicate_where = ''; // ne pas dupliquer si deja le meme job en cours d'execution
76
-	}
77
-	$date = date('Y-m-d H:i:s', $time);
78
-
79
-	$set_job = [
80
-		'fonction' => $function,
81
-		'descriptif' => $description,
82
-		'args' => $arguments,
83
-		'md5args' => $md5args,
84
-		'inclure' => $file,
85
-		'priorite' => max(-10, min(10, intval($priority))),
86
-		'date' => $date,
87
-		'status' => _JQ_SCHEDULED,
88
-	];
89
-	// si option ne pas dupliquer, regarder si la fonction existe deja
90
-	// avec les memes args et file
91
-	if (
92
-		$no_duplicate
93
-		&& ($id_job = sql_getfetsel(
94
-			'id_job',
95
-			'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
-	) {
102
-		return $id_job;
103
-	}
104
-
105
-	$id_job = sql_insertq('spip_jobs', $set_job);
106
-	// en cas de concurrence, deux process peuvent arriver jusqu'ici en parallele
107
-	// avec le meme job unique a inserer. Dans ce cas, celui qui a eu l'id le plus grand
108
-	// doit s'effacer
109
-	if (
110
-		$no_duplicate
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') && $id_job) {
125
-		$args = sql_getfetsel('args', 'spip_jobs', 'id_job=' . intval($id_job));
126
-		if ($args !== $arguments) {
127
-			spip_logger('queue')->info(
128
-				'arguments job errones / longueur ' . strlen($args) . ' vs ' . strlen($arguments) . ' / valeur : '
129
-				. var_export($arguments, true)
130
-			);
131
-		}
132
-	}
133
-
134
-	if ($id_job) {
135
-		queue_update_next_job_time($time);
136
-	}
137
-	// si la mise en file d'attente du job echoue,
138
-	// il ne faut pas perdre l'execution de la fonction
139
-	// on la lance immediatement, c'est un fallback
140
-	// sauf en cas d'upgrade necessaire (table spip_jobs inexistante)
141
-	elseif ($GLOBALS['meta']['version_installee'] == $GLOBALS['spip_version_base']) {
142
-		$set_job['id_job'] = 0;
143
-		queue_start_job($set_job);
144
-	}
145
-
146
-	return $id_job;
60
+    include_spip('base/abstract_sql');
61
+
62
+    // cas pourri de ecrire/action/editer_site avec l'option reload=oui
63
+    if (defined('_GENIE_SYNDIC_NOW')) {
64
+        $arguments['id_syndic'] = _GENIE_SYNDIC_NOW;
65
+    }
66
+
67
+    // serialiser les arguments
68
+    $arguments = serialize($arguments);
69
+    $md5args = md5($arguments);
70
+
71
+    // si pas de date programee, des que possible
72
+    $duplicate_where = 'status=' . intval(_JQ_SCHEDULED) . ' AND ';
73
+    if (!$time) {
74
+        $time = time();
75
+        $duplicate_where = ''; // ne pas dupliquer si deja le meme job en cours d'execution
76
+    }
77
+    $date = date('Y-m-d H:i:s', $time);
78
+
79
+    $set_job = [
80
+        'fonction' => $function,
81
+        'descriptif' => $description,
82
+        'args' => $arguments,
83
+        'md5args' => $md5args,
84
+        'inclure' => $file,
85
+        'priorite' => max(-10, min(10, intval($priority))),
86
+        'date' => $date,
87
+        'status' => _JQ_SCHEDULED,
88
+    ];
89
+    // si option ne pas dupliquer, regarder si la fonction existe deja
90
+    // avec les memes args et file
91
+    if (
92
+        $no_duplicate
93
+        && ($id_job = sql_getfetsel(
94
+            'id_job',
95
+            '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
+    ) {
102
+        return $id_job;
103
+    }
104
+
105
+    $id_job = sql_insertq('spip_jobs', $set_job);
106
+    // en cas de concurrence, deux process peuvent arriver jusqu'ici en parallele
107
+    // avec le meme job unique a inserer. Dans ce cas, celui qui a eu l'id le plus grand
108
+    // doit s'effacer
109
+    if (
110
+        $no_duplicate
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') && $id_job) {
125
+        $args = sql_getfetsel('args', 'spip_jobs', 'id_job=' . intval($id_job));
126
+        if ($args !== $arguments) {
127
+            spip_logger('queue')->info(
128
+                'arguments job errones / longueur ' . strlen($args) . ' vs ' . strlen($arguments) . ' / valeur : '
129
+                . var_export($arguments, true)
130
+            );
131
+        }
132
+    }
133
+
134
+    if ($id_job) {
135
+        queue_update_next_job_time($time);
136
+    }
137
+    // si la mise en file d'attente du job echoue,
138
+    // il ne faut pas perdre l'execution de la fonction
139
+    // on la lance immediatement, c'est un fallback
140
+    // sauf en cas d'upgrade necessaire (table spip_jobs inexistante)
141
+    elseif ($GLOBALS['meta']['version_installee'] == $GLOBALS['spip_version_base']) {
142
+        $set_job['id_job'] = 0;
143
+        queue_start_job($set_job);
144
+    }
145
+
146
+    return $id_job;
147 147
 }
148 148
 
149 149
 /**
@@ -152,11 +152,11 @@  discard block
 block discarded – undo
152 152
  * @return void
153 153
  */
154 154
 function queue_purger() {
155
-	include_spip('base/abstract_sql');
156
-	sql_delete('spip_jobs');
157
-	sql_delete('spip_jobs_liens', 'id_job NOT IN (' . sql_get_select('id_job', 'spip_jobs') . ')');
158
-	include_spip('inc/genie');
159
-	genie_queue_watch_dist();
155
+    include_spip('base/abstract_sql');
156
+    sql_delete('spip_jobs');
157
+    sql_delete('spip_jobs_liens', 'id_job NOT IN (' . sql_get_select('id_job', 'spip_jobs') . ')');
158
+    include_spip('inc/genie');
159
+    genie_queue_watch_dist();
160 160
 }
161 161
 
162 162
 /**
@@ -167,25 +167,25 @@  discard block
 block discarded – undo
167 167
  * @return int|bool
168 168
  */
169 169
 function queue_remove_job($id_job) {
170
-	include_spip('base/abstract_sql');
171
-
172
-	if (
173
-		($row = sql_fetsel('fonction,inclure,date', 'spip_jobs', 'id_job=' . intval($id_job)))
174
-		&& ($res = sql_delete('spip_jobs', 'id_job=' . intval($id_job)))
175
-	) {
176
-		queue_unlink_job($id_job);
177
-		// est-ce une tache cron qu'il faut relancer ?
178
-		if ($periode = queue_is_cron_job($row['fonction'], $row['inclure'])) {
179
-			// relancer avec les nouveaux arguments de temps
180
-			include_spip('inc/genie');
181
-			// relancer avec la periode prevue
182
-			queue_genie_replan_job($row['fonction'], $periode, strtotime($row['date']));
183
-		}
184
-		queue_update_next_job_time();
185
-		return $res;
186
-	}
187
-
188
-	return false;
170
+    include_spip('base/abstract_sql');
171
+
172
+    if (
173
+        ($row = sql_fetsel('fonction,inclure,date', 'spip_jobs', 'id_job=' . intval($id_job)))
174
+        && ($res = sql_delete('spip_jobs', 'id_job=' . intval($id_job)))
175
+    ) {
176
+        queue_unlink_job($id_job);
177
+        // est-ce une tache cron qu'il faut relancer ?
178
+        if ($periode = queue_is_cron_job($row['fonction'], $row['inclure'])) {
179
+            // relancer avec les nouveaux arguments de temps
180
+            include_spip('inc/genie');
181
+            // relancer avec la periode prevue
182
+            queue_genie_replan_job($row['fonction'], $periode, strtotime($row['date']));
183
+        }
184
+        queue_update_next_job_time();
185
+        return $res;
186
+    }
187
+
188
+    return false;
189 189
 }
190 190
 
191 191
 /**
@@ -198,18 +198,18 @@  discard block
 block discarded – undo
198 198
  *  ou un tableau composé de tableaux simples pour lieur plusieurs objets en une fois
199 199
  */
200 200
 function queue_link_job($id_job, $objets) {
201
-	include_spip('base/abstract_sql');
202
-
203
-	if (is_array($objets) && count($objets)) {
204
-		if (is_array(reset($objets))) {
205
-			foreach ($objets as $k => $o) {
206
-				$objets[$k]['id_job'] = $id_job;
207
-			}
208
-			sql_insertq_multi('spip_jobs_liens', $objets);
209
-		} else {
210
-			sql_insertq('spip_jobs_liens', array_merge(['id_job' => $id_job], $objets));
211
-		}
212
-	}
201
+    include_spip('base/abstract_sql');
202
+
203
+    if (is_array($objets) && count($objets)) {
204
+        if (is_array(reset($objets))) {
205
+            foreach ($objets as $k => $o) {
206
+                $objets[$k]['id_job'] = $id_job;
207
+            }
208
+            sql_insertq_multi('spip_jobs_liens', $objets);
209
+        } else {
210
+            sql_insertq('spip_jobs_liens', array_merge(['id_job' => $id_job], $objets));
211
+        }
212
+    }
213 213
 }
214 214
 
215 215
 /**
@@ -221,7 +221,7 @@  discard block
 block discarded – undo
221 221
  *  resultat du sql_delete
222 222
  */
223 223
 function queue_unlink_job($id_job) {
224
-	return sql_delete('spip_jobs_liens', 'id_job=' . intval($id_job));
224
+    return sql_delete('spip_jobs_liens', 'id_job=' . intval($id_job));
225 225
 }
226 226
 
227 227
 /**
@@ -234,38 +234,38 @@  discard block
 block discarded – undo
234 234
  */
235 235
 function queue_start_job($row) {
236 236
 
237
-	$logger = spip_logger('queue');
238
-
239
-	// deserialiser les arguments
240
-	$args = unserialize($row['args']);
241
-	if (!is_array($args)) {
242
-		$logger->info('arguments job errones ' . var_export($row, true));
243
-		return false;
244
-	}
245
-
246
-	$fonction = $row['fonction'];
247
-	if (strlen($inclure = trim($row['inclure']))) {
248
-		if (str_ends_with($inclure, '/')) { // c'est un chemin pour charger_fonction
249
-			$f = charger_fonction($fonction, rtrim($inclure, '/'), false);
250
-			if ($f) {
251
-				$fonction = $f;
252
-			}
253
-		} else {
254
-			include_spip($inclure);
255
-		}
256
-	}
257
-
258
-	if (!function_exists($fonction)) {
259
-		$logger->info("fonction $fonction ($inclure) inexistante " . var_export($row, true));
260
-
261
-		return false;
262
-	}
263
-
264
-	$logger->info('queue [' . $row['id_job'] . "]: $fonction() start");
265
-	$res = $fonction(...$args);
266
-	$logger->info('queue [' . $row['id_job'] . "]: $fonction() end");
267
-
268
-	return $res;
237
+    $logger = spip_logger('queue');
238
+
239
+    // deserialiser les arguments
240
+    $args = unserialize($row['args']);
241
+    if (!is_array($args)) {
242
+        $logger->info('arguments job errones ' . var_export($row, true));
243
+        return false;
244
+    }
245
+
246
+    $fonction = $row['fonction'];
247
+    if (strlen($inclure = trim($row['inclure']))) {
248
+        if (str_ends_with($inclure, '/')) { // c'est un chemin pour charger_fonction
249
+            $f = charger_fonction($fonction, rtrim($inclure, '/'), false);
250
+            if ($f) {
251
+                $fonction = $f;
252
+            }
253
+        } else {
254
+            include_spip($inclure);
255
+        }
256
+    }
257
+
258
+    if (!function_exists($fonction)) {
259
+        $logger->info("fonction $fonction ($inclure) inexistante " . var_export($row, true));
260
+
261
+        return false;
262
+    }
263
+
264
+    $logger->info('queue [' . $row['id_job'] . "]: $fonction() start");
265
+    $res = $fonction(...$args);
266
+    $logger->info('queue [' . $row['id_job'] . "]: $fonction() end");
267
+
268
+    return $res;
269 269
 }
270 270
 
271 271
 /**
@@ -292,90 +292,90 @@  discard block
 block discarded – undo
292 292
  *     - true : une planification a été faite.
293 293
  */
294 294
 function queue_schedule($force_jobs = null) {
295
-	$time = time();
296
-	$logger = spip_logger('jq');
297
-	if (defined('_DEBUG_BLOCK_QUEUE')) {
298
-		$logger->debug('_DEBUG_BLOCK_QUEUE : schedule stop');
299
-
300
-		return;
301
-	}
302
-
303
-	// rien a faire si le prochain job est encore dans le futur
304
-	if (queue_sleep_time_to_next_job() > 0 && (!$force_jobs || !count($force_jobs))) {
305
-		$logger->debug('queue_sleep_time_to_next_job');
306
-
307
-		return;
308
-	}
309
-
310
-	include_spip('base/abstract_sql');
311
-	// on ne peut rien faire si pas de connexion SQL
312
-	if (!spip_connect()) {
313
-		return false;
314
-	}
315
-
316
-	if (!defined('_JQ_MAX_JOBS_TIME_TO_EXECUTE')) {
317
-		$max_time = ini_get('max_execution_time') / 2;
318
-		// valeur conservatrice si on a pas reussi a lire le max_execution_time
319
-		if (!$max_time) {
320
-			$max_time = 5;
321
-		}
322
-		define('_JQ_MAX_JOBS_TIME_TO_EXECUTE', min($max_time, 15)); // une valeur maxi en temps.
323
-	}
324
-	$end_time = $time + _JQ_MAX_JOBS_TIME_TO_EXECUTE;
325
-
326
-	$logger->debug("JQ schedule $time / $end_time");
327
-
328
-	if (!defined('_JQ_MAX_JOBS_EXECUTE')) {
329
-		define('_JQ_MAX_JOBS_EXECUTE', 200);
330
-	}
331
-	$nbj = 0;
332
-	// attraper les jobs
333
-	// dont la date est passee (echus en attente),
334
-	// par ordre :
335
-	//	- de priorite
336
-	//	- de date
337
-	// lorsqu'un job cron n'a pas fini, sa priorite est descendue
338
-	// pour qu'il ne bloque pas les autres jobs en attente
339
-	if (is_array($force_jobs) && count($force_jobs)) {
340
-		$cond = 'status=' . intval(_JQ_SCHEDULED) . ' AND ' . sql_in('id_job', $force_jobs);
341
-	} else {
342
-		$now = date('Y-m-d H:i:s', $time);
343
-		$cond = 'status=' . intval(_JQ_SCHEDULED) . ' AND date<=' . sql_quote($now);
344
-	}
345
-
346
-	register_shutdown_function('queue_error_handler'); // recuperer les erreurs auant que possible
347
-	$res = sql_allfetsel('*', 'spip_jobs', $cond, '', 'priorite DESC,date', '0,' . (_JQ_MAX_JOBS_EXECUTE + 1));
348
-	do {
349
-		if ($row = array_shift($res)) {
350
-			$nbj++;
351
-			// il faut un verrou, a base de sql_delete
352
-			if (sql_delete('spip_jobs', 'id_job=' . intval($row['id_job']) . ' AND status=' . intval(_JQ_SCHEDULED))) {
353
-				#$logger->info("JQ schedule job ".$nbj." OK");
354
-				// on reinsert dans la base aussitot avec un status=_JQ_PENDING
355
-				$row['status'] = _JQ_PENDING;
356
-				$row['date'] = date('Y-m-d H:i:s', $time);
357
-				sql_insertq('spip_jobs', $row);
358
-
359
-				// on a la main sur le job :
360
-				// l'executer
361
-				$result = queue_start_job($row);
362
-
363
-				$time = time();
364
-				queue_close_job($row, $time, $result);
365
-			}
366
-		}
367
-		$logger->debug('JQ schedule job end time ' . $time);
368
-	} while ($nbj < _JQ_MAX_JOBS_EXECUTE && $row && $time < $end_time);
369
-	$logger->debug('JQ schedule end time ' . time());
370
-
371
-	if ($row = array_shift($res)) {
372
-		queue_update_next_job_time(0); // on sait qu'il y a encore des jobs a lancer ASAP
373
-		$logger->debug('JQ encore !');
374
-	} else {
375
-		queue_update_next_job_time();
376
-	}
377
-
378
-	return true;
295
+    $time = time();
296
+    $logger = spip_logger('jq');
297
+    if (defined('_DEBUG_BLOCK_QUEUE')) {
298
+        $logger->debug('_DEBUG_BLOCK_QUEUE : schedule stop');
299
+
300
+        return;
301
+    }
302
+
303
+    // rien a faire si le prochain job est encore dans le futur
304
+    if (queue_sleep_time_to_next_job() > 0 && (!$force_jobs || !count($force_jobs))) {
305
+        $logger->debug('queue_sleep_time_to_next_job');
306
+
307
+        return;
308
+    }
309
+
310
+    include_spip('base/abstract_sql');
311
+    // on ne peut rien faire si pas de connexion SQL
312
+    if (!spip_connect()) {
313
+        return false;
314
+    }
315
+
316
+    if (!defined('_JQ_MAX_JOBS_TIME_TO_EXECUTE')) {
317
+        $max_time = ini_get('max_execution_time') / 2;
318
+        // valeur conservatrice si on a pas reussi a lire le max_execution_time
319
+        if (!$max_time) {
320
+            $max_time = 5;
321
+        }
322
+        define('_JQ_MAX_JOBS_TIME_TO_EXECUTE', min($max_time, 15)); // une valeur maxi en temps.
323
+    }
324
+    $end_time = $time + _JQ_MAX_JOBS_TIME_TO_EXECUTE;
325
+
326
+    $logger->debug("JQ schedule $time / $end_time");
327
+
328
+    if (!defined('_JQ_MAX_JOBS_EXECUTE')) {
329
+        define('_JQ_MAX_JOBS_EXECUTE', 200);
330
+    }
331
+    $nbj = 0;
332
+    // attraper les jobs
333
+    // dont la date est passee (echus en attente),
334
+    // par ordre :
335
+    //	- de priorite
336
+    //	- de date
337
+    // lorsqu'un job cron n'a pas fini, sa priorite est descendue
338
+    // pour qu'il ne bloque pas les autres jobs en attente
339
+    if (is_array($force_jobs) && count($force_jobs)) {
340
+        $cond = 'status=' . intval(_JQ_SCHEDULED) . ' AND ' . sql_in('id_job', $force_jobs);
341
+    } else {
342
+        $now = date('Y-m-d H:i:s', $time);
343
+        $cond = 'status=' . intval(_JQ_SCHEDULED) . ' AND date<=' . sql_quote($now);
344
+    }
345
+
346
+    register_shutdown_function('queue_error_handler'); // recuperer les erreurs auant que possible
347
+    $res = sql_allfetsel('*', 'spip_jobs', $cond, '', 'priorite DESC,date', '0,' . (_JQ_MAX_JOBS_EXECUTE + 1));
348
+    do {
349
+        if ($row = array_shift($res)) {
350
+            $nbj++;
351
+            // il faut un verrou, a base de sql_delete
352
+            if (sql_delete('spip_jobs', 'id_job=' . intval($row['id_job']) . ' AND status=' . intval(_JQ_SCHEDULED))) {
353
+                #$logger->info("JQ schedule job ".$nbj." OK");
354
+                // on reinsert dans la base aussitot avec un status=_JQ_PENDING
355
+                $row['status'] = _JQ_PENDING;
356
+                $row['date'] = date('Y-m-d H:i:s', $time);
357
+                sql_insertq('spip_jobs', $row);
358
+
359
+                // on a la main sur le job :
360
+                // l'executer
361
+                $result = queue_start_job($row);
362
+
363
+                $time = time();
364
+                queue_close_job($row, $time, $result);
365
+            }
366
+        }
367
+        $logger->debug('JQ schedule job end time ' . $time);
368
+    } while ($nbj < _JQ_MAX_JOBS_EXECUTE && $row && $time < $end_time);
369
+    $logger->debug('JQ schedule end time ' . time());
370
+
371
+    if ($row = array_shift($res)) {
372
+        queue_update_next_job_time(0); // on sait qu'il y a encore des jobs a lancer ASAP
373
+        $logger->debug('JQ encore !');
374
+    } else {
375
+        queue_update_next_job_time();
376
+    }
377
+
378
+    return true;
379 379
 }
380 380
 
381 381
 /**
@@ -393,21 +393,21 @@  discard block
 block discarded – undo
393 393
  * @param int $result
394 394
  */
395 395
 function queue_close_job(&$row, $time, $result = 0) {
396
-	// est-ce une tache cron qu'il faut relancer ?
397
-	if ($periode = queue_is_cron_job($row['fonction'], $row['inclure'])) {
398
-		// relancer avec les nouveaux arguments de temps
399
-		include_spip('inc/genie');
400
-		if ($result < 0) { // relancer tout de suite, mais en baissant la priorite
401
-		queue_genie_replan_job($row['fonction'], $periode, 0 - $result, null, $row['priorite'] - 1);
402
-		} else // relancer avec la periode prevue
403
-		{
404
-			queue_genie_replan_job($row['fonction'], $periode, $time);
405
-		}
406
-	}
407
-	// purger ses liens eventuels avec des objets
408
-	sql_delete('spip_jobs_liens', 'id_job=' . intval($row['id_job']));
409
-	// supprimer le job fini
410
-	sql_delete('spip_jobs', 'id_job=' . intval($row['id_job']));
396
+    // est-ce une tache cron qu'il faut relancer ?
397
+    if ($periode = queue_is_cron_job($row['fonction'], $row['inclure'])) {
398
+        // relancer avec les nouveaux arguments de temps
399
+        include_spip('inc/genie');
400
+        if ($result < 0) { // relancer tout de suite, mais en baissant la priorite
401
+        queue_genie_replan_job($row['fonction'], $periode, 0 - $result, null, $row['priorite'] - 1);
402
+        } else // relancer avec la periode prevue
403
+        {
404
+            queue_genie_replan_job($row['fonction'], $periode, $time);
405
+        }
406
+    }
407
+    // purger ses liens eventuels avec des objets
408
+    sql_delete('spip_jobs_liens', 'id_job=' . intval($row['id_job']));
409
+    // supprimer le job fini
410
+    sql_delete('spip_jobs', 'id_job=' . intval($row['id_job']));
411 411
 }
412 412
 
413 413
 /**
@@ -417,10 +417,10 @@  discard block
 block discarded – undo
417 417
  * @uses queue_update_next_job_time()
418 418
  */
419 419
 function queue_error_handler() {
420
-	// se remettre dans le bon dossier, car Apache le change parfois (toujours?)
421
-	chdir(_ROOT_CWD);
420
+    // se remettre dans le bon dossier, car Apache le change parfois (toujours?)
421
+    chdir(_ROOT_CWD);
422 422
 
423
-	queue_update_next_job_time();
423
+    queue_update_next_job_time();
424 424
 }
425 425
 
426 426
 
@@ -437,18 +437,18 @@  discard block
 block discarded – undo
437 437
  *     Périodicité de la tâche en secondes, si tâche périodique, sinon false.
438 438
  */
439 439
 function queue_is_cron_job($function, $inclure) {
440
-	static $taches = null;
441
-	if (str_starts_with($inclure, 'genie/')) {
442
-		if (is_null($taches)) {
443
-			include_spip('inc/genie');
444
-			$taches = taches_generales();
445
-		}
446
-		if (isset($taches[$function])) {
447
-			return $taches[$function];
448
-		}
449
-	}
450
-
451
-	return false;
440
+    static $taches = null;
441
+    if (str_starts_with($inclure, 'genie/')) {
442
+        if (is_null($taches)) {
443
+            include_spip('inc/genie');
444
+            $taches = taches_generales();
445
+        }
446
+        if (isset($taches[$function])) {
447
+            return $taches[$function];
448
+        }
449
+    }
450
+
451
+    return false;
452 452
 }
453 453
 
454 454
 /**
@@ -462,62 +462,62 @@  discard block
 block discarded – undo
462 462
  *  temps de la tache ajoutee ou 0 pour ASAP
463 463
  */
464 464
 function queue_update_next_job_time($next_time = null) {
465
-	static $nb_jobs_scheduled = null;
466
-	static $deja_la = false;
467
-	// prendre le min des $next_time que l'on voit passer ici, en cas de reentrance
468
-	static $next = null;
469
-	// queue_close_job peut etre reentrant ici
470
-	if ($deja_la) {
471
-		return;
472
-	}
473
-	$deja_la = true;
474
-
475
-	include_spip('base/abstract_sql');
476
-	$time = time();
477
-
478
-	// traiter les jobs morts au combat (_JQ_PENDING depuis plus de 180s)
479
-	// pour cause de timeout ou autre erreur fatale
480
-	$res = sql_allfetsel(
481
-		'*',
482
-		'spip_jobs',
483
-		'status=' . intval(_JQ_PENDING) . ' AND date<' . sql_quote(date('Y-m-d H:i:s', $time - 180))
484
-	);
485
-	if (is_array($res)) {
486
-		foreach ($res as $row) {
487
-			queue_close_job($row, $time);
488
-			spip_logger('job_mort')->error('queue_close_job car _JQ_PENDING depuis +180s : ' . print_r($row, true));
489
-		}
490
-	}
491
-
492
-	// chercher la date du prochain job si pas connu
493
-	if (is_null($next) || is_null(queue_sleep_time_to_next_job())) {
494
-		$date = sql_getfetsel('date', 'spip_jobs', 'status=' . intval(_JQ_SCHEDULED), '', 'date', '0,1');
495
-		$next = strtotime($date);
496
-	}
497
-	if (!is_null($next_time)) {
498
-		if (is_null($next) || $next > $next_time) {
499
-			$next = $next_time;
500
-		}
501
-	}
502
-
503
-	if ($next) {
504
-		if (is_null($nb_jobs_scheduled)) {
505
-			$nb_jobs_scheduled = sql_countsel(
506
-				'spip_jobs',
507
-				'status=' . intval(_JQ_SCHEDULED) . ' AND date<' . sql_quote(date('Y-m-d H:i:s', $time))
508
-			);
509
-		} elseif ($next <= $time) {
510
-			$nb_jobs_scheduled++;
511
-		}
512
-		// si trop de jobs en attente, on force la purge en fin de hit
513
-		// pour assurer le coup
514
-		if ($nb_jobs_scheduled > (defined('_JQ_NB_JOBS_OVERFLOW') ? _JQ_NB_JOBS_OVERFLOW : 10000)) {
515
-			define('_DIRECT_CRON_FORCE', true);
516
-		}
517
-	}
518
-
519
-	queue_set_next_job_time($next);
520
-	$deja_la = false;
465
+    static $nb_jobs_scheduled = null;
466
+    static $deja_la = false;
467
+    // prendre le min des $next_time que l'on voit passer ici, en cas de reentrance
468
+    static $next = null;
469
+    // queue_close_job peut etre reentrant ici
470
+    if ($deja_la) {
471
+        return;
472
+    }
473
+    $deja_la = true;
474
+
475
+    include_spip('base/abstract_sql');
476
+    $time = time();
477
+
478
+    // traiter les jobs morts au combat (_JQ_PENDING depuis plus de 180s)
479
+    // pour cause de timeout ou autre erreur fatale
480
+    $res = sql_allfetsel(
481
+        '*',
482
+        'spip_jobs',
483
+        'status=' . intval(_JQ_PENDING) . ' AND date<' . sql_quote(date('Y-m-d H:i:s', $time - 180))
484
+    );
485
+    if (is_array($res)) {
486
+        foreach ($res as $row) {
487
+            queue_close_job($row, $time);
488
+            spip_logger('job_mort')->error('queue_close_job car _JQ_PENDING depuis +180s : ' . print_r($row, true));
489
+        }
490
+    }
491
+
492
+    // chercher la date du prochain job si pas connu
493
+    if (is_null($next) || is_null(queue_sleep_time_to_next_job())) {
494
+        $date = sql_getfetsel('date', 'spip_jobs', 'status=' . intval(_JQ_SCHEDULED), '', 'date', '0,1');
495
+        $next = strtotime($date);
496
+    }
497
+    if (!is_null($next_time)) {
498
+        if (is_null($next) || $next > $next_time) {
499
+            $next = $next_time;
500
+        }
501
+    }
502
+
503
+    if ($next) {
504
+        if (is_null($nb_jobs_scheduled)) {
505
+            $nb_jobs_scheduled = sql_countsel(
506
+                'spip_jobs',
507
+                'status=' . intval(_JQ_SCHEDULED) . ' AND date<' . sql_quote(date('Y-m-d H:i:s', $time))
508
+            );
509
+        } elseif ($next <= $time) {
510
+            $nb_jobs_scheduled++;
511
+        }
512
+        // si trop de jobs en attente, on force la purge en fin de hit
513
+        // pour assurer le coup
514
+        if ($nb_jobs_scheduled > (defined('_JQ_NB_JOBS_OVERFLOW') ? _JQ_NB_JOBS_OVERFLOW : 10000)) {
515
+            define('_DIRECT_CRON_FORCE', true);
516
+        }
517
+    }
518
+
519
+    queue_set_next_job_time($next);
520
+    $deja_la = false;
521 521
 }
522 522
 
523 523
 
@@ -528,26 +528,26 @@  discard block
 block discarded – undo
528 528
  */
529 529
 function queue_set_next_job_time($next) {
530 530
 
531
-	// utiliser le temps courant reel plutot que temps de la requete ici
532
-	$time = time();
533
-
534
-	// toujours relire la valeur pour comparer, pour tenir compte des maj concourrantes
535
-	// et ne mettre a jour que si il y a un interet a le faire
536
-	// permet ausis d'initialiser le nom de fichier a coup sur
537
-	$curr_next = $_SERVER['REQUEST_TIME'] + max(0, queue_sleep_time_to_next_job(true));
538
-	if (
539
-		$curr_next <= $time && $next > $time // le prochain job est dans le futur mais pas la date planifiee actuelle
540
-		|| $curr_next > $next // le prochain job est plus tot que la date planifiee actuelle
541
-	) {
542
-		if (function_exists('cache_set') && defined('_MEMOIZE_MEMORY') && _MEMOIZE_MEMORY) {
543
-			cache_set(_JQ_NEXT_JOB_TIME_FILENAME, intval($next));
544
-		} else {
545
-			ecrire_fichier(_JQ_NEXT_JOB_TIME_FILENAME, intval($next));
546
-		}
547
-		queue_sleep_time_to_next_job($next);
548
-	}
549
-
550
-	return queue_sleep_time_to_next_job();
531
+    // utiliser le temps courant reel plutot que temps de la requete ici
532
+    $time = time();
533
+
534
+    // toujours relire la valeur pour comparer, pour tenir compte des maj concourrantes
535
+    // et ne mettre a jour que si il y a un interet a le faire
536
+    // permet ausis d'initialiser le nom de fichier a coup sur
537
+    $curr_next = $_SERVER['REQUEST_TIME'] + max(0, queue_sleep_time_to_next_job(true));
538
+    if (
539
+        $curr_next <= $time && $next > $time // le prochain job est dans le futur mais pas la date planifiee actuelle
540
+        || $curr_next > $next // le prochain job est plus tot que la date planifiee actuelle
541
+    ) {
542
+        if (function_exists('cache_set') && defined('_MEMOIZE_MEMORY') && _MEMOIZE_MEMORY) {
543
+            cache_set(_JQ_NEXT_JOB_TIME_FILENAME, intval($next));
544
+        } else {
545
+            ecrire_fichier(_JQ_NEXT_JOB_TIME_FILENAME, intval($next));
546
+        }
547
+        queue_sleep_time_to_next_job($next);
548
+    }
549
+
550
+    return queue_sleep_time_to_next_job();
551 551
 }
552 552
 
553 553
 /**
@@ -564,60 +564,60 @@  discard block
 block discarded – undo
564 564
  * @return string
565 565
  */
566 566
 function queue_affichage_cron() {
567
-	$texte = '';
568
-
569
-	$time_to_next = queue_sleep_time_to_next_job();
570
-	// rien a faire si le prochain job est encore dans le futur
571
-	if ($time_to_next > 0 || defined('_DEBUG_BLOCK_QUEUE')) {
572
-		return $texte;
573
-	}
574
-
575
-	// ne pas relancer si on vient de lancer dans la meme seconde par un hit concurent
576
-	if (file_exists($lock = _DIR_TMP . 'cron.lock') && !(@filemtime($lock) < $_SERVER['REQUEST_TIME'])) {
577
-		return $texte;
578
-	}
579
-
580
-	@touch($lock);
581
-
582
-	// il y a des taches en attentes
583
-	// si depuis plus de 5min, on essaye de lancer le cron par tous les moyens pour rattraper le coup
584
-	// on est sans doute sur un site qui n'autorise pas http sortant ou avec peu de trafic
585
-	$urgent = false;
586
-	if ($time_to_next < -300) {
587
-		$urgent = true;
588
-	}
589
-
590
-	$url_cron = generer_url_action('cron', '', false, true);
591
-
592
-	if (!defined('_HTML_BG_CRON_FORCE') || !_HTML_BG_CRON_FORCE) {
593
-		if (queue_lancer_url_http_async($url_cron) && !$urgent) {
594
-			return $texte;
595
-		}
596
-	}
597
-
598
-	// si deja force, on retourne sans rien
599
-	if (defined('_DIRECT_CRON_FORCE')) {
600
-		return $texte;
601
-	}
602
-
603
-	// si c'est un bot
604
-	// inutile de faire un appel par image background,
605
-	// on force un appel direct en fin de hit
606
-	if ((defined('_IS_BOT') && _IS_BOT)) {
607
-		define('_DIRECT_CRON_FORCE', true);
608
-
609
-		return $texte;
610
-	}
611
-
612
-	if (!defined('_HTML_BG_CRON_INHIB') || !_HTML_BG_CRON_INHIB) {
613
-		// en derniere solution, on insere un appel xhr non bloquant ou une image background dans la page si pas de JS
614
-		$url_cron = generer_url_action('cron');
615
-		$texte = '<!-- SPIP-CRON -->'
616
-		  . "<script>setTimeout(function(){var xo = new XMLHttpRequest();xo.open('GET', '$url_cron', true);xo.send('');},100);</script>"
617
-		  . "<noscript><div style=\"background-image: url('$url_cron');\"></div></noscript>";
618
-	}
619
-
620
-	return $texte;
567
+    $texte = '';
568
+
569
+    $time_to_next = queue_sleep_time_to_next_job();
570
+    // rien a faire si le prochain job est encore dans le futur
571
+    if ($time_to_next > 0 || defined('_DEBUG_BLOCK_QUEUE')) {
572
+        return $texte;
573
+    }
574
+
575
+    // ne pas relancer si on vient de lancer dans la meme seconde par un hit concurent
576
+    if (file_exists($lock = _DIR_TMP . 'cron.lock') && !(@filemtime($lock) < $_SERVER['REQUEST_TIME'])) {
577
+        return $texte;
578
+    }
579
+
580
+    @touch($lock);
581
+
582
+    // il y a des taches en attentes
583
+    // si depuis plus de 5min, on essaye de lancer le cron par tous les moyens pour rattraper le coup
584
+    // on est sans doute sur un site qui n'autorise pas http sortant ou avec peu de trafic
585
+    $urgent = false;
586
+    if ($time_to_next < -300) {
587
+        $urgent = true;
588
+    }
589
+
590
+    $url_cron = generer_url_action('cron', '', false, true);
591
+
592
+    if (!defined('_HTML_BG_CRON_FORCE') || !_HTML_BG_CRON_FORCE) {
593
+        if (queue_lancer_url_http_async($url_cron) && !$urgent) {
594
+            return $texte;
595
+        }
596
+    }
597
+
598
+    // si deja force, on retourne sans rien
599
+    if (defined('_DIRECT_CRON_FORCE')) {
600
+        return $texte;
601
+    }
602
+
603
+    // si c'est un bot
604
+    // inutile de faire un appel par image background,
605
+    // on force un appel direct en fin de hit
606
+    if ((defined('_IS_BOT') && _IS_BOT)) {
607
+        define('_DIRECT_CRON_FORCE', true);
608
+
609
+        return $texte;
610
+    }
611
+
612
+    if (!defined('_HTML_BG_CRON_INHIB') || !_HTML_BG_CRON_INHIB) {
613
+        // en derniere solution, on insere un appel xhr non bloquant ou une image background dans la page si pas de JS
614
+        $url_cron = generer_url_action('cron');
615
+        $texte = '<!-- SPIP-CRON -->'
616
+            . "<script>setTimeout(function(){var xo = new XMLHttpRequest();xo.open('GET', '$url_cron', true);xo.send('');},100);</script>"
617
+            . "<noscript><div style=\"background-image: url('$url_cron');\"></div></noscript>";
618
+    }
619
+
620
+    return $texte;
621 621
 }
622 622
 
623 623
 /**
@@ -626,73 +626,73 @@  discard block
 block discarded – undo
626 626
  * @return bool : true si l'url a pu être appelée en asynchrone, false sinon
627 627
  */
628 628
 function queue_lancer_url_http_async($url_cron) {
629
-	// methode la plus rapide :
630
-	// Si fsockopen est possible, on lance le cron via un socket en asynchrone
631
-	// si fsockopen echoue (disponibilite serveur, firewall) on essaye pas cURL
632
-	// car on a toutes les chances d'echouer pareil mais sans moyen de le savoir
633
-	// mais on renvoie false direct
634
-	if (function_exists('fsockopen')) {
635
-		$parts = parse_url($url_cron);
636
-
637
-		switch ($parts['scheme']) {
638
-			case 'https':
639
-				$scheme = 'ssl://';
640
-				$port = 443;
641
-				break;
642
-			case 'http':
643
-			default:
644
-				$scheme = '';
645
-				$port = 80;
646
-		}
647
-		$fp = @fsockopen(
648
-			$scheme . $parts['host'],
649
-			$parts['port'] ?? $port,
650
-			$errno,
651
-			$errstr,
652
-			1
653
-		);
654
-
655
-		if ($fp) {
656
-			$host_sent = $parts['host'];
657
-			if (isset($parts['port']) && $parts['port'] !== $port) {
658
-				$host_sent .= ':' . $parts['port'];
659
-			}
660
-			$timeout = 200; // ms
661
-			stream_set_timeout($fp, 0, $timeout * 1000);
662
-			$query = $parts['path'] . ($parts['query'] ? '?' . $parts['query'] : '');
663
-			$out = 'GET ' . $query . " HTTP/1.1\r\n";
664
-			$out .= 'Host: ' . $host_sent . "\r\n";
665
-			$out .= "Connection: Close\r\n\r\n";
666
-			fwrite($fp, $out);
667
-			spip_timer('read');
668
-			$t = 0;
669
-			// on lit la reponse si possible pour fermer proprement la connexion
670
-			// avec un timeout total de 200ms pour ne pas se bloquer
671
-			while (!feof($fp) && $t < $timeout) {
672
-				@fgets($fp, 1024);
673
-				$t += spip_timer('read', true);
674
-				spip_timer('read');
675
-			}
676
-			fclose($fp);
677
-			return true;
678
-		}
679
-	}
680
-	// si fsockopen n'est pas dispo on essaye cURL :
681
-	// lancer le cron par un cURL asynchrone si cURL est present
682
-	elseif (function_exists('curl_init')) {
683
-		//setting the curl parameters.
684
-		$ch = curl_init($url_cron);
685
-		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
686
-		// cf bug : http://www.php.net/manual/en/function.curl-setopt.php#104597
687
-		curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
688
-		// valeur mini pour que la requete soit lancee
689
-		curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200);
690
-		// lancer
691
-		curl_exec($ch);
692
-		// fermer
693
-		curl_close($ch);
694
-		return true;
695
-	}
696
-
697
-	return false;
629
+    // methode la plus rapide :
630
+    // Si fsockopen est possible, on lance le cron via un socket en asynchrone
631
+    // si fsockopen echoue (disponibilite serveur, firewall) on essaye pas cURL
632
+    // car on a toutes les chances d'echouer pareil mais sans moyen de le savoir
633
+    // mais on renvoie false direct
634
+    if (function_exists('fsockopen')) {
635
+        $parts = parse_url($url_cron);
636
+
637
+        switch ($parts['scheme']) {
638
+            case 'https':
639
+                $scheme = 'ssl://';
640
+                $port = 443;
641
+                break;
642
+            case 'http':
643
+            default:
644
+                $scheme = '';
645
+                $port = 80;
646
+        }
647
+        $fp = @fsockopen(
648
+            $scheme . $parts['host'],
649
+            $parts['port'] ?? $port,
650
+            $errno,
651
+            $errstr,
652
+            1
653
+        );
654
+
655
+        if ($fp) {
656
+            $host_sent = $parts['host'];
657
+            if (isset($parts['port']) && $parts['port'] !== $port) {
658
+                $host_sent .= ':' . $parts['port'];
659
+            }
660
+            $timeout = 200; // ms
661
+            stream_set_timeout($fp, 0, $timeout * 1000);
662
+            $query = $parts['path'] . ($parts['query'] ? '?' . $parts['query'] : '');
663
+            $out = 'GET ' . $query . " HTTP/1.1\r\n";
664
+            $out .= 'Host: ' . $host_sent . "\r\n";
665
+            $out .= "Connection: Close\r\n\r\n";
666
+            fwrite($fp, $out);
667
+            spip_timer('read');
668
+            $t = 0;
669
+            // on lit la reponse si possible pour fermer proprement la connexion
670
+            // avec un timeout total de 200ms pour ne pas se bloquer
671
+            while (!feof($fp) && $t < $timeout) {
672
+                @fgets($fp, 1024);
673
+                $t += spip_timer('read', true);
674
+                spip_timer('read');
675
+            }
676
+            fclose($fp);
677
+            return true;
678
+        }
679
+    }
680
+    // si fsockopen n'est pas dispo on essaye cURL :
681
+    // lancer le cron par un cURL asynchrone si cURL est present
682
+    elseif (function_exists('curl_init')) {
683
+        //setting the curl parameters.
684
+        $ch = curl_init($url_cron);
685
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
686
+        // cf bug : http://www.php.net/manual/en/function.curl-setopt.php#104597
687
+        curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
688
+        // valeur mini pour que la requete soit lancee
689
+        curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200);
690
+        // lancer
691
+        curl_exec($ch);
692
+        // fermer
693
+        curl_close($ch);
694
+        return true;
695
+    }
696
+
697
+    return false;
698 698
 }
Please login to merge, or discard this patch.
Spacing   +33 added lines, -34 removed lines patch added patch discarded remove patch
@@ -69,7 +69,7 @@  discard block
 block discarded – undo
69 69
 	$md5args = md5($arguments);
70 70
 
71 71
 	// si pas de date programee, des que possible
72
-	$duplicate_where = 'status=' . intval(_JQ_SCHEDULED) . ' AND ';
72
+	$duplicate_where = 'status='.intval(_JQ_SCHEDULED).' AND ';
73 73
 	if (!$time) {
74 74
 		$time = time();
75 75
 		$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
 			'id_job',
95 95
 			'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
 	) {
102 101
 		return $id_job;
@@ -108,9 +107,9 @@  discard block
 block discarded – undo
108 107
 	// doit s'effacer
109 108
 	if (
110 109
 		$no_duplicate
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,10 +121,10 @@  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') && $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 126
 			spip_logger('queue')->info(
128
-				'arguments job errones / longueur ' . strlen($args) . ' vs ' . strlen($arguments) . ' / valeur : '
127
+				'arguments job errones / longueur '.strlen($args).' vs '.strlen($arguments).' / valeur : '
129 128
 				. var_export($arguments, true)
130 129
 			);
131 130
 		}
@@ -154,7 +153,7 @@  discard block
 block discarded – undo
154 153
 function queue_purger() {
155 154
 	include_spip('base/abstract_sql');
156 155
 	sql_delete('spip_jobs');
157
-	sql_delete('spip_jobs_liens', 'id_job NOT IN (' . sql_get_select('id_job', 'spip_jobs') . ')');
156
+	sql_delete('spip_jobs_liens', 'id_job NOT IN ('.sql_get_select('id_job', 'spip_jobs').')');
158 157
 	include_spip('inc/genie');
159 158
 	genie_queue_watch_dist();
160 159
 }
@@ -170,8 +169,8 @@  discard block
 block discarded – undo
170 169
 	include_spip('base/abstract_sql');
171 170
 
172 171
 	if (
173
-		($row = sql_fetsel('fonction,inclure,date', 'spip_jobs', 'id_job=' . intval($id_job)))
174
-		&& ($res = sql_delete('spip_jobs', 'id_job=' . intval($id_job)))
172
+		($row = sql_fetsel('fonction,inclure,date', 'spip_jobs', 'id_job='.intval($id_job)))
173
+		&& ($res = sql_delete('spip_jobs', 'id_job='.intval($id_job)))
175 174
 	) {
176 175
 		queue_unlink_job($id_job);
177 176
 		// est-ce une tache cron qu'il faut relancer ?
@@ -221,7 +220,7 @@  discard block
 block discarded – undo
221 220
  *  resultat du sql_delete
222 221
  */
223 222
 function queue_unlink_job($id_job) {
224
-	return sql_delete('spip_jobs_liens', 'id_job=' . intval($id_job));
223
+	return sql_delete('spip_jobs_liens', 'id_job='.intval($id_job));
225 224
 }
226 225
 
227 226
 /**
@@ -239,7 +238,7 @@  discard block
 block discarded – undo
239 238
 	// deserialiser les arguments
240 239
 	$args = unserialize($row['args']);
241 240
 	if (!is_array($args)) {
242
-		$logger->info('arguments job errones ' . var_export($row, true));
241
+		$logger->info('arguments job errones '.var_export($row, true));
243 242
 		return false;
244 243
 	}
245 244
 
@@ -256,14 +255,14 @@  discard block
 block discarded – undo
256 255
 	}
257 256
 
258 257
 	if (!function_exists($fonction)) {
259
-		$logger->info("fonction $fonction ($inclure) inexistante " . var_export($row, true));
258
+		$logger->info("fonction $fonction ($inclure) inexistante ".var_export($row, true));
260 259
 
261 260
 		return false;
262 261
 	}
263 262
 
264
-	$logger->info('queue [' . $row['id_job'] . "]: $fonction() start");
263
+	$logger->info('queue ['.$row['id_job']."]: $fonction() start");
265 264
 	$res = $fonction(...$args);
266
-	$logger->info('queue [' . $row['id_job'] . "]: $fonction() end");
265
+	$logger->info('queue ['.$row['id_job']."]: $fonction() end");
267 266
 
268 267
 	return $res;
269 268
 }
@@ -337,19 +336,19 @@  discard block
 block discarded – undo
337 336
 	// lorsqu'un job cron n'a pas fini, sa priorite est descendue
338 337
 	// pour qu'il ne bloque pas les autres jobs en attente
339 338
 	if (is_array($force_jobs) && count($force_jobs)) {
340
-		$cond = 'status=' . intval(_JQ_SCHEDULED) . ' AND ' . sql_in('id_job', $force_jobs);
339
+		$cond = 'status='.intval(_JQ_SCHEDULED).' AND '.sql_in('id_job', $force_jobs);
341 340
 	} else {
342 341
 		$now = date('Y-m-d H:i:s', $time);
343
-		$cond = 'status=' . intval(_JQ_SCHEDULED) . ' AND date<=' . sql_quote($now);
342
+		$cond = 'status='.intval(_JQ_SCHEDULED).' AND date<='.sql_quote($now);
344 343
 	}
345 344
 
346 345
 	register_shutdown_function('queue_error_handler'); // recuperer les erreurs auant que possible
347
-	$res = sql_allfetsel('*', 'spip_jobs', $cond, '', 'priorite DESC,date', '0,' . (_JQ_MAX_JOBS_EXECUTE + 1));
346
+	$res = sql_allfetsel('*', 'spip_jobs', $cond, '', 'priorite DESC,date', '0,'.(_JQ_MAX_JOBS_EXECUTE + 1));
348 347
 	do {
349 348
 		if ($row = array_shift($res)) {
350 349
 			$nbj++;
351 350
 			// il faut un verrou, a base de sql_delete
352
-			if (sql_delete('spip_jobs', 'id_job=' . intval($row['id_job']) . ' AND status=' . intval(_JQ_SCHEDULED))) {
351
+			if (sql_delete('spip_jobs', 'id_job='.intval($row['id_job']).' AND status='.intval(_JQ_SCHEDULED))) {
353 352
 				#$logger->info("JQ schedule job ".$nbj." OK");
354 353
 				// on reinsert dans la base aussitot avec un status=_JQ_PENDING
355 354
 				$row['status'] = _JQ_PENDING;
@@ -364,9 +363,9 @@  discard block
 block discarded – undo
364 363
 				queue_close_job($row, $time, $result);
365 364
 			}
366 365
 		}
367
-		$logger->debug('JQ schedule job end time ' . $time);
366
+		$logger->debug('JQ schedule job end time '.$time);
368 367
 	} while ($nbj < _JQ_MAX_JOBS_EXECUTE && $row && $time < $end_time);
369
-	$logger->debug('JQ schedule end time ' . time());
368
+	$logger->debug('JQ schedule end time '.time());
370 369
 
371 370
 	if ($row = array_shift($res)) {
372 371
 		queue_update_next_job_time(0); // on sait qu'il y a encore des jobs a lancer ASAP
@@ -405,9 +404,9 @@  discard block
 block discarded – undo
405 404
 		}
406 405
 	}
407 406
 	// purger ses liens eventuels avec des objets
408
-	sql_delete('spip_jobs_liens', 'id_job=' . intval($row['id_job']));
407
+	sql_delete('spip_jobs_liens', 'id_job='.intval($row['id_job']));
409 408
 	// supprimer le job fini
410
-	sql_delete('spip_jobs', 'id_job=' . intval($row['id_job']));
409
+	sql_delete('spip_jobs', 'id_job='.intval($row['id_job']));
411 410
 }
412 411
 
413 412
 /**
@@ -480,18 +479,18 @@  discard block
 block discarded – undo
480 479
 	$res = sql_allfetsel(
481 480
 		'*',
482 481
 		'spip_jobs',
483
-		'status=' . intval(_JQ_PENDING) . ' AND date<' . sql_quote(date('Y-m-d H:i:s', $time - 180))
482
+		'status='.intval(_JQ_PENDING).' AND date<'.sql_quote(date('Y-m-d H:i:s', $time - 180))
484 483
 	);
485 484
 	if (is_array($res)) {
486 485
 		foreach ($res as $row) {
487 486
 			queue_close_job($row, $time);
488
-			spip_logger('job_mort')->error('queue_close_job car _JQ_PENDING depuis +180s : ' . print_r($row, true));
487
+			spip_logger('job_mort')->error('queue_close_job car _JQ_PENDING depuis +180s : '.print_r($row, true));
489 488
 		}
490 489
 	}
491 490
 
492 491
 	// chercher la date du prochain job si pas connu
493 492
 	if (is_null($next) || is_null(queue_sleep_time_to_next_job())) {
494
-		$date = sql_getfetsel('date', 'spip_jobs', 'status=' . intval(_JQ_SCHEDULED), '', 'date', '0,1');
493
+		$date = sql_getfetsel('date', 'spip_jobs', 'status='.intval(_JQ_SCHEDULED), '', 'date', '0,1');
495 494
 		$next = strtotime($date);
496 495
 	}
497 496
 	if (!is_null($next_time)) {
@@ -504,7 +503,7 @@  discard block
 block discarded – undo
504 503
 		if (is_null($nb_jobs_scheduled)) {
505 504
 			$nb_jobs_scheduled = sql_countsel(
506 505
 				'spip_jobs',
507
-				'status=' . intval(_JQ_SCHEDULED) . ' AND date<' . sql_quote(date('Y-m-d H:i:s', $time))
506
+				'status='.intval(_JQ_SCHEDULED).' AND date<'.sql_quote(date('Y-m-d H:i:s', $time))
508 507
 			);
509 508
 		} elseif ($next <= $time) {
510 509
 			$nb_jobs_scheduled++;
@@ -573,7 +572,7 @@  discard block
 block discarded – undo
573 572
 	}
574 573
 
575 574
 	// ne pas relancer si on vient de lancer dans la meme seconde par un hit concurent
576
-	if (file_exists($lock = _DIR_TMP . 'cron.lock') && !(@filemtime($lock) < $_SERVER['REQUEST_TIME'])) {
575
+	if (file_exists($lock = _DIR_TMP.'cron.lock') && !(@filemtime($lock) < $_SERVER['REQUEST_TIME'])) {
577 576
 		return $texte;
578 577
 	}
579 578
 
@@ -645,7 +644,7 @@  discard block
 block discarded – undo
645 644
 				$port = 80;
646 645
 		}
647 646
 		$fp = @fsockopen(
648
-			$scheme . $parts['host'],
647
+			$scheme.$parts['host'],
649 648
 			$parts['port'] ?? $port,
650 649
 			$errno,
651 650
 			$errstr,
@@ -655,13 +654,13 @@  discard block
 block discarded – undo
655 654
 		if ($fp) {
656 655
 			$host_sent = $parts['host'];
657 656
 			if (isset($parts['port']) && $parts['port'] !== $port) {
658
-				$host_sent .= ':' . $parts['port'];
657
+				$host_sent .= ':'.$parts['port'];
659 658
 			}
660 659
 			$timeout = 200; // ms
661 660
 			stream_set_timeout($fp, 0, $timeout * 1000);
662
-			$query = $parts['path'] . ($parts['query'] ? '?' . $parts['query'] : '');
663
-			$out = 'GET ' . $query . " HTTP/1.1\r\n";
664
-			$out .= 'Host: ' . $host_sent . "\r\n";
661
+			$query = $parts['path'].($parts['query'] ? '?'.$parts['query'] : '');
662
+			$out = 'GET '.$query." HTTP/1.1\r\n";
663
+			$out .= 'Host: '.$host_sent."\r\n";
665 664
 			$out .= "Connection: Close\r\n\r\n";
666 665
 			fwrite($fp, $out);
667 666
 			spip_timer('read');
Please login to merge, or discard this patch.
ecrire/inc/log.php 2 patches
Indentation   +25 added lines, -25 removed lines patch added patch discarded remove patch
@@ -11,35 +11,35 @@
 block discarded – undo
11 11
 \***************************************************************************/
12 12
 
13 13
 if (!defined('_ECRIRE_INC_VERSION')) {
14
-	return;
14
+    return;
15 15
 }
16 16
 
17 17
 /**
18 18
  * @deprecated 5.0 Utiliser spip_logger()
19 19
  */
20 20
 function inc_log_dist($message, $logname = null, $logdir = null, $logsuf = null) {
21
-	trigger_deprecation(
22
-		'spip',
23
-		'5.0',
24
-		'La fonction inc_log_dist() est déprécée.' .
25
-			' Utilisez spip_logger() à la place.'
26
-	);
27
-	static $pre = [
28
-		'HS:' => LogLevel::EMERGENCY,
29
-		'ALERTE:' => LogLevel::ALERT,
30
-		'CRITIQUE:' => LogLevel::CRITICAL,
31
-		'ERREUR:' => LogLevel::ERROR,
32
-		'WARNING:' => LogLevel::WARNING,
33
-		'!INFO:' => LogLevel::NOTICE,
34
-		'info:' => LogLevel::INFO,
35
-		'debug:' => LogLevel::DEBUG,
36
-	];
37
-	foreach ($pre as $start => $level) {
38
-		if (str_starts_with($message, $start)) {
39
-			spip_logger($logname)->log($level, ltrim(substr($message, strlen($start))));
40
-			return;
41
-		}
42
-	}
43
-	spip_logger($logname)->info($message);
44
-	return;
21
+    trigger_deprecation(
22
+        'spip',
23
+        '5.0',
24
+        'La fonction inc_log_dist() est déprécée.' .
25
+            ' Utilisez spip_logger() à la place.'
26
+    );
27
+    static $pre = [
28
+        'HS:' => LogLevel::EMERGENCY,
29
+        'ALERTE:' => LogLevel::ALERT,
30
+        'CRITIQUE:' => LogLevel::CRITICAL,
31
+        'ERREUR:' => LogLevel::ERROR,
32
+        'WARNING:' => LogLevel::WARNING,
33
+        '!INFO:' => LogLevel::NOTICE,
34
+        'info:' => LogLevel::INFO,
35
+        'debug:' => LogLevel::DEBUG,
36
+    ];
37
+    foreach ($pre as $start => $level) {
38
+        if (str_starts_with($message, $start)) {
39
+            spip_logger($logname)->log($level, ltrim(substr($message, strlen($start))));
40
+            return;
41
+        }
42
+    }
43
+    spip_logger($logname)->info($message);
44
+    return;
45 45
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -21,7 +21,7 @@
 block discarded – undo
21 21
 	trigger_deprecation(
22 22
 		'spip',
23 23
 		'5.0',
24
-		'La fonction inc_log_dist() est déprécée.' .
24
+		'La fonction inc_log_dist() est déprécée.'.
25 25
 			' Utilisez spip_logger() à la place.'
26 26
 	);
27 27
 	static $pre = [
Please login to merge, or discard this patch.
ecrire/inc/session.php 2 patches
Indentation   +497 added lines, -497 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
 
24 24
 
@@ -39,15 +39,15 @@  discard block
 block discarded – undo
39 39
  * @return bool|null|void
40 40
  */
41 41
 function inc_session_dist($auteur = false) {
42
-	if (is_numeric($auteur)) {
43
-		return supprimer_sessions($auteur, $auteur > 0);
44
-	} else {
45
-		if (is_array($auteur)) {
46
-			return ajouter_session($auteur);
47
-		} else {
48
-			return verifier_session($auteur);
49
-		}
50
-	}
42
+    if (is_numeric($auteur)) {
43
+        return supprimer_sessions($auteur, $auteur > 0);
44
+    } else {
45
+        if (is_array($auteur)) {
46
+            return ajouter_session($auteur);
47
+        } else {
48
+            return verifier_session($auteur);
49
+        }
50
+    }
51 51
 }
52 52
 
53 53
 
@@ -76,37 +76,37 @@  discard block
 block discarded – undo
76 76
  */
77 77
 function supprimer_sessions($id_auteur, $toutes = true, $actives = true) {
78 78
 
79
-	$nb_files = 0;
80
-	$nb_max_files = (defined('_MAX_NB_SESSIONS_OUVERTES') ? _MAX_NB_SESSIONS_OUVERTES : 1000);
81
-	spip_logger('session')->info("supprimer sessions auteur $id_auteur");
82
-	if ($toutes || $id_auteur !== $GLOBALS['visiteur_session']['id_auteur']) {
83
-		if ($dir = opendir(_DIR_SESSIONS)) {
84
-			$t = $_SERVER['REQUEST_TIME']  - (4 * _RENOUVELLE_ALEA); // 48h par defaut
85
-			$t_short = $_SERVER['REQUEST_TIME']  - max(_RENOUVELLE_ALEA / 4, 3 * 3600); // 3h par defaut
86
-			while (($f = readdir($dir)) !== false) {
87
-				$nb_files++;
88
-				if (preg_match(',^[^\d-]*(-?\d+)_\w{32}\.php[3]?$,', $f, $regs)) {
89
-					$f = _DIR_SESSIONS . $f;
90
-					if ($actives && $regs[1] == $id_auteur || $t > filemtime($f)) {
91
-						spip_unlink($f);
92
-					}
93
-					// si il y a trop de sessions ouvertes, on purge les sessions anonymes de plus de 3H
94
-					// cf http://core.spip.org/issues/3276
95
-					elseif ($nb_files > $nb_max_files && !intval($regs[1]) && $t_short > filemtime($f)) {
96
-						spip_unlink($f);
97
-					}
98
-				}
99
-			}
100
-		}
101
-	} else {
102
-		verifier_session();
103
-		if ($cookie = lire_cookie_session()) {
104
-			spip_unlink(chemin_fichier_session('alea_ephemere', $cookie, true));
105
-		}
106
-	}
107
-
108
-	// forcer le recalcul de la session courante
109
-	spip_session(true);
79
+    $nb_files = 0;
80
+    $nb_max_files = (defined('_MAX_NB_SESSIONS_OUVERTES') ? _MAX_NB_SESSIONS_OUVERTES : 1000);
81
+    spip_logger('session')->info("supprimer sessions auteur $id_auteur");
82
+    if ($toutes || $id_auteur !== $GLOBALS['visiteur_session']['id_auteur']) {
83
+        if ($dir = opendir(_DIR_SESSIONS)) {
84
+            $t = $_SERVER['REQUEST_TIME']  - (4 * _RENOUVELLE_ALEA); // 48h par defaut
85
+            $t_short = $_SERVER['REQUEST_TIME']  - max(_RENOUVELLE_ALEA / 4, 3 * 3600); // 3h par defaut
86
+            while (($f = readdir($dir)) !== false) {
87
+                $nb_files++;
88
+                if (preg_match(',^[^\d-]*(-?\d+)_\w{32}\.php[3]?$,', $f, $regs)) {
89
+                    $f = _DIR_SESSIONS . $f;
90
+                    if ($actives && $regs[1] == $id_auteur || $t > filemtime($f)) {
91
+                        spip_unlink($f);
92
+                    }
93
+                    // si il y a trop de sessions ouvertes, on purge les sessions anonymes de plus de 3H
94
+                    // cf http://core.spip.org/issues/3276
95
+                    elseif ($nb_files > $nb_max_files && !intval($regs[1]) && $t_short > filemtime($f)) {
96
+                        spip_unlink($f);
97
+                    }
98
+                }
99
+            }
100
+        }
101
+    } else {
102
+        verifier_session();
103
+        if ($cookie = lire_cookie_session()) {
104
+            spip_unlink(chemin_fichier_session('alea_ephemere', $cookie, true));
105
+        }
106
+    }
107
+
108
+    // forcer le recalcul de la session courante
109
+    spip_session(true);
110 110
 }
111 111
 
112 112
 /**
@@ -124,124 +124,124 @@  discard block
 block discarded – undo
124 124
  * @return bool|string
125 125
  */
126 126
 function ajouter_session($auteur) {
127
-	// Si le client a deja une session valide pour son id_auteur
128
-	// on conserve le meme fichier
129
-
130
-	// Attention un visiteur peut avoir une session et un id=0,
131
-	// => ne pas melanger les sessions des differents visiteurs
132
-	$id_auteur = isset($auteur['id_auteur']) ? intval($auteur['id_auteur']) : 0;
133
-
134
-	// Si ce n'est pas un inscrit (les inscrits ont toujours des choses en session)
135
-	// on va vérifier s'il y a vraiment des choses à écrire
136
-	if (!$id_auteur) {
137
-		// On supprime les données de base pour voir le contenu réel de la session
138
-		$auteur_verif = $auteur;
139
-		if (isset($auteur_verif['id_auteur'])) {
140
-			unset($auteur_verif['id_auteur']);
141
-		}
142
-		if (isset($auteur_verif['hash_env'])) {
143
-			unset($auteur_verif['hash_env']);
144
-		}
145
-		if (isset($auteur_verif['ip_change'])) {
146
-			unset($auteur_verif['ip_change']);
147
-		}
148
-		if (isset($auteur_verif['date_session'])) {
149
-			unset($auteur_verif['date_session']);
150
-		}
151
-
152
-		// Les variables vraiment nulle ne sont pas à prendre en compte non plus
153
-		foreach ($auteur_verif as $variable => $valeur) {
154
-			if ($valeur === null) {
155
-				unset($auteur_verif[$variable]);
156
-			}
157
-		}
158
-
159
-		// Si après ça la session est vide alors on supprime l'éventuel fichier et on arrête là
160
-		if (!$auteur_verif) {
161
-			if ($cookie = lire_cookie_session()) {
162
-				if (isset($_SESSION[$cookie])) {
163
-					unset($_SESSION[$cookie]);
164
-				}
165
-				unset($_COOKIE['spip_session']);
166
-			}
167
-
168
-			return false;
169
-		}
170
-	}
171
-
172
-	if (
173
-		(!$cookie = lire_cookie_session())
174
-		|| intval($cookie) !== $id_auteur
175
-	) {
176
-		$cookie = $id_auteur . '_' . md5(uniqid(random_int(0, mt_getrandmax()), true));
177
-	}
178
-
179
-	// Maintenant on sait qu'on a des choses à écrire
180
-	// On s'assure d'avoir au moins ces valeurs
181
-	$auteur['id_auteur'] = $id_auteur;
182
-	if (!isset($auteur['hash_env'])) {
183
-		$auteur['hash_env'] = hash_env();
184
-	}
185
-	if (!isset($auteur['ip_change'])) {
186
-		$auteur['ip_change'] = false;
187
-	}
188
-
189
-	if (!isset($auteur['date_session'])) {
190
-		$auteur['date_session'] = time();
191
-	}
192
-	if (
193
-		isset($auteur['prefs'])
194
-		&& is_string($auteur['prefs'])
195
-		&& ($prefs = @unserialize($auteur['prefs']))
196
-	) {
197
-		$auteur['prefs'] = $prefs;
198
-	}
199
-
200
-	$fichier_session = '';
201
-
202
-	// les sessions anonymes sont stockees dans $_SESSION
203
-	if (!$id_auteur) {
204
-		spip_php_session_start();
205
-		$_SESSION[$cookie] = preparer_ecriture_session($auteur);
206
-	} else {
207
-		$fichier_session = chemin_fichier_session('alea_ephemere', $cookie);
208
-		if (!ecrire_fichier_session($fichier_session, $auteur)) {
209
-			spip_logger('session')->emergency('Echec ecriture fichier session ' . $fichier_session);
210
-			include_spip('inc/minipres');
211
-			echo minipres();
212
-			exit;
213
-		}
214
-		// verifier et limiter le nombre maxi de sessions
215
-		// https://core.spip.net/issues/3807
216
-		lister_sessions_auteur($id_auteur);
217
-	}
218
-
219
-	// poser le cookie de session SPIP
220
-	include_spip('inc/cookie');
221
-	$duree = definir_duree_cookie_session($auteur);
222
-	$cookie = set_cookie_session($cookie, time() + $duree);
223
-	spip_logger('session')->info("ajoute session $fichier_session cookie $duree");
224
-
225
-	// Si on est admin, poser le cookie de correspondance
226
-	if (!function_exists('autoriser')) {
227
-		include_spip('inc/autoriser');
228
-	}
229
-	if (autoriser('ecrire', '', '', $auteur) && _DUREE_COOKIE_ADMIN) {
230
-		spip_setcookie(
231
-			'spip_admin',
232
-			'@' . ($auteur['email'] ?: $auteur['login']),
233
-			time() + max(_DUREE_COOKIE_ADMIN, $duree),
234
-			httponly: true
235
-		);
236
-	} else {
237
-		// sinon le supprimer ...
238
-		spip_setcookie('spip_admin', '', 1, httponly: true);
239
-	}
240
-
241
-	# on en profite pour purger les vieilles sessions anonymes abandonnees
242
-	# supprimer_sessions(0, true, false);
243
-
244
-	return $cookie;
127
+    // Si le client a deja une session valide pour son id_auteur
128
+    // on conserve le meme fichier
129
+
130
+    // Attention un visiteur peut avoir une session et un id=0,
131
+    // => ne pas melanger les sessions des differents visiteurs
132
+    $id_auteur = isset($auteur['id_auteur']) ? intval($auteur['id_auteur']) : 0;
133
+
134
+    // Si ce n'est pas un inscrit (les inscrits ont toujours des choses en session)
135
+    // on va vérifier s'il y a vraiment des choses à écrire
136
+    if (!$id_auteur) {
137
+        // On supprime les données de base pour voir le contenu réel de la session
138
+        $auteur_verif = $auteur;
139
+        if (isset($auteur_verif['id_auteur'])) {
140
+            unset($auteur_verif['id_auteur']);
141
+        }
142
+        if (isset($auteur_verif['hash_env'])) {
143
+            unset($auteur_verif['hash_env']);
144
+        }
145
+        if (isset($auteur_verif['ip_change'])) {
146
+            unset($auteur_verif['ip_change']);
147
+        }
148
+        if (isset($auteur_verif['date_session'])) {
149
+            unset($auteur_verif['date_session']);
150
+        }
151
+
152
+        // Les variables vraiment nulle ne sont pas à prendre en compte non plus
153
+        foreach ($auteur_verif as $variable => $valeur) {
154
+            if ($valeur === null) {
155
+                unset($auteur_verif[$variable]);
156
+            }
157
+        }
158
+
159
+        // Si après ça la session est vide alors on supprime l'éventuel fichier et on arrête là
160
+        if (!$auteur_verif) {
161
+            if ($cookie = lire_cookie_session()) {
162
+                if (isset($_SESSION[$cookie])) {
163
+                    unset($_SESSION[$cookie]);
164
+                }
165
+                unset($_COOKIE['spip_session']);
166
+            }
167
+
168
+            return false;
169
+        }
170
+    }
171
+
172
+    if (
173
+        (!$cookie = lire_cookie_session())
174
+        || intval($cookie) !== $id_auteur
175
+    ) {
176
+        $cookie = $id_auteur . '_' . md5(uniqid(random_int(0, mt_getrandmax()), true));
177
+    }
178
+
179
+    // Maintenant on sait qu'on a des choses à écrire
180
+    // On s'assure d'avoir au moins ces valeurs
181
+    $auteur['id_auteur'] = $id_auteur;
182
+    if (!isset($auteur['hash_env'])) {
183
+        $auteur['hash_env'] = hash_env();
184
+    }
185
+    if (!isset($auteur['ip_change'])) {
186
+        $auteur['ip_change'] = false;
187
+    }
188
+
189
+    if (!isset($auteur['date_session'])) {
190
+        $auteur['date_session'] = time();
191
+    }
192
+    if (
193
+        isset($auteur['prefs'])
194
+        && is_string($auteur['prefs'])
195
+        && ($prefs = @unserialize($auteur['prefs']))
196
+    ) {
197
+        $auteur['prefs'] = $prefs;
198
+    }
199
+
200
+    $fichier_session = '';
201
+
202
+    // les sessions anonymes sont stockees dans $_SESSION
203
+    if (!$id_auteur) {
204
+        spip_php_session_start();
205
+        $_SESSION[$cookie] = preparer_ecriture_session($auteur);
206
+    } else {
207
+        $fichier_session = chemin_fichier_session('alea_ephemere', $cookie);
208
+        if (!ecrire_fichier_session($fichier_session, $auteur)) {
209
+            spip_logger('session')->emergency('Echec ecriture fichier session ' . $fichier_session);
210
+            include_spip('inc/minipres');
211
+            echo minipres();
212
+            exit;
213
+        }
214
+        // verifier et limiter le nombre maxi de sessions
215
+        // https://core.spip.net/issues/3807
216
+        lister_sessions_auteur($id_auteur);
217
+    }
218
+
219
+    // poser le cookie de session SPIP
220
+    include_spip('inc/cookie');
221
+    $duree = definir_duree_cookie_session($auteur);
222
+    $cookie = set_cookie_session($cookie, time() + $duree);
223
+    spip_logger('session')->info("ajoute session $fichier_session cookie $duree");
224
+
225
+    // Si on est admin, poser le cookie de correspondance
226
+    if (!function_exists('autoriser')) {
227
+        include_spip('inc/autoriser');
228
+    }
229
+    if (autoriser('ecrire', '', '', $auteur) && _DUREE_COOKIE_ADMIN) {
230
+        spip_setcookie(
231
+            'spip_admin',
232
+            '@' . ($auteur['email'] ?: $auteur['login']),
233
+            time() + max(_DUREE_COOKIE_ADMIN, $duree),
234
+            httponly: true
235
+        );
236
+    } else {
237
+        // sinon le supprimer ...
238
+        spip_setcookie('spip_admin', '', 1, httponly: true);
239
+    }
240
+
241
+    # on en profite pour purger les vieilles sessions anonymes abandonnees
242
+    # supprimer_sessions(0, true, false);
243
+
244
+    return $cookie;
245 245
 }
246 246
 
247 247
 /**
@@ -261,54 +261,54 @@  discard block
 block discarded – undo
261 261
  *     Durée en secondes
262 262
 **/
263 263
 function definir_duree_cookie_session($auteur) {
264
-	$coef = 2;
265
-	if (isset($auteur['cookie'])) {
266
-		if (is_numeric($auteur['cookie'])) {
267
-			$coef = $auteur['cookie'];
268
-		} else {
269
-			$coef = 20;
270
-		}
271
-	}
272
-	return (int)(_RENOUVELLE_ALEA * $coef);
264
+    $coef = 2;
265
+    if (isset($auteur['cookie'])) {
266
+        if (is_numeric($auteur['cookie'])) {
267
+            $coef = $auteur['cookie'];
268
+        } else {
269
+            $coef = 20;
270
+        }
271
+    }
272
+    return (int)(_RENOUVELLE_ALEA * $coef);
273 273
 }
274 274
 
275 275
 /**
276 276
  * Lire le cookie de session et le valider de façon centralisée
277 277
  */
278 278
 function lire_cookie_session(bool $accepter_test = false): ?string {
279
-	static $cookie_valide = [];
280
-	// pas de cookie ?
281
-	if (!isset($_COOKIE['spip_session'])) {
282
-		return null;
283
-	}
284
-
285
-	if (array_key_exists($_COOKIE['spip_session'], $cookie_valide)) {
286
-		return $cookie_valide[$_COOKIE['spip_session']];
287
-	}
288
-
289
-	if ($accepter_test && $_COOKIE['spip_session'] === 'test_echec_cookie') {
290
-		return 'test_echec_cookie';
291
-	}
292
-
293
-	if (!preg_match(",^\d+_[0-9a-f]{32}$,", $_COOKIE['spip_session'])) {
294
-		// cookie invalide ?
295
-		effacer_cookie_session();
296
-		return null;
297
-	}
298
-
299
-	// ok
300
-	$cookie_valide[$_COOKIE['spip_session']] = $_COOKIE['spip_session'];
301
-
302
-	return $_COOKIE['spip_session'];
279
+    static $cookie_valide = [];
280
+    // pas de cookie ?
281
+    if (!isset($_COOKIE['spip_session'])) {
282
+        return null;
283
+    }
284
+
285
+    if (array_key_exists($_COOKIE['spip_session'], $cookie_valide)) {
286
+        return $cookie_valide[$_COOKIE['spip_session']];
287
+    }
288
+
289
+    if ($accepter_test && $_COOKIE['spip_session'] === 'test_echec_cookie') {
290
+        return 'test_echec_cookie';
291
+    }
292
+
293
+    if (!preg_match(",^\d+_[0-9a-f]{32}$,", $_COOKIE['spip_session'])) {
294
+        // cookie invalide ?
295
+        effacer_cookie_session();
296
+        return null;
297
+    }
298
+
299
+    // ok
300
+    $cookie_valide[$_COOKIE['spip_session']] = $_COOKIE['spip_session'];
301
+
302
+    return $_COOKIE['spip_session'];
303 303
 }
304 304
 
305 305
 /** Annuler le cookie de session */
306 306
 function effacer_cookie_session(): void {
307
-	// supprimer le cookie
308
-	if (isset($_COOKIE['spip_session'])) {
309
-		spip_setcookie('spip_session', '', time() - 24 * 3600, httponly: true);
310
-		unset($_COOKIE['spip_session']);
311
-	}
307
+    // supprimer le cookie
308
+    if (isset($_COOKIE['spip_session'])) {
309
+        spip_setcookie('spip_session', '', time() - 24 * 3600, httponly: true);
310
+        unset($_COOKIE['spip_session']);
311
+    }
312 312
 }
313 313
 
314 314
 /**
@@ -320,20 +320,20 @@  discard block
 block discarded – undo
320 320
  *   timestamp d'expiration
321 321
  */
322 322
 function set_cookie_session(?string $valeur_cookie = null, int $expires = 0): ?string {
323
-	if ($valeur_cookie !== null) {
324
-		// vérifié par lire_cookie_session()
325
-		$_COOKIE['spip_session'] = $valeur_cookie;
326
-	}
323
+    if ($valeur_cookie !== null) {
324
+        // vérifié par lire_cookie_session()
325
+        $_COOKIE['spip_session'] = $valeur_cookie;
326
+    }
327 327
 
328
-	$valeur_cookie = lire_cookie_session();
328
+    $valeur_cookie = lire_cookie_session();
329 329
 
330
-	if ($valeur_cookie === null) {
331
-		effacer_cookie_session();
332
-	} else {
333
-		spip_setcookie('spip_session', $valeur_cookie, $expires, httponly: true);
334
-	}
330
+    if ($valeur_cookie === null) {
331
+        effacer_cookie_session();
332
+    } else {
333
+        spip_setcookie('spip_session', $valeur_cookie, $expires, httponly: true);
334
+    }
335 335
 
336
-	return $valeur_cookie;
336
+    return $valeur_cookie;
337 337
 }
338 338
 
339 339
 /**
@@ -353,91 +353,91 @@  discard block
 block discarded – undo
353 353
  * @return bool|int|null
354 354
  */
355 355
 function verifier_session($change = false) {
356
-	// si pas de cookie, c'est fichu
357
-	if (!$cookie = lire_cookie_session()) {
358
-		return false;
359
-	}
360
-
361
-	$fichier_session = '';
362
-
363
-	// est-ce une session anonyme ?
364
-	if (!intval($cookie)) {
365
-		spip_php_session_start();
366
-		if (!isset($_SESSION[$cookie]) || !is_array($_SESSION[$cookie])) {
367
-			return false;
368
-		}
369
-		$GLOBALS['visiteur_session'] = $_SESSION[$cookie];
370
-	} else {
371
-		// Tester avec alea courant
372
-		$fichier_session = chemin_fichier_session('alea_ephemere', $cookie, true);
373
-		if ($fichier_session && @file_exists($fichier_session)) {
374
-			include($fichier_session);
375
-		} else {
376
-			// Sinon, tester avec alea precedent
377
-			$fichier_session = chemin_fichier_session('alea_ephemere_ancien', $cookie, true);
378
-			if (!$fichier_session || !@file_exists($fichier_session)) {
379
-				return false;
380
-			}
381
-
382
-			// Renouveler la session avec l'alea courant
383
-			include($fichier_session);
384
-			spip_logger('session')->info('renouvelle session ' . $GLOBALS['visiteur_session']['id_auteur']);
385
-			spip_unlink($fichier_session);
386
-			ajouter_session($GLOBALS['visiteur_session']);
387
-		}
388
-	}
389
-
390
-	// Compatibilite ascendante : auteur_session est visiteur_session si
391
-	// c'est un auteur SPIP authentifie (tandis qu'un visiteur_session peut
392
-	// n'etre qu'identifie, sans aucune authentification).
393
-
394
-	if (isset($GLOBALS['visiteur_session']['id_auteur']) && $GLOBALS['visiteur_session']['id_auteur']) {
395
-		$GLOBALS['auteur_session'] = &$GLOBALS['visiteur_session'];
396
-	}
397
-
398
-
399
-	// Si l'adresse IP change, inc/presentation mettra une balise image
400
-	// avec un URL de rappel demandant a changer le nom de la session.
401
-	// Seul celui qui a l'IP d'origine est rejoue
402
-	// ainsi un eventuel voleur de cookie ne pourrait pas deconnecter
403
-	// sa victime, mais se ferait deconnecter par elle.
404
-	if (hash_env() != $GLOBALS['visiteur_session']['hash_env']) {
405
-		if (!$GLOBALS['visiteur_session']['ip_change']) {
406
-			define('_SESSION_REJOUER', true);
407
-			$GLOBALS['visiteur_session']['ip_change'] = true;
408
-			ajouter_session($GLOBALS['visiteur_session']);
409
-		} else {
410
-			if ($change) {
411
-				spip_logger('session')->info('session non rejouee, vol de cookie ?');
412
-			}
413
-		}
414
-	} else {
415
-		if ($change) {
416
-			spip_logger('session')->info("rejoue session $fichier_session $cookie");
417
-			if ($fichier_session) {
418
-				spip_unlink($fichier_session);
419
-			}
420
-			$GLOBALS['visiteur_session']['ip_change'] = false;
421
-			unset($_COOKIE['spip_session']);
422
-			ajouter_session($GLOBALS['visiteur_session']);
423
-		}
424
-	}
425
-
426
-	// Si la session a ete initiee il y a trop longtemps, elle est annulee
427
-	if (
428
-		isset($GLOBALS['visiteur_session'])
429
-		&& defined('_AGE_SESSION_MAX')
430
-		&& _AGE_SESSION_MAX > 0
431
-		&& time() - @$GLOBALS['visiteur_session']['date_session'] > _AGE_SESSION_MAX
432
-	) {
433
-		unset($GLOBALS['visiteur_session']);
434
-
435
-		return false;
436
-	}
437
-
438
-	return is_numeric($GLOBALS['visiteur_session']['id_auteur'])
439
-		? $GLOBALS['visiteur_session']['id_auteur']
440
-		: null;
356
+    // si pas de cookie, c'est fichu
357
+    if (!$cookie = lire_cookie_session()) {
358
+        return false;
359
+    }
360
+
361
+    $fichier_session = '';
362
+
363
+    // est-ce une session anonyme ?
364
+    if (!intval($cookie)) {
365
+        spip_php_session_start();
366
+        if (!isset($_SESSION[$cookie]) || !is_array($_SESSION[$cookie])) {
367
+            return false;
368
+        }
369
+        $GLOBALS['visiteur_session'] = $_SESSION[$cookie];
370
+    } else {
371
+        // Tester avec alea courant
372
+        $fichier_session = chemin_fichier_session('alea_ephemere', $cookie, true);
373
+        if ($fichier_session && @file_exists($fichier_session)) {
374
+            include($fichier_session);
375
+        } else {
376
+            // Sinon, tester avec alea precedent
377
+            $fichier_session = chemin_fichier_session('alea_ephemere_ancien', $cookie, true);
378
+            if (!$fichier_session || !@file_exists($fichier_session)) {
379
+                return false;
380
+            }
381
+
382
+            // Renouveler la session avec l'alea courant
383
+            include($fichier_session);
384
+            spip_logger('session')->info('renouvelle session ' . $GLOBALS['visiteur_session']['id_auteur']);
385
+            spip_unlink($fichier_session);
386
+            ajouter_session($GLOBALS['visiteur_session']);
387
+        }
388
+    }
389
+
390
+    // Compatibilite ascendante : auteur_session est visiteur_session si
391
+    // c'est un auteur SPIP authentifie (tandis qu'un visiteur_session peut
392
+    // n'etre qu'identifie, sans aucune authentification).
393
+
394
+    if (isset($GLOBALS['visiteur_session']['id_auteur']) && $GLOBALS['visiteur_session']['id_auteur']) {
395
+        $GLOBALS['auteur_session'] = &$GLOBALS['visiteur_session'];
396
+    }
397
+
398
+
399
+    // Si l'adresse IP change, inc/presentation mettra une balise image
400
+    // avec un URL de rappel demandant a changer le nom de la session.
401
+    // Seul celui qui a l'IP d'origine est rejoue
402
+    // ainsi un eventuel voleur de cookie ne pourrait pas deconnecter
403
+    // sa victime, mais se ferait deconnecter par elle.
404
+    if (hash_env() != $GLOBALS['visiteur_session']['hash_env']) {
405
+        if (!$GLOBALS['visiteur_session']['ip_change']) {
406
+            define('_SESSION_REJOUER', true);
407
+            $GLOBALS['visiteur_session']['ip_change'] = true;
408
+            ajouter_session($GLOBALS['visiteur_session']);
409
+        } else {
410
+            if ($change) {
411
+                spip_logger('session')->info('session non rejouee, vol de cookie ?');
412
+            }
413
+        }
414
+    } else {
415
+        if ($change) {
416
+            spip_logger('session')->info("rejoue session $fichier_session $cookie");
417
+            if ($fichier_session) {
418
+                spip_unlink($fichier_session);
419
+            }
420
+            $GLOBALS['visiteur_session']['ip_change'] = false;
421
+            unset($_COOKIE['spip_session']);
422
+            ajouter_session($GLOBALS['visiteur_session']);
423
+        }
424
+    }
425
+
426
+    // Si la session a ete initiee il y a trop longtemps, elle est annulee
427
+    if (
428
+        isset($GLOBALS['visiteur_session'])
429
+        && defined('_AGE_SESSION_MAX')
430
+        && _AGE_SESSION_MAX > 0
431
+        && time() - @$GLOBALS['visiteur_session']['date_session'] > _AGE_SESSION_MAX
432
+    ) {
433
+        unset($GLOBALS['visiteur_session']);
434
+
435
+        return false;
436
+    }
437
+
438
+    return is_numeric($GLOBALS['visiteur_session']['id_auteur'])
439
+        ? $GLOBALS['visiteur_session']['id_auteur']
440
+        : null;
441 441
 }
442 442
 
443 443
 /**
@@ -452,7 +452,7 @@  discard block
 block discarded – undo
452 452
  *     Valeur, si trouvée, `null` sinon.
453 453
  */
454 454
 function session_get($nom) {
455
-	return $GLOBALS['visiteur_session'][$nom] ?? null;
455
+    return $GLOBALS['visiteur_session'][$nom] ?? null;
456 456
 }
457 457
 
458 458
 
@@ -468,32 +468,32 @@  discard block
 block discarded – undo
468 468
  * @return void|array
469 469
  */
470 470
 function session_set($nom, $val = null) {
471
-	static $remove = [];
472
-	static $actualiser_sessions = false;
473
-	if ($nom === false) {
474
-		return $remove;
475
-	}
476
-	if (is_null($val)) {
477
-		// rien a faire
478
-		if (!isset($GLOBALS['visiteur_session'][$nom])) {
479
-			return;
480
-		}
481
-		unset($GLOBALS['visiteur_session'][$nom]);
482
-		$remove[] = $nom;
483
-	} else {
484
-		// On ajoute la valeur dans la globale
485
-		$GLOBALS['visiteur_session'][$nom] = $val;
486
-		if ($remove) {
487
-			$remove = array_diff($remove, [$nom]);
488
-		}
489
-	}
490
-	if (!$actualiser_sessions) {
491
-		// il faut creer la session si on en a pas, la premiere fois
492
-		ajouter_session($GLOBALS['visiteur_session']);
493
-		// in register la fonction qui mettra a jour toutes les sessions en fin de hit
494
-		register_shutdown_function('terminer_actualiser_sessions');
495
-		$actualiser_sessions = true;
496
-	}
471
+    static $remove = [];
472
+    static $actualiser_sessions = false;
473
+    if ($nom === false) {
474
+        return $remove;
475
+    }
476
+    if (is_null($val)) {
477
+        // rien a faire
478
+        if (!isset($GLOBALS['visiteur_session'][$nom])) {
479
+            return;
480
+        }
481
+        unset($GLOBALS['visiteur_session'][$nom]);
482
+        $remove[] = $nom;
483
+    } else {
484
+        // On ajoute la valeur dans la globale
485
+        $GLOBALS['visiteur_session'][$nom] = $val;
486
+        if ($remove) {
487
+            $remove = array_diff($remove, [$nom]);
488
+        }
489
+    }
490
+    if (!$actualiser_sessions) {
491
+        // il faut creer la session si on en a pas, la premiere fois
492
+        ajouter_session($GLOBALS['visiteur_session']);
493
+        // in register la fonction qui mettra a jour toutes les sessions en fin de hit
494
+        register_shutdown_function('terminer_actualiser_sessions');
495
+        $actualiser_sessions = true;
496
+    }
497 497
 }
498 498
 
499 499
 /**
@@ -502,12 +502,12 @@  discard block
 block discarded – undo
502 502
  * @uses actualiser_sessions()
503 503
  */
504 504
 function terminer_actualiser_sessions() {
505
-	// se remettre dans le dossier de travail au cas ou Apache a change
506
-	chdir(_ROOT_CWD);
507
-	// recuperer les variables a effacer
508
-	$remove = session_set(false);
509
-	// mettre a jour toutes les sessions
510
-	actualiser_sessions($GLOBALS['visiteur_session'], $remove);
505
+    // se remettre dans le dossier de travail au cas ou Apache a change
506
+    chdir(_ROOT_CWD);
507
+    // recuperer les variables a effacer
508
+    $remove = session_set(false);
509
+    // mettre a jour toutes les sessions
510
+    actualiser_sessions($GLOBALS['visiteur_session'], $remove);
511 511
 }
512 512
 
513 513
 
@@ -532,83 +532,83 @@  discard block
 block discarded – undo
532 532
  */
533 533
 function actualiser_sessions($auteur, $supprimer_cles = []) {
534 534
 
535
-	$id_auteur = isset($auteur['id_auteur']) ? intval($auteur['id_auteur']) : 0;
536
-	$id_auteur_courant = isset($GLOBALS['visiteur_session']['id_auteur']) ? intval($GLOBALS['visiteur_session']['id_auteur']) : 0;
537
-
538
-	// si l'auteur est celui de la session courante, verifier/creer la session si besoin
539
-	$fichier_session_courante = '';
540
-	if ($id_auteur == $id_auteur_courant) {
541
-		$auteur = array_merge($GLOBALS['visiteur_session'], $auteur);
542
-		ajouter_session($auteur);
543
-		if ($id_auteur && ($cookie = lire_cookie_session())) {
544
-			$fichier_session_courante = chemin_fichier_session('alea_ephemere', $cookie);
545
-		}
546
-	}
547
-
548
-	// si session anonyme on ne fait rien d'autre ici : les sessions anonymes sont non partagees
549
-	if (!$id_auteur) {
550
-		return;
551
-	}
552
-
553
-	// les préférences sont désérialisées, toujours.
554
-	// [fixme] Le champ 'prefs' sert aussi à l’inscription
555
-	if (isset($auteur['prefs']) && is_string($auteur['prefs'])) {
556
-		$auteur['prefs'] = @unserialize($auteur['prefs']);
557
-		if (!is_array($auteur['prefs'])) {
558
-			$auteur['prefs'] = [];
559
-		}
560
-	}
561
-
562
-	// memoriser l'auteur courant (celui qui modifie la fiche)
563
-	$sauve = $GLOBALS['visiteur_session'];
564
-
565
-	// .. mettre a jour les sessions de l'auteur cible
566
-	// attention au $ final pour ne pas risquer d'embarquer un .php.jeton temporaire
567
-	// cree par une ecriture concurente d'une session (fichier atomique temporaire)
568
-	$sessions = lister_sessions_auteur($id_auteur);
569
-
570
-	// 1ere passe : lire et fusionner les sessions
571
-	foreach ($sessions as $session) {
572
-		$GLOBALS['visiteur_session'] = [];
573
-		// a pu etre supprime entre le preg initial et le moment ou l'on arrive la (concurrence)
574
-		if (
575
-			$session !== $fichier_session_courante
576
-			&& @file_exists($session)
577
-		) {
578
-			include $session; # $GLOBALS['visiteur_session'] est alors l'auteur cible
579
-
580
-			$auteur = array_merge($GLOBALS['visiteur_session'], $auteur);
581
-		}
582
-	}
583
-
584
-	// supprimer les eventuelles cles dont on ne veut plus
585
-	foreach ($supprimer_cles as $cle) {
586
-		unset($auteur[$cle]);
587
-	}
588
-
589
-	$auteur_session = preparer_ecriture_session($auteur);
590
-
591
-	// seconde passe : ecrire les sessions qui ne sont pas a jour
592
-	foreach ($sessions as $session) {
593
-		$GLOBALS['visiteur_session'] = [];
594
-		// a pu etre supprime entre le preg initial et le moment ou l'on arrive la (concurrence)
595
-		if (@file_exists($session)) {
596
-			include $session; # $GLOBALS['visiteur_session'] est alors l'auteur cible
597
-
598
-			// est-ce que cette session est a mettre a jour ?
599
-			if ($auteur_session != $GLOBALS['visiteur_session']) {
600
-				ecrire_fichier_session($session, $auteur);
601
-			}
602
-		}
603
-	}
604
-
605
-	if ($id_auteur == $id_auteur_courant) {
606
-		$GLOBALS['visiteur_session'] = $auteur;
607
-		$GLOBALS['auteur_session'] = &$GLOBALS['visiteur_session'];
608
-	} else {
609
-		// restaurer l'auteur courant
610
-		$GLOBALS['visiteur_session'] = $sauve;
611
-	}
535
+    $id_auteur = isset($auteur['id_auteur']) ? intval($auteur['id_auteur']) : 0;
536
+    $id_auteur_courant = isset($GLOBALS['visiteur_session']['id_auteur']) ? intval($GLOBALS['visiteur_session']['id_auteur']) : 0;
537
+
538
+    // si l'auteur est celui de la session courante, verifier/creer la session si besoin
539
+    $fichier_session_courante = '';
540
+    if ($id_auteur == $id_auteur_courant) {
541
+        $auteur = array_merge($GLOBALS['visiteur_session'], $auteur);
542
+        ajouter_session($auteur);
543
+        if ($id_auteur && ($cookie = lire_cookie_session())) {
544
+            $fichier_session_courante = chemin_fichier_session('alea_ephemere', $cookie);
545
+        }
546
+    }
547
+
548
+    // si session anonyme on ne fait rien d'autre ici : les sessions anonymes sont non partagees
549
+    if (!$id_auteur) {
550
+        return;
551
+    }
552
+
553
+    // les préférences sont désérialisées, toujours.
554
+    // [fixme] Le champ 'prefs' sert aussi à l’inscription
555
+    if (isset($auteur['prefs']) && is_string($auteur['prefs'])) {
556
+        $auteur['prefs'] = @unserialize($auteur['prefs']);
557
+        if (!is_array($auteur['prefs'])) {
558
+            $auteur['prefs'] = [];
559
+        }
560
+    }
561
+
562
+    // memoriser l'auteur courant (celui qui modifie la fiche)
563
+    $sauve = $GLOBALS['visiteur_session'];
564
+
565
+    // .. mettre a jour les sessions de l'auteur cible
566
+    // attention au $ final pour ne pas risquer d'embarquer un .php.jeton temporaire
567
+    // cree par une ecriture concurente d'une session (fichier atomique temporaire)
568
+    $sessions = lister_sessions_auteur($id_auteur);
569
+
570
+    // 1ere passe : lire et fusionner les sessions
571
+    foreach ($sessions as $session) {
572
+        $GLOBALS['visiteur_session'] = [];
573
+        // a pu etre supprime entre le preg initial et le moment ou l'on arrive la (concurrence)
574
+        if (
575
+            $session !== $fichier_session_courante
576
+            && @file_exists($session)
577
+        ) {
578
+            include $session; # $GLOBALS['visiteur_session'] est alors l'auteur cible
579
+
580
+            $auteur = array_merge($GLOBALS['visiteur_session'], $auteur);
581
+        }
582
+    }
583
+
584
+    // supprimer les eventuelles cles dont on ne veut plus
585
+    foreach ($supprimer_cles as $cle) {
586
+        unset($auteur[$cle]);
587
+    }
588
+
589
+    $auteur_session = preparer_ecriture_session($auteur);
590
+
591
+    // seconde passe : ecrire les sessions qui ne sont pas a jour
592
+    foreach ($sessions as $session) {
593
+        $GLOBALS['visiteur_session'] = [];
594
+        // a pu etre supprime entre le preg initial et le moment ou l'on arrive la (concurrence)
595
+        if (@file_exists($session)) {
596
+            include $session; # $GLOBALS['visiteur_session'] est alors l'auteur cible
597
+
598
+            // est-ce que cette session est a mettre a jour ?
599
+            if ($auteur_session != $GLOBALS['visiteur_session']) {
600
+                ecrire_fichier_session($session, $auteur);
601
+            }
602
+        }
603
+    }
604
+
605
+    if ($id_auteur == $id_auteur_courant) {
606
+        $GLOBALS['visiteur_session'] = $auteur;
607
+        $GLOBALS['auteur_session'] = &$GLOBALS['visiteur_session'];
608
+    } else {
609
+        // restaurer l'auteur courant
610
+        $GLOBALS['visiteur_session'] = $sauve;
611
+    }
612 612
 }
613 613
 
614 614
 /**
@@ -622,48 +622,48 @@  discard block
 block discarded – undo
622 622
  */
623 623
 function lister_sessions_auteur($id_auteur, $nb_max = null) {
624 624
 
625
-	if (is_null($nb_max)) {
626
-		if (!defined('_NB_SESSIONS_MAX')) {
627
-			define('_NB_SESSIONS_MAX', 100);
628
-		}
629
-		$nb_max = _NB_SESSIONS_MAX;
630
-	}
631
-
632
-	// liste des sessions
633
-	$sessions = preg_files(_DIR_SESSIONS, '/' . $id_auteur . '_.*\.php$');
634
-
635
-	// si on en a plus que la limite, supprimer les plus vieilles
636
-	// si ce ne sont pas des sessions anonymes car elles sont alors chacune differentes
637
-	if (
638
-		$id_auteur
639
-		&& count($sessions) > $nb_max
640
-	) {
641
-		// limiter le nombre de sessions ouvertes par un auteur
642
-		// filemtime sur les sessions
643
-		$sessions = array_flip($sessions);
644
-
645
-		// 1ere passe : lire les filemtime
646
-		foreach ($sessions as $session => $z) {
647
-			if (
648
-				$d = @filemtime($session)
649
-			) {
650
-				$sessions[$session] = $d;
651
-			} else {
652
-				$sessions[$session] = 0;
653
-			}
654
-		}
655
-
656
-		// les plus anciennes en premier
657
-		asort($sessions);
658
-
659
-		$sessions = array_keys($sessions);
660
-		while (count($sessions) > $nb_max) {
661
-			$session = array_shift($sessions);
662
-			@unlink($session);
663
-		}
664
-	}
665
-
666
-	return $sessions;
625
+    if (is_null($nb_max)) {
626
+        if (!defined('_NB_SESSIONS_MAX')) {
627
+            define('_NB_SESSIONS_MAX', 100);
628
+        }
629
+        $nb_max = _NB_SESSIONS_MAX;
630
+    }
631
+
632
+    // liste des sessions
633
+    $sessions = preg_files(_DIR_SESSIONS, '/' . $id_auteur . '_.*\.php$');
634
+
635
+    // si on en a plus que la limite, supprimer les plus vieilles
636
+    // si ce ne sont pas des sessions anonymes car elles sont alors chacune differentes
637
+    if (
638
+        $id_auteur
639
+        && count($sessions) > $nb_max
640
+    ) {
641
+        // limiter le nombre de sessions ouvertes par un auteur
642
+        // filemtime sur les sessions
643
+        $sessions = array_flip($sessions);
644
+
645
+        // 1ere passe : lire les filemtime
646
+        foreach ($sessions as $session => $z) {
647
+            if (
648
+                $d = @filemtime($session)
649
+            ) {
650
+                $sessions[$session] = $d;
651
+            } else {
652
+                $sessions[$session] = 0;
653
+            }
654
+        }
655
+
656
+        // les plus anciennes en premier
657
+        asort($sessions);
658
+
659
+        $sessions = array_keys($sessions);
660
+        while (count($sessions) > $nb_max) {
661
+            $session = array_shift($sessions);
662
+            @unlink($session);
663
+        }
664
+    }
665
+
666
+    return $sessions;
667 667
 }
668 668
 
669 669
 
@@ -678,22 +678,22 @@  discard block
 block discarded – undo
678 678
  */
679 679
 function preparer_ecriture_session(array $auteur): array {
680 680
 
681
-	$row = $auteur;
681
+    $row = $auteur;
682 682
 
683
-	// ne pas enregistrer ces elements de securite dans le fichier de session
684
-	include_spip('inc/auth');
685
-	$auteur = auth_desensibiliser_session($auteur);
683
+    // ne pas enregistrer ces elements de securite dans le fichier de session
684
+    include_spip('inc/auth');
685
+    $auteur = auth_desensibiliser_session($auteur);
686 686
 
687
-	$auteur = pipeline('preparer_fichier_session', ['args' => ['row' => $row], 'data' => $auteur]);
687
+    $auteur = pipeline('preparer_fichier_session', ['args' => ['row' => $row], 'data' => $auteur]);
688 688
 
689
-	// ne pas enregistrer les valeurs vraiment nulle dans le fichier
690
-	foreach ($auteur as $variable => $valeur) {
691
-		if ($valeur === null) {
692
-			unset($auteur[$variable]);
693
-		}
694
-	}
689
+    // ne pas enregistrer les valeurs vraiment nulle dans le fichier
690
+    foreach ($auteur as $variable => $valeur) {
691
+        if ($valeur === null) {
692
+            unset($auteur[$variable]);
693
+        }
694
+    }
695 695
 
696
-	return $auteur;
696
+    return $auteur;
697 697
 }
698 698
 
699 699
 /**
@@ -705,39 +705,39 @@  discard block
 block discarded – undo
705 705
  */
706 706
 function ecrire_fichier_session($fichier, $auteur) {
707 707
 
708
-	$auteur = preparer_ecriture_session($auteur);
708
+    $auteur = preparer_ecriture_session($auteur);
709 709
 
710
-	// enregistrer les autres donnees du visiteur
711
-	$texte = '<' . "?php\n";
712
-	foreach ($auteur as $var => $val) {
713
-		$texte .= '$GLOBALS[\'visiteur_session\'][' . var_export($var, true) . '] = '
714
-			. var_export($val, true) . ";\n";
715
-	}
716
-	$texte .= '?' . ">\n";
710
+    // enregistrer les autres donnees du visiteur
711
+    $texte = '<' . "?php\n";
712
+    foreach ($auteur as $var => $val) {
713
+        $texte .= '$GLOBALS[\'visiteur_session\'][' . var_export($var, true) . '] = '
714
+            . var_export($val, true) . ";\n";
715
+    }
716
+    $texte .= '?' . ">\n";
717 717
 
718
-	return ecrire_fichier($fichier, $texte);
718
+    return ecrire_fichier($fichier, $texte);
719 719
 }
720 720
 
721 721
 /**
722 722
  * Calculer le chemin vers le fichier de session
723 723
  */
724 724
 function chemin_fichier_session(string $alea, string $cookie_session, bool $tantpis = false): string {
725
-	include_spip('inc/acces');
726
-	charger_aleas();
727
-
728
-	if (empty($GLOBALS['meta'][$alea])) {
729
-		if (!$tantpis) {
730
-			spip_logger('session')->info("fichier session ($tantpis): $alea indisponible");
731
-			include_spip('inc/minipres');
732
-			echo minipres();
733
-		}
734
-
735
-		return ''; // echec mais $tanpis
736
-	}
737
-
738
-	$repertoire = sous_repertoire(_DIR_SESSIONS, '', false, $tantpis);
739
-	$id_auteur = intval($cookie_session);
740
-	return $repertoire . $id_auteur . '_' . md5($cookie_session . ' ' . $GLOBALS['meta'][$alea]) . '.php';
725
+    include_spip('inc/acces');
726
+    charger_aleas();
727
+
728
+    if (empty($GLOBALS['meta'][$alea])) {
729
+        if (!$tantpis) {
730
+            spip_logger('session')->info("fichier session ($tantpis): $alea indisponible");
731
+            include_spip('inc/minipres');
732
+            echo minipres();
733
+        }
734
+
735
+        return ''; // echec mais $tanpis
736
+    }
737
+
738
+    $repertoire = sous_repertoire(_DIR_SESSIONS, '', false, $tantpis);
739
+    $id_auteur = intval($cookie_session);
740
+    return $repertoire . $id_auteur . '_' . md5($cookie_session . ' ' . $GLOBALS['meta'][$alea]) . '.php';
741 741
 }
742 742
 
743 743
 /**
@@ -748,7 +748,7 @@  discard block
 block discarded – undo
748 748
  * @param bool $tantpis
749 749
  */
750 750
 function fichier_session($alea, $tantpis = false): string {
751
-	return chemin_fichier_session((string) $alea, lire_cookie_session(), (bool) $tantpis);
751
+    return chemin_fichier_session((string) $alea, lire_cookie_session(), (bool) $tantpis);
752 752
 }
753 753
 
754 754
 
@@ -765,7 +765,7 @@  discard block
 block discarded – undo
765 765
  * @return string
766 766
  */
767 767
 function rejouer_session() {
768
-	return '<img src="' . generer_url_action('cookie', 'change_session=oui', true) . '" width="0" height="0" alt="" />';
768
+    return '<img src="' . generer_url_action('cookie', 'change_session=oui', true) . '" width="0" height="0" alt="" />';
769 769
 }
770 770
 
771 771
 
@@ -775,12 +775,12 @@  discard block
 block discarded – undo
775 775
  * @return string
776 776
  */
777 777
 function hash_env() {
778
-	static $res = '';
779
-	if ($res) {
780
-		return $res;
781
-	}
778
+    static $res = '';
779
+    if ($res) {
780
+        return $res;
781
+    }
782 782
 
783
-	return $res = md5($GLOBALS['ip'] . ($_SERVER['HTTP_USER_AGENT'] ?? ''));
783
+    return $res = md5($GLOBALS['ip'] . ($_SERVER['HTTP_USER_AGENT'] ?? ''));
784 784
 }
785 785
 
786 786
 
@@ -792,11 +792,11 @@  discard block
 block discarded – undo
792 792
  * @return bool True si une session PHP est ouverte.
793 793
  **/
794 794
 function spip_php_session_start() {
795
-	if (!is_php_session_started()) {
796
-		return session_start();
797
-	}
795
+    if (!is_php_session_started()) {
796
+        return session_start();
797
+    }
798 798
 
799
-	return true;
799
+    return true;
800 800
 }
801 801
 
802 802
 /**
@@ -806,9 +806,9 @@  discard block
 block discarded – undo
806 806
  * @return bool true si une session PHP est active
807 807
  **/
808 808
 function is_php_session_started() {
809
-	if (php_sapi_name() !== 'cli') {
810
-		return session_status() === PHP_SESSION_ACTIVE ? true : false;
811
-	}
809
+    if (php_sapi_name() !== 'cli') {
810
+        return session_status() === PHP_SESSION_ACTIVE ? true : false;
811
+    }
812 812
 
813
-	return false;
813
+    return false;
814 814
 }
Please login to merge, or discard this patch.
Spacing   +17 added lines, -17 removed lines patch added patch discarded remove patch
@@ -81,12 +81,12 @@  discard block
 block discarded – undo
81 81
 	spip_logger('session')->info("supprimer sessions auteur $id_auteur");
82 82
 	if ($toutes || $id_auteur !== $GLOBALS['visiteur_session']['id_auteur']) {
83 83
 		if ($dir = opendir(_DIR_SESSIONS)) {
84
-			$t = $_SERVER['REQUEST_TIME']  - (4 * _RENOUVELLE_ALEA); // 48h par defaut
85
-			$t_short = $_SERVER['REQUEST_TIME']  - max(_RENOUVELLE_ALEA / 4, 3 * 3600); // 3h par defaut
84
+			$t = $_SERVER['REQUEST_TIME'] - (4 * _RENOUVELLE_ALEA); // 48h par defaut
85
+			$t_short = $_SERVER['REQUEST_TIME'] - max(_RENOUVELLE_ALEA / 4, 3 * 3600); // 3h par defaut
86 86
 			while (($f = readdir($dir)) !== false) {
87 87
 				$nb_files++;
88 88
 				if (preg_match(',^[^\d-]*(-?\d+)_\w{32}\.php[3]?$,', $f, $regs)) {
89
-					$f = _DIR_SESSIONS . $f;
89
+					$f = _DIR_SESSIONS.$f;
90 90
 					if ($actives && $regs[1] == $id_auteur || $t > filemtime($f)) {
91 91
 						spip_unlink($f);
92 92
 					}
@@ -173,7 +173,7 @@  discard block
 block discarded – undo
173 173
 		(!$cookie = lire_cookie_session())
174 174
 		|| intval($cookie) !== $id_auteur
175 175
 	) {
176
-		$cookie = $id_auteur . '_' . md5(uniqid(random_int(0, mt_getrandmax()), true));
176
+		$cookie = $id_auteur.'_'.md5(uniqid(random_int(0, mt_getrandmax()), true));
177 177
 	}
178 178
 
179 179
 	// Maintenant on sait qu'on a des choses à écrire
@@ -206,7 +206,7 @@  discard block
 block discarded – undo
206 206
 	} else {
207 207
 		$fichier_session = chemin_fichier_session('alea_ephemere', $cookie);
208 208
 		if (!ecrire_fichier_session($fichier_session, $auteur)) {
209
-			spip_logger('session')->emergency('Echec ecriture fichier session ' . $fichier_session);
209
+			spip_logger('session')->emergency('Echec ecriture fichier session '.$fichier_session);
210 210
 			include_spip('inc/minipres');
211 211
 			echo minipres();
212 212
 			exit;
@@ -229,9 +229,9 @@  discard block
 block discarded – undo
229 229
 	if (autoriser('ecrire', '', '', $auteur) && _DUREE_COOKIE_ADMIN) {
230 230
 		spip_setcookie(
231 231
 			'spip_admin',
232
-			'@' . ($auteur['email'] ?: $auteur['login']),
232
+			'@'.($auteur['email'] ?: $auteur['login']),
233 233
 			time() + max(_DUREE_COOKIE_ADMIN, $duree),
234
-			httponly: true
234
+			httponly : true
235 235
 		);
236 236
 	} else {
237 237
 		// sinon le supprimer ...
@@ -269,7 +269,7 @@  discard block
 block discarded – undo
269 269
 			$coef = 20;
270 270
 		}
271 271
 	}
272
-	return (int)(_RENOUVELLE_ALEA * $coef);
272
+	return (int) (_RENOUVELLE_ALEA * $coef);
273 273
 }
274 274
 
275 275
 /**
@@ -381,7 +381,7 @@  discard block
 block discarded – undo
381 381
 
382 382
 			// Renouveler la session avec l'alea courant
383 383
 			include($fichier_session);
384
-			spip_logger('session')->info('renouvelle session ' . $GLOBALS['visiteur_session']['id_auteur']);
384
+			spip_logger('session')->info('renouvelle session '.$GLOBALS['visiteur_session']['id_auteur']);
385 385
 			spip_unlink($fichier_session);
386 386
 			ajouter_session($GLOBALS['visiteur_session']);
387 387
 		}
@@ -630,7 +630,7 @@  discard block
 block discarded – undo
630 630
 	}
631 631
 
632 632
 	// liste des sessions
633
-	$sessions = preg_files(_DIR_SESSIONS, '/' . $id_auteur . '_.*\.php$');
633
+	$sessions = preg_files(_DIR_SESSIONS, '/'.$id_auteur.'_.*\.php$');
634 634
 
635 635
 	// si on en a plus que la limite, supprimer les plus vieilles
636 636
 	// si ce ne sont pas des sessions anonymes car elles sont alors chacune differentes
@@ -708,12 +708,12 @@  discard block
 block discarded – undo
708 708
 	$auteur = preparer_ecriture_session($auteur);
709 709
 
710 710
 	// enregistrer les autres donnees du visiteur
711
-	$texte = '<' . "?php\n";
711
+	$texte = '<'."?php\n";
712 712
 	foreach ($auteur as $var => $val) {
713
-		$texte .= '$GLOBALS[\'visiteur_session\'][' . var_export($var, true) . '] = '
714
-			. var_export($val, true) . ";\n";
713
+		$texte .= '$GLOBALS[\'visiteur_session\']['.var_export($var, true).'] = '
714
+			. var_export($val, true).";\n";
715 715
 	}
716
-	$texte .= '?' . ">\n";
716
+	$texte .= '?'.">\n";
717 717
 
718 718
 	return ecrire_fichier($fichier, $texte);
719 719
 }
@@ -737,7 +737,7 @@  discard block
 block discarded – undo
737 737
 
738 738
 	$repertoire = sous_repertoire(_DIR_SESSIONS, '', false, $tantpis);
739 739
 	$id_auteur = intval($cookie_session);
740
-	return $repertoire . $id_auteur . '_' . md5($cookie_session . ' ' . $GLOBALS['meta'][$alea]) . '.php';
740
+	return $repertoire.$id_auteur.'_'.md5($cookie_session.' '.$GLOBALS['meta'][$alea]).'.php';
741 741
 }
742 742
 
743 743
 /**
@@ -765,7 +765,7 @@  discard block
 block discarded – undo
765 765
  * @return string
766 766
  */
767 767
 function rejouer_session() {
768
-	return '<img src="' . generer_url_action('cookie', 'change_session=oui', true) . '" width="0" height="0" alt="" />';
768
+	return '<img src="'.generer_url_action('cookie', 'change_session=oui', true).'" width="0" height="0" alt="" />';
769 769
 }
770 770
 
771 771
 
@@ -780,7 +780,7 @@  discard block
 block discarded – undo
780 780
 		return $res;
781 781
 	}
782 782
 
783
-	return $res = md5($GLOBALS['ip'] . ($_SERVER['HTTP_USER_AGENT'] ?? ''));
783
+	return $res = md5($GLOBALS['ip'].($_SERVER['HTTP_USER_AGENT'] ?? ''));
784 784
 }
785 785
 
786 786
 
Please login to merge, or discard this patch.
ecrire/inc/install.php 2 patches
Indentation   +343 added lines, -343 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  **/
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 
@@ -42,11 +42,11 @@  discard block
 block discarded – undo
42 42
  * @return void
43 43
  **/
44 44
 function install_fichier_connexion($nom, $texte) {
45
-	$texte = '<' . "?php\n"
46
-		. "if (!defined(\"_ECRIRE_INC_VERSION\")) return;\n"
47
-		. $texte;
45
+    $texte = '<' . "?php\n"
46
+        . "if (!defined(\"_ECRIRE_INC_VERSION\")) return;\n"
47
+        . $texte;
48 48
 
49
-	ecrire_fichier($nom, $texte);
49
+    ecrire_fichier($nom, $texte);
50 50
 }
51 51
 
52 52
 
@@ -75,20 +75,20 @@  discard block
 block discarded – undo
75 75
  *
76 76
  **/
77 77
 function install_connexion($adr, $port, $login, #[\SensitiveParameter] $pass, $base, $type, $pref, $ldap = '', $charset = '') {
78
-	$adr = addcslashes($adr, "'\\");
79
-	$port = addcslashes($port, "'\\");
80
-	$login = addcslashes($login, "'\\");
81
-	$pass = addcslashes($pass, "'\\");
82
-	$base = addcslashes($base, "'\\");
83
-	$type = addcslashes($type, "'\\");
84
-	$pref = addcslashes($pref, "'\\");
85
-	$ldap = addcslashes($ldap, "'\\");
86
-	$charset = addcslashes($charset, "'\\");
87
-
88
-	return "\$GLOBALS['spip_connect_version'] = 0.8;\n"
89
-	. 'spip_connect_db('
90
-	. "'$adr','$port','$login','$pass','$base'"
91
-	. ",'$type', '$pref','$ldap','$charset');\n";
78
+    $adr = addcslashes($adr, "'\\");
79
+    $port = addcslashes($port, "'\\");
80
+    $login = addcslashes($login, "'\\");
81
+    $pass = addcslashes($pass, "'\\");
82
+    $base = addcslashes($base, "'\\");
83
+    $type = addcslashes($type, "'\\");
84
+    $pref = addcslashes($pref, "'\\");
85
+    $ldap = addcslashes($ldap, "'\\");
86
+    $charset = addcslashes($charset, "'\\");
87
+
88
+    return "\$GLOBALS['spip_connect_version'] = 0.8;\n"
89
+    . 'spip_connect_db('
90
+    . "'$adr','$port','$login','$pass','$base'"
91
+    . ",'$type', '$pref','$ldap','$charset');\n";
92 92
 }
93 93
 
94 94
 
@@ -104,29 +104,29 @@  discard block
 block discarded – undo
104 104
  *     Tableau des informations sur la connexion
105 105
  **/
106 106
 function analyse_fichier_connection(string $file): array {
107
-	if (!file_exists($file)) {
108
-		return [];
109
-	}
110
-	$s = file_get_contents($file);
111
-	if (preg_match("#mysql_connect\([\"'](.*)[\"'],[\"'](.*)[\"'],[\"'](.*)[\"']\)#", $s, $regs)) {
112
-		array_shift($regs);
113
-
114
-		return $regs;
115
-	} else {
116
-		$ar = '\s*\'([^\']*)\'';
117
-		$r = '\s*,' . $ar;
118
-		$r = "#spip_connect_db[(]$ar$r$r$r$r(?:$r(?:$r(?:$r(?:$r)?)?)?)?#";
119
-		if (preg_match($r, $s, $regs)) {
120
-			$regs[2] = $regs[1] . ($regs[2] ? ':' . $regs[2] . ';' : '');
121
-			array_shift($regs);
122
-			array_shift($regs);
123
-
124
-			return $regs;
125
-		}
126
-	}
127
-	spip_logger()->info("$file n'est pas un fichier de connexion");
128
-
129
-	return [];
107
+    if (!file_exists($file)) {
108
+        return [];
109
+    }
110
+    $s = file_get_contents($file);
111
+    if (preg_match("#mysql_connect\([\"'](.*)[\"'],[\"'](.*)[\"'],[\"'](.*)[\"']\)#", $s, $regs)) {
112
+        array_shift($regs);
113
+
114
+        return $regs;
115
+    } else {
116
+        $ar = '\s*\'([^\']*)\'';
117
+        $r = '\s*,' . $ar;
118
+        $r = "#spip_connect_db[(]$ar$r$r$r$r(?:$r(?:$r(?:$r(?:$r)?)?)?)?#";
119
+        if (preg_match($r, $s, $regs)) {
120
+            $regs[2] = $regs[1] . ($regs[2] ? ':' . $regs[2] . ';' : '');
121
+            array_shift($regs);
122
+            array_shift($regs);
123
+
124
+            return $regs;
125
+        }
126
+    }
127
+    spip_logger()->info("$file n'est pas un fichier de connexion");
128
+
129
+    return [];
130 130
 }
131 131
 
132 132
 /**
@@ -143,74 +143,74 @@  discard block
 block discarded – undo
143 143
  *     Liste des noms de connecteurs
144 144
  **/
145 145
 function bases_referencees($exclu = '') {
146
-	$tables = [];
147
-	foreach (preg_files(_DIR_CONNECT, '.php$') as $f) {
148
-		if ($f != $exclu && analyse_fichier_connection($f)) {
149
-			$tables[] = basename((string) $f, '.php');
150
-		}
151
-	}
152
-
153
-	return $tables;
146
+    $tables = [];
147
+    foreach (preg_files(_DIR_CONNECT, '.php$') as $f) {
148
+        if ($f != $exclu && analyse_fichier_connection($f)) {
149
+            $tables[] = basename((string) $f, '.php');
150
+        }
151
+    }
152
+
153
+    return $tables;
154 154
 }
155 155
 
156 156
 
157 157
 function install_mode_appel($server_db, $tout = true) {
158
-	return ($server_db != 'mysql') ? ''
159
-		: (($tout ? test_rappel_nom_base_mysql($server_db) : '')
160
-			. test_sql_mode_mysql($server_db));
158
+    return ($server_db != 'mysql') ? ''
159
+        : (($tout ? test_rappel_nom_base_mysql($server_db) : '')
160
+            . test_sql_mode_mysql($server_db));
161 161
 }
162 162
 
163 163
 //
164 164
 // Verifier que l'hebergement est compatible SPIP ... ou l'inverse :-)
165 165
 // (sert a l'etape 1 de l'installation)
166 166
 function tester_compatibilite_hebergement() {
167
-	$err = [];
168
-
169
-	$p = phpversion();
170
-	if (version_compare($p, _PHP_MIN, '<')) {
171
-		$err[] = _T('install_php_version', ['version' => $p, 'minimum' => _PHP_MIN]);
172
-	}
173
-	if (version_compare($p, _PHP_MAX, '>')) {
174
-		$err[] = _T('install_php_version_max', ['version' => $p, 'maximum' => _PHP_MAX]);
175
-	}
176
-
177
-	$diff = array_diff(['sodium', 'xml', 'zip'], get_loaded_extensions());
178
-	if ($diff !== []) {
179
-		$err[] = _T('install_php_extension', ['extensions' => implode(',', $diff)]);
180
-	}
181
-
182
-	// Si on n'a pas la bonne version de PHP, c'est la fin
183
-	if ($err) {
184
-		die("<div class='error'>"
185
-			. '<h3>' . _T('avis_attention') . '</h3><p>' . _T('install_echec_annonce') . "</p><ul class='spip'>"
186
-			. "<li><strong>{$err[0]}</strong></li>\n</ul></div>");
187
-	}
188
-
189
-	// Il faut une base de donnees tout de meme ...
190
-	$serveurs = install_select_serveur();
191
-	if (!$serveurs) {
192
-		$err[] = _T('install_extension_php_obligatoire')
193
-			. " <a href='http://www.php.net/mysql'>MYSQL</a>"
194
-			. "| <a href='http://www.php.net/sqlite'>SQLite</a>";
195
-	}
196
-
197
-	if ($err) {
198
-		echo "<div class='error'>"
199
-			. '<h3>' . _T('avis_attention') . '</h3><p>' . _T('install_echec_annonce') . "</p><ul class='spip'>";
200
-		foreach ($err as $e) {
201
-			echo "<li><strong>$e</strong></li>\n";
202
-		}
203
-
204
-		# a priori ici on pourrait die(), mais il faut laisser la possibilite
205
-		# de forcer malgre tout (pour tester, ou si bug de detection)
206
-		echo "</ul></div>\n";
207
-	}
167
+    $err = [];
168
+
169
+    $p = phpversion();
170
+    if (version_compare($p, _PHP_MIN, '<')) {
171
+        $err[] = _T('install_php_version', ['version' => $p, 'minimum' => _PHP_MIN]);
172
+    }
173
+    if (version_compare($p, _PHP_MAX, '>')) {
174
+        $err[] = _T('install_php_version_max', ['version' => $p, 'maximum' => _PHP_MAX]);
175
+    }
176
+
177
+    $diff = array_diff(['sodium', 'xml', 'zip'], get_loaded_extensions());
178
+    if ($diff !== []) {
179
+        $err[] = _T('install_php_extension', ['extensions' => implode(',', $diff)]);
180
+    }
181
+
182
+    // Si on n'a pas la bonne version de PHP, c'est la fin
183
+    if ($err) {
184
+        die("<div class='error'>"
185
+            . '<h3>' . _T('avis_attention') . '</h3><p>' . _T('install_echec_annonce') . "</p><ul class='spip'>"
186
+            . "<li><strong>{$err[0]}</strong></li>\n</ul></div>");
187
+    }
188
+
189
+    // Il faut une base de donnees tout de meme ...
190
+    $serveurs = install_select_serveur();
191
+    if (!$serveurs) {
192
+        $err[] = _T('install_extension_php_obligatoire')
193
+            . " <a href='http://www.php.net/mysql'>MYSQL</a>"
194
+            . "| <a href='http://www.php.net/sqlite'>SQLite</a>";
195
+    }
196
+
197
+    if ($err) {
198
+        echo "<div class='error'>"
199
+            . '<h3>' . _T('avis_attention') . '</h3><p>' . _T('install_echec_annonce') . "</p><ul class='spip'>";
200
+        foreach ($err as $e) {
201
+            echo "<li><strong>$e</strong></li>\n";
202
+        }
203
+
204
+        # a priori ici on pourrait die(), mais il faut laisser la possibilite
205
+        # de forcer malgre tout (pour tester, ou si bug de detection)
206
+        echo "</ul></div>\n";
207
+    }
208 208
 }
209 209
 
210 210
 
211 211
 function info_etape($titre, $complement = '') {
212
-	return '<h2>' . $titre . "</h2>\n" .
213
-	($complement ? '' . $complement . "\n" : '');
212
+    return '<h2>' . $titre . "</h2>\n" .
213
+    ($complement ? '' . $complement . "\n" : '');
214 214
 }
215 215
 
216 216
 /**
@@ -220,143 +220,143 @@  discard block
 block discarded – undo
220 220
  * @return string Code HTML du bouton
221 221
  **/
222 222
 function bouton_suivant($code = '') {
223
-	if ($code == '') {
224
-		$code = _T('bouton_suivant');
225
-	}
226
-	static $suivant = 0;
227
-	$id = 'suivant' . (($suivant > 0) ? (string) $suivant : '');
228
-	$suivant += 1;
229
-
230
-	return "\n<p class='boutons suivant'><input id='" . $id . "' type='submit'\nvalue=\"" .
231
-	$code .
232
-	" >>\" /></p>\n";
223
+    if ($code == '') {
224
+        $code = _T('bouton_suivant');
225
+    }
226
+    static $suivant = 0;
227
+    $id = 'suivant' . (($suivant > 0) ? (string) $suivant : '');
228
+    $suivant += 1;
229
+
230
+    return "\n<p class='boutons suivant'><input id='" . $id . "' type='submit'\nvalue=\"" .
231
+    $code .
232
+    " >>\" /></p>\n";
233 233
 }
234 234
 
235 235
 function info_progression_etape($en_cours, $phase, $dir, $erreur = false) {
236
-	$intitule_etat = [];
237
-
238
-	$liste = find_all_in_path($dir, $phase . '(([0-9])+|fin)[.]php$');
239
-	$debut = 1;
240
-	$last = is_countable($liste) ? count($liste) : 0;
241
-
242
-	include_spip('inc/texte');
243
-	$intitule_etat['etape_'][1] = typo(_T('info_connexion_base_donnee'));
244
-	$intitule_etat['etape_'][2] = typo(_T('menu_aide_installation_choix_base'));
245
-	$intitule_etat['etape_'][3] = typo(_T('info_informations_personnelles'));
246
-	$intitule_etat['etape_'][4] = typo(_T('info_derniere_etape'));
247
-
248
-	$intitule_etat['etape_ldap'][1] = typo(_T('titre_connexion_ldap'));
249
-	$intitule_etat['etape_ldap'][2] = typo(_T('titre_connexion_ldap'));
250
-	$intitule_etat['etape_ldap'][3] = typo(_T('info_chemin_acces_1'));
251
-	$intitule_etat['etape_ldap'][4] = typo(_T('info_reglage_ldap'));
252
-	$intitule_etat['etape_ldap'][5] = typo(_T('info_ldap_ok'));
253
-
254
-	$aff_etapes = "<ul id='infos_etapes' class='infos_$phase$en_cours'>";
255
-
256
-	foreach (array_keys($liste) as $etape) {
257
-		if ($debut < $last) {
258
-			if ($debut == $en_cours && $erreur) {
259
-				$class = 'on erreur';
260
-			} else {
261
-				if ($debut == $en_cours) {
262
-					$class = 'on';
263
-				} else {
264
-					$class = $debut > $en_cours ? 'prochains' : 'valides';
265
-				}
266
-			}
267
-
268
-			$aff_etapes .= "<li class='$class'><div class='fond'>";
269
-			$aff_etapes .= '<em>' . _T('etape') . " </em><span class='numero_etape'>$debut</span><em>&nbsp;: </em>";
270
-			$aff_etapes .= '<' . (($debut == $en_cours) ? 'strong' : 'span') . ' class="label_etape">' . $intitule_etat["$phase"][$debut] . '</' . (($debut == $en_cours) ? 'strong' : 'span') . '>';
271
-			$aff_etapes .= '</div></li>';
272
-		}
273
-		$debut++;
274
-	}
275
-
276
-	return $aff_etapes . '</ul>';
236
+    $intitule_etat = [];
237
+
238
+    $liste = find_all_in_path($dir, $phase . '(([0-9])+|fin)[.]php$');
239
+    $debut = 1;
240
+    $last = is_countable($liste) ? count($liste) : 0;
241
+
242
+    include_spip('inc/texte');
243
+    $intitule_etat['etape_'][1] = typo(_T('info_connexion_base_donnee'));
244
+    $intitule_etat['etape_'][2] = typo(_T('menu_aide_installation_choix_base'));
245
+    $intitule_etat['etape_'][3] = typo(_T('info_informations_personnelles'));
246
+    $intitule_etat['etape_'][4] = typo(_T('info_derniere_etape'));
247
+
248
+    $intitule_etat['etape_ldap'][1] = typo(_T('titre_connexion_ldap'));
249
+    $intitule_etat['etape_ldap'][2] = typo(_T('titre_connexion_ldap'));
250
+    $intitule_etat['etape_ldap'][3] = typo(_T('info_chemin_acces_1'));
251
+    $intitule_etat['etape_ldap'][4] = typo(_T('info_reglage_ldap'));
252
+    $intitule_etat['etape_ldap'][5] = typo(_T('info_ldap_ok'));
253
+
254
+    $aff_etapes = "<ul id='infos_etapes' class='infos_$phase$en_cours'>";
255
+
256
+    foreach (array_keys($liste) as $etape) {
257
+        if ($debut < $last) {
258
+            if ($debut == $en_cours && $erreur) {
259
+                $class = 'on erreur';
260
+            } else {
261
+                if ($debut == $en_cours) {
262
+                    $class = 'on';
263
+                } else {
264
+                    $class = $debut > $en_cours ? 'prochains' : 'valides';
265
+                }
266
+            }
267
+
268
+            $aff_etapes .= "<li class='$class'><div class='fond'>";
269
+            $aff_etapes .= '<em>' . _T('etape') . " </em><span class='numero_etape'>$debut</span><em>&nbsp;: </em>";
270
+            $aff_etapes .= '<' . (($debut == $en_cours) ? 'strong' : 'span') . ' class="label_etape">' . $intitule_etat["$phase"][$debut] . '</' . (($debut == $en_cours) ? 'strong' : 'span') . '>';
271
+            $aff_etapes .= '</div></li>';
272
+        }
273
+        $debut++;
274
+    }
275
+
276
+    return $aff_etapes . '</ul>';
277 277
 }
278 278
 
279 279
 
280 280
 function fieldset($legend, $champs = [], $apres = '', $avant = '') {
281
-	return "<fieldset>\n" .
282
-	$avant .
283
-	($legend ? '<legend>' . $legend . "</legend>\n" : '') .
284
-	fieldset_champs($champs) .
285
-	$apres .
286
-	"</fieldset>\n";
281
+    return "<fieldset>\n" .
282
+    $avant .
283
+    ($legend ? '<legend>' . $legend . "</legend>\n" : '') .
284
+    fieldset_champs($champs) .
285
+    $apres .
286
+    "</fieldset>\n";
287 287
 }
288 288
 
289 289
 function fieldset_champs($champs = []) {
290
-	$fieldset = '';
291
-	foreach ($champs as $nom => $contenu) {
292
-		$type = isset($contenu['hidden']) ? 'hidden' : (preg_match(',^pass,', (string) $nom) ? 'password' : 'text');
293
-		$class = isset($contenu['hidden']) ? '' : "class='formo' size='40' ";
294
-		if (isset($contenu['alternatives'])) {
295
-			$fieldset .= $contenu['label'] . "\n";
296
-			foreach ($contenu['alternatives'] as $valeur => $label) {
297
-				$fieldset .= "<input type='radio' name='" . $nom .
298
-					"' id='$nom-$valeur' value='$valeur'"
299
-					. (($valeur == $contenu['valeur']) ? "\nchecked='checked'" : '')
300
-					. "/>\n";
301
-				$fieldset .= "<label for='$nom-$valeur'>" . $label . "</label>\n";
302
-			}
303
-			$fieldset .= "<br />\n";
304
-		} else {
305
-			$fieldset .= "<label for='" . $nom . "'>" . $contenu['label'] . "</label>\n";
306
-			$fieldset .= '<input ' . $class . "type='" . $type . "' id='" . $nom . "' name='" . $nom . "'\nvalue='" . $contenu['valeur'] . "'"
307
-				. (preg_match(',^(pass|login),', (string) $nom) ? " autocomplete='off'" : '')
308
-				. ((isset($contenu['required']) && $contenu['required']) ? " required='required'" : '')
309
-				. " />\n";
310
-		}
311
-	}
312
-
313
-	return $fieldset;
290
+    $fieldset = '';
291
+    foreach ($champs as $nom => $contenu) {
292
+        $type = isset($contenu['hidden']) ? 'hidden' : (preg_match(',^pass,', (string) $nom) ? 'password' : 'text');
293
+        $class = isset($contenu['hidden']) ? '' : "class='formo' size='40' ";
294
+        if (isset($contenu['alternatives'])) {
295
+            $fieldset .= $contenu['label'] . "\n";
296
+            foreach ($contenu['alternatives'] as $valeur => $label) {
297
+                $fieldset .= "<input type='radio' name='" . $nom .
298
+                    "' id='$nom-$valeur' value='$valeur'"
299
+                    . (($valeur == $contenu['valeur']) ? "\nchecked='checked'" : '')
300
+                    . "/>\n";
301
+                $fieldset .= "<label for='$nom-$valeur'>" . $label . "</label>\n";
302
+            }
303
+            $fieldset .= "<br />\n";
304
+        } else {
305
+            $fieldset .= "<label for='" . $nom . "'>" . $contenu['label'] . "</label>\n";
306
+            $fieldset .= '<input ' . $class . "type='" . $type . "' id='" . $nom . "' name='" . $nom . "'\nvalue='" . $contenu['valeur'] . "'"
307
+                . (preg_match(',^(pass|login),', (string) $nom) ? " autocomplete='off'" : '')
308
+                . ((isset($contenu['required']) && $contenu['required']) ? " required='required'" : '')
309
+                . " />\n";
310
+        }
311
+    }
312
+
313
+    return $fieldset;
314 314
 }
315 315
 
316 316
 function install_select_serveur() {
317
-	$options = [];
318
-	$dir = _DIR_RESTREINT . 'req/';
319
-	$d = opendir($dir);
320
-	if (!$d) {
321
-		return [];
322
-	}
323
-	while (($f = readdir($d)) !== false) {
324
-		if (
325
-			preg_match('/^(.*)[.]php$/', $f, $s)
326
-			&& is_readable($f = $dir . $f)
327
-		) {
328
-			require_once($f);
329
-			$s = $s[1];
330
-			$v = 'spip_versions_' . $s;
331
-			if (function_exists($v) && $v()) {
332
-				$titre = _T("install_select_type_$s");
333
-				// proposer mysql par defaut si dispo
334
-				$checked = ($s == 'mysql' ? " checked='checked'" : '');
335
-				$options[$s] = "<li><input type='radio' id='$s' value='$s' name='server_db'$checked>"
336
-					. "<label for='$s'>" . ($titre ?: $s) . '</label></li>';
337
-			} else {
338
-				spip_logger()->info("$s: portage indisponible");
339
-			}
340
-		}
341
-	}
342
-	sort($options);
343
-
344
-	return $options;
317
+    $options = [];
318
+    $dir = _DIR_RESTREINT . 'req/';
319
+    $d = opendir($dir);
320
+    if (!$d) {
321
+        return [];
322
+    }
323
+    while (($f = readdir($d)) !== false) {
324
+        if (
325
+            preg_match('/^(.*)[.]php$/', $f, $s)
326
+            && is_readable($f = $dir . $f)
327
+        ) {
328
+            require_once($f);
329
+            $s = $s[1];
330
+            $v = 'spip_versions_' . $s;
331
+            if (function_exists($v) && $v()) {
332
+                $titre = _T("install_select_type_$s");
333
+                // proposer mysql par defaut si dispo
334
+                $checked = ($s == 'mysql' ? " checked='checked'" : '');
335
+                $options[$s] = "<li><input type='radio' id='$s' value='$s' name='server_db'$checked>"
336
+                    . "<label for='$s'>" . ($titre ?: $s) . '</label></li>';
337
+            } else {
338
+                spip_logger()->info("$s: portage indisponible");
339
+            }
340
+        }
341
+    }
342
+    sort($options);
343
+
344
+    return $options;
345 345
 }
346 346
 
347 347
 function install_connexion_form($db, $login, #[\SensitiveParameter] $pass, $predef, $hidden, $etape, $jquery = true) {
348
-	$server_db = (is_string($predef[0])) ? $predef[0] : '';
349
-
350
-	return generer_form_ecrire('install', (
351
-		"\n<input type='hidden' name='etape' value='$etape' />"
352
-		. $hidden
353
-		. (_request('echec') ?
354
-			('<p><b>' . _T('avis_connexion_echec_1') .
355
-				'</b></p><p>' . _T('avis_connexion_echec_2') . "</p><p style='font-size: small;'>" . _T('avis_connexion_echec_3') . '</p>')
356
-			: '')
357
-
358
-		. ($jquery ? http_script('', 'jquery.js') : '')
359
-		. http_script('
348
+    $server_db = (is_string($predef[0])) ? $predef[0] : '';
349
+
350
+    return generer_form_ecrire('install', (
351
+        "\n<input type='hidden' name='etape' value='$etape' />"
352
+        . $hidden
353
+        . (_request('echec') ?
354
+            ('<p><b>' . _T('avis_connexion_echec_1') .
355
+                '</b></p><p>' . _T('avis_connexion_echec_2') . "</p><p style='font-size: small;'>" . _T('avis_connexion_echec_3') . '</p>')
356
+            : '')
357
+
358
+        . ($jquery ? http_script('', 'jquery.js') : '')
359
+        . http_script('
360 360
 		jQuery(function($) {
361 361
 			$details_db = $("#install_adresse_base_hebergeur,#install_login_base_hebergeur,#install_pass_base_hebergeur");
362 362
 			$("input[type=hidden][name=server_db]").each(function(){
@@ -389,145 +389,145 @@  discard block
 block discarded – undo
389 389
 			});
390 390
 		});')
391 391
 
392
-		. ($server_db
393
-			? '<input type="hidden" name="server_db" value="' . $server_db . '" />'
394
-			. (($predef[0])
395
-				? ('<h3>' . _T('install_serveur_hebergeur') . '</h3>')
396
-				: '')
397
-			: ('<fieldset><legend>'
398
-				. _T('install_select_type_db')
399
-				. '</legend>'
400
-				. '<p class="explication">'
401
-				. _T('install_types_db_connus')
402
-				// Passer l'avertissement SQLIte en  commentaire, on pourra facilement le supprimer par la suite sans changer les traductions.
403
-				// . "<br /><small>(". _T('install_types_db_connus_avertissement') .')</small>'
404
-				. '</p>'
405
-				. "\n<div class='p'>\n<ul>\n"
406
-				. implode("\n", install_select_serveur())
407
-				. "\n</ul>\n</div></fieldset>")
408
-		)
409
-		. '<div id="install_adresse_base_hebergeur">'
410
-		. '<p>' . _T('texte_connexion_mysql') . '</p>'
411
-		. ($predef[1]
412
-			? '<h3>' . _T('install_adresse_base_hebergeur') . '</h3>'
413
-			: fieldset(
414
-				_T('entree_base_donnee_1'),
415
-				[
416
-					'adresse_db' => [
417
-						'label' => $db[1],
418
-						'valeur' => $db[0]
419
-					],
420
-				]
421
-			)
422
-		)
423
-		. '</div>'
424
-
425
-		. '<div id="install_login_base_hebergeur">'
426
-		. ($predef[2]
427
-			? '<h3>' . _T('install_login_base_hebergeur') . '</h3>'
428
-			: fieldset(
429
-				_T('entree_login_connexion_1'),
430
-				[
431
-					'login_db' => [
432
-						'label' => $login[1],
433
-						'valeur' => $login[0]
434
-					],
435
-				]
436
-			)
437
-		)
438
-		. '</div>'
439
-
440
-		. '<div id="install_pass_base_hebergeur">'
441
-		. ($predef[3]
442
-			? '<h3>' . _T('install_pass_base_hebergeur') . '</h3>'
443
-			: fieldset(
444
-				_T('entree_mot_passe_1'),
445
-				[
446
-					'pass_db' => [
447
-						'label' => $pass[1],
448
-						'valeur' => $pass[0]
449
-					],
450
-				]
451
-			)
452
-		)
453
-		. '</div>'
454
-
455
-		. bouton_suivant()));
392
+        . ($server_db
393
+            ? '<input type="hidden" name="server_db" value="' . $server_db . '" />'
394
+            . (($predef[0])
395
+                ? ('<h3>' . _T('install_serveur_hebergeur') . '</h3>')
396
+                : '')
397
+            : ('<fieldset><legend>'
398
+                . _T('install_select_type_db')
399
+                . '</legend>'
400
+                . '<p class="explication">'
401
+                . _T('install_types_db_connus')
402
+                // Passer l'avertissement SQLIte en  commentaire, on pourra facilement le supprimer par la suite sans changer les traductions.
403
+                // . "<br /><small>(". _T('install_types_db_connus_avertissement') .')</small>'
404
+                . '</p>'
405
+                . "\n<div class='p'>\n<ul>\n"
406
+                . implode("\n", install_select_serveur())
407
+                . "\n</ul>\n</div></fieldset>")
408
+        )
409
+        . '<div id="install_adresse_base_hebergeur">'
410
+        . '<p>' . _T('texte_connexion_mysql') . '</p>'
411
+        . ($predef[1]
412
+            ? '<h3>' . _T('install_adresse_base_hebergeur') . '</h3>'
413
+            : fieldset(
414
+                _T('entree_base_donnee_1'),
415
+                [
416
+                    'adresse_db' => [
417
+                        'label' => $db[1],
418
+                        'valeur' => $db[0]
419
+                    ],
420
+                ]
421
+            )
422
+        )
423
+        . '</div>'
424
+
425
+        . '<div id="install_login_base_hebergeur">'
426
+        . ($predef[2]
427
+            ? '<h3>' . _T('install_login_base_hebergeur') . '</h3>'
428
+            : fieldset(
429
+                _T('entree_login_connexion_1'),
430
+                [
431
+                    'login_db' => [
432
+                        'label' => $login[1],
433
+                        'valeur' => $login[0]
434
+                    ],
435
+                ]
436
+            )
437
+        )
438
+        . '</div>'
439
+
440
+        . '<div id="install_pass_base_hebergeur">'
441
+        . ($predef[3]
442
+            ? '<h3>' . _T('install_pass_base_hebergeur') . '</h3>'
443
+            : fieldset(
444
+                _T('entree_mot_passe_1'),
445
+                [
446
+                    'pass_db' => [
447
+                        'label' => $pass[1],
448
+                        'valeur' => $pass[0]
449
+                    ],
450
+                ]
451
+            )
452
+        )
453
+        . '</div>'
454
+
455
+        . bouton_suivant()));
456 456
 }
457 457
 
458 458
 // 4 valeurs qu'on reconduit d'un script a l'autre
459 459
 // sauf s'ils sont predefinis.
460 460
 
461 461
 function predef_ou_cache($adresse_db, $login_db, $pass_db, $server_db) {
462
-	return ((defined('_INSTALL_HOST_DB'))
463
-		? ''
464
-		: "\n<input type='hidden' name='adresse_db'  value=\"" . spip_htmlspecialchars($adresse_db) . '" />'
465
-	)
466
-	. ((defined('_INSTALL_USER_DB'))
467
-		? ''
468
-		: "\n<input type='hidden' name='login_db' value=\"" . spip_htmlspecialchars($login_db) . '" />'
469
-	)
470
-	. ((defined('_INSTALL_PASS_DB'))
471
-		? ''
472
-		: "\n<input type='hidden' name='pass_db' value=\"" . spip_htmlspecialchars($pass_db) . '" />'
473
-	)
474
-
475
-	. ((defined('_INSTALL_SERVER_DB'))
476
-		? ''
477
-		: "\n<input type='hidden' name='server_db' value=\"" . spip_htmlspecialchars($server_db) . '" />'
478
-	);
462
+    return ((defined('_INSTALL_HOST_DB'))
463
+        ? ''
464
+        : "\n<input type='hidden' name='adresse_db'  value=\"" . spip_htmlspecialchars($adresse_db) . '" />'
465
+    )
466
+    . ((defined('_INSTALL_USER_DB'))
467
+        ? ''
468
+        : "\n<input type='hidden' name='login_db' value=\"" . spip_htmlspecialchars($login_db) . '" />'
469
+    )
470
+    . ((defined('_INSTALL_PASS_DB'))
471
+        ? ''
472
+        : "\n<input type='hidden' name='pass_db' value=\"" . spip_htmlspecialchars($pass_db) . '" />'
473
+    )
474
+
475
+    . ((defined('_INSTALL_SERVER_DB'))
476
+        ? ''
477
+        : "\n<input type='hidden' name='server_db' value=\"" . spip_htmlspecialchars($server_db) . '" />'
478
+    );
479 479
 }
480 480
 
481 481
 // presentation des bases existantes
482 482
 
483 483
 function install_etape_liste_bases($server_db, $login_db, $disabled = []) {
484
-	$bases = $checked = [];
485
-	$noms = sql_listdbs($server_db);
486
-	if (!$noms) {
487
-		return '';
488
-	}
489
-
490
-	foreach ($noms as $nom) {
491
-		$id = spip_htmlspecialchars($nom);
492
-		$dis = in_array($nom, $disabled) ? " disabled='disabled'" : '';
493
-		$base = ' name="choix_db" value="'
494
-			. $nom
495
-			. '"'
496
-			. $dis
497
-			. " type='radio' id='$id'";
498
-		$label = "<label for='$id'>"
499
-			. ($dis ? "<i>$nom</i>" : $nom)
500
-			. '</label>';
501
-
502
-		if (
503
-			!$checked
504
-			&& !$dis
505
-			&& ($nom == $login_db || $GLOBALS['table_prefix'] == $nom)
506
-		) {
507
-			$checked = "<input$base checked='checked' />\n$label";
508
-		} else {
509
-			$bases[] = "<input$base />\n$label";
510
-		}
511
-	}
512
-
513
-	if (!$bases && !$checked) {
514
-		return false;
515
-	}
516
-
517
-	if ($checked) {
518
-		array_unshift($bases, $checked);
519
-		$checked = true;
520
-	}
521
-
522
-	return [$checked, $bases];
484
+    $bases = $checked = [];
485
+    $noms = sql_listdbs($server_db);
486
+    if (!$noms) {
487
+        return '';
488
+    }
489
+
490
+    foreach ($noms as $nom) {
491
+        $id = spip_htmlspecialchars($nom);
492
+        $dis = in_array($nom, $disabled) ? " disabled='disabled'" : '';
493
+        $base = ' name="choix_db" value="'
494
+            . $nom
495
+            . '"'
496
+            . $dis
497
+            . " type='radio' id='$id'";
498
+        $label = "<label for='$id'>"
499
+            . ($dis ? "<i>$nom</i>" : $nom)
500
+            . '</label>';
501
+
502
+        if (
503
+            !$checked
504
+            && !$dis
505
+            && ($nom == $login_db || $GLOBALS['table_prefix'] == $nom)
506
+        ) {
507
+            $checked = "<input$base checked='checked' />\n$label";
508
+        } else {
509
+            $bases[] = "<input$base />\n$label";
510
+        }
511
+    }
512
+
513
+    if (!$bases && !$checked) {
514
+        return false;
515
+    }
516
+
517
+    if ($checked) {
518
+        array_unshift($bases, $checked);
519
+        $checked = true;
520
+    }
521
+
522
+    return [$checked, $bases];
523 523
 }
524 524
 
525 525
 function install_propager($hidden) {
526
-	$res = '';
527
-	foreach ($hidden as $k) {
528
-		$v = spip_htmlentities(_request($k));
529
-		$res .= "<input type='hidden' name='$k' value='$v' />";
530
-	}
526
+    $res = '';
527
+    foreach ($hidden as $k) {
528
+        $v = spip_htmlentities(_request($k));
529
+        $res .= "<input type='hidden' name='$k' value='$v' />";
530
+    }
531 531
 
532
-	return $res;
532
+    return $res;
533 533
 }
Please login to merge, or discard this patch.
Spacing   +40 added lines, -40 removed lines patch added patch discarded remove patch
@@ -42,7 +42,7 @@  discard block
 block discarded – undo
42 42
  * @return void
43 43
  **/
44 44
 function install_fichier_connexion($nom, $texte) {
45
-	$texte = '<' . "?php\n"
45
+	$texte = '<'."?php\n"
46 46
 		. "if (!defined(\"_ECRIRE_INC_VERSION\")) return;\n"
47 47
 		. $texte;
48 48
 
@@ -114,10 +114,10 @@  discard block
 block discarded – undo
114 114
 		return $regs;
115 115
 	} else {
116 116
 		$ar = '\s*\'([^\']*)\'';
117
-		$r = '\s*,' . $ar;
117
+		$r = '\s*,'.$ar;
118 118
 		$r = "#spip_connect_db[(]$ar$r$r$r$r(?:$r(?:$r(?:$r(?:$r)?)?)?)?#";
119 119
 		if (preg_match($r, $s, $regs)) {
120
-			$regs[2] = $regs[1] . ($regs[2] ? ':' . $regs[2] . ';' : '');
120
+			$regs[2] = $regs[1].($regs[2] ? ':'.$regs[2].';' : '');
121 121
 			array_shift($regs);
122 122
 			array_shift($regs);
123 123
 
@@ -182,7 +182,7 @@  discard block
 block discarded – undo
182 182
 	// Si on n'a pas la bonne version de PHP, c'est la fin
183 183
 	if ($err) {
184 184
 		die("<div class='error'>"
185
-			. '<h3>' . _T('avis_attention') . '</h3><p>' . _T('install_echec_annonce') . "</p><ul class='spip'>"
185
+			. '<h3>'._T('avis_attention').'</h3><p>'._T('install_echec_annonce')."</p><ul class='spip'>"
186 186
 			. "<li><strong>{$err[0]}</strong></li>\n</ul></div>");
187 187
 	}
188 188
 
@@ -196,7 +196,7 @@  discard block
 block discarded – undo
196 196
 
197 197
 	if ($err) {
198 198
 		echo "<div class='error'>"
199
-			. '<h3>' . _T('avis_attention') . '</h3><p>' . _T('install_echec_annonce') . "</p><ul class='spip'>";
199
+			. '<h3>'._T('avis_attention').'</h3><p>'._T('install_echec_annonce')."</p><ul class='spip'>";
200 200
 		foreach ($err as $e) {
201 201
 			echo "<li><strong>$e</strong></li>\n";
202 202
 		}
@@ -209,8 +209,8 @@  discard block
 block discarded – undo
209 209
 
210 210
 
211 211
 function info_etape($titre, $complement = '') {
212
-	return '<h2>' . $titre . "</h2>\n" .
213
-	($complement ? '' . $complement . "\n" : '');
212
+	return '<h2>'.$titre."</h2>\n".
213
+	($complement ? ''.$complement."\n" : '');
214 214
 }
215 215
 
216 216
 /**
@@ -224,18 +224,18 @@  discard block
 block discarded – undo
224 224
 		$code = _T('bouton_suivant');
225 225
 	}
226 226
 	static $suivant = 0;
227
-	$id = 'suivant' . (($suivant > 0) ? (string) $suivant : '');
227
+	$id = 'suivant'.(($suivant > 0) ? (string) $suivant : '');
228 228
 	$suivant += 1;
229 229
 
230
-	return "\n<p class='boutons suivant'><input id='" . $id . "' type='submit'\nvalue=\"" .
231
-	$code .
230
+	return "\n<p class='boutons suivant'><input id='".$id."' type='submit'\nvalue=\"".
231
+	$code.
232 232
 	" >>\" /></p>\n";
233 233
 }
234 234
 
235 235
 function info_progression_etape($en_cours, $phase, $dir, $erreur = false) {
236 236
 	$intitule_etat = [];
237 237
 
238
-	$liste = find_all_in_path($dir, $phase . '(([0-9])+|fin)[.]php$');
238
+	$liste = find_all_in_path($dir, $phase.'(([0-9])+|fin)[.]php$');
239 239
 	$debut = 1;
240 240
 	$last = is_countable($liste) ? count($liste) : 0;
241 241
 
@@ -266,23 +266,23 @@  discard block
 block discarded – undo
266 266
 			}
267 267
 
268 268
 			$aff_etapes .= "<li class='$class'><div class='fond'>";
269
-			$aff_etapes .= '<em>' . _T('etape') . " </em><span class='numero_etape'>$debut</span><em>&nbsp;: </em>";
270
-			$aff_etapes .= '<' . (($debut == $en_cours) ? 'strong' : 'span') . ' class="label_etape">' . $intitule_etat["$phase"][$debut] . '</' . (($debut == $en_cours) ? 'strong' : 'span') . '>';
269
+			$aff_etapes .= '<em>'._T('etape')." </em><span class='numero_etape'>$debut</span><em>&nbsp;: </em>";
270
+			$aff_etapes .= '<'.(($debut == $en_cours) ? 'strong' : 'span').' class="label_etape">'.$intitule_etat["$phase"][$debut].'</'.(($debut == $en_cours) ? 'strong' : 'span').'>';
271 271
 			$aff_etapes .= '</div></li>';
272 272
 		}
273 273
 		$debut++;
274 274
 	}
275 275
 
276
-	return $aff_etapes . '</ul>';
276
+	return $aff_etapes.'</ul>';
277 277
 }
278 278
 
279 279
 
280 280
 function fieldset($legend, $champs = [], $apres = '', $avant = '') {
281
-	return "<fieldset>\n" .
282
-	$avant .
283
-	($legend ? '<legend>' . $legend . "</legend>\n" : '') .
284
-	fieldset_champs($champs) .
285
-	$apres .
281
+	return "<fieldset>\n".
282
+	$avant.
283
+	($legend ? '<legend>'.$legend."</legend>\n" : '').
284
+	fieldset_champs($champs).
285
+	$apres.
286 286
 	"</fieldset>\n";
287 287
 }
288 288
 
@@ -292,18 +292,18 @@  discard block
 block discarded – undo
292 292
 		$type = isset($contenu['hidden']) ? 'hidden' : (preg_match(',^pass,', (string) $nom) ? 'password' : 'text');
293 293
 		$class = isset($contenu['hidden']) ? '' : "class='formo' size='40' ";
294 294
 		if (isset($contenu['alternatives'])) {
295
-			$fieldset .= $contenu['label'] . "\n";
295
+			$fieldset .= $contenu['label']."\n";
296 296
 			foreach ($contenu['alternatives'] as $valeur => $label) {
297
-				$fieldset .= "<input type='radio' name='" . $nom .
297
+				$fieldset .= "<input type='radio' name='".$nom.
298 298
 					"' id='$nom-$valeur' value='$valeur'"
299 299
 					. (($valeur == $contenu['valeur']) ? "\nchecked='checked'" : '')
300 300
 					. "/>\n";
301
-				$fieldset .= "<label for='$nom-$valeur'>" . $label . "</label>\n";
301
+				$fieldset .= "<label for='$nom-$valeur'>".$label."</label>\n";
302 302
 			}
303 303
 			$fieldset .= "<br />\n";
304 304
 		} else {
305
-			$fieldset .= "<label for='" . $nom . "'>" . $contenu['label'] . "</label>\n";
306
-			$fieldset .= '<input ' . $class . "type='" . $type . "' id='" . $nom . "' name='" . $nom . "'\nvalue='" . $contenu['valeur'] . "'"
305
+			$fieldset .= "<label for='".$nom."'>".$contenu['label']."</label>\n";
306
+			$fieldset .= '<input '.$class."type='".$type."' id='".$nom."' name='".$nom."'\nvalue='".$contenu['valeur']."'"
307 307
 				. (preg_match(',^(pass|login),', (string) $nom) ? " autocomplete='off'" : '')
308 308
 				. ((isset($contenu['required']) && $contenu['required']) ? " required='required'" : '')
309 309
 				. " />\n";
@@ -315,7 +315,7 @@  discard block
 block discarded – undo
315 315
 
316 316
 function install_select_serveur() {
317 317
 	$options = [];
318
-	$dir = _DIR_RESTREINT . 'req/';
318
+	$dir = _DIR_RESTREINT.'req/';
319 319
 	$d = opendir($dir);
320 320
 	if (!$d) {
321 321
 		return [];
@@ -323,17 +323,17 @@  discard block
 block discarded – undo
323 323
 	while (($f = readdir($d)) !== false) {
324 324
 		if (
325 325
 			preg_match('/^(.*)[.]php$/', $f, $s)
326
-			&& is_readable($f = $dir . $f)
326
+			&& is_readable($f = $dir.$f)
327 327
 		) {
328 328
 			require_once($f);
329 329
 			$s = $s[1];
330
-			$v = 'spip_versions_' . $s;
330
+			$v = 'spip_versions_'.$s;
331 331
 			if (function_exists($v) && $v()) {
332 332
 				$titre = _T("install_select_type_$s");
333 333
 				// proposer mysql par defaut si dispo
334 334
 				$checked = ($s == 'mysql' ? " checked='checked'" : '');
335 335
 				$options[$s] = "<li><input type='radio' id='$s' value='$s' name='server_db'$checked>"
336
-					. "<label for='$s'>" . ($titre ?: $s) . '</label></li>';
336
+					. "<label for='$s'>".($titre ?: $s).'</label></li>';
337 337
 			} else {
338 338
 				spip_logger()->info("$s: portage indisponible");
339 339
 			}
@@ -351,8 +351,8 @@  discard block
 block discarded – undo
351 351
 		"\n<input type='hidden' name='etape' value='$etape' />"
352 352
 		. $hidden
353 353
 		. (_request('echec') ?
354
-			('<p><b>' . _T('avis_connexion_echec_1') .
355
-				'</b></p><p>' . _T('avis_connexion_echec_2') . "</p><p style='font-size: small;'>" . _T('avis_connexion_echec_3') . '</p>')
354
+			('<p><b>'._T('avis_connexion_echec_1').
355
+				'</b></p><p>'._T('avis_connexion_echec_2')."</p><p style='font-size: small;'>"._T('avis_connexion_echec_3').'</p>')
356 356
 			: '')
357 357
 
358 358
 		. ($jquery ? http_script('', 'jquery.js') : '')
@@ -390,9 +390,9 @@  discard block
 block discarded – undo
390 390
 		});')
391 391
 
392 392
 		. ($server_db
393
-			? '<input type="hidden" name="server_db" value="' . $server_db . '" />'
393
+			? '<input type="hidden" name="server_db" value="'.$server_db.'" />'
394 394
 			. (($predef[0])
395
-				? ('<h3>' . _T('install_serveur_hebergeur') . '</h3>')
395
+				? ('<h3>'._T('install_serveur_hebergeur').'</h3>')
396 396
 				: '')
397 397
 			: ('<fieldset><legend>'
398 398
 				. _T('install_select_type_db')
@@ -407,9 +407,9 @@  discard block
 block discarded – undo
407 407
 				. "\n</ul>\n</div></fieldset>")
408 408
 		)
409 409
 		. '<div id="install_adresse_base_hebergeur">'
410
-		. '<p>' . _T('texte_connexion_mysql') . '</p>'
410
+		. '<p>'._T('texte_connexion_mysql').'</p>'
411 411
 		. ($predef[1]
412
-			? '<h3>' . _T('install_adresse_base_hebergeur') . '</h3>'
412
+			? '<h3>'._T('install_adresse_base_hebergeur').'</h3>'
413 413
 			: fieldset(
414 414
 				_T('entree_base_donnee_1'),
415 415
 				[
@@ -424,7 +424,7 @@  discard block
 block discarded – undo
424 424
 
425 425
 		. '<div id="install_login_base_hebergeur">'
426 426
 		. ($predef[2]
427
-			? '<h3>' . _T('install_login_base_hebergeur') . '</h3>'
427
+			? '<h3>'._T('install_login_base_hebergeur').'</h3>'
428 428
 			: fieldset(
429 429
 				_T('entree_login_connexion_1'),
430 430
 				[
@@ -439,7 +439,7 @@  discard block
 block discarded – undo
439 439
 
440 440
 		. '<div id="install_pass_base_hebergeur">'
441 441
 		. ($predef[3]
442
-			? '<h3>' . _T('install_pass_base_hebergeur') . '</h3>'
442
+			? '<h3>'._T('install_pass_base_hebergeur').'</h3>'
443 443
 			: fieldset(
444 444
 				_T('entree_mot_passe_1'),
445 445
 				[
@@ -461,20 +461,20 @@  discard block
 block discarded – undo
461 461
 function predef_ou_cache($adresse_db, $login_db, $pass_db, $server_db) {
462 462
 	return ((defined('_INSTALL_HOST_DB'))
463 463
 		? ''
464
-		: "\n<input type='hidden' name='adresse_db'  value=\"" . spip_htmlspecialchars($adresse_db) . '" />'
464
+		: "\n<input type='hidden' name='adresse_db'  value=\"".spip_htmlspecialchars($adresse_db).'" />'
465 465
 	)
466 466
 	. ((defined('_INSTALL_USER_DB'))
467 467
 		? ''
468
-		: "\n<input type='hidden' name='login_db' value=\"" . spip_htmlspecialchars($login_db) . '" />'
468
+		: "\n<input type='hidden' name='login_db' value=\"".spip_htmlspecialchars($login_db).'" />'
469 469
 	)
470 470
 	. ((defined('_INSTALL_PASS_DB'))
471 471
 		? ''
472
-		: "\n<input type='hidden' name='pass_db' value=\"" . spip_htmlspecialchars($pass_db) . '" />'
472
+		: "\n<input type='hidden' name='pass_db' value=\"".spip_htmlspecialchars($pass_db).'" />'
473 473
 	)
474 474
 
475 475
 	. ((defined('_INSTALL_SERVER_DB'))
476 476
 		? ''
477
-		: "\n<input type='hidden' name='server_db' value=\"" . spip_htmlspecialchars($server_db) . '" />'
477
+		: "\n<input type='hidden' name='server_db' value=\"".spip_htmlspecialchars($server_db).'" />'
478 478
 	);
479 479
 }
480 480
 
Please login to merge, or discard this patch.
ecrire/inc/traduire.php 2 patches
Indentation   +193 added lines, -193 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
 
24 24
 /**
@@ -39,18 +39,18 @@  discard block
 block discarded – undo
39 39
  *     Liste des fichiers de langue trouvés, dans l'ordre des chemins
40 40
  */
41 41
 function find_langs_in_path($file, $dirname = 'lang') {
42
-	static $dirs = [];
43
-	$liste = [];
44
-	foreach (creer_chemin() as $dir) {
45
-		if (!isset($dirs[$a = $dir . $dirname])) {
46
-			$dirs[$a] = (is_dir($a) || !$a);
47
-		}
48
-		if ($dirs[$a] && is_readable($a .= $file)) {
49
-			$liste[] = $a;
50
-		}
51
-	}
42
+    static $dirs = [];
43
+    $liste = [];
44
+    foreach (creer_chemin() as $dir) {
45
+        if (!isset($dirs[$a = $dir . $dirname])) {
46
+            $dirs[$a] = (is_dir($a) || !$a);
47
+        }
48
+        if ($dirs[$a] && is_readable($a .= $file)) {
49
+            $liste[] = $a;
50
+        }
51
+    }
52 52
 
53
-	return array_reverse($liste);
53
+    return array_reverse($liste);
54 54
 }
55 55
 
56 56
 /**
@@ -65,23 +65,23 @@  discard block
 block discarded – undo
65 65
  *     Liste des fichiers touvés pour ce module et cette langue.
66 66
  **/
67 67
 function chercher_module_lang($module, $lang = '') {
68
-	if ($lang) {
69
-		$lang = '_' . $lang;
70
-	}
68
+    if ($lang) {
69
+        $lang = '_' . $lang;
70
+    }
71 71
 
72
-	// 1) dans un repertoire nomme lang/ se trouvant sur le chemin
73
-	if (
74
-		$f = ($module == 'local'
75
-		? find_in_path($module . $lang . '.php', 'lang/')
76
-		: find_langs_in_path($module . $lang . '.php', 'lang/'))
77
-	) {
78
-		return is_array($f) ? $f : [$f];
79
-	}
72
+    // 1) dans un repertoire nomme lang/ se trouvant sur le chemin
73
+    if (
74
+        $f = ($module == 'local'
75
+        ? find_in_path($module . $lang . '.php', 'lang/')
76
+        : find_langs_in_path($module . $lang . '.php', 'lang/'))
77
+    ) {
78
+        return is_array($f) ? $f : [$f];
79
+    }
80 80
 
81
-	// 2) directement dans le chemin (old style, uniquement pour local)
82
-	return ($module == 'local' || strpos($module, '/'))
83
-		? (($f = find_in_path($module . $lang . '.php')) ? [$f] : false)
84
-		: false;
81
+    // 2) directement dans le chemin (old style, uniquement pour local)
82
+    return ($module == 'local' || strpos($module, '/'))
83
+        ? (($f = find_in_path($module . $lang . '.php')) ? [$f] : false)
84
+        : false;
85 85
 }
86 86
 
87 87
 /**
@@ -103,33 +103,33 @@  discard block
 block discarded – undo
103 103
  * @return void
104 104
  **/
105 105
 function charger_langue($lang, $module = 'spip') {
106
-	static $langs = [];
107
-	$var = 'i18n_' . $module . '_' . $lang;
108
-	if (!isset($langs[$lang])) {
109
-		$langs[$lang] = [];
110
-		if ($lang) {
111
-			$langs[$lang][] = $lang;
112
-			if (str_contains($lang, '_')) {
113
-				$l = explode('_', $lang);
114
-				$langs[$lang][] = reset($l);
115
-			}
116
-		}
117
-		$langs[$lang][] = $GLOBALS['meta']['langue_site'];
118
-		$langs[$lang][] = _LANGUE_PAR_DEFAUT;
119
-	}
120
-	foreach ($langs[$lang] as $l) {
121
-		if ($fichiers_lang = chercher_module_lang($module, $l)) {
122
-			$GLOBALS['idx_lang'] = 'i18n_' . $module . '_' . $l;
123
-			$GLOBALS[$GLOBALS['idx_lang']] = lire_fichier_langue(array_shift($fichiers_lang));
124
-			surcharger_langue($fichiers_lang);
125
-			if ($l !== $lang) {
126
-				$GLOBALS[$var] = &$GLOBALS['i18n_' . $module . '_' . $l];
127
-			}
128
-			$GLOBALS['lang_' . $var] = $l;
129
-			#spip_logger('traduire')->info("module de langue : {$module}_$l.php");
130
-			break;
131
-		}
132
-	}
106
+    static $langs = [];
107
+    $var = 'i18n_' . $module . '_' . $lang;
108
+    if (!isset($langs[$lang])) {
109
+        $langs[$lang] = [];
110
+        if ($lang) {
111
+            $langs[$lang][] = $lang;
112
+            if (str_contains($lang, '_')) {
113
+                $l = explode('_', $lang);
114
+                $langs[$lang][] = reset($l);
115
+            }
116
+        }
117
+        $langs[$lang][] = $GLOBALS['meta']['langue_site'];
118
+        $langs[$lang][] = _LANGUE_PAR_DEFAUT;
119
+    }
120
+    foreach ($langs[$lang] as $l) {
121
+        if ($fichiers_lang = chercher_module_lang($module, $l)) {
122
+            $GLOBALS['idx_lang'] = 'i18n_' . $module . '_' . $l;
123
+            $GLOBALS[$GLOBALS['idx_lang']] = lire_fichier_langue(array_shift($fichiers_lang));
124
+            surcharger_langue($fichiers_lang);
125
+            if ($l !== $lang) {
126
+                $GLOBALS[$var] = &$GLOBALS['i18n_' . $module . '_' . $l];
127
+            }
128
+            $GLOBALS['lang_' . $var] = $l;
129
+            #spip_logger('traduire')->info("module de langue : {$module}_$l.php");
130
+            break;
131
+        }
132
+    }
133 133
 }
134 134
 
135 135
 /**
@@ -142,22 +142,22 @@  discard block
 block discarded – undo
142 142
  * @return array<string, string>
143 143
  */
144 144
 function lire_fichier_langue(string $fichier): array {
145
-	$idx_lang_before = $GLOBALS['idx_lang'] ?? null;
146
-	$idx_lang_tmp = ($GLOBALS['idx_lang'] ?? 'lang') . '@temporaire';
147
-	$GLOBALS['idx_lang'] = $idx_lang_tmp;
148
-	$idx_lang = include $fichier;
149
-	$GLOBALS['idx_lang'] = $idx_lang_before;
150
-	if (!is_array($idx_lang)) {
151
-		if (isset($GLOBALS[$idx_lang_tmp]) && is_array($GLOBALS[$idx_lang_tmp])) {
152
-			trigger_deprecation('spip', '5.0', sprintf('Lang file "%s" populating a GLOBALS is deprecated. Return an array instead.', $fichier));
153
-			$idx_lang = $GLOBALS[$idx_lang_tmp];
154
-		} else {
155
-			$idx_lang = [];
156
-			spip_logger()->error(sprintf('Fichier de langue incorrect : %s', $fichier));
157
-		}
158
-		unset($GLOBALS[$idx_lang_tmp]);
159
-	}
160
-	return $idx_lang;
145
+    $idx_lang_before = $GLOBALS['idx_lang'] ?? null;
146
+    $idx_lang_tmp = ($GLOBALS['idx_lang'] ?? 'lang') . '@temporaire';
147
+    $GLOBALS['idx_lang'] = $idx_lang_tmp;
148
+    $idx_lang = include $fichier;
149
+    $GLOBALS['idx_lang'] = $idx_lang_before;
150
+    if (!is_array($idx_lang)) {
151
+        if (isset($GLOBALS[$idx_lang_tmp]) && is_array($GLOBALS[$idx_lang_tmp])) {
152
+            trigger_deprecation('spip', '5.0', sprintf('Lang file "%s" populating a GLOBALS is deprecated. Return an array instead.', $fichier));
153
+            $idx_lang = $GLOBALS[$idx_lang_tmp];
154
+        } else {
155
+            $idx_lang = [];
156
+            spip_logger()->error(sprintf('Fichier de langue incorrect : %s', $fichier));
157
+        }
158
+        unset($GLOBALS[$idx_lang_tmp]);
159
+    }
160
+    return $idx_lang;
161 161
 }
162 162
 
163 163
 /**
@@ -177,29 +177,29 @@  discard block
 block discarded – undo
177 177
  *    Liste des chemins de fichiers de langue à surcharger.
178 178
  **/
179 179
 function surcharger_langue($fichiers) {
180
-	static $surcharges = [];
181
-	if (!isset($GLOBALS['idx_lang'])) {
182
-		return;
183
-	}
180
+    static $surcharges = [];
181
+    if (!isset($GLOBALS['idx_lang'])) {
182
+        return;
183
+    }
184 184
 
185
-	if (!is_array($fichiers)) {
186
-		$fichiers = [$fichiers];
187
-	}
188
-	if ($fichiers === []) {
189
-		return;
190
-	}
191
-	foreach ($fichiers as $fichier) {
192
-		if (!isset($surcharges[$fichier])) {
193
-			$surcharges[$fichier] = lire_fichier_langue($fichier);
194
-		}
195
-		if (is_array($surcharges[$fichier])) {
196
-			$GLOBALS[$GLOBALS['idx_lang']] ??= [];
197
-			$GLOBALS[$GLOBALS['idx_lang']] = array_merge(
198
-				$GLOBALS[$GLOBALS['idx_lang']],
199
-				$surcharges[$fichier]
200
-			);
201
-		}
202
-	}
185
+    if (!is_array($fichiers)) {
186
+        $fichiers = [$fichiers];
187
+    }
188
+    if ($fichiers === []) {
189
+        return;
190
+    }
191
+    foreach ($fichiers as $fichier) {
192
+        if (!isset($surcharges[$fichier])) {
193
+            $surcharges[$fichier] = lire_fichier_langue($fichier);
194
+        }
195
+        if (is_array($surcharges[$fichier])) {
196
+            $GLOBALS[$GLOBALS['idx_lang']] ??= [];
197
+            $GLOBALS[$GLOBALS['idx_lang']] = array_merge(
198
+                $GLOBALS[$GLOBALS['idx_lang']],
199
+                $surcharges[$fichier]
200
+            );
201
+        }
202
+    }
203 203
 }
204 204
 
205 205
 /**
@@ -240,99 +240,99 @@  discard block
 block discarded – undo
240 240
  *     - Description : traduction et description (texte, module, langue)
241 241
  **/
242 242
 function inc_traduire_dist($ori, $lang, $raw = false) {
243
-	static $deja_vu = [];
244
-	static $local = [];
243
+    static $deja_vu = [];
244
+    static $local = [];
245 245
 
246
-	if (isset($deja_vu[$lang][$ori]) && _request('var_mode') != 'traduction') {
247
-		return $raw ? $deja_vu[$lang][$ori] : $deja_vu[$lang][$ori]->texte;
248
-	}
246
+    if (isset($deja_vu[$lang][$ori]) && _request('var_mode') != 'traduction') {
247
+        return $raw ? $deja_vu[$lang][$ori] : $deja_vu[$lang][$ori]->texte;
248
+    }
249 249
 
250
-	// modules demandes explicitement <xxx|yyy|zzz:code> cf MODULES_IDIOMES
251
-	if (strpos($ori, ':')) {
252
-		[$modules, $code] = explode(':', $ori, 2);
253
-		$modules = explode('|', $modules);
254
-		$ori_complet = $ori;
255
-	} else {
256
-		$modules = ['spip', 'ecrire'];
257
-		$code = $ori;
258
-		$ori_complet = implode('|', $modules) . ':' . $ori;
259
-	}
250
+    // modules demandes explicitement <xxx|yyy|zzz:code> cf MODULES_IDIOMES
251
+    if (strpos($ori, ':')) {
252
+        [$modules, $code] = explode(':', $ori, 2);
253
+        $modules = explode('|', $modules);
254
+        $ori_complet = $ori;
255
+    } else {
256
+        $modules = ['spip', 'ecrire'];
257
+        $code = $ori;
258
+        $ori_complet = implode('|', $modules) . ':' . $ori;
259
+    }
260 260
 
261
-	$desc = new Description();
261
+    $desc = new Description();
262 262
 
263
-	// parcourir tous les modules jusqu'a ce qu'on trouve
264
-	foreach ($modules as $module) {
265
-		$var = 'i18n_' . $module . '_' . $lang;
263
+    // parcourir tous les modules jusqu'a ce qu'on trouve
264
+    foreach ($modules as $module) {
265
+        $var = 'i18n_' . $module . '_' . $lang;
266 266
 
267
-		if (empty($GLOBALS[$var])) {
268
-			charger_langue($lang, $module);
269
-			// surcharges persos -- on cherche
270
-			// (lang/)local_xx.php et/ou (lang/)local.php ...
271
-			if (!isset($local['local_' . $lang])) {
272
-				// redéfinir la langue en cours pour les surcharges (chercher_langue a pu le changer)
273
-				$GLOBALS['idx_lang'] = $var;
274
-				// ... (lang/)local_xx.php
275
-				$local['local_' . $lang] = chercher_module_lang('local', $lang);
276
-			}
277
-			if ($local['local_' . $lang]) {
278
-				surcharger_langue($local['local_' . $lang]);
279
-			}
280
-			// ... puis (lang/)local.php
281
-			if (!isset($local['local'])) {
282
-				$local['local'] = chercher_module_lang('local');
283
-			}
284
-			if ($local['local']) {
285
-				surcharger_langue($local['local']);
286
-			}
287
-		}
267
+        if (empty($GLOBALS[$var])) {
268
+            charger_langue($lang, $module);
269
+            // surcharges persos -- on cherche
270
+            // (lang/)local_xx.php et/ou (lang/)local.php ...
271
+            if (!isset($local['local_' . $lang])) {
272
+                // redéfinir la langue en cours pour les surcharges (chercher_langue a pu le changer)
273
+                $GLOBALS['idx_lang'] = $var;
274
+                // ... (lang/)local_xx.php
275
+                $local['local_' . $lang] = chercher_module_lang('local', $lang);
276
+            }
277
+            if ($local['local_' . $lang]) {
278
+                surcharger_langue($local['local_' . $lang]);
279
+            }
280
+            // ... puis (lang/)local.php
281
+            if (!isset($local['local'])) {
282
+                $local['local'] = chercher_module_lang('local');
283
+            }
284
+            if ($local['local']) {
285
+                surcharger_langue($local['local']);
286
+            }
287
+        }
288 288
 
289
-		if (isset($GLOBALS[$var][$code])) {
290
-			$desc->code = $code;
291
-			$desc->module = $module;
292
-			$desc->langue = $GLOBALS['lang_' . $var] ?? $lang;
293
-			$desc->texte = $GLOBALS[$var][$code];
294
-			break;
295
-		}
296
-	}
289
+        if (isset($GLOBALS[$var][$code])) {
290
+            $desc->code = $code;
291
+            $desc->module = $module;
292
+            $desc->langue = $GLOBALS['lang_' . $var] ?? $lang;
293
+            $desc->texte = $GLOBALS[$var][$code];
294
+            break;
295
+        }
296
+    }
297 297
 
298
-	if (!$desc->corrections) {
299
-		$desc->corrections = true;
300
-		// Retour aux sources si la chaine est absente dans la langue cible ;
301
-		// on essaie d'abord la langue du site, puis a defaut la langue fr
302
-		if (
303
-			($desc->texte === null || !strlen($desc->texte))
304
-			&& $lang !== _LANGUE_PAR_DEFAUT
305
-		) {
306
-			if ($lang !== $GLOBALS['meta']['langue_site']) {
307
-				$desc = inc_traduire_dist($ori, $GLOBALS['meta']['langue_site'], true);
308
-			} else {
309
-				$desc = inc_traduire_dist($ori, _LANGUE_PAR_DEFAUT, true);
310
-			}
311
-		}
298
+    if (!$desc->corrections) {
299
+        $desc->corrections = true;
300
+        // Retour aux sources si la chaine est absente dans la langue cible ;
301
+        // on essaie d'abord la langue du site, puis a defaut la langue fr
302
+        if (
303
+            ($desc->texte === null || !strlen($desc->texte))
304
+            && $lang !== _LANGUE_PAR_DEFAUT
305
+        ) {
306
+            if ($lang !== $GLOBALS['meta']['langue_site']) {
307
+                $desc = inc_traduire_dist($ori, $GLOBALS['meta']['langue_site'], true);
308
+            } else {
309
+                $desc = inc_traduire_dist($ori, _LANGUE_PAR_DEFAUT, true);
310
+            }
311
+        }
312 312
 
313
-		// Supprimer la mention <NEW> ou <MODIF>
314
-		if ($desc->texte && str_starts_with($desc->texte, '<')) {
315
-			$desc->texte = str_replace(['<NEW>', '<MODIF>'], [], $desc->texte);
316
-		}
313
+        // Supprimer la mention <NEW> ou <MODIF>
314
+        if ($desc->texte && str_starts_with($desc->texte, '<')) {
315
+            $desc->texte = str_replace(['<NEW>', '<MODIF>'], [], $desc->texte);
316
+        }
317 317
 
318
-		// Si on n'est pas en utf-8, la chaine peut l'etre...
319
-		// le cas echeant on la convertit en entites html &#xxx;
320
-		if (
321
-			(!isset($GLOBALS['meta']['charset']) || $GLOBALS['meta']['charset'] !== 'utf-8')
322
-			&& preg_match(',[\x7f-\xff],S', $desc->texte)
323
-		) {
324
-			include_spip('inc/charsets');
325
-			$desc->texte = charset2unicode($desc->texte, 'utf-8');
326
-		}
327
-	}
318
+        // Si on n'est pas en utf-8, la chaine peut l'etre...
319
+        // le cas echeant on la convertit en entites html &#xxx;
320
+        if (
321
+            (!isset($GLOBALS['meta']['charset']) || $GLOBALS['meta']['charset'] !== 'utf-8')
322
+            && preg_match(',[\x7f-\xff],S', $desc->texte)
323
+        ) {
324
+            include_spip('inc/charsets');
325
+            $desc->texte = charset2unicode($desc->texte, 'utf-8');
326
+        }
327
+    }
328 328
 
329
-	if (_request('var_mode') == 'traduction') {
330
-		$desc = definir_details_traduction($desc, $ori_complet);
331
-	} else {
332
-		$deja_vu[$lang][$ori] = $desc;
333
-	}
329
+    if (_request('var_mode') == 'traduction') {
330
+        $desc = definir_details_traduction($desc, $ori_complet);
331
+    } else {
332
+        $deja_vu[$lang][$ori] = $desc;
333
+    }
334 334
 
335
-	return $raw ? $desc : $desc->texte;
335
+    return $raw ? $desc : $desc->texte;
336 336
 }
337 337
 
338 338
 /**
@@ -344,23 +344,23 @@  discard block
 block discarded – undo
344 344
  * @return Description
345 345
  */
346 346
 function definir_details_traduction($desc, $modules) {
347
-	if (!$desc->mode && $desc->texte) {
348
-		// ne pas modifier 2 fois l'affichage
349
-		$desc->mode = 'traduction';
350
-		$classe = 'debug-traduction' . ($desc->module == 'ecrire' ? '-prive' : '');
351
-		$desc->texte = '<span '
352
-			. 'lang=' . $desc->langue
353
-			. ' class=' . $classe
354
-			. ' data-module=' . $desc->module
355
-			. ' data-code=' . $desc->code
356
-			. ' title=' . $modules . '(' . $desc->langue . ')>'
357
-			. $desc->texte
358
-			. '</span>';
359
-		$desc->texte = str_replace(
360
-			["$desc->module:", "$desc->module|"],
361
-			["*$desc->module*:", "*$desc->module*|"],
362
-			$desc->texte
363
-		);
364
-	}
365
-	return $desc;
347
+    if (!$desc->mode && $desc->texte) {
348
+        // ne pas modifier 2 fois l'affichage
349
+        $desc->mode = 'traduction';
350
+        $classe = 'debug-traduction' . ($desc->module == 'ecrire' ? '-prive' : '');
351
+        $desc->texte = '<span '
352
+            . 'lang=' . $desc->langue
353
+            . ' class=' . $classe
354
+            . ' data-module=' . $desc->module
355
+            . ' data-code=' . $desc->code
356
+            . ' title=' . $modules . '(' . $desc->langue . ')>'
357
+            . $desc->texte
358
+            . '</span>';
359
+        $desc->texte = str_replace(
360
+            ["$desc->module:", "$desc->module|"],
361
+            ["*$desc->module*:", "*$desc->module*|"],
362
+            $desc->texte
363
+        );
364
+    }
365
+    return $desc;
366 366
 }
Please login to merge, or discard this patch.
Spacing   +23 added lines, -23 removed lines patch added patch discarded remove patch
@@ -42,7 +42,7 @@  discard block
 block discarded – undo
42 42
 	static $dirs = [];
43 43
 	$liste = [];
44 44
 	foreach (creer_chemin() as $dir) {
45
-		if (!isset($dirs[$a = $dir . $dirname])) {
45
+		if (!isset($dirs[$a = $dir.$dirname])) {
46 46
 			$dirs[$a] = (is_dir($a) || !$a);
47 47
 		}
48 48
 		if ($dirs[$a] && is_readable($a .= $file)) {
@@ -66,21 +66,21 @@  discard block
 block discarded – undo
66 66
  **/
67 67
 function chercher_module_lang($module, $lang = '') {
68 68
 	if ($lang) {
69
-		$lang = '_' . $lang;
69
+		$lang = '_'.$lang;
70 70
 	}
71 71
 
72 72
 	// 1) dans un repertoire nomme lang/ se trouvant sur le chemin
73 73
 	if (
74 74
 		$f = ($module == 'local'
75
-		? find_in_path($module . $lang . '.php', 'lang/')
76
-		: find_langs_in_path($module . $lang . '.php', 'lang/'))
75
+		? find_in_path($module.$lang.'.php', 'lang/')
76
+		: find_langs_in_path($module.$lang.'.php', 'lang/'))
77 77
 	) {
78 78
 		return is_array($f) ? $f : [$f];
79 79
 	}
80 80
 
81 81
 	// 2) directement dans le chemin (old style, uniquement pour local)
82 82
 	return ($module == 'local' || strpos($module, '/'))
83
-		? (($f = find_in_path($module . $lang . '.php')) ? [$f] : false)
83
+		? (($f = find_in_path($module.$lang.'.php')) ? [$f] : false)
84 84
 		: false;
85 85
 }
86 86
 
@@ -104,7 +104,7 @@  discard block
 block discarded – undo
104 104
  **/
105 105
 function charger_langue($lang, $module = 'spip') {
106 106
 	static $langs = [];
107
-	$var = 'i18n_' . $module . '_' . $lang;
107
+	$var = 'i18n_'.$module.'_'.$lang;
108 108
 	if (!isset($langs[$lang])) {
109 109
 		$langs[$lang] = [];
110 110
 		if ($lang) {
@@ -119,13 +119,13 @@  discard block
 block discarded – undo
119 119
 	}
120 120
 	foreach ($langs[$lang] as $l) {
121 121
 		if ($fichiers_lang = chercher_module_lang($module, $l)) {
122
-			$GLOBALS['idx_lang'] = 'i18n_' . $module . '_' . $l;
122
+			$GLOBALS['idx_lang'] = 'i18n_'.$module.'_'.$l;
123 123
 			$GLOBALS[$GLOBALS['idx_lang']] = lire_fichier_langue(array_shift($fichiers_lang));
124 124
 			surcharger_langue($fichiers_lang);
125 125
 			if ($l !== $lang) {
126
-				$GLOBALS[$var] = &$GLOBALS['i18n_' . $module . '_' . $l];
126
+				$GLOBALS[$var] = &$GLOBALS['i18n_'.$module.'_'.$l];
127 127
 			}
128
-			$GLOBALS['lang_' . $var] = $l;
128
+			$GLOBALS['lang_'.$var] = $l;
129 129
 			#spip_logger('traduire')->info("module de langue : {$module}_$l.php");
130 130
 			break;
131 131
 		}
@@ -143,7 +143,7 @@  discard block
 block discarded – undo
143 143
  */
144 144
 function lire_fichier_langue(string $fichier): array {
145 145
 	$idx_lang_before = $GLOBALS['idx_lang'] ?? null;
146
-	$idx_lang_tmp = ($GLOBALS['idx_lang'] ?? 'lang') . '@temporaire';
146
+	$idx_lang_tmp = ($GLOBALS['idx_lang'] ?? 'lang').'@temporaire';
147 147
 	$GLOBALS['idx_lang'] = $idx_lang_tmp;
148 148
 	$idx_lang = include $fichier;
149 149
 	$GLOBALS['idx_lang'] = $idx_lang_before;
@@ -255,27 +255,27 @@  discard block
 block discarded – undo
255 255
 	} else {
256 256
 		$modules = ['spip', 'ecrire'];
257 257
 		$code = $ori;
258
-		$ori_complet = implode('|', $modules) . ':' . $ori;
258
+		$ori_complet = implode('|', $modules).':'.$ori;
259 259
 	}
260 260
 
261 261
 	$desc = new Description();
262 262
 
263 263
 	// parcourir tous les modules jusqu'a ce qu'on trouve
264 264
 	foreach ($modules as $module) {
265
-		$var = 'i18n_' . $module . '_' . $lang;
265
+		$var = 'i18n_'.$module.'_'.$lang;
266 266
 
267 267
 		if (empty($GLOBALS[$var])) {
268 268
 			charger_langue($lang, $module);
269 269
 			// surcharges persos -- on cherche
270 270
 			// (lang/)local_xx.php et/ou (lang/)local.php ...
271
-			if (!isset($local['local_' . $lang])) {
271
+			if (!isset($local['local_'.$lang])) {
272 272
 				// redéfinir la langue en cours pour les surcharges (chercher_langue a pu le changer)
273 273
 				$GLOBALS['idx_lang'] = $var;
274 274
 				// ... (lang/)local_xx.php
275
-				$local['local_' . $lang] = chercher_module_lang('local', $lang);
275
+				$local['local_'.$lang] = chercher_module_lang('local', $lang);
276 276
 			}
277
-			if ($local['local_' . $lang]) {
278
-				surcharger_langue($local['local_' . $lang]);
277
+			if ($local['local_'.$lang]) {
278
+				surcharger_langue($local['local_'.$lang]);
279 279
 			}
280 280
 			// ... puis (lang/)local.php
281 281
 			if (!isset($local['local'])) {
@@ -289,7 +289,7 @@  discard block
 block discarded – undo
289 289
 		if (isset($GLOBALS[$var][$code])) {
290 290
 			$desc->code = $code;
291 291
 			$desc->module = $module;
292
-			$desc->langue = $GLOBALS['lang_' . $var] ?? $lang;
292
+			$desc->langue = $GLOBALS['lang_'.$var] ?? $lang;
293 293
 			$desc->texte = $GLOBALS[$var][$code];
294 294
 			break;
295 295
 		}
@@ -347,13 +347,13 @@  discard block
 block discarded – undo
347 347
 	if (!$desc->mode && $desc->texte) {
348 348
 		// ne pas modifier 2 fois l'affichage
349 349
 		$desc->mode = 'traduction';
350
-		$classe = 'debug-traduction' . ($desc->module == 'ecrire' ? '-prive' : '');
350
+		$classe = 'debug-traduction'.($desc->module == 'ecrire' ? '-prive' : '');
351 351
 		$desc->texte = '<span '
352
-			. 'lang=' . $desc->langue
353
-			. ' class=' . $classe
354
-			. ' data-module=' . $desc->module
355
-			. ' data-code=' . $desc->code
356
-			. ' title=' . $modules . '(' . $desc->langue . ')>'
352
+			. 'lang='.$desc->langue
353
+			. ' class='.$classe
354
+			. ' data-module='.$desc->module
355
+			. ' data-code='.$desc->code
356
+			. ' title='.$modules.'('.$desc->langue.')>'
357 357
 			. $desc->texte
358 358
 			. '</span>';
359 359
 		$desc->texte = str_replace(
Please login to merge, or discard this patch.
ecrire/inc/acces.php 2 patches
Indentation   +204 added lines, -204 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  **/
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 /**
@@ -30,41 +30,41 @@  discard block
 block discarded – undo
30 30
  *     Mot de passe
31 31
  **/
32 32
 function creer_pass_aleatoire($longueur = 16, $sel = '') {
33
-	$seed = (int)round(((float)microtime() + 1) * time());
34
-
35
-	mt_srand($seed);
36
-	$s = '';
37
-	$pass = '';
38
-	for ($i = 0; $i < $longueur; $i++) {
39
-		if (!$s) {
40
-			$s = random_int(0, mt_getrandmax());
41
-			if (!$s) {
42
-				$s = random_int(0, mt_getrandmax());
43
-			}
44
-			$s = substr(md5(uniqid($s) . $sel), 0, 16);
45
-		}
46
-		$r = unpack('Cr', pack('H2', $s . $s));
47
-		$x = $r['r'] & 63;
48
-		if ($x < 10) {
49
-			$x = chr($x + 48);
50
-		} else {
51
-			if ($x < 36) {
52
-				$x = chr($x + 55);
53
-			} else {
54
-				if ($x < 62) {
55
-					$x = chr($x + 61);
56
-				} else {
57
-					$x = $x == 63 ? '/' : '.';
58
-				}
59
-			}
60
-		}
61
-		$pass .= $x;
62
-		$s = substr($s, 2);
63
-	}
64
-	$pass = preg_replace('@[./]@', 'a', $pass);
65
-	$pass = preg_replace('@[I1l]@', 'L', $pass);
66
-
67
-	return preg_replace('@[0O]@', 'o', $pass);
33
+    $seed = (int)round(((float)microtime() + 1) * time());
34
+
35
+    mt_srand($seed);
36
+    $s = '';
37
+    $pass = '';
38
+    for ($i = 0; $i < $longueur; $i++) {
39
+        if (!$s) {
40
+            $s = random_int(0, mt_getrandmax());
41
+            if (!$s) {
42
+                $s = random_int(0, mt_getrandmax());
43
+            }
44
+            $s = substr(md5(uniqid($s) . $sel), 0, 16);
45
+        }
46
+        $r = unpack('Cr', pack('H2', $s . $s));
47
+        $x = $r['r'] & 63;
48
+        if ($x < 10) {
49
+            $x = chr($x + 48);
50
+        } else {
51
+            if ($x < 36) {
52
+                $x = chr($x + 55);
53
+            } else {
54
+                if ($x < 62) {
55
+                    $x = chr($x + 61);
56
+                } else {
57
+                    $x = $x == 63 ? '/' : '.';
58
+                }
59
+            }
60
+        }
61
+        $pass .= $x;
62
+        $s = substr($s, 2);
63
+    }
64
+    $pass = preg_replace('@[./]@', 'a', $pass);
65
+    $pass = preg_replace('@[I1l]@', 'L', $pass);
66
+
67
+    return preg_replace('@[0O]@', 'o', $pass);
68 68
 }
69 69
 
70 70
 /**
@@ -73,20 +73,20 @@  discard block
 block discarded – undo
73 73
  * @return string Identifiant
74 74
  */
75 75
 function creer_uniqid() {
76
-	static $seeded;
76
+    static $seeded;
77 77
 
78
-	if (!$seeded) {
79
-		$seed = (int)round(((float)microtime() + 1) * time());
80
-		mt_srand($seed);
81
-		$seeded = true;
82
-	}
78
+    if (!$seeded) {
79
+        $seed = (int)round(((float)microtime() + 1) * time());
80
+        mt_srand($seed);
81
+        $seeded = true;
82
+    }
83 83
 
84
-	$s = random_int(0, mt_getrandmax());
85
-	if (!$s) {
86
-		$s = random_int(0, mt_getrandmax());
87
-	}
84
+    $s = random_int(0, mt_getrandmax());
85
+    if (!$s) {
86
+        $s = random_int(0, mt_getrandmax());
87
+    }
88 88
 
89
-	return uniqid((string) $s, true);
89
+    return uniqid((string) $s, true);
90 90
 }
91 91
 
92 92
 /**
@@ -100,42 +100,42 @@  discard block
 block discarded – undo
100 100
  * @return string Retourne l'alea éphemère actuel au passage
101 101
  */
102 102
 function charger_aleas() {
103
-	if (!isset($GLOBALS['meta']['alea_ephemere'])) {
104
-		include_spip('base/abstract_sql');
105
-		$aleas = sql_allfetsel(
106
-			['nom', 'valeur'],
107
-			'spip_meta',
108
-			sql_in('nom', ['alea_ephemere', 'alea_ephemere_ancien']),
109
-			'',
110
-			'',
111
-			'',
112
-			'',
113
-			'',
114
-			'continue'
115
-		);
116
-		if ($aleas) {
117
-			foreach ($aleas as $a) {
118
-				$GLOBALS['meta'][$a['nom']] = $a['valeur'];
119
-			}
120
-			return $GLOBALS['meta']['alea_ephemere'];
121
-		} else {
122
-			spip_logger('session')->info('aleas indisponibles');
123
-			return '';
124
-		}
125
-	}
126
-	return $GLOBALS['meta']['alea_ephemere'];
103
+    if (!isset($GLOBALS['meta']['alea_ephemere'])) {
104
+        include_spip('base/abstract_sql');
105
+        $aleas = sql_allfetsel(
106
+            ['nom', 'valeur'],
107
+            'spip_meta',
108
+            sql_in('nom', ['alea_ephemere', 'alea_ephemere_ancien']),
109
+            '',
110
+            '',
111
+            '',
112
+            '',
113
+            '',
114
+            'continue'
115
+        );
116
+        if ($aleas) {
117
+            foreach ($aleas as $a) {
118
+                $GLOBALS['meta'][$a['nom']] = $a['valeur'];
119
+            }
120
+            return $GLOBALS['meta']['alea_ephemere'];
121
+        } else {
122
+            spip_logger('session')->info('aleas indisponibles');
123
+            return '';
124
+        }
125
+    }
126
+    return $GLOBALS['meta']['alea_ephemere'];
127 127
 }
128 128
 
129 129
 /**
130 130
  * Renouveller l'alea (utilisé pour sécuriser les scripts du répertoire `action/`)
131 131
  **/
132 132
 function renouvelle_alea() {
133
-	charger_aleas();
134
-	ecrire_meta('alea_ephemere_ancien', @$GLOBALS['meta']['alea_ephemere'], 'non');
135
-	$GLOBALS['meta']['alea_ephemere'] = md5(creer_uniqid());
136
-	ecrire_meta('alea_ephemere', $GLOBALS['meta']['alea_ephemere'], 'non');
137
-	ecrire_meta('alea_ephemere_date', time(), 'non');
138
-	spip_logger()->info("renouvellement de l'alea_ephemere");
133
+    charger_aleas();
134
+    ecrire_meta('alea_ephemere_ancien', @$GLOBALS['meta']['alea_ephemere'], 'non');
135
+    $GLOBALS['meta']['alea_ephemere'] = md5(creer_uniqid());
136
+    ecrire_meta('alea_ephemere', $GLOBALS['meta']['alea_ephemere'], 'non');
137
+    ecrire_meta('alea_ephemere_date', time(), 'non');
138
+    spip_logger()->info("renouvellement de l'alea_ephemere");
139 139
 }
140 140
 
141 141
 
@@ -155,21 +155,21 @@  discard block
 block discarded – undo
155 155
  *     Clé de sécurité.
156 156
  **/
157 157
 function low_sec($id_auteur) {
158
-	// Pas d'id_auteur : low_sec
159
-	if (!$id_auteur = (int) $id_auteur) {
160
-		include_spip('inc/config');
161
-		if (!$low_sec = lire_config('low_sec')) {
162
-			ecrire_meta('low_sec', $low_sec = creer_pass_aleatoire());
163
-		}
164
-	} else {
165
-		$low_sec = sql_getfetsel('low_sec', 'spip_auteurs', 'id_auteur = ' . (int) $id_auteur);
166
-		if (!$low_sec) {
167
-			$low_sec = creer_pass_aleatoire();
168
-			sql_updateq('spip_auteurs', ['low_sec' => $low_sec], 'id_auteur = ' . (int) $id_auteur);
169
-		}
170
-	}
171
-
172
-	return $low_sec;
158
+    // Pas d'id_auteur : low_sec
159
+    if (!$id_auteur = (int) $id_auteur) {
160
+        include_spip('inc/config');
161
+        if (!$low_sec = lire_config('low_sec')) {
162
+            ecrire_meta('low_sec', $low_sec = creer_pass_aleatoire());
163
+        }
164
+    } else {
165
+        $low_sec = sql_getfetsel('low_sec', 'spip_auteurs', 'id_auteur = ' . (int) $id_auteur);
166
+        if (!$low_sec) {
167
+            $low_sec = creer_pass_aleatoire();
168
+            sql_updateq('spip_auteurs', ['low_sec' => $low_sec], 'id_auteur = ' . (int) $id_auteur);
169
+        }
170
+    }
171
+
172
+    return $low_sec;
173 173
 }
174 174
 
175 175
 
@@ -202,11 +202,11 @@  discard block
 block discarded – undo
202 202
  * @filtre
203 203
  */
204 204
 function securiser_acces_low_sec($id_auteur, #[\SensitiveParameter] $cle, $dir, $op = '', $args = '') {
205
-	if ($op) {
206
-		$dir .= " $op $args";
207
-	}
205
+    if ($op) {
206
+        $dir .= " $op $args";
207
+    }
208 208
 
209
-	return verifier_low_sec($id_auteur, $cle, $dir);
209
+    return verifier_low_sec($id_auteur, $cle, $dir);
210 210
 }
211 211
 
212 212
 /**
@@ -214,11 +214,11 @@  discard block
 block discarded – undo
214 214
  * @return string
215 215
  */
216 216
 function generer_url_api_low_sec(string $script, string $format, string $fond, string $path, string $args, bool $no_entities = false, ?bool $public = null) {
217
-	$id_auteur = $GLOBALS['visiteur_session']['id_auteur'] ?? 0;
218
-	$cle = afficher_low_sec($id_auteur, "$script/$format $fond $args");
219
-	$path = "$id_auteur/$cle/$format/$fond" . ($path ? "/$path" : '');
217
+    $id_auteur = $GLOBALS['visiteur_session']['id_auteur'] ?? 0;
218
+    $cle = afficher_low_sec($id_auteur, "$script/$format $fond $args");
219
+    $path = "$id_auteur/$cle/$format/$fond" . ($path ? "/$path" : '');
220 220
 
221
-	return generer_url_api($script, $path, $args, $no_entities, $public);
221
+    return generer_url_api($script, $path, $args, $no_entities, $public);
222 222
 }
223 223
 
224 224
 /**
@@ -234,7 +234,7 @@  discard block
 block discarded – undo
234 234
  *     Clé
235 235
  **/
236 236
 function afficher_low_sec($id_auteur, $action = '') {
237
-	return substr(md5($action . low_sec($id_auteur)), 0, 8);
237
+    return substr(md5($action . low_sec($id_auteur)), 0, 8);
238 238
 }
239 239
 
240 240
 /**
@@ -252,7 +252,7 @@  discard block
 block discarded – undo
252 252
  *     true si les clés corresponde, false sinon
253 253
  **/
254 254
 function verifier_low_sec($id_auteur, #[\SensitiveParameter] $cle, $action = '') {
255
-	return ($cle == afficher_low_sec($id_auteur, $action));
255
+    return ($cle == afficher_low_sec($id_auteur, $action));
256 256
 }
257 257
 
258 258
 /**
@@ -262,10 +262,10 @@  discard block
 block discarded – undo
262 262
  *     Identifiant de l'auteur
263 263
  **/
264 264
 function effacer_low_sec($id_auteur) {
265
-	if (!$id_auteur = (int) $id_auteur) {
266
-		return;
267
-	} // jamais trop prudent ;)
268
-	sql_updateq('spip_auteurs', ['low_sec' => ''], 'id_auteur = ' . (int) $id_auteur);
265
+    if (!$id_auteur = (int) $id_auteur) {
266
+        return;
267
+    } // jamais trop prudent ;)
268
+    sql_updateq('spip_auteurs', ['low_sec' => ''], 'id_auteur = ' . (int) $id_auteur);
269 269
 }
270 270
 
271 271
 
@@ -283,29 +283,29 @@  discard block
 block discarded – undo
283 283
  *     - void sinon.
284 284
  **/
285 285
 function ecrire_acces() {
286
-	$htaccess = _DIR_RESTREINT . _ACCESS_FILE_NAME;
287
-	$htpasswd = _DIR_TMP . _AUTH_USER_FILE;
288
-
289
-	// Cette variable de configuration peut etre posee par un plugin
290
-	// par exemple acces_restreint ;
291
-	// si .htaccess existe, outrepasser spip_meta
292
-	if (
293
-		(!isset($GLOBALS['meta']['creer_htpasswd']) || $GLOBALS['meta']['creer_htpasswd'] != 'oui') && !@file_exists($htaccess)
294
-	) {
295
-		spip_unlink($htpasswd);
296
-		spip_unlink($htpasswd . '-admin');
297
-		return;
298
-	}
299
-
300
-	# remarque : ici on laisse passer les "nouveau" de maniere a leur permettre
301
-	# de devenir redacteur le cas echeant (auth http)... a nettoyer
302
-	// attention, il faut au prealable se connecter a la base (necessaire car utilise par install)
303
-	// TODO: factoriser avec auth/spip qui fait deja ce job et generaliser le test auth_ldap_connect()
304
-	if (include_spip('auth/ldap') && auth_ldap_connect()) {
305
-		return;
306
-	}
307
-
308
-	generer_htpasswd_files($htpasswd, "$htpasswd-admin");
286
+    $htaccess = _DIR_RESTREINT . _ACCESS_FILE_NAME;
287
+    $htpasswd = _DIR_TMP . _AUTH_USER_FILE;
288
+
289
+    // Cette variable de configuration peut etre posee par un plugin
290
+    // par exemple acces_restreint ;
291
+    // si .htaccess existe, outrepasser spip_meta
292
+    if (
293
+        (!isset($GLOBALS['meta']['creer_htpasswd']) || $GLOBALS['meta']['creer_htpasswd'] != 'oui') && !@file_exists($htaccess)
294
+    ) {
295
+        spip_unlink($htpasswd);
296
+        spip_unlink($htpasswd . '-admin');
297
+        return;
298
+    }
299
+
300
+    # remarque : ici on laisse passer les "nouveau" de maniere a leur permettre
301
+    # de devenir redacteur le cas echeant (auth http)... a nettoyer
302
+    // attention, il faut au prealable se connecter a la base (necessaire car utilise par install)
303
+    // TODO: factoriser avec auth/spip qui fait deja ce job et generaliser le test auth_ldap_connect()
304
+    if (include_spip('auth/ldap') && auth_ldap_connect()) {
305
+        return;
306
+    }
307
+
308
+    generer_htpasswd_files($htpasswd, "$htpasswd-admin");
309 309
 }
310 310
 
311 311
 /**
@@ -314,29 +314,29 @@  discard block
 block discarded – undo
314 314
  * @param string $htpasswd_admin
315 315
  */
316 316
 function generer_htpasswd_files($htpasswd, $htpasswd_admin) {
317
-	if ($generer_htpasswd = charger_fonction('generer_htpasswd_files', 'inc', true)) {
318
-		$generer_htpasswd($htpasswd, $htpasswd_admin);
319
-	}
320
-
321
-	$pwd_all = ''; // login:htpass pour tous
322
-	$pwd_admin = ''; // login:htpass pour les admins
323
-
324
-	$res = sql_select('login, htpass, statut', 'spip_auteurs', "htpass!='' AND login!='' AND " . sql_in('statut', ['1comite', '0minirezo', 'nouveau']));
325
-	while ($row = sql_fetch($res)) {
326
-		if (strlen((string) $row['login']) && strlen((string) $row['htpass'])) {
327
-			$ligne = $row['login'] . ':' . $row['htpass'] . "\n";
328
-			$pwd_all .= $ligne;
329
-			if ($row['statut'] == '0minirezo') {
330
-				$pwd_admin .= $ligne;
331
-			}
332
-		}
333
-	}
334
-
335
-	if ($pwd_all) {
336
-		ecrire_fichier($htpasswd, $pwd_all);
337
-		ecrire_fichier($htpasswd_admin, $pwd_admin);
338
-		spip_logger('htpass')->info("Ecriture de $htpasswd et $htpasswd_admin");
339
-	}
317
+    if ($generer_htpasswd = charger_fonction('generer_htpasswd_files', 'inc', true)) {
318
+        $generer_htpasswd($htpasswd, $htpasswd_admin);
319
+    }
320
+
321
+    $pwd_all = ''; // login:htpass pour tous
322
+    $pwd_admin = ''; // login:htpass pour les admins
323
+
324
+    $res = sql_select('login, htpass, statut', 'spip_auteurs', "htpass!='' AND login!='' AND " . sql_in('statut', ['1comite', '0minirezo', 'nouveau']));
325
+    while ($row = sql_fetch($res)) {
326
+        if (strlen((string) $row['login']) && strlen((string) $row['htpass'])) {
327
+            $ligne = $row['login'] . ':' . $row['htpass'] . "\n";
328
+            $pwd_all .= $ligne;
329
+            if ($row['statut'] == '0minirezo') {
330
+                $pwd_admin .= $ligne;
331
+            }
332
+        }
333
+    }
334
+
335
+    if ($pwd_all) {
336
+        ecrire_fichier($htpasswd, $pwd_all);
337
+        ecrire_fichier($htpasswd_admin, $pwd_admin);
338
+        spip_logger('htpass')->info("Ecriture de $htpasswd et $htpasswd_admin");
339
+    }
340 340
 }
341 341
 
342 342
 /**
@@ -350,11 +350,11 @@  discard block
 block discarded – undo
350 350
  *  La chaîne hachée si fonction crypt présente, rien sinon.
351 351
  */
352 352
 function generer_htpass(#[\SensitiveParameter] $pass) {
353
-	if ($generer_htpass = charger_fonction('generer_htpass', 'inc', true)) {
354
-		return $generer_htpass($pass);
355
-	}
353
+    if ($generer_htpass = charger_fonction('generer_htpass', 'inc', true)) {
354
+        return $generer_htpass($pass);
355
+    }
356 356
 
357
-	return '';
357
+    return '';
358 358
 }
359 359
 
360 360
 /**
@@ -367,14 +367,14 @@  discard block
 block discarded – undo
367 367
  * @return boolean
368 368
  */
369 369
 function verifier_htaccess($rep, $force = false) {
370
-	$htaccess = rtrim($rep, '/') . '/' . _ACCESS_FILE_NAME;
371
-	if ((@file_exists($htaccess) || defined('_TEST_DIRS')) && !$force) {
372
-		return true;
373
-	}
374
-
375
-	// directive deny compatible Apache 2.0+
376
-	$deny =
377
-		'# Deny all requests from Apache 2.4+.
370
+    $htaccess = rtrim($rep, '/') . '/' . _ACCESS_FILE_NAME;
371
+    if ((@file_exists($htaccess) || defined('_TEST_DIRS')) && !$force) {
372
+        return true;
373
+    }
374
+
375
+    // directive deny compatible Apache 2.0+
376
+    $deny =
377
+        '# Deny all requests from Apache 2.4+.
378 378
 <IfModule mod_authz_core.c>
379 379
   Require all denied
380 380
 </IfModule>
@@ -383,30 +383,30 @@  discard block
 block discarded – undo
383 383
   Deny from all
384 384
 </IfModule>
385 385
 ';
386
-	// support des vieilles versions Apache 1.x mais uniquement si elles l'annoncent (pas en mode PROD)
387
-	if (
388
-		function_exists('apache_get_version') && ($v = apache_get_version()) && str_starts_with($v, 'Apache/1.')
389
-	) {
390
-		$deny = "deny from all\n";
391
-	}
392
-
393
-	if ($ht = @fopen($htaccess, 'w')) {
394
-		fwrite($ht, $deny);
395
-		fclose($ht);
396
-		@chmod($htaccess, _SPIP_CHMOD & 0666);
397
-		$t = rtrim($rep, '/') . '/.ok';
398
-		if ($ht = @fopen($t, 'w')) {
399
-			@fclose($ht);
400
-			include_spip('inc/distant');
401
-			$t = substr($t, strlen(_DIR_RACINE));
402
-			$t = url_de_base() . $t;
403
-			$ht = recuperer_url($t, ['methode' => 'HEAD', 'taille_max' => 0, 'follow_location' => false]);
404
-			$ht = ($ht['status'] ?? null) === 403;
405
-		}
406
-	}
407
-	spip_logger()->info("Creation de $htaccess " . ($ht ? ' reussie' : ' manquee'));
408
-
409
-	return $ht;
386
+    // support des vieilles versions Apache 1.x mais uniquement si elles l'annoncent (pas en mode PROD)
387
+    if (
388
+        function_exists('apache_get_version') && ($v = apache_get_version()) && str_starts_with($v, 'Apache/1.')
389
+    ) {
390
+        $deny = "deny from all\n";
391
+    }
392
+
393
+    if ($ht = @fopen($htaccess, 'w')) {
394
+        fwrite($ht, $deny);
395
+        fclose($ht);
396
+        @chmod($htaccess, _SPIP_CHMOD & 0666);
397
+        $t = rtrim($rep, '/') . '/.ok';
398
+        if ($ht = @fopen($t, 'w')) {
399
+            @fclose($ht);
400
+            include_spip('inc/distant');
401
+            $t = substr($t, strlen(_DIR_RACINE));
402
+            $t = url_de_base() . $t;
403
+            $ht = recuperer_url($t, ['methode' => 'HEAD', 'taille_max' => 0, 'follow_location' => false]);
404
+            $ht = ($ht['status'] ?? null) === 403;
405
+        }
406
+    }
407
+    spip_logger()->info("Creation de $htaccess " . ($ht ? ' reussie' : ' manquee'));
408
+
409
+    return $ht;
410 410
 }
411 411
 
412 412
 /**
@@ -424,20 +424,20 @@  discard block
 block discarded – undo
424 424
  *         Valeur de la configuration `creer_htaccess`
425 425
  */
426 426
 function gerer_htaccess() {
427
-	// Cette variable de configuration peut etre posee par un plugin
428
-	// par exemple acces_restreint
429
-	$f = (isset($GLOBALS['meta']['creer_htaccess']) && $GLOBALS['meta']['creer_htaccess'] === 'oui');
430
-	$dirs = sql_allfetsel('extension', 'spip_types_documents');
431
-	$dirs[] = ['extension' => 'distant'];
432
-	foreach ($dirs as $e) {
433
-		if (is_dir($dir = _DIR_IMG . $e['extension'])) {
434
-			if ($f) {
435
-				verifier_htaccess($dir);
436
-			} else {
437
-				spip_unlink($dir . '/' . _ACCESS_FILE_NAME);
438
-			}
439
-		}
440
-	}
441
-
442
-	return $GLOBALS['meta']['creer_htaccess'] ?? '';
427
+    // Cette variable de configuration peut etre posee par un plugin
428
+    // par exemple acces_restreint
429
+    $f = (isset($GLOBALS['meta']['creer_htaccess']) && $GLOBALS['meta']['creer_htaccess'] === 'oui');
430
+    $dirs = sql_allfetsel('extension', 'spip_types_documents');
431
+    $dirs[] = ['extension' => 'distant'];
432
+    foreach ($dirs as $e) {
433
+        if (is_dir($dir = _DIR_IMG . $e['extension'])) {
434
+            if ($f) {
435
+                verifier_htaccess($dir);
436
+            } else {
437
+                spip_unlink($dir . '/' . _ACCESS_FILE_NAME);
438
+            }
439
+        }
440
+    }
441
+
442
+    return $GLOBALS['meta']['creer_htaccess'] ?? '';
443 443
 }
Please login to merge, or discard this patch.
Spacing   +20 added lines, -20 removed lines patch added patch discarded remove patch
@@ -30,7 +30,7 @@  discard block
 block discarded – undo
30 30
  *     Mot de passe
31 31
  **/
32 32
 function creer_pass_aleatoire($longueur = 16, $sel = '') {
33
-	$seed = (int)round(((float)microtime() + 1) * time());
33
+	$seed = (int) round(((float) microtime() + 1) * time());
34 34
 
35 35
 	mt_srand($seed);
36 36
 	$s = '';
@@ -41,9 +41,9 @@  discard block
 block discarded – undo
41 41
 			if (!$s) {
42 42
 				$s = random_int(0, mt_getrandmax());
43 43
 			}
44
-			$s = substr(md5(uniqid($s) . $sel), 0, 16);
44
+			$s = substr(md5(uniqid($s).$sel), 0, 16);
45 45
 		}
46
-		$r = unpack('Cr', pack('H2', $s . $s));
46
+		$r = unpack('Cr', pack('H2', $s.$s));
47 47
 		$x = $r['r'] & 63;
48 48
 		if ($x < 10) {
49 49
 			$x = chr($x + 48);
@@ -76,7 +76,7 @@  discard block
 block discarded – undo
76 76
 	static $seeded;
77 77
 
78 78
 	if (!$seeded) {
79
-		$seed = (int)round(((float)microtime() + 1) * time());
79
+		$seed = (int) round(((float) microtime() + 1) * time());
80 80
 		mt_srand($seed);
81 81
 		$seeded = true;
82 82
 	}
@@ -162,10 +162,10 @@  discard block
 block discarded – undo
162 162
 			ecrire_meta('low_sec', $low_sec = creer_pass_aleatoire());
163 163
 		}
164 164
 	} else {
165
-		$low_sec = sql_getfetsel('low_sec', 'spip_auteurs', 'id_auteur = ' . (int) $id_auteur);
165
+		$low_sec = sql_getfetsel('low_sec', 'spip_auteurs', 'id_auteur = '.(int) $id_auteur);
166 166
 		if (!$low_sec) {
167 167
 			$low_sec = creer_pass_aleatoire();
168
-			sql_updateq('spip_auteurs', ['low_sec' => $low_sec], 'id_auteur = ' . (int) $id_auteur);
168
+			sql_updateq('spip_auteurs', ['low_sec' => $low_sec], 'id_auteur = '.(int) $id_auteur);
169 169
 		}
170 170
 	}
171 171
 
@@ -216,7 +216,7 @@  discard block
 block discarded – undo
216 216
 function generer_url_api_low_sec(string $script, string $format, string $fond, string $path, string $args, bool $no_entities = false, ?bool $public = null) {
217 217
 	$id_auteur = $GLOBALS['visiteur_session']['id_auteur'] ?? 0;
218 218
 	$cle = afficher_low_sec($id_auteur, "$script/$format $fond $args");
219
-	$path = "$id_auteur/$cle/$format/$fond" . ($path ? "/$path" : '');
219
+	$path = "$id_auteur/$cle/$format/$fond".($path ? "/$path" : '');
220 220
 
221 221
 	return generer_url_api($script, $path, $args, $no_entities, $public);
222 222
 }
@@ -234,7 +234,7 @@  discard block
 block discarded – undo
234 234
  *     Clé
235 235
  **/
236 236
 function afficher_low_sec($id_auteur, $action = '') {
237
-	return substr(md5($action . low_sec($id_auteur)), 0, 8);
237
+	return substr(md5($action.low_sec($id_auteur)), 0, 8);
238 238
 }
239 239
 
240 240
 /**
@@ -265,7 +265,7 @@  discard block
 block discarded – undo
265 265
 	if (!$id_auteur = (int) $id_auteur) {
266 266
 		return;
267 267
 	} // jamais trop prudent ;)
268
-	sql_updateq('spip_auteurs', ['low_sec' => ''], 'id_auteur = ' . (int) $id_auteur);
268
+	sql_updateq('spip_auteurs', ['low_sec' => ''], 'id_auteur = '.(int) $id_auteur);
269 269
 }
270 270
 
271 271
 
@@ -283,8 +283,8 @@  discard block
 block discarded – undo
283 283
  *     - void sinon.
284 284
  **/
285 285
 function ecrire_acces() {
286
-	$htaccess = _DIR_RESTREINT . _ACCESS_FILE_NAME;
287
-	$htpasswd = _DIR_TMP . _AUTH_USER_FILE;
286
+	$htaccess = _DIR_RESTREINT._ACCESS_FILE_NAME;
287
+	$htpasswd = _DIR_TMP._AUTH_USER_FILE;
288 288
 
289 289
 	// Cette variable de configuration peut etre posee par un plugin
290 290
 	// par exemple acces_restreint ;
@@ -293,7 +293,7 @@  discard block
 block discarded – undo
293 293
 		(!isset($GLOBALS['meta']['creer_htpasswd']) || $GLOBALS['meta']['creer_htpasswd'] != 'oui') && !@file_exists($htaccess)
294 294
 	) {
295 295
 		spip_unlink($htpasswd);
296
-		spip_unlink($htpasswd . '-admin');
296
+		spip_unlink($htpasswd.'-admin');
297 297
 		return;
298 298
 	}
299 299
 
@@ -321,10 +321,10 @@  discard block
 block discarded – undo
321 321
 	$pwd_all = ''; // login:htpass pour tous
322 322
 	$pwd_admin = ''; // login:htpass pour les admins
323 323
 
324
-	$res = sql_select('login, htpass, statut', 'spip_auteurs', "htpass!='' AND login!='' AND " . sql_in('statut', ['1comite', '0minirezo', 'nouveau']));
324
+	$res = sql_select('login, htpass, statut', 'spip_auteurs', "htpass!='' AND login!='' AND ".sql_in('statut', ['1comite', '0minirezo', 'nouveau']));
325 325
 	while ($row = sql_fetch($res)) {
326 326
 		if (strlen((string) $row['login']) && strlen((string) $row['htpass'])) {
327
-			$ligne = $row['login'] . ':' . $row['htpass'] . "\n";
327
+			$ligne = $row['login'].':'.$row['htpass']."\n";
328 328
 			$pwd_all .= $ligne;
329 329
 			if ($row['statut'] == '0minirezo') {
330 330
 				$pwd_admin .= $ligne;
@@ -367,7 +367,7 @@  discard block
 block discarded – undo
367 367
  * @return boolean
368 368
  */
369 369
 function verifier_htaccess($rep, $force = false) {
370
-	$htaccess = rtrim($rep, '/') . '/' . _ACCESS_FILE_NAME;
370
+	$htaccess = rtrim($rep, '/').'/'._ACCESS_FILE_NAME;
371 371
 	if ((@file_exists($htaccess) || defined('_TEST_DIRS')) && !$force) {
372 372
 		return true;
373 373
 	}
@@ -394,17 +394,17 @@  discard block
 block discarded – undo
394 394
 		fwrite($ht, $deny);
395 395
 		fclose($ht);
396 396
 		@chmod($htaccess, _SPIP_CHMOD & 0666);
397
-		$t = rtrim($rep, '/') . '/.ok';
397
+		$t = rtrim($rep, '/').'/.ok';
398 398
 		if ($ht = @fopen($t, 'w')) {
399 399
 			@fclose($ht);
400 400
 			include_spip('inc/distant');
401 401
 			$t = substr($t, strlen(_DIR_RACINE));
402
-			$t = url_de_base() . $t;
402
+			$t = url_de_base().$t;
403 403
 			$ht = recuperer_url($t, ['methode' => 'HEAD', 'taille_max' => 0, 'follow_location' => false]);
404 404
 			$ht = ($ht['status'] ?? null) === 403;
405 405
 		}
406 406
 	}
407
-	spip_logger()->info("Creation de $htaccess " . ($ht ? ' reussie' : ' manquee'));
407
+	spip_logger()->info("Creation de $htaccess ".($ht ? ' reussie' : ' manquee'));
408 408
 
409 409
 	return $ht;
410 410
 }
@@ -430,11 +430,11 @@  discard block
 block discarded – undo
430 430
 	$dirs = sql_allfetsel('extension', 'spip_types_documents');
431 431
 	$dirs[] = ['extension' => 'distant'];
432 432
 	foreach ($dirs as $e) {
433
-		if (is_dir($dir = _DIR_IMG . $e['extension'])) {
433
+		if (is_dir($dir = _DIR_IMG.$e['extension'])) {
434 434
 			if ($f) {
435 435
 				verifier_htaccess($dir);
436 436
 			} else {
437
-				spip_unlink($dir . '/' . _ACCESS_FILE_NAME);
437
+				spip_unlink($dir.'/'._ACCESS_FILE_NAME);
438 438
 			}
439 439
 		}
440 440
 	}
Please login to merge, or discard this patch.
ecrire/inc/rechercher.php 2 patches
Indentation   +307 added lines, -307 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  **/
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 defined('_RECHERCHE_LOCK_KEY') || define('_RECHERCHE_LOCK_KEY', 'fulltext');
@@ -34,195 +34,195 @@  discard block
 block discarded – undo
34 34
  * @return array Couples (type d'objet => Couples (champ => score))
35 35
  */
36 36
 function liste_des_champs() {
37
-	static $liste = null;
38
-	if (is_null($liste)) {
39
-		$liste = [];
40
-		// recuperer les tables_objets_sql declarees
41
-		include_spip('base/objets');
42
-		$tables_objets = lister_tables_objets_sql();
43
-		foreach ($tables_objets as $t => $infos) {
44
-			if ($infos['rechercher_champs']) {
45
-				$liste[$infos['type']] = $infos['rechercher_champs'];
46
-			}
47
-		}
48
-		// puis passer dans le pipeline
49
-		$liste = pipeline('rechercher_liste_des_champs', $liste);
50
-	}
51
-
52
-	return $liste;
37
+    static $liste = null;
38
+    if (is_null($liste)) {
39
+        $liste = [];
40
+        // recuperer les tables_objets_sql declarees
41
+        include_spip('base/objets');
42
+        $tables_objets = lister_tables_objets_sql();
43
+        foreach ($tables_objets as $t => $infos) {
44
+            if ($infos['rechercher_champs']) {
45
+                $liste[$infos['type']] = $infos['rechercher_champs'];
46
+            }
47
+        }
48
+        // puis passer dans le pipeline
49
+        $liste = pipeline('rechercher_liste_des_champs', $liste);
50
+    }
51
+
52
+    return $liste;
53 53
 }
54 54
 
55 55
 
56 56
 // Recherche des auteurs et mots-cles associes
57 57
 // en ne regardant que le titre ou le nom
58 58
 function liste_des_jointures() {
59
-	static $liste = null;
60
-	if (is_null($liste)) {
61
-		$liste = [];
62
-		// recuperer les tables_objets_sql declarees
63
-		include_spip('base/objets');
64
-		$tables_objets = lister_tables_objets_sql();
65
-		foreach ($tables_objets as $t => $infos) {
66
-			if ($infos['rechercher_jointures']) {
67
-				$liste[$infos['type']] = $infos['rechercher_jointures'];
68
-			}
69
-		}
70
-		// puis passer dans le pipeline
71
-		$liste = pipeline('rechercher_liste_des_jointures', $liste);
72
-	}
73
-
74
-	return $liste;
59
+    static $liste = null;
60
+    if (is_null($liste)) {
61
+        $liste = [];
62
+        // recuperer les tables_objets_sql declarees
63
+        include_spip('base/objets');
64
+        $tables_objets = lister_tables_objets_sql();
65
+        foreach ($tables_objets as $t => $infos) {
66
+            if ($infos['rechercher_jointures']) {
67
+                $liste[$infos['type']] = $infos['rechercher_jointures'];
68
+            }
69
+        }
70
+        // puis passer dans le pipeline
71
+        $liste = pipeline('rechercher_liste_des_jointures', $liste);
72
+    }
73
+
74
+    return $liste;
75 75
 }
76 76
 
77 77
 function expression_recherche($recherche, $options) {
78
-	// ne calculer qu'une seule fois l'expression par hit
79
-	// (meme si utilisee dans plusieurs boucles)
80
-	static $expression = [];
81
-	$key = serialize([$recherche, $options['preg_flags']]);
82
-	if (isset($expression[$key])) {
83
-		return $expression[$key];
84
-	}
85
-
86
-	$u = $GLOBALS['meta']['pcre_u'];
87
-	if ($u && !str_contains((string) $options['preg_flags'], (string) $u)) {
88
-		$options['preg_flags'] .= $u;
89
-	}
90
-	include_spip('inc/charsets');
91
-	$recherche = trim((string) $recherche);
92
-
93
-	// retirer les + de +truc et les * de truc*
94
-	$recherche = preg_replace(',(^|\s)\+(\w),Uims', '$1$2', $recherche);
95
-	$recherche = preg_replace(',(\w)\*($|\s),Uims', '$1$2', $recherche);
96
-
97
-	$is_preg = false;
98
-	if (str_starts_with($recherche, '/') && str_ends_with($recherche, '/') && strlen($recherche) > 2) {
99
-		// c'est une preg
100
-		$recherche_trans = translitteration($recherche);
101
-		$preg = $recherche_trans . $options['preg_flags'];
102
-		$is_preg = true;
103
-	} else {
104
-		// s'il y a plusieurs mots il faut les chercher tous : oblige REGEXP,
105
-		// sauf ceux de moins de 4 lettres (on supprime ainsi 'le', 'les', 'un',
106
-		// 'une', 'des' ...)
107
-
108
-		// attention : plusieurs mots entre guillemets sont a rechercher tels quels
109
-		$recherche_trans = $recherche_mod = $recherche_org = $recherche;
110
-
111
-		// les expressions entre " " sont un mot a chercher tel quel
112
-		// -> on remplace les espaces par un \x1 et on enleve les guillemets
113
-		if (preg_match(',["][^"]+["],Uims', $recherche_mod, $matches)) {
114
-			foreach ($matches as $match) {
115
-				$word = preg_replace(',\s+,Uims', "\x1", $match);
116
-				$word = trim($word, '"');
117
-				$recherche_mod = str_replace($match, $word, $recherche_mod);
118
-			}
119
-		}
120
-
121
-		if (preg_match(',\s+,' . $u, $recherche_mod)) {
122
-			$is_preg = true;
123
-
124
-			$recherche_inter = '|';
125
-			$recherche_mots = explode(' ', $recherche_mod);
126
-			$min_long = defined('_RECHERCHE_MIN_CAR') ? _RECHERCHE_MIN_CAR : 4;
127
-			$petits_mots = true;
128
-			foreach ($recherche_mots as $mot) {
129
-				if (strlen($mot) >= $min_long) {
130
-					// echapper les caracteres de regexp qui sont eventuellement dans la recherche
131
-					$recherche_inter .= preg_quote($mot) . ' ';
132
-					$petits_mots = false;
133
-				}
134
-			}
135
-			$recherche_inter = str_replace("\x1", '\s', $recherche_inter);
136
-
137
-			// mais on cherche quand même l'expression complète, même si elle
138
-			// comporte des mots de moins de quatre lettres
139
-			$recherche = trim(preg_replace(',\s+,' . $u, '|', $recherche_inter), '|');
140
-			if (!$recherche || $petits_mots) {
141
-				$recherche = preg_quote($recherche_org);
142
-			}
143
-			$recherche_trans = translitteration($recherche);
144
-		}
145
-
146
-		$preg = '/' . str_replace('/', '\\/', (string) $recherche_trans) . '/' . $options['preg_flags'];
147
-	}
148
-
149
-	// Si la chaine est inactive, on va utiliser LIKE pour aller plus vite
150
-	// ou si l'expression reguliere est invalide
151
-	if (!$is_preg || @preg_match($preg, '') === false) {
152
-		$methode = 'LIKE';
153
-		$u = $GLOBALS['meta']['pcre_u'];
154
-
155
-		// echapper les % et _
156
-		$q = str_replace(['%', '_'], ['\%', '\_'], trim($recherche));
157
-
158
-		// eviter les parentheses et autres caractères qui interferent avec pcre par la suite (dans le preg_match_all) s'il y a des reponses
159
-		$recherche = preg_quote($recherche, '/');
160
-		$recherche_trans = translitteration($recherche);
161
-		$recherche_mod = $recherche_trans;
162
-
163
-		// les expressions entre " " sont un mot a chercher tel quel
164
-		// -> on remplace les espaces par un _ et on enleve les guillemets
165
-		// corriger le like dans le $q
166
-		if (preg_match(',["][^"]+["],Uims', $q, $matches)) {
167
-			foreach ($matches as $match) {
168
-				$word = preg_replace(',\s+,Uims', '_', $match);
169
-				$word = trim($word, '"');
170
-				$q = str_replace($match, $word, $q);
171
-			}
172
-		}
173
-		// corriger la regexp
174
-		if (preg_match(',["][^"]+["],Uims', (string) $recherche_mod, $matches)) {
175
-			foreach ($matches as $match) {
176
-				$word = preg_replace(',\s+,Uims', '[\s]', $match);
177
-				$word = trim($word, '"');
178
-				$recherche_mod = str_replace($match, $word, (string) $recherche_mod);
179
-			}
180
-		}
181
-		$q = sql_quote(
182
-			'%'
183
-			. preg_replace(',\s+,' . $u, '%', $q)
184
-			. '%'
185
-		);
186
-
187
-		$preg = '/' . preg_replace(',\s+,' . $u, '.+', trim((string) $recherche_mod)) . '/' . $options['preg_flags'];
188
-	} else {
189
-		$methode = 'REGEXP';
190
-		$q = sql_quote(trim($recherche, '/'));
191
-	}
192
-
193
-	// tous les caracteres transliterables de $q sont remplaces par un joker
194
-	// permet de matcher en SQL meme si on est sensible aux accents (SQLite)
195
-	$q_t = $q;
196
-	for ($i = 0; $i < spip_strlen($q); $i++) {
197
-		$char = spip_substr($q, $i, 1);
198
-		if (
199
-			!is_ascii($char)
200
-			&& ($char_t = translitteration($char))
201
-			&& $char_t !== $char
202
-		) {
203
-			// on utilise ..?.? car le char utf peut etre encode sur 1, 2 ou 3 bytes
204
-			// mais c'est un pis aller cf #4354
205
-			$q_t = str_replace($char, $is_preg ? '..?.?' : '_', (string) $q_t);
206
-		}
207
-	}
208
-
209
-	$q = $q_t;
210
-
211
-	// fix : SQLite 3 est sensible aux accents, on jokerise les caracteres
212
-	// les plus frequents qui peuvent etre accentues
213
-	// (oui c'est tres dicustable...)
214
-	if (
215
-		isset($GLOBALS['connexions'][$options['serveur'] ?: 0]['type'])
216
-		&& str_starts_with((string) $GLOBALS['connexions'][$options['serveur'] ?: 0]['type'], 'sqlite')
217
-	) {
218
-		$q_t = strtr($q, 'aeuioc', $is_preg ? '......' : '______');
219
-		// si il reste au moins un char significatif...
220
-		if (preg_match(",[^'%_.],", $q_t)) {
221
-			$q = $q_t;
222
-		}
223
-	}
224
-
225
-	return $expression[$key] = [$methode, $q, $preg];
78
+    // ne calculer qu'une seule fois l'expression par hit
79
+    // (meme si utilisee dans plusieurs boucles)
80
+    static $expression = [];
81
+    $key = serialize([$recherche, $options['preg_flags']]);
82
+    if (isset($expression[$key])) {
83
+        return $expression[$key];
84
+    }
85
+
86
+    $u = $GLOBALS['meta']['pcre_u'];
87
+    if ($u && !str_contains((string) $options['preg_flags'], (string) $u)) {
88
+        $options['preg_flags'] .= $u;
89
+    }
90
+    include_spip('inc/charsets');
91
+    $recherche = trim((string) $recherche);
92
+
93
+    // retirer les + de +truc et les * de truc*
94
+    $recherche = preg_replace(',(^|\s)\+(\w),Uims', '$1$2', $recherche);
95
+    $recherche = preg_replace(',(\w)\*($|\s),Uims', '$1$2', $recherche);
96
+
97
+    $is_preg = false;
98
+    if (str_starts_with($recherche, '/') && str_ends_with($recherche, '/') && strlen($recherche) > 2) {
99
+        // c'est une preg
100
+        $recherche_trans = translitteration($recherche);
101
+        $preg = $recherche_trans . $options['preg_flags'];
102
+        $is_preg = true;
103
+    } else {
104
+        // s'il y a plusieurs mots il faut les chercher tous : oblige REGEXP,
105
+        // sauf ceux de moins de 4 lettres (on supprime ainsi 'le', 'les', 'un',
106
+        // 'une', 'des' ...)
107
+
108
+        // attention : plusieurs mots entre guillemets sont a rechercher tels quels
109
+        $recherche_trans = $recherche_mod = $recherche_org = $recherche;
110
+
111
+        // les expressions entre " " sont un mot a chercher tel quel
112
+        // -> on remplace les espaces par un \x1 et on enleve les guillemets
113
+        if (preg_match(',["][^"]+["],Uims', $recherche_mod, $matches)) {
114
+            foreach ($matches as $match) {
115
+                $word = preg_replace(',\s+,Uims', "\x1", $match);
116
+                $word = trim($word, '"');
117
+                $recherche_mod = str_replace($match, $word, $recherche_mod);
118
+            }
119
+        }
120
+
121
+        if (preg_match(',\s+,' . $u, $recherche_mod)) {
122
+            $is_preg = true;
123
+
124
+            $recherche_inter = '|';
125
+            $recherche_mots = explode(' ', $recherche_mod);
126
+            $min_long = defined('_RECHERCHE_MIN_CAR') ? _RECHERCHE_MIN_CAR : 4;
127
+            $petits_mots = true;
128
+            foreach ($recherche_mots as $mot) {
129
+                if (strlen($mot) >= $min_long) {
130
+                    // echapper les caracteres de regexp qui sont eventuellement dans la recherche
131
+                    $recherche_inter .= preg_quote($mot) . ' ';
132
+                    $petits_mots = false;
133
+                }
134
+            }
135
+            $recherche_inter = str_replace("\x1", '\s', $recherche_inter);
136
+
137
+            // mais on cherche quand même l'expression complète, même si elle
138
+            // comporte des mots de moins de quatre lettres
139
+            $recherche = trim(preg_replace(',\s+,' . $u, '|', $recherche_inter), '|');
140
+            if (!$recherche || $petits_mots) {
141
+                $recherche = preg_quote($recherche_org);
142
+            }
143
+            $recherche_trans = translitteration($recherche);
144
+        }
145
+
146
+        $preg = '/' . str_replace('/', '\\/', (string) $recherche_trans) . '/' . $options['preg_flags'];
147
+    }
148
+
149
+    // Si la chaine est inactive, on va utiliser LIKE pour aller plus vite
150
+    // ou si l'expression reguliere est invalide
151
+    if (!$is_preg || @preg_match($preg, '') === false) {
152
+        $methode = 'LIKE';
153
+        $u = $GLOBALS['meta']['pcre_u'];
154
+
155
+        // echapper les % et _
156
+        $q = str_replace(['%', '_'], ['\%', '\_'], trim($recherche));
157
+
158
+        // eviter les parentheses et autres caractères qui interferent avec pcre par la suite (dans le preg_match_all) s'il y a des reponses
159
+        $recherche = preg_quote($recherche, '/');
160
+        $recherche_trans = translitteration($recherche);
161
+        $recherche_mod = $recherche_trans;
162
+
163
+        // les expressions entre " " sont un mot a chercher tel quel
164
+        // -> on remplace les espaces par un _ et on enleve les guillemets
165
+        // corriger le like dans le $q
166
+        if (preg_match(',["][^"]+["],Uims', $q, $matches)) {
167
+            foreach ($matches as $match) {
168
+                $word = preg_replace(',\s+,Uims', '_', $match);
169
+                $word = trim($word, '"');
170
+                $q = str_replace($match, $word, $q);
171
+            }
172
+        }
173
+        // corriger la regexp
174
+        if (preg_match(',["][^"]+["],Uims', (string) $recherche_mod, $matches)) {
175
+            foreach ($matches as $match) {
176
+                $word = preg_replace(',\s+,Uims', '[\s]', $match);
177
+                $word = trim($word, '"');
178
+                $recherche_mod = str_replace($match, $word, (string) $recherche_mod);
179
+            }
180
+        }
181
+        $q = sql_quote(
182
+            '%'
183
+            . preg_replace(',\s+,' . $u, '%', $q)
184
+            . '%'
185
+        );
186
+
187
+        $preg = '/' . preg_replace(',\s+,' . $u, '.+', trim((string) $recherche_mod)) . '/' . $options['preg_flags'];
188
+    } else {
189
+        $methode = 'REGEXP';
190
+        $q = sql_quote(trim($recherche, '/'));
191
+    }
192
+
193
+    // tous les caracteres transliterables de $q sont remplaces par un joker
194
+    // permet de matcher en SQL meme si on est sensible aux accents (SQLite)
195
+    $q_t = $q;
196
+    for ($i = 0; $i < spip_strlen($q); $i++) {
197
+        $char = spip_substr($q, $i, 1);
198
+        if (
199
+            !is_ascii($char)
200
+            && ($char_t = translitteration($char))
201
+            && $char_t !== $char
202
+        ) {
203
+            // on utilise ..?.? car le char utf peut etre encode sur 1, 2 ou 3 bytes
204
+            // mais c'est un pis aller cf #4354
205
+            $q_t = str_replace($char, $is_preg ? '..?.?' : '_', (string) $q_t);
206
+        }
207
+    }
208
+
209
+    $q = $q_t;
210
+
211
+    // fix : SQLite 3 est sensible aux accents, on jokerise les caracteres
212
+    // les plus frequents qui peuvent etre accentues
213
+    // (oui c'est tres dicustable...)
214
+    if (
215
+        isset($GLOBALS['connexions'][$options['serveur'] ?: 0]['type'])
216
+        && str_starts_with((string) $GLOBALS['connexions'][$options['serveur'] ?: 0]['type'], 'sqlite')
217
+    ) {
218
+        $q_t = strtr($q, 'aeuioc', $is_preg ? '......' : '______');
219
+        // si il reste au moins un char significatif...
220
+        if (preg_match(",[^'%_.],", $q_t)) {
221
+            $q = $q_t;
222
+        }
223
+    }
224
+
225
+    return $expression[$key] = [$methode, $q, $preg];
226 226
 }
227 227
 
228 228
 
@@ -249,135 +249,135 @@  discard block
 block discarded – undo
249 249
  * @return array
250 250
  */
251 251
 function recherche_en_base($recherche = '', $tables = null, $options = [], $serveur = '') {
252
-	include_spip('base/abstract_sql');
253
-
254
-	if (!is_array($tables)) {
255
-		$liste = liste_des_champs();
256
-
257
-		if (is_string($tables) && $tables != '') {
258
-			$toutes = [];
259
-			foreach (explode(',', $tables) as $t) {
260
-				$t = trim($t);
261
-				if (isset($liste[$t])) {
262
-					$toutes[$t] = $liste[$t];
263
-				}
264
-			}
265
-			$tables = $toutes;
266
-			unset($toutes);
267
-		} else {
268
-			$tables = $liste;
269
-		}
270
-	}
271
-
272
-	if (!strlen($recherche) || $tables === []) {
273
-		return [];
274
-	}
275
-
276
-	include_spip('inc/autoriser');
277
-
278
-	// options par defaut
279
-	$options = array_merge(
280
-		[
281
-		'preg_flags' => 'UimsS',
282
-		'toutvoir' => false,
283
-		'champs' => false,
284
-		'score' => false,
285
-		'matches' => false,
286
-		'jointures' => false,
287
-		'serveur' => $serveur
288
-		],
289
-		$options
290
-	);
291
-
292
-	$results = [];
293
-
294
-	// Utiliser l'iterateur (DATA:recherche)
295
-	// pour recuperer les couples (id_objet, score)
296
-	// Le resultat est au format {
297
-	//      id1 = { 'score' => x, attrs => { } },
298
-	//      id2 = { 'score' => x, attrs => { } },
299
-	// }
300
-
301
-	include_spip('inc/recherche_to_array');
302
-
303
-	foreach ($tables as $table => $champs) {
304
-		# lock via memoization, si dispo
305
-		if (function_exists('cache_lock')) {
306
-			cache_lock($lock = _RECHERCHE_LOCK_KEY . ' ' . $table . ' ' . $recherche);
307
-		}
308
-
309
-		spip_timer('rech');
310
-
311
-		# TODO : ici plutot charger un iterateur via l'API iterateurs
312
-		$to_array = charger_fonction('recherche_to_array', 'inc');
313
-		$results[$table] = $to_array(
314
-			$recherche,
315
-			array_merge($options, ['table' => $table, 'champs' => $champs])
316
-		);
317
-		##var_dump($results[$table]);
318
-
319
-
320
-		spip_logger('recherche')->info(
321
-			"recherche $table ($recherche) : " . (is_countable($results[$table]) ? count($results[$table]) : 0) . ' resultats ' . spip_timer('rech'),
322
-		);
323
-
324
-		if (isset($lock)) {
325
-			cache_unlock($lock);
326
-		}
327
-	}
328
-
329
-	return $results;
252
+    include_spip('base/abstract_sql');
253
+
254
+    if (!is_array($tables)) {
255
+        $liste = liste_des_champs();
256
+
257
+        if (is_string($tables) && $tables != '') {
258
+            $toutes = [];
259
+            foreach (explode(',', $tables) as $t) {
260
+                $t = trim($t);
261
+                if (isset($liste[$t])) {
262
+                    $toutes[$t] = $liste[$t];
263
+                }
264
+            }
265
+            $tables = $toutes;
266
+            unset($toutes);
267
+        } else {
268
+            $tables = $liste;
269
+        }
270
+    }
271
+
272
+    if (!strlen($recherche) || $tables === []) {
273
+        return [];
274
+    }
275
+
276
+    include_spip('inc/autoriser');
277
+
278
+    // options par defaut
279
+    $options = array_merge(
280
+        [
281
+        'preg_flags' => 'UimsS',
282
+        'toutvoir' => false,
283
+        'champs' => false,
284
+        'score' => false,
285
+        'matches' => false,
286
+        'jointures' => false,
287
+        'serveur' => $serveur
288
+        ],
289
+        $options
290
+    );
291
+
292
+    $results = [];
293
+
294
+    // Utiliser l'iterateur (DATA:recherche)
295
+    // pour recuperer les couples (id_objet, score)
296
+    // Le resultat est au format {
297
+    //      id1 = { 'score' => x, attrs => { } },
298
+    //      id2 = { 'score' => x, attrs => { } },
299
+    // }
300
+
301
+    include_spip('inc/recherche_to_array');
302
+
303
+    foreach ($tables as $table => $champs) {
304
+        # lock via memoization, si dispo
305
+        if (function_exists('cache_lock')) {
306
+            cache_lock($lock = _RECHERCHE_LOCK_KEY . ' ' . $table . ' ' . $recherche);
307
+        }
308
+
309
+        spip_timer('rech');
310
+
311
+        # TODO : ici plutot charger un iterateur via l'API iterateurs
312
+        $to_array = charger_fonction('recherche_to_array', 'inc');
313
+        $results[$table] = $to_array(
314
+            $recherche,
315
+            array_merge($options, ['table' => $table, 'champs' => $champs])
316
+        );
317
+        ##var_dump($results[$table]);
318
+
319
+
320
+        spip_logger('recherche')->info(
321
+            "recherche $table ($recherche) : " . (is_countable($results[$table]) ? count($results[$table]) : 0) . ' resultats ' . spip_timer('rech'),
322
+        );
323
+
324
+        if (isset($lock)) {
325
+            cache_unlock($lock);
326
+        }
327
+    }
328
+
329
+    return $results;
330 330
 }
331 331
 
332 332
 
333 333
 // Effectue une recherche sur toutes les tables de la base de donnees
334 334
 function remplace_en_base($recherche = '', $remplace = null, $tables = null, $options = []) {
335
-	include_spip('inc/modifier');
336
-
337
-	// options par defaut
338
-	$options = array_merge(
339
-		[
340
-		'preg_flags' => 'UimsS',
341
-		'toutmodifier' => false
342
-		],
343
-		$options
344
-	);
345
-	$options['champs'] = true;
346
-
347
-
348
-	if (!is_array($tables)) {
349
-		$tables = liste_des_champs();
350
-	}
351
-
352
-	$results = recherche_en_base($recherche, $tables, $options);
353
-
354
-	$preg = '/' . str_replace('/', '\\/', (string) $recherche) . '/' . $options['preg_flags'];
355
-
356
-	foreach ($results as $table => $r) {
357
-		$_id_table = id_table_objet($table);
358
-		foreach ($r as $id => $x) {
359
-			if ($options['toutmodifier'] || autoriser('modifier', $table, $id)) {
360
-				$modifs = [];
361
-				foreach ($x['champs'] as $key => $val) {
362
-					if ($key == $_id_table) {
363
-						continue;
364
-					}
365
-					$repl = preg_replace($preg, (string) $remplace, (string) $val);
366
-					if ($repl != $val) {
367
-						$modifs[$key] = $repl;
368
-					}
369
-				}
370
-				if ($modifs) {
371
-					objet_modifier_champs(
372
-						$table,
373
-						$id,
374
-						[
375
-							'champs' => array_keys($modifs),
376
-						],
377
-						$modifs
378
-					);
379
-				}
380
-			}
381
-		}
382
-	}
335
+    include_spip('inc/modifier');
336
+
337
+    // options par defaut
338
+    $options = array_merge(
339
+        [
340
+        'preg_flags' => 'UimsS',
341
+        'toutmodifier' => false
342
+        ],
343
+        $options
344
+    );
345
+    $options['champs'] = true;
346
+
347
+
348
+    if (!is_array($tables)) {
349
+        $tables = liste_des_champs();
350
+    }
351
+
352
+    $results = recherche_en_base($recherche, $tables, $options);
353
+
354
+    $preg = '/' . str_replace('/', '\\/', (string) $recherche) . '/' . $options['preg_flags'];
355
+
356
+    foreach ($results as $table => $r) {
357
+        $_id_table = id_table_objet($table);
358
+        foreach ($r as $id => $x) {
359
+            if ($options['toutmodifier'] || autoriser('modifier', $table, $id)) {
360
+                $modifs = [];
361
+                foreach ($x['champs'] as $key => $val) {
362
+                    if ($key == $_id_table) {
363
+                        continue;
364
+                    }
365
+                    $repl = preg_replace($preg, (string) $remplace, (string) $val);
366
+                    if ($repl != $val) {
367
+                        $modifs[$key] = $repl;
368
+                    }
369
+                }
370
+                if ($modifs) {
371
+                    objet_modifier_champs(
372
+                        $table,
373
+                        $id,
374
+                        [
375
+                            'champs' => array_keys($modifs),
376
+                        ],
377
+                        $modifs
378
+                    );
379
+                }
380
+            }
381
+        }
382
+    }
383 383
 }
Please login to merge, or discard this patch.
Spacing   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -98,7 +98,7 @@  discard block
 block discarded – undo
98 98
 	if (str_starts_with($recherche, '/') && str_ends_with($recherche, '/') && strlen($recherche) > 2) {
99 99
 		// c'est une preg
100 100
 		$recherche_trans = translitteration($recherche);
101
-		$preg = $recherche_trans . $options['preg_flags'];
101
+		$preg = $recherche_trans.$options['preg_flags'];
102 102
 		$is_preg = true;
103 103
 	} else {
104 104
 		// s'il y a plusieurs mots il faut les chercher tous : oblige REGEXP,
@@ -118,7 +118,7 @@  discard block
 block discarded – undo
118 118
 			}
119 119
 		}
120 120
 
121
-		if (preg_match(',\s+,' . $u, $recherche_mod)) {
121
+		if (preg_match(',\s+,'.$u, $recherche_mod)) {
122 122
 			$is_preg = true;
123 123
 
124 124
 			$recherche_inter = '|';
@@ -128,7 +128,7 @@  discard block
 block discarded – undo
128 128
 			foreach ($recherche_mots as $mot) {
129 129
 				if (strlen($mot) >= $min_long) {
130 130
 					// echapper les caracteres de regexp qui sont eventuellement dans la recherche
131
-					$recherche_inter .= preg_quote($mot) . ' ';
131
+					$recherche_inter .= preg_quote($mot).' ';
132 132
 					$petits_mots = false;
133 133
 				}
134 134
 			}
@@ -136,14 +136,14 @@  discard block
 block discarded – undo
136 136
 
137 137
 			// mais on cherche quand même l'expression complète, même si elle
138 138
 			// comporte des mots de moins de quatre lettres
139
-			$recherche = trim(preg_replace(',\s+,' . $u, '|', $recherche_inter), '|');
139
+			$recherche = trim(preg_replace(',\s+,'.$u, '|', $recherche_inter), '|');
140 140
 			if (!$recherche || $petits_mots) {
141 141
 				$recherche = preg_quote($recherche_org);
142 142
 			}
143 143
 			$recherche_trans = translitteration($recherche);
144 144
 		}
145 145
 
146
-		$preg = '/' . str_replace('/', '\\/', (string) $recherche_trans) . '/' . $options['preg_flags'];
146
+		$preg = '/'.str_replace('/', '\\/', (string) $recherche_trans).'/'.$options['preg_flags'];
147 147
 	}
148 148
 
149 149
 	// Si la chaine est inactive, on va utiliser LIKE pour aller plus vite
@@ -180,11 +180,11 @@  discard block
 block discarded – undo
180 180
 		}
181 181
 		$q = sql_quote(
182 182
 			'%'
183
-			. preg_replace(',\s+,' . $u, '%', $q)
183
+			. preg_replace(',\s+,'.$u, '%', $q)
184 184
 			. '%'
185 185
 		);
186 186
 
187
-		$preg = '/' . preg_replace(',\s+,' . $u, '.+', trim((string) $recherche_mod)) . '/' . $options['preg_flags'];
187
+		$preg = '/'.preg_replace(',\s+,'.$u, '.+', trim((string) $recherche_mod)).'/'.$options['preg_flags'];
188 188
 	} else {
189 189
 		$methode = 'REGEXP';
190 190
 		$q = sql_quote(trim($recherche, '/'));
@@ -303,7 +303,7 @@  discard block
 block discarded – undo
303 303
 	foreach ($tables as $table => $champs) {
304 304
 		# lock via memoization, si dispo
305 305
 		if (function_exists('cache_lock')) {
306
-			cache_lock($lock = _RECHERCHE_LOCK_KEY . ' ' . $table . ' ' . $recherche);
306
+			cache_lock($lock = _RECHERCHE_LOCK_KEY.' '.$table.' '.$recherche);
307 307
 		}
308 308
 
309 309
 		spip_timer('rech');
@@ -318,7 +318,7 @@  discard block
 block discarded – undo
318 318
 
319 319
 
320 320
 		spip_logger('recherche')->info(
321
-			"recherche $table ($recherche) : " . (is_countable($results[$table]) ? count($results[$table]) : 0) . ' resultats ' . spip_timer('rech'),
321
+			"recherche $table ($recherche) : ".(is_countable($results[$table]) ? count($results[$table]) : 0).' resultats '.spip_timer('rech'),
322 322
 		);
323 323
 
324 324
 		if (isset($lock)) {
@@ -351,7 +351,7 @@  discard block
 block discarded – undo
351 351
 
352 352
 	$results = recherche_en_base($recherche, $tables, $options);
353 353
 
354
-	$preg = '/' . str_replace('/', '\\/', (string) $recherche) . '/' . $options['preg_flags'];
354
+	$preg = '/'.str_replace('/', '\\/', (string) $recherche).'/'.$options['preg_flags'];
355 355
 
356 356
 	foreach ($results as $table => $r) {
357 357
 		$_id_table = id_table_objet($table);
Please login to merge, or discard this patch.