Completed
Push — master ( 37aa61...be7234 )
by cam
01:24
created
ecrire/inc/puce_statut.php 1 patch
Indentation   +227 added lines, -227 removed lines patch added patch discarded remove patch
@@ -17,18 +17,18 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 if (!defined('_ACTIVER_PUCE_RAPIDE')) {
24
-	/**
25
-	 * Activer le changement rapide de statut sur les listes d'objets ?
26
-	 *
27
-	 * Peut ralentir un site sur des listes très longues.
28
-	 *
29
-	 * @var bool
30
-	 **/
31
-	define('_ACTIVER_PUCE_RAPIDE', true);
24
+    /**
25
+     * Activer le changement rapide de statut sur les listes d'objets ?
26
+     *
27
+     * Peut ralentir un site sur des listes très longues.
28
+     *
29
+     * @var bool
30
+     **/
31
+    define('_ACTIVER_PUCE_RAPIDE', true);
32 32
 }
33 33
 
34 34
 /**
@@ -56,31 +56,31 @@  discard block
 block discarded – undo
56 56
  *     Code HTML de l'image de puce de statut à insérer (et du menu de changement si présent)
57 57
  */
58 58
 function inc_puce_statut_dist(
59
-	$id_objet,
60
-	$statut,
61
-	$id_parent,
62
-	$type,
63
-	$ajax = false,
64
-	$menu_rapide = _ACTIVER_PUCE_RAPIDE
59
+    $id_objet,
60
+    $statut,
61
+    $id_parent,
62
+    $type,
63
+    $ajax = false,
64
+    $menu_rapide = _ACTIVER_PUCE_RAPIDE
65 65
 ) {
66
-	static $f_puce_statut = [];
67
-	$type = objet_type($type);
68
-	// cas prioritaire : fonction perso, qui permet aussi de gerer les cas historiques
69
-	if (!isset($f_puce_statut[$type]) || is_null($f_puce_statut[$type])) {
70
-		$f_puce_statut[$type] = charger_fonction($type, 'puce_statut', true);
71
-	}
72
-	if ($f_puce_statut[$type]) {
73
-		return $f_puce_statut[$type]($id_objet, $statut, $id_parent, $type, $ajax, $menu_rapide);
74
-	}
75
-
76
-	// si statut_image trouve quelque chose (et '' est quelque chose)
77
-	// composer une puce, avec si possible changement rapide
78
-	elseif (!is_null($puce = puce_statut_changement_rapide($id_objet, $statut, $id_parent, $type, $ajax, $menu_rapide))) {
79
-		return $puce;
80
-	} // sinon fausse puce avec le type de l'image
81
-	else {
82
-		return http_img_pack("$type-16.png", '');
83
-	}
66
+    static $f_puce_statut = [];
67
+    $type = objet_type($type);
68
+    // cas prioritaire : fonction perso, qui permet aussi de gerer les cas historiques
69
+    if (!isset($f_puce_statut[$type]) || is_null($f_puce_statut[$type])) {
70
+        $f_puce_statut[$type] = charger_fonction($type, 'puce_statut', true);
71
+    }
72
+    if ($f_puce_statut[$type]) {
73
+        return $f_puce_statut[$type]($id_objet, $statut, $id_parent, $type, $ajax, $menu_rapide);
74
+    }
75
+
76
+    // si statut_image trouve quelque chose (et '' est quelque chose)
77
+    // composer une puce, avec si possible changement rapide
78
+    elseif (!is_null($puce = puce_statut_changement_rapide($id_objet, $statut, $id_parent, $type, $ajax, $menu_rapide))) {
79
+        return $puce;
80
+    } // sinon fausse puce avec le type de l'image
81
+    else {
82
+        return http_img_pack("$type-16.png", '');
83
+    }
84 84
 }
85 85
 
86 86
 /**
@@ -109,41 +109,41 @@  discard block
 block discarded – undo
109 109
  *   null si pas capable de déterminer l'image
110 110
  */
111 111
 function statut_image($objet, $statut) {
112
-	$src = null;
113
-	$table = table_objet_sql($objet);
114
-	$desc = lister_tables_objets_sql($table);
115
-	if (isset($desc['statut_images'])) {
116
-		// si une declaration statut_images
117
-		// mais rien pour le statut demande, ne rien afficher
118
-		$src = '';
119
-		if (isset($desc['statut_images'][$statut])) {
120
-			$src = $desc['statut_images'][$statut];
121
-		} // sinon image par defaut ?
122
-		elseif (isset($desc['statut_images'][0])) {
123
-			$src = $desc['statut_images'][0];
124
-		}
125
-	} else {
126
-		switch ($statut) {
127
-			case 'prepa':
128
-				$src = 'puce-preparer-xx.svg?12px';
129
-				break;
130
-			case 'prop':
131
-				$src = 'puce-proposer-xx.svg?12px';
132
-				break;
133
-			case 'publie':
134
-				$src = 'puce-publier-xx.svg?12px';
135
-				break;
136
-			case 'refuse':
137
-				$src = 'puce-refuser-xx.svg?12px';
138
-				break;
139
-			case 'poubelle':
140
-			case 'poub':
141
-				$src = 'puce-supprimer-xx.svg?12px';
142
-				break;
143
-		}
144
-	}
145
-
146
-	return $src;
112
+    $src = null;
113
+    $table = table_objet_sql($objet);
114
+    $desc = lister_tables_objets_sql($table);
115
+    if (isset($desc['statut_images'])) {
116
+        // si une declaration statut_images
117
+        // mais rien pour le statut demande, ne rien afficher
118
+        $src = '';
119
+        if (isset($desc['statut_images'][$statut])) {
120
+            $src = $desc['statut_images'][$statut];
121
+        } // sinon image par defaut ?
122
+        elseif (isset($desc['statut_images'][0])) {
123
+            $src = $desc['statut_images'][0];
124
+        }
125
+    } else {
126
+        switch ($statut) {
127
+            case 'prepa':
128
+                $src = 'puce-preparer-xx.svg?12px';
129
+                break;
130
+            case 'prop':
131
+                $src = 'puce-proposer-xx.svg?12px';
132
+                break;
133
+            case 'publie':
134
+                $src = 'puce-publier-xx.svg?12px';
135
+                break;
136
+            case 'refuse':
137
+                $src = 'puce-refuser-xx.svg?12px';
138
+                break;
139
+            case 'poubelle':
140
+            case 'poub':
141
+                $src = 'puce-supprimer-xx.svg?12px';
142
+                break;
143
+        }
144
+    }
145
+
146
+    return $src;
147 147
 }
148 148
 
149 149
 /**
@@ -171,40 +171,40 @@  discard block
 block discarded – undo
171 171
  * @return string
172 172
  */
173 173
 function statut_titre($objet, $statut) {
174
-	$titre = '';
175
-	$table = table_objet_sql($objet);
176
-	$desc = lister_tables_objets_sql($table);
177
-	if (isset($desc['statut_titres'])) {
178
-		// si une declaration statut_titres
179
-		// mais rien pour le statut demande, ne rien afficher
180
-		if (isset($desc['statut_titres'][$statut])) {
181
-			$titre = $desc['statut_titres'][$statut];
182
-		} // sinon image par defaut ?
183
-		elseif (isset($desc['statut_titres'][0])) {
184
-			$titre = $desc['statut_titres'][0];
185
-		}
186
-	} else {
187
-		switch ($statut) {
188
-			case 'prepa':
189
-				$titre = 'texte_statut_en_cours_redaction';
190
-				break;
191
-			case 'prop':
192
-				$titre = 'texte_statut_propose_evaluation';
193
-				break;
194
-			case 'publie':
195
-				$titre = 'texte_statut_publie';
196
-				break;
197
-			case 'refuse':
198
-				$titre = 'texte_statut_refuse';
199
-				break;
200
-			case 'poubelle':
201
-			case 'poub':
202
-				$titre = 'texte_statut_poubelle';
203
-				break;
204
-		}
205
-	}
206
-
207
-	return $titre ? _T($titre) : '';
174
+    $titre = '';
175
+    $table = table_objet_sql($objet);
176
+    $desc = lister_tables_objets_sql($table);
177
+    if (isset($desc['statut_titres'])) {
178
+        // si une declaration statut_titres
179
+        // mais rien pour le statut demande, ne rien afficher
180
+        if (isset($desc['statut_titres'][$statut])) {
181
+            $titre = $desc['statut_titres'][$statut];
182
+        } // sinon image par defaut ?
183
+        elseif (isset($desc['statut_titres'][0])) {
184
+            $titre = $desc['statut_titres'][0];
185
+        }
186
+    } else {
187
+        switch ($statut) {
188
+            case 'prepa':
189
+                $titre = 'texte_statut_en_cours_redaction';
190
+                break;
191
+            case 'prop':
192
+                $titre = 'texte_statut_propose_evaluation';
193
+                break;
194
+            case 'publie':
195
+                $titre = 'texte_statut_publie';
196
+                break;
197
+            case 'refuse':
198
+                $titre = 'texte_statut_refuse';
199
+                break;
200
+            case 'poubelle':
201
+            case 'poub':
202
+                $titre = 'texte_statut_poubelle';
203
+                break;
204
+        }
205
+    }
206
+
207
+    return $titre ? _T($titre) : '';
208 208
 }
209 209
 
210 210
 
@@ -224,37 +224,37 @@  discard block
 block discarded – undo
224 224
  * @return string
225 225
  */
226 226
 function statut_texte_instituer($objet, $statut) {
227
-	$texte = '';
228
-	$table = table_objet_sql($objet);
229
-	$desc = lister_tables_objets_sql($table);
230
-	if (isset($desc['statut_textes_instituer'])) {
231
-		// si une declaration statut_titres
232
-		// mais rien pour le statut demande, ne rien afficher
233
-		if (isset($desc['statut_textes_instituer'][$statut])) {
234
-			$texte = $desc['statut_textes_instituer'][$statut];
235
-		}
236
-	} else {
237
-		switch ($statut) {
238
-			case 'prepa':
239
-				$texte = 'texte_statut_en_cours_redaction';
240
-				break;
241
-			case 'prop':
242
-				$texte = 'texte_statut_propose_evaluation';
243
-				break;
244
-			case 'publie':
245
-				$texte = 'texte_statut_publie';
246
-				break;
247
-			case 'refuse':
248
-				$texte = 'texte_statut_refuse';
249
-				break;
250
-			case 'poubelle':
251
-			case 'poub':
252
-				$texte = 'texte_statut_poubelle';
253
-				break;
254
-		}
255
-	}
256
-
257
-	return $texte ? _T($texte) : '';
227
+    $texte = '';
228
+    $table = table_objet_sql($objet);
229
+    $desc = lister_tables_objets_sql($table);
230
+    if (isset($desc['statut_textes_instituer'])) {
231
+        // si une declaration statut_titres
232
+        // mais rien pour le statut demande, ne rien afficher
233
+        if (isset($desc['statut_textes_instituer'][$statut])) {
234
+            $texte = $desc['statut_textes_instituer'][$statut];
235
+        }
236
+    } else {
237
+        switch ($statut) {
238
+            case 'prepa':
239
+                $texte = 'texte_statut_en_cours_redaction';
240
+                break;
241
+            case 'prop':
242
+                $texte = 'texte_statut_propose_evaluation';
243
+                break;
244
+            case 'publie':
245
+                $texte = 'texte_statut_publie';
246
+                break;
247
+            case 'refuse':
248
+                $texte = 'texte_statut_refuse';
249
+                break;
250
+            case 'poubelle':
251
+            case 'poub':
252
+                $texte = 'texte_statut_poubelle';
253
+                break;
254
+        }
255
+    }
256
+
257
+    return $texte ? _T($texte) : '';
258 258
 }
259 259
 
260 260
 
@@ -274,16 +274,16 @@  discard block
 block discarded – undo
274 274
  * @return string
275 275
  */
276 276
 function puce_statut_auteur_dist($id, $statut, $id_parent, $type, $ajax = '', $menu_rapide = _ACTIVER_PUCE_RAPIDE) {
277
-	$img = statut_image('auteur', $statut);
278
-	if (!$img) {
279
-		return '';
280
-	}
281
-	$alt = statut_titre('auteur', $statut);
277
+    $img = statut_image('auteur', $statut);
278
+    if (!$img) {
279
+        return '';
280
+    }
281
+    $alt = statut_titre('auteur', $statut);
282 282
 
283
-	$fond = '';
284
-	$titre = '';
283
+    $fond = '';
284
+    $titre = '';
285 285
 
286
-	/*
286
+    /*
287 287
 	if ($type != 'auteur') {
288 288
 	  $img2 = chemin_image('del-16.png');
289 289
 	  $titre = _T('titre_image_redacteur');
@@ -293,12 +293,12 @@  discard block
 block discarded – undo
293 293
 	}
294 294
 	*/
295 295
 
296
-	return http_img_pack($img, $alt, $fond, $alt);
296
+    return http_img_pack($img, $alt, $fond, $alt);
297 297
 }
298 298
 
299 299
 
300 300
 function puce_statut_rubrique_dist($id, $statut, $id_rubrique, $type, $ajax = '', $menu_rapide = _ACTIVER_PUCE_RAPIDE) {
301
-	return http_img_pack('rubrique-16.png', '');
301
+    return http_img_pack('rubrique-16.png', '');
302 302
 }
303 303
 
304 304
 /**
@@ -322,101 +322,101 @@  discard block
 block discarded – undo
322 322
  *     Code HTML de l'image de puce de statut à insérer (et du menu de changement si présent)
323 323
  **/
324 324
 function puce_statut_changement_rapide(
325
-	$id,
326
-	$statut,
327
-	$id_rubrique,
328
-	$type = 'article',
329
-	$ajax = false,
330
-	$menu_rapide = _ACTIVER_PUCE_RAPIDE
325
+    $id,
326
+    $statut,
327
+    $id_rubrique,
328
+    $type = 'article',
329
+    $ajax = false,
330
+    $menu_rapide = _ACTIVER_PUCE_RAPIDE
331 331
 ) {
332
-	$src = statut_image($type, $statut);
333
-	if (!$src) {
334
-		return $src;
335
-	}
336
-
337
-	$ajax_node = (!$id || !_SPIP_AJAX || !$menu_rapide) ? '' : " class='imgstatut$type$id'";
338
-
339
-
340
-	$t = statut_titre($type, $statut);
341
-	$inser_puce = http_img_pack($src, $t, $ajax_node, $t);
342
-
343
-	if (!$ajax_node) {
344
-		return $inser_puce;
345
-	}
346
-
347
-	$table = table_objet_sql($type);
348
-	$desc = lister_tables_objets_sql($table);
349
-	if (!isset($desc['statut_textes_instituer'])) {
350
-		return $inser_puce;
351
-	}
352
-
353
-	if (!function_exists('autoriser')) {
354
-		include_spip('inc/autoriser');
355
-	}
356
-
357
-	// cas ou l'on a un parent connu (devrait disparaitre au profit du second cas plus generique)
358
-	if ($id_rubrique) {
359
-		if (!autoriser('publierdans', 'rubrique', $id_rubrique)) {
360
-			return $inser_puce;
361
-		}
362
-	} // si pas d'id_rubrique fourni, tester directement instituer type avec le statut publie
363
-	else {
364
-		if (!autoriser('instituer', $type, $id, null, ['statut' => 'publie'])) {
365
-			return $inser_puce;
366
-		}
367
-	}
368
-
369
-	$coord = array_flip(array_keys($desc['statut_textes_instituer']));
370
-	if (!isset($coord[$statut])) {
371
-		return $inser_puce;
372
-	}
373
-
374
-	$unit = 18/*widh de img*/ + 0/*padding*/
375
-	;
376
-	$margin = 0; /* marge a gauche + droite */
377
-	$zero = 0 /*border*/ + $margin / 2 + 0 /*padding*/
378
-	;
379
-	$clip = $zero + ($unit * $coord[$statut]);
380
-
381
-	if ($ajax) {
382
-		$width = $unit * (is_countable($desc['statut_textes_instituer']) ? count($desc['statut_textes_instituer']) : 0) + $margin;
383
-		$out = "<span class='puce_objet_fixe $type'>"
384
-			. $inser_puce
385
-			. '</span>'
386
-			. "<span class='puce_objet_popup $type statutdecal$type$id' style='width:{$width}px;margin-left:-{$clip}px;'>";
387
-		$i = 0;
388
-		foreach ($desc['statut_textes_instituer'] as $s => $t) {
389
-			$out .= afficher_script_statut($id, $type, -$zero - $i++ * $unit, statut_image($type, $s), $s, _T($t));
390
-		}
391
-
392
-		return $out . '</span>';
393
-	} else {
394
-		$nom = 'puce_statut_';
395
-		$action = generer_url_ecrire('puce_statut', '', true);
396
-		$lang_dir = lang_dir(lang_typo());
397
-
398
-		return "<span class='puce_objet $type' id='$nom$type$id' dir='$lang_dir' data-puce-nom='$nom' data-puce-type='$type' data-puce-id='$id' data-puce-action='$action'>"
399
-		. $inser_puce
400
-		. '</span>';
401
-	}
332
+    $src = statut_image($type, $statut);
333
+    if (!$src) {
334
+        return $src;
335
+    }
336
+
337
+    $ajax_node = (!$id || !_SPIP_AJAX || !$menu_rapide) ? '' : " class='imgstatut$type$id'";
338
+
339
+
340
+    $t = statut_titre($type, $statut);
341
+    $inser_puce = http_img_pack($src, $t, $ajax_node, $t);
342
+
343
+    if (!$ajax_node) {
344
+        return $inser_puce;
345
+    }
346
+
347
+    $table = table_objet_sql($type);
348
+    $desc = lister_tables_objets_sql($table);
349
+    if (!isset($desc['statut_textes_instituer'])) {
350
+        return $inser_puce;
351
+    }
352
+
353
+    if (!function_exists('autoriser')) {
354
+        include_spip('inc/autoriser');
355
+    }
356
+
357
+    // cas ou l'on a un parent connu (devrait disparaitre au profit du second cas plus generique)
358
+    if ($id_rubrique) {
359
+        if (!autoriser('publierdans', 'rubrique', $id_rubrique)) {
360
+            return $inser_puce;
361
+        }
362
+    } // si pas d'id_rubrique fourni, tester directement instituer type avec le statut publie
363
+    else {
364
+        if (!autoriser('instituer', $type, $id, null, ['statut' => 'publie'])) {
365
+            return $inser_puce;
366
+        }
367
+    }
368
+
369
+    $coord = array_flip(array_keys($desc['statut_textes_instituer']));
370
+    if (!isset($coord[$statut])) {
371
+        return $inser_puce;
372
+    }
373
+
374
+    $unit = 18/*widh de img*/ + 0/*padding*/
375
+    ;
376
+    $margin = 0; /* marge a gauche + droite */
377
+    $zero = 0 /*border*/ + $margin / 2 + 0 /*padding*/
378
+    ;
379
+    $clip = $zero + ($unit * $coord[$statut]);
380
+
381
+    if ($ajax) {
382
+        $width = $unit * (is_countable($desc['statut_textes_instituer']) ? count($desc['statut_textes_instituer']) : 0) + $margin;
383
+        $out = "<span class='puce_objet_fixe $type'>"
384
+            . $inser_puce
385
+            . '</span>'
386
+            . "<span class='puce_objet_popup $type statutdecal$type$id' style='width:{$width}px;margin-left:-{$clip}px;'>";
387
+        $i = 0;
388
+        foreach ($desc['statut_textes_instituer'] as $s => $t) {
389
+            $out .= afficher_script_statut($id, $type, -$zero - $i++ * $unit, statut_image($type, $s), $s, _T($t));
390
+        }
391
+
392
+        return $out . '</span>';
393
+    } else {
394
+        $nom = 'puce_statut_';
395
+        $action = generer_url_ecrire('puce_statut', '', true);
396
+        $lang_dir = lang_dir(lang_typo());
397
+
398
+        return "<span class='puce_objet $type' id='$nom$type$id' dir='$lang_dir' data-puce-nom='$nom' data-puce-type='$type' data-puce-id='$id' data-puce-action='$action'>"
399
+        . $inser_puce
400
+        . '</span>';
401
+    }
402 402
 }
403 403
 
404 404
 
405 405
 function afficher_script_statut($id, $type, $n, $img, $statut, $titre, $act = '') {
406
-	$h = generer_action_auteur('instituer_objet', "$type-$id-$statut");
407
-	$t = supprimer_tags($titre);
406
+    $h = generer_action_auteur('instituer_objet', "$type-$id-$statut");
407
+    $t = supprimer_tags($titre);
408 408
 
409
-	return "<a href=\"#\" data-puce-id=\"$id\" data-puce-type=\"$type\" data-puce-decal=\"$n\" data-puce-action=\"$h\" title=\"$t\"$act>" . http_img_pack($img, $t) . '</a>';
409
+    return "<a href=\"#\" data-puce-id=\"$id\" data-puce-type=\"$type\" data-puce-decal=\"$n\" data-puce-action=\"$h\" title=\"$t\"$act>" . http_img_pack($img, $t) . '</a>';
410 410
 }
411 411
 
412 412
 // compat
413 413
 // La couleur du statut
414 414
 
415 415
 function puce_statut($statut, $atts = '') {
416
-	$src = statut_image('article', $statut);
417
-	if (!$src) {
418
-		return '';
419
-	}
416
+    $src = statut_image('article', $statut);
417
+    if (!$src) {
418
+        return '';
419
+    }
420 420
 
421
-	return http_img_pack($src, statut_titre('article', $statut), $atts);
421
+    return http_img_pack($src, statut_titre('article', $statut), $atts);
422 422
 }
Please login to merge, or discard this patch.
ecrire/inc/traduire.php 1 patch
Indentation   +192 added lines, -192 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_log("module de langue : {$module}_$l.php", 'traduire');
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_log("module de langue : {$module}_$l.php", 'traduire');
130
+            break;
131
+        }
132
+    }
133 133
 }
134 134
 
135 135
 /**
@@ -142,21 +142,21 @@  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
-			$idx_lang = $GLOBALS[$idx_lang_tmp];
153
-		} else {
154
-			$idx_lang = [];
155
-			spip_log(sprintf('Fichier de langue incorrect : %s', $fichier), _LOG_ERREUR);
156
-		}
157
-		unset($GLOBALS[$idx_lang_tmp]);
158
-	}
159
-	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
+            $idx_lang = $GLOBALS[$idx_lang_tmp];
153
+        } else {
154
+            $idx_lang = [];
155
+            spip_log(sprintf('Fichier de langue incorrect : %s', $fichier), _LOG_ERREUR);
156
+        }
157
+        unset($GLOBALS[$idx_lang_tmp]);
158
+    }
159
+    return $idx_lang;
160 160
 }
161 161
 
162 162
 /**
@@ -176,29 +176,29 @@  discard block
 block discarded – undo
176 176
  *    Liste des chemins de fichiers de langue à surcharger.
177 177
  **/
178 178
 function surcharger_langue($fichiers) {
179
-	static $surcharges = [];
180
-	if (!isset($GLOBALS['idx_lang'])) {
181
-		return;
182
-	}
179
+    static $surcharges = [];
180
+    if (!isset($GLOBALS['idx_lang'])) {
181
+        return;
182
+    }
183 183
 
184
-	if (!is_array($fichiers)) {
185
-		$fichiers = [$fichiers];
186
-	}
187
-	if ($fichiers === []) {
188
-		return;
189
-	}
190
-	foreach ($fichiers as $fichier) {
191
-		if (!isset($surcharges[$fichier])) {
192
-			$surcharges[$fichier] = lire_fichier_langue($fichier);
193
-		}
194
-		if (is_array($surcharges[$fichier])) {
195
-			$GLOBALS[$GLOBALS['idx_lang']] ??= [];
196
-			$GLOBALS[$GLOBALS['idx_lang']] = array_merge(
197
-				$GLOBALS[$GLOBALS['idx_lang']],
198
-				$surcharges[$fichier]
199
-			);
200
-		}
201
-	}
184
+    if (!is_array($fichiers)) {
185
+        $fichiers = [$fichiers];
186
+    }
187
+    if ($fichiers === []) {
188
+        return;
189
+    }
190
+    foreach ($fichiers as $fichier) {
191
+        if (!isset($surcharges[$fichier])) {
192
+            $surcharges[$fichier] = lire_fichier_langue($fichier);
193
+        }
194
+        if (is_array($surcharges[$fichier])) {
195
+            $GLOBALS[$GLOBALS['idx_lang']] ??= [];
196
+            $GLOBALS[$GLOBALS['idx_lang']] = array_merge(
197
+                $GLOBALS[$GLOBALS['idx_lang']],
198
+                $surcharges[$fichier]
199
+            );
200
+        }
201
+    }
202 202
 }
203 203
 
204 204
 /**
@@ -239,99 +239,99 @@  discard block
 block discarded – undo
239 239
  *     - Description : traduction et description (texte, module, langue)
240 240
  **/
241 241
 function inc_traduire_dist($ori, $lang, $raw = false) {
242
-	static $deja_vu = [];
243
-	static $local = [];
242
+    static $deja_vu = [];
243
+    static $local = [];
244 244
 
245
-	if (isset($deja_vu[$lang][$ori]) && _request('var_mode') != 'traduction') {
246
-		return $raw ? $deja_vu[$lang][$ori] : $deja_vu[$lang][$ori]->texte;
247
-	}
245
+    if (isset($deja_vu[$lang][$ori]) && _request('var_mode') != 'traduction') {
246
+        return $raw ? $deja_vu[$lang][$ori] : $deja_vu[$lang][$ori]->texte;
247
+    }
248 248
 
249
-	// modules demandes explicitement <xxx|yyy|zzz:code> cf MODULES_IDIOMES
250
-	if (strpos($ori, ':')) {
251
-		[$modules, $code] = explode(':', $ori, 2);
252
-		$modules = explode('|', $modules);
253
-		$ori_complet = $ori;
254
-	} else {
255
-		$modules = ['spip', 'ecrire'];
256
-		$code = $ori;
257
-		$ori_complet = implode('|', $modules) . ':' . $ori;
258
-	}
249
+    // modules demandes explicitement <xxx|yyy|zzz:code> cf MODULES_IDIOMES
250
+    if (strpos($ori, ':')) {
251
+        [$modules, $code] = explode(':', $ori, 2);
252
+        $modules = explode('|', $modules);
253
+        $ori_complet = $ori;
254
+    } else {
255
+        $modules = ['spip', 'ecrire'];
256
+        $code = $ori;
257
+        $ori_complet = implode('|', $modules) . ':' . $ori;
258
+    }
259 259
 
260
-	$desc = new Description();
260
+    $desc = new Description();
261 261
 
262
-	// parcourir tous les modules jusqu'a ce qu'on trouve
263
-	foreach ($modules as $module) {
264
-		$var = 'i18n_' . $module . '_' . $lang;
262
+    // parcourir tous les modules jusqu'a ce qu'on trouve
263
+    foreach ($modules as $module) {
264
+        $var = 'i18n_' . $module . '_' . $lang;
265 265
 
266
-		if (empty($GLOBALS[$var])) {
267
-			charger_langue($lang, $module);
268
-			// surcharges persos -- on cherche
269
-			// (lang/)local_xx.php et/ou (lang/)local.php ...
270
-			if (!isset($local['local_' . $lang])) {
271
-				// redéfinir la langue en cours pour les surcharges (chercher_langue a pu le changer)
272
-				$GLOBALS['idx_lang'] = $var;
273
-				// ... (lang/)local_xx.php
274
-				$local['local_' . $lang] = chercher_module_lang('local', $lang);
275
-			}
276
-			if ($local['local_' . $lang]) {
277
-				surcharger_langue($local['local_' . $lang]);
278
-			}
279
-			// ... puis (lang/)local.php
280
-			if (!isset($local['local'])) {
281
-				$local['local'] = chercher_module_lang('local');
282
-			}
283
-			if ($local['local']) {
284
-				surcharger_langue($local['local']);
285
-			}
286
-		}
266
+        if (empty($GLOBALS[$var])) {
267
+            charger_langue($lang, $module);
268
+            // surcharges persos -- on cherche
269
+            // (lang/)local_xx.php et/ou (lang/)local.php ...
270
+            if (!isset($local['local_' . $lang])) {
271
+                // redéfinir la langue en cours pour les surcharges (chercher_langue a pu le changer)
272
+                $GLOBALS['idx_lang'] = $var;
273
+                // ... (lang/)local_xx.php
274
+                $local['local_' . $lang] = chercher_module_lang('local', $lang);
275
+            }
276
+            if ($local['local_' . $lang]) {
277
+                surcharger_langue($local['local_' . $lang]);
278
+            }
279
+            // ... puis (lang/)local.php
280
+            if (!isset($local['local'])) {
281
+                $local['local'] = chercher_module_lang('local');
282
+            }
283
+            if ($local['local']) {
284
+                surcharger_langue($local['local']);
285
+            }
286
+        }
287 287
 
288
-		if (isset($GLOBALS[$var][$code])) {
289
-			$desc->code = $code;
290
-			$desc->module = $module;
291
-			$desc->langue = $GLOBALS['lang_' . $var] ?? $lang;
292
-			$desc->texte = $GLOBALS[$var][$code];
293
-			break;
294
-		}
295
-	}
288
+        if (isset($GLOBALS[$var][$code])) {
289
+            $desc->code = $code;
290
+            $desc->module = $module;
291
+            $desc->langue = $GLOBALS['lang_' . $var] ?? $lang;
292
+            $desc->texte = $GLOBALS[$var][$code];
293
+            break;
294
+        }
295
+    }
296 296
 
297
-	if (!$desc->corrections) {
298
-		$desc->corrections = true;
299
-		// Retour aux sources si la chaine est absente dans la langue cible ;
300
-		// on essaie d'abord la langue du site, puis a defaut la langue fr
301
-		if (
302
-			($desc->texte === null || !strlen($desc->texte))
303
-			&& $lang !== _LANGUE_PAR_DEFAUT
304
-		) {
305
-			if ($lang !== $GLOBALS['meta']['langue_site']) {
306
-				$desc = inc_traduire_dist($ori, $GLOBALS['meta']['langue_site'], true);
307
-			} else {
308
-				$desc = inc_traduire_dist($ori, _LANGUE_PAR_DEFAUT, true);
309
-			}
310
-		}
297
+    if (!$desc->corrections) {
298
+        $desc->corrections = true;
299
+        // Retour aux sources si la chaine est absente dans la langue cible ;
300
+        // on essaie d'abord la langue du site, puis a defaut la langue fr
301
+        if (
302
+            ($desc->texte === null || !strlen($desc->texte))
303
+            && $lang !== _LANGUE_PAR_DEFAUT
304
+        ) {
305
+            if ($lang !== $GLOBALS['meta']['langue_site']) {
306
+                $desc = inc_traduire_dist($ori, $GLOBALS['meta']['langue_site'], true);
307
+            } else {
308
+                $desc = inc_traduire_dist($ori, _LANGUE_PAR_DEFAUT, true);
309
+            }
310
+        }
311 311
 
312
-		// Supprimer la mention <NEW> ou <MODIF>
313
-		if ($desc->texte && str_starts_with($desc->texte, '<')) {
314
-			$desc->texte = str_replace(['<NEW>', '<MODIF>'], [], $desc->texte);
315
-		}
312
+        // Supprimer la mention <NEW> ou <MODIF>
313
+        if ($desc->texte && str_starts_with($desc->texte, '<')) {
314
+            $desc->texte = str_replace(['<NEW>', '<MODIF>'], [], $desc->texte);
315
+        }
316 316
 
317
-		// Si on n'est pas en utf-8, la chaine peut l'etre...
318
-		// le cas echeant on la convertit en entites html &#xxx;
319
-		if (
320
-			(!isset($GLOBALS['meta']['charset']) || $GLOBALS['meta']['charset'] !== 'utf-8')
321
-			&& preg_match(',[\x7f-\xff],S', $desc->texte)
322
-		) {
323
-			include_spip('inc/charsets');
324
-			$desc->texte = charset2unicode($desc->texte, 'utf-8');
325
-		}
326
-	}
317
+        // Si on n'est pas en utf-8, la chaine peut l'etre...
318
+        // le cas echeant on la convertit en entites html &#xxx;
319
+        if (
320
+            (!isset($GLOBALS['meta']['charset']) || $GLOBALS['meta']['charset'] !== 'utf-8')
321
+            && preg_match(',[\x7f-\xff],S', $desc->texte)
322
+        ) {
323
+            include_spip('inc/charsets');
324
+            $desc->texte = charset2unicode($desc->texte, 'utf-8');
325
+        }
326
+    }
327 327
 
328
-	if (_request('var_mode') == 'traduction') {
329
-		$desc = definir_details_traduction($desc, $ori_complet);
330
-	} else {
331
-		$deja_vu[$lang][$ori] = $desc;
332
-	}
328
+    if (_request('var_mode') == 'traduction') {
329
+        $desc = definir_details_traduction($desc, $ori_complet);
330
+    } else {
331
+        $deja_vu[$lang][$ori] = $desc;
332
+    }
333 333
 
334
-	return $raw ? $desc : $desc->texte;
334
+    return $raw ? $desc : $desc->texte;
335 335
 }
336 336
 
337 337
 /**
@@ -343,23 +343,23 @@  discard block
 block discarded – undo
343 343
  * @return Description
344 344
  */
345 345
 function definir_details_traduction($desc, $modules) {
346
-	if (!$desc->mode && $desc->texte) {
347
-		// ne pas modifier 2 fois l'affichage
348
-		$desc->mode = 'traduction';
349
-		$classe = 'debug-traduction' . ($desc->module == 'ecrire' ? '-prive' : '');
350
-		$desc->texte = '<span '
351
-			. 'lang=' . $desc->langue
352
-			. ' class=' . $classe
353
-			. ' data-module=' . $desc->module
354
-			. ' data-code=' . $desc->code
355
-			. ' title=' . $modules . '(' . $desc->langue . ')>'
356
-			. $desc->texte
357
-			. '</span>';
358
-		$desc->texte = str_replace(
359
-			["$desc->module:", "$desc->module|"],
360
-			["*$desc->module*:", "*$desc->module*|"],
361
-			$desc->texte
362
-		);
363
-	}
364
-	return $desc;
346
+    if (!$desc->mode && $desc->texte) {
347
+        // ne pas modifier 2 fois l'affichage
348
+        $desc->mode = 'traduction';
349
+        $classe = 'debug-traduction' . ($desc->module == 'ecrire' ? '-prive' : '');
350
+        $desc->texte = '<span '
351
+            . 'lang=' . $desc->langue
352
+            . ' class=' . $classe
353
+            . ' data-module=' . $desc->module
354
+            . ' data-code=' . $desc->code
355
+            . ' title=' . $modules . '(' . $desc->langue . ')>'
356
+            . $desc->texte
357
+            . '</span>';
358
+        $desc->texte = str_replace(
359
+            ["$desc->module:", "$desc->module|"],
360
+            ["*$desc->module*:", "*$desc->module*|"],
361
+            $desc->texte
362
+        );
363
+    }
364
+    return $desc;
365 365
 }
Please login to merge, or discard this patch.
ecrire/inc/cookie.php 1 patch
Indentation   +93 added lines, -93 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
 
@@ -51,64 +51,64 @@  discard block
 block discarded – undo
51 51
  *     cookie sécurisé ou non ?
52 52
  **/
53 53
 function spip_setcookie($name = '', $value = '', $options = []) {
54
-	static $to_secure_list = ['spip_session'];
55
-	if (defined('_COOKIE_SECURE_LIST') && is_array(_COOKIE_SECURE_LIST)) {
56
-		$to_secure_list = array_merge($to_secure_list, _COOKIE_SECURE_LIST);
57
-	}
58
-
59
-	if (!is_array($options)) {
60
-		// anciens paramètres :
61
-		# spip_setcookie($name = '', $value = '', $expire = 0, $path = 'AUTO', $domain = '', $secure = '')
62
-		$opt = func_get_args();
63
-		$opt = array_slice($opt, 2);
64
-		$options = []; # /!\ après le func_get_args (sinon $opt[0] référence la nouvelle valeur de $options !);
65
-		if (isset($opt[0])) {
66
-			$options['expires'] = $opt[0];
67
-		}
68
-		if (isset($opt[1])) {
69
-			$options['path'] = $opt[1];
70
-		}
71
-		if (isset($opt[2])) {
72
-			$options['domain'] = $opt[2];
73
-		}
74
-		if (isset($opt[3])) {
75
-			$options['secure'] = $opt[3];
76
-		}
77
-	}
78
-
79
-	// expires
80
-	if (!isset($options['expires'])) {
81
-		$options['expires'] = 0;
82
-	}
83
-	if (!isset($options['path']) || $options['path'] === 'AUTO') {
84
-		$options['path'] = defined('_COOKIE_PATH') ? _COOKIE_PATH : preg_replace(',^\w+://[^/]*,', '', url_de_base());
85
-	}
86
-	if (empty($options['domain']) && defined('_COOKIE_DOMAIN') && _COOKIE_DOMAIN) {
87
-		$options['domain'] = _COOKIE_DOMAIN;
88
-	}
89
-	if (in_array($name, $to_secure_list)) {
90
-		if (empty($options['secure']) && defined('_COOKIE_SECURE') && _COOKIE_SECURE) {
91
-			$options['secure'] = true;
92
-		}
93
-		if (empty($options['httponly'])) {
94
-			$options['httponly'] = true;
95
-		}
96
-	}
97
-	if (empty($options['samesite'])) {
98
-		$options['samesite'] = 'Lax';
99
-	}
100
-
101
-	// in fine renommer le prefixe si besoin
102
-	if (str_starts_with($name, 'spip_')) {
103
-		$name = $GLOBALS['cookie_prefix'] . '_' . substr($name, 5);
104
-	}
105
-
106
-	#spip_log("cookie('$name', '$value', " . json_encode($options, true) . ")", "cookies");
107
-	$a = @setcookie($name, $value, $options);
108
-
109
-	spip_cookie_envoye(true);
110
-
111
-	return $a;
54
+    static $to_secure_list = ['spip_session'];
55
+    if (defined('_COOKIE_SECURE_LIST') && is_array(_COOKIE_SECURE_LIST)) {
56
+        $to_secure_list = array_merge($to_secure_list, _COOKIE_SECURE_LIST);
57
+    }
58
+
59
+    if (!is_array($options)) {
60
+        // anciens paramètres :
61
+        # spip_setcookie($name = '', $value = '', $expire = 0, $path = 'AUTO', $domain = '', $secure = '')
62
+        $opt = func_get_args();
63
+        $opt = array_slice($opt, 2);
64
+        $options = []; # /!\ après le func_get_args (sinon $opt[0] référence la nouvelle valeur de $options !);
65
+        if (isset($opt[0])) {
66
+            $options['expires'] = $opt[0];
67
+        }
68
+        if (isset($opt[1])) {
69
+            $options['path'] = $opt[1];
70
+        }
71
+        if (isset($opt[2])) {
72
+            $options['domain'] = $opt[2];
73
+        }
74
+        if (isset($opt[3])) {
75
+            $options['secure'] = $opt[3];
76
+        }
77
+    }
78
+
79
+    // expires
80
+    if (!isset($options['expires'])) {
81
+        $options['expires'] = 0;
82
+    }
83
+    if (!isset($options['path']) || $options['path'] === 'AUTO') {
84
+        $options['path'] = defined('_COOKIE_PATH') ? _COOKIE_PATH : preg_replace(',^\w+://[^/]*,', '', url_de_base());
85
+    }
86
+    if (empty($options['domain']) && defined('_COOKIE_DOMAIN') && _COOKIE_DOMAIN) {
87
+        $options['domain'] = _COOKIE_DOMAIN;
88
+    }
89
+    if (in_array($name, $to_secure_list)) {
90
+        if (empty($options['secure']) && defined('_COOKIE_SECURE') && _COOKIE_SECURE) {
91
+            $options['secure'] = true;
92
+        }
93
+        if (empty($options['httponly'])) {
94
+            $options['httponly'] = true;
95
+        }
96
+    }
97
+    if (empty($options['samesite'])) {
98
+        $options['samesite'] = 'Lax';
99
+    }
100
+
101
+    // in fine renommer le prefixe si besoin
102
+    if (str_starts_with($name, 'spip_')) {
103
+        $name = $GLOBALS['cookie_prefix'] . '_' . substr($name, 5);
104
+    }
105
+
106
+    #spip_log("cookie('$name', '$value', " . json_encode($options, true) . ")", "cookies");
107
+    $a = @setcookie($name, $value, $options);
108
+
109
+    spip_cookie_envoye(true);
110
+
111
+    return $a;
112 112
 }
113 113
 
114 114
 /**
@@ -124,12 +124,12 @@  discard block
 block discarded – undo
124 124
  * @return bool
125 125
  **/
126 126
 function spip_cookie_envoye($set = '') {
127
-	static $envoye = false;
128
-	if ($set) {
129
-		$envoye = true;
130
-	}
127
+    static $envoye = false;
128
+    if ($set) {
129
+        $envoye = true;
130
+    }
131 131
 
132
-	return $envoye;
132
+    return $envoye;
133 133
 }
134 134
 
135 135
 /**
@@ -148,21 +148,21 @@  discard block
 block discarded – undo
148 148
  *     Préfixe des cookies de SPIP
149 149
  **/
150 150
 function recuperer_cookies_spip($cookie_prefix) {
151
-	$prefix_long = strlen($cookie_prefix);
152
-
153
-	foreach (array_keys($_COOKIE) as $name) {
154
-		if (str_starts_with($name, 'spip_') && substr($name, 0, $prefix_long) != $cookie_prefix) {
155
-			unset($_COOKIE[$name]);
156
-			unset($GLOBALS[$name]);
157
-		}
158
-	}
159
-	foreach ($_COOKIE as $name => $value) {
160
-		if (substr($name, 0, $prefix_long) == $cookie_prefix) {
161
-			$spipname = preg_replace('/^' . $cookie_prefix . '_/', 'spip_', $name);
162
-			$_COOKIE[$spipname] = $value;
163
-			$GLOBALS[$spipname] = $value;
164
-		}
165
-	}
151
+    $prefix_long = strlen($cookie_prefix);
152
+
153
+    foreach (array_keys($_COOKIE) as $name) {
154
+        if (str_starts_with($name, 'spip_') && substr($name, 0, $prefix_long) != $cookie_prefix) {
155
+            unset($_COOKIE[$name]);
156
+            unset($GLOBALS[$name]);
157
+        }
158
+    }
159
+    foreach ($_COOKIE as $name => $value) {
160
+        if (substr($name, 0, $prefix_long) == $cookie_prefix) {
161
+            $spipname = preg_replace('/^' . $cookie_prefix . '_/', 'spip_', $name);
162
+            $_COOKIE[$spipname] = $value;
163
+            $GLOBALS[$spipname] = $value;
164
+        }
165
+    }
166 166
 }
167 167
 
168 168
 
@@ -181,18 +181,18 @@  discard block
 block discarded – undo
181 181
  *
182 182
  **/
183 183
 function exec_test_ajax_dist() {
184
-	switch (_request('js')) {
185
-		// on est appele par <noscript>
186
-		case -1:
187
-			spip_setcookie('spip_accepte_ajax', -1);
188
-			include_spip('inc/headers');
189
-			redirige_par_entete(chemin_image('erreur-xx.svg'));
190
-			break;
191
-
192
-		// ou par ajax
193
-		case 1:
194
-		default:
195
-			spip_setcookie('spip_accepte_ajax', 1);
196
-			break;
197
-	}
184
+    switch (_request('js')) {
185
+        // on est appele par <noscript>
186
+        case -1:
187
+            spip_setcookie('spip_accepte_ajax', -1);
188
+            include_spip('inc/headers');
189
+            redirige_par_entete(chemin_image('erreur-xx.svg'));
190
+            break;
191
+
192
+        // ou par ajax
193
+        case 1:
194
+        default:
195
+            spip_setcookie('spip_accepte_ajax', 1);
196
+            break;
197
+    }
198 198
 }
Please login to merge, or discard this patch.
ecrire/inc/simplexml_to_array.php 1 patch
Indentation   +62 added lines, -62 removed lines patch added patch discarded remove patch
@@ -10,7 +10,7 @@  discard block
 block discarded – undo
10 10
 \***************************************************************************/
11 11
 
12 12
 if (!defined('_ECRIRE_INC_VERSION')) {
13
-	return;
13
+    return;
14 14
 }
15 15
 
16 16
 
@@ -22,12 +22,12 @@  discard block
 block discarded – undo
22 22
  * @return array
23 23
  */
24 24
 function inc_simplexml_to_array_dist($u, $utiliser_namespace = false) {
25
-	// decoder la chaine en SimpleXML si pas deja fait
26
-	if (is_string($u)) {
27
-		$u = simplexml_load_string($u);
28
-	}
25
+    // decoder la chaine en SimpleXML si pas deja fait
26
+    if (is_string($u)) {
27
+        $u = simplexml_load_string($u);
28
+    }
29 29
 
30
-	return ['root' => @xmlObjToArr($u, $utiliser_namespace)];
30
+    return ['root' => @xmlObjToArr($u, $utiliser_namespace)];
31 31
 }
32 32
 
33 33
 
@@ -42,67 +42,67 @@  discard block
 block discarded – undo
42 42
  **/
43 43
 function xmlObjToArr($obj, $utiliser_namespace = false) {
44 44
 
45
-	$namespace = [];
46
-	$tableau = [];
45
+    $namespace = [];
46
+    $tableau = [];
47 47
 
48
-	// Cette fonction getDocNamespaces() est longue sur de gros xml. On permet donc
49
-	// de l'activer ou pas suivant le contenu supposé du XML
50
-	if (is_object($obj)) {
51
-		if (is_array($utiliser_namespace)) {
52
-			$namespace = $utiliser_namespace;
53
-		} else {
54
-			if ($utiliser_namespace) {
55
-				$namespace = $obj->getDocNamespaces(true);
56
-			}
57
-			$namespace[null] = null;
58
-		}
48
+    // Cette fonction getDocNamespaces() est longue sur de gros xml. On permet donc
49
+    // de l'activer ou pas suivant le contenu supposé du XML
50
+    if (is_object($obj)) {
51
+        if (is_array($utiliser_namespace)) {
52
+            $namespace = $utiliser_namespace;
53
+        } else {
54
+            if ($utiliser_namespace) {
55
+                $namespace = $obj->getDocNamespaces(true);
56
+            }
57
+            $namespace[null] = null;
58
+        }
59 59
 
60
-		$name = strtolower((string)$obj->getName());
61
-		$text = trim((string)$obj);
62
-		if (strlen($text) <= 0) {
63
-			$text = null;
64
-		}
60
+        $name = strtolower((string)$obj->getName());
61
+        $text = trim((string)$obj);
62
+        if (strlen($text) <= 0) {
63
+            $text = null;
64
+        }
65 65
 
66
-		$children = [];
67
-		$attributes = [];
66
+        $children = [];
67
+        $attributes = [];
68 68
 
69
-		// get info for all namespaces
70
-		foreach (array_keys($namespace) as $ns) {
71
-			// attributes
72
-			$objAttributes = $obj->attributes($ns, true);
73
-			foreach ($objAttributes as $attributeName => $attributeValue) {
74
-				$attribName = strtolower(trim((string)$attributeName));
75
-				$attribVal = trim((string)$attributeValue);
76
-				if (!empty($ns)) {
77
-					$attribName = $ns . ':' . $attribName;
78
-				}
79
-				$attributes[$attribName] = $attribVal;
80
-			}
69
+        // get info for all namespaces
70
+        foreach (array_keys($namespace) as $ns) {
71
+            // attributes
72
+            $objAttributes = $obj->attributes($ns, true);
73
+            foreach ($objAttributes as $attributeName => $attributeValue) {
74
+                $attribName = strtolower(trim((string)$attributeName));
75
+                $attribVal = trim((string)$attributeValue);
76
+                if (!empty($ns)) {
77
+                    $attribName = $ns . ':' . $attribName;
78
+                }
79
+                $attributes[$attribName] = $attribVal;
80
+            }
81 81
 
82
-			// children
83
-			$objChildren = $obj->children($ns, true);
84
-			foreach ($objChildren as $childName => $child) {
85
-				$childName = strtolower((string)$childName);
86
-				if (!empty($ns)) {
87
-					$childName = $ns . ':' . $childName;
88
-				}
89
-				$children[$childName][] = xmlObjToArr($child, $namespace);
90
-			}
91
-		}
82
+            // children
83
+            $objChildren = $obj->children($ns, true);
84
+            foreach ($objChildren as $childName => $child) {
85
+                $childName = strtolower((string)$childName);
86
+                if (!empty($ns)) {
87
+                    $childName = $ns . ':' . $childName;
88
+                }
89
+                $children[$childName][] = xmlObjToArr($child, $namespace);
90
+            }
91
+        }
92 92
 
93
-		$tableau = [
94
-			'name' => $name,
95
-		];
96
-		if ($text) {
97
-			$tableau['text'] = $text;
98
-		}
99
-		if ($attributes) {
100
-			$tableau['attributes'] = $attributes;
101
-		}
102
-		if ($children) {
103
-			$tableau['children'] = $children;
104
-		}
105
-	}
93
+        $tableau = [
94
+            'name' => $name,
95
+        ];
96
+        if ($text) {
97
+            $tableau['text'] = $text;
98
+        }
99
+        if ($attributes) {
100
+            $tableau['attributes'] = $attributes;
101
+        }
102
+        if ($children) {
103
+            $tableau['children'] = $children;
104
+        }
105
+    }
106 106
 
107
-	return $tableau;
107
+    return $tableau;
108 108
 }
Please login to merge, or discard this patch.
ecrire/inc/completer_traduction.php 1 patch
Indentation   +38 added lines, -38 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
 /**
@@ -28,51 +28,51 @@  discard block
 block discarded – undo
28 28
  * @return string Erreur éventuelle
29 29
  */
30 30
 function inc_completer_traduction_dist($objet, $id_objet, $id_trad) {
31
-	// dupliquer tous les liens sauf les auteurs : le nouvel auteur est celui qui traduit
32
-	// cf API editer_liens
33
-	include_spip('action/editer_liens');
34
-	objet_dupliquer_liens($objet, $id_trad, $id_objet, null, ['auteur']);
35
-	$_id_table = id_table_objet($objet);
31
+    // dupliquer tous les liens sauf les auteurs : le nouvel auteur est celui qui traduit
32
+    // cf API editer_liens
33
+    include_spip('action/editer_liens');
34
+    objet_dupliquer_liens($objet, $id_trad, $id_objet, null, ['auteur']);
35
+    $_id_table = id_table_objet($objet);
36 36
 
37
-	// recuperer le logo
38
-	$chercher_logo = charger_fonction('chercher_logo', 'inc');
39
-	include_spip('action/editer_logo');
40
-	foreach (['on', 'off'] as $etat) {
41
-		$logo = $chercher_logo($id_trad, $_id_table, $etat);
42
-		if ($logo && ($file = reset($logo))) {
43
-			logo_modifier($objet, $id_objet, $etat, $file);
44
-		}
45
-	}
37
+    // recuperer le logo
38
+    $chercher_logo = charger_fonction('chercher_logo', 'inc');
39
+    include_spip('action/editer_logo');
40
+    foreach (['on', 'off'] as $etat) {
41
+        $logo = $chercher_logo($id_trad, $_id_table, $etat);
42
+        if ($logo && ($file = reset($logo))) {
43
+            logo_modifier($objet, $id_objet, $etat, $file);
44
+        }
45
+    }
46 46
 
47
-	// dupliquer certains champs
48
-	$trouver_table = charger_fonction('trouver_table', 'base');
49
-	$desc = $trouver_table(table_objet_sql($objet));
50
-	$champs = $set = [];
47
+    // dupliquer certains champs
48
+    $trouver_table = charger_fonction('trouver_table', 'base');
49
+    $desc = $trouver_table(table_objet_sql($objet));
50
+    $champs = $set = [];
51 51
 
52
-	// un éventuel champ 'virtuel' (redirections)
53
-	if (!empty($desc['field']['virtuel'])) {
54
-		$champs[] = 'virtuel';
55
-	}
52
+    // un éventuel champ 'virtuel' (redirections)
53
+    if (!empty($desc['field']['virtuel'])) {
54
+        $champs[] = 'virtuel';
55
+    }
56 56
 
57
-	$data = sql_fetsel('*', $desc['table'], $_id_table . '=' . (int) $id_trad);
57
+    $data = sql_fetsel('*', $desc['table'], $_id_table . '=' . (int) $id_trad);
58 58
 
59
-	foreach ($champs as $c) {
60
-		$set[$c] = $data[$c];
61
-	}
59
+    foreach ($champs as $c) {
60
+        $set[$c] = $data[$c];
61
+    }
62 62
 
63
-	/*
63
+    /*
64 64
 	 * Le pipeline 'pre_edition' sera appelé avec l'action 'completer_traduction'.
65 65
 	 * Des plugins pourront ainsi compléter les champs d'un objet traduit lors d'une nouvelle traduction.
66 66
 	 */
67
-	$err = objet_modifier_champs(
68
-		$objet,
69
-		$id_objet,
70
-		[
71
-			'data' => $data,
72
-			'action' => 'completer_traduction',
73
-		],
74
-		$set
75
-	);
67
+    $err = objet_modifier_champs(
68
+        $objet,
69
+        $id_objet,
70
+        [
71
+            'data' => $data,
72
+            'action' => 'completer_traduction',
73
+        ],
74
+        $set
75
+    );
76 76
 
77
-	return $err;
77
+    return $err;
78 78
 }
Please login to merge, or discard this patch.
ecrire/inc/log.php 1 patch
Indentation   +94 added lines, -94 removed lines patch added patch discarded remove patch
@@ -10,101 +10,101 @@
 block discarded – undo
10 10
 \***************************************************************************/
11 11
 
12 12
 if (!defined('_ECRIRE_INC_VERSION')) {
13
-	return;
13
+    return;
14 14
 }
15 15
 
16 16
 function inc_log_dist($message, $logname = null, $logdir = null, $logsuf = null) {
17
-	static $test_repertoire = [];
18
-	static $compteur = [];
19
-	static $debugverb = ''; // pour ne pas le recalculer au reappel
20
-
21
-	if (is_null($logname) || !is_string($logname)) {
22
-		$logname = defined('_FILE_LOG') ? _FILE_LOG : 'spip';
23
-	}
24
-	if (!isset($compteur[$logname])) {
25
-		$compteur[$logname] = 0;
26
-	}
27
-	if (
28
-		$logname != 'maj'
29
-		&& defined('_MAX_LOG')
30
-		&& ($compteur[$logname]++ > _MAX_LOG || !$GLOBALS['nombre_de_logs'] || !$GLOBALS['taille_des_logs'])
31
-	) {
32
-		return;
33
-	}
34
-
35
-	// si spip_log() est appelé dans mes_options, toutes les constantes n'ont pas été définies
36
-	$logfile =
37
-		($logdir ?? (defined('_DIR_LOG') ? _DIR_LOG : _DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES))
38
-		. $logname
39
-		. ($logsuf ?? (defined('_FILE_LOG_SUFFIX') ? _FILE_LOG_SUFFIX : '.log'));
40
-
41
-	if (!isset($test_repertoire[$d = dirname($logfile)])) {
42
-		$test_repertoire[$d] = false; // eviter une recursivite en cas d'erreur de sous_repertoire
43
-		$test_repertoire[$d] = (@is_dir($d) ? true : (function_exists('sous_repertoire') ? sous_repertoire(
44
-			$d,
45
-			'',
46
-			false,
47
-			true
48
-		) : false));
49
-	}
50
-
51
-	// Si le repertoire défini n'existe pas, poser dans tmp/
52
-	if (!$test_repertoire[$d]) {
53
-		$logfile = _DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES . $logname . '.log';
54
-	}
55
-
56
-	$rotate = 0;
57
-	$pid = '(pid ' . @getmypid() . ')';
58
-
59
-	// accepter spip_log( Array )
60
-	if (!is_string($message)) {
61
-		$message = var_export($message, true);
62
-	}
63
-
64
-	if (!$debugverb && defined('_LOG_FILELINE') && _LOG_FILELINE) {
65
-		$debug = debug_backtrace();
66
-		$l = $debug[1]['line'];
67
-		$fi = $debug[1]['file'];
68
-		if (str_starts_with($fi, _ROOT_RACINE)) {
69
-			$fi = substr($fi, strlen(_ROOT_RACINE));
70
-		}
71
-		$fu = $debug[2]['function'] ?? '';
72
-		$debugverb = "$fi:L$l:$fu" . '():';
73
-	}
74
-
75
-	$m = date('Y-m-d H:i:s') . ' ' . ($GLOBALS['ip'] ?? '') . ' ' . $pid . ' '
76
-		//distinguer les logs prives et publics dans les grep
77
-		. $debugverb
78
-		. (test_espace_prive() ? ':Pri:' : ':Pub:')
79
-		. preg_replace("/\n*$/", "\n", $message);
80
-
81
-
82
-	if (
83
-		@is_readable($logfile)
84
-		&& ((!$s = @filesize($logfile)) || $s > $GLOBALS['taille_des_logs'] * 1024)
85
-	) {
86
-		$rotate = $GLOBALS['nombre_de_logs'];
87
-		$m .= "[-- rotate --]\n";
88
-	}
89
-
90
-	$f = @fopen($logfile, 'ab');
91
-	if ($f) {
92
-		fwrite($f, (defined('_LOG_BRUT') && _LOG_BRUT) ? $m : str_replace('<', '&lt;', $m));
93
-		fclose($f);
94
-	}
95
-
96
-	if (
97
-		$rotate-- > 0 && function_exists('spip_unlink')
98
-	) {
99
-		spip_unlink($logfile . '.' . $rotate);
100
-		while ($rotate--) {
101
-			@rename($logfile . ($rotate ? '.' . $rotate : ''), $logfile . '.' . ($rotate + 1));
102
-		}
103
-	}
104
-
105
-	// Dupliquer les erreurs specifiques dans le log general
106
-	if (defined('_FILE_LOG') && $logname !== _FILE_LOG) {
107
-		inc_log_dist($logname == 'maj' ? 'cf maj.log' : $message);
108
-	}
109
-	$debugverb = '';
17
+    static $test_repertoire = [];
18
+    static $compteur = [];
19
+    static $debugverb = ''; // pour ne pas le recalculer au reappel
20
+
21
+    if (is_null($logname) || !is_string($logname)) {
22
+        $logname = defined('_FILE_LOG') ? _FILE_LOG : 'spip';
23
+    }
24
+    if (!isset($compteur[$logname])) {
25
+        $compteur[$logname] = 0;
26
+    }
27
+    if (
28
+        $logname != 'maj'
29
+        && defined('_MAX_LOG')
30
+        && ($compteur[$logname]++ > _MAX_LOG || !$GLOBALS['nombre_de_logs'] || !$GLOBALS['taille_des_logs'])
31
+    ) {
32
+        return;
33
+    }
34
+
35
+    // si spip_log() est appelé dans mes_options, toutes les constantes n'ont pas été définies
36
+    $logfile =
37
+        ($logdir ?? (defined('_DIR_LOG') ? _DIR_LOG : _DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES))
38
+        . $logname
39
+        . ($logsuf ?? (defined('_FILE_LOG_SUFFIX') ? _FILE_LOG_SUFFIX : '.log'));
40
+
41
+    if (!isset($test_repertoire[$d = dirname($logfile)])) {
42
+        $test_repertoire[$d] = false; // eviter une recursivite en cas d'erreur de sous_repertoire
43
+        $test_repertoire[$d] = (@is_dir($d) ? true : (function_exists('sous_repertoire') ? sous_repertoire(
44
+            $d,
45
+            '',
46
+            false,
47
+            true
48
+        ) : false));
49
+    }
50
+
51
+    // Si le repertoire défini n'existe pas, poser dans tmp/
52
+    if (!$test_repertoire[$d]) {
53
+        $logfile = _DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES . $logname . '.log';
54
+    }
55
+
56
+    $rotate = 0;
57
+    $pid = '(pid ' . @getmypid() . ')';
58
+
59
+    // accepter spip_log( Array )
60
+    if (!is_string($message)) {
61
+        $message = var_export($message, true);
62
+    }
63
+
64
+    if (!$debugverb && defined('_LOG_FILELINE') && _LOG_FILELINE) {
65
+        $debug = debug_backtrace();
66
+        $l = $debug[1]['line'];
67
+        $fi = $debug[1]['file'];
68
+        if (str_starts_with($fi, _ROOT_RACINE)) {
69
+            $fi = substr($fi, strlen(_ROOT_RACINE));
70
+        }
71
+        $fu = $debug[2]['function'] ?? '';
72
+        $debugverb = "$fi:L$l:$fu" . '():';
73
+    }
74
+
75
+    $m = date('Y-m-d H:i:s') . ' ' . ($GLOBALS['ip'] ?? '') . ' ' . $pid . ' '
76
+        //distinguer les logs prives et publics dans les grep
77
+        . $debugverb
78
+        . (test_espace_prive() ? ':Pri:' : ':Pub:')
79
+        . preg_replace("/\n*$/", "\n", $message);
80
+
81
+
82
+    if (
83
+        @is_readable($logfile)
84
+        && ((!$s = @filesize($logfile)) || $s > $GLOBALS['taille_des_logs'] * 1024)
85
+    ) {
86
+        $rotate = $GLOBALS['nombre_de_logs'];
87
+        $m .= "[-- rotate --]\n";
88
+    }
89
+
90
+    $f = @fopen($logfile, 'ab');
91
+    if ($f) {
92
+        fwrite($f, (defined('_LOG_BRUT') && _LOG_BRUT) ? $m : str_replace('<', '&lt;', $m));
93
+        fclose($f);
94
+    }
95
+
96
+    if (
97
+        $rotate-- > 0 && function_exists('spip_unlink')
98
+    ) {
99
+        spip_unlink($logfile . '.' . $rotate);
100
+        while ($rotate--) {
101
+            @rename($logfile . ($rotate ? '.' . $rotate : ''), $logfile . '.' . ($rotate + 1));
102
+        }
103
+    }
104
+
105
+    // Dupliquer les erreurs specifiques dans le log general
106
+    if (defined('_FILE_LOG') && $logname !== _FILE_LOG) {
107
+        inc_log_dist($logname == 'maj' ? 'cf maj.log' : $message);
108
+    }
109
+    $debugverb = '';
110 110
 }
Please login to merge, or discard this patch.
ecrire/inc/securiser_action.php 1 patch
Indentation   +176 added lines, -176 removed lines patch added patch discarded remove patch
@@ -15,10 +15,10 @@  discard block
 block discarded – undo
15 15
  * @package SPIP\Core\Actions
16 16
  **/
17 17
 
18
- use Spip\Chiffrer\SpipCles;
18
+    use Spip\Chiffrer\SpipCles;
19 19
 
20 20
 if (!defined('_ECRIRE_INC_VERSION')) {
21
-	return;
21
+    return;
22 22
 }
23 23
 
24 24
 /**
@@ -51,19 +51,19 @@  discard block
 block discarded – undo
51 51
  * @return array|string
52 52
  */
53 53
 function inc_securiser_action_dist($action = '', $arg = '', $redirect = '', $mode = false, $att = '', $public = false) {
54
-	if ($action) {
55
-		return securiser_action_auteur($action, $arg, $redirect, $mode, $att, $public);
56
-	} else {
57
-		$arg = _request('arg');
58
-		$hash = _request('hash');
59
-		$action = _request('action') ?: _request('formulaire_action');
60
-		if ($a = verifier_action_auteur("$action-$arg", $hash)) {
61
-			return $arg;
62
-		}
63
-		include_spip('inc/minipres');
64
-		echo minipres();
65
-		exit;
66
-	}
54
+    if ($action) {
55
+        return securiser_action_auteur($action, $arg, $redirect, $mode, $att, $public);
56
+    } else {
57
+        $arg = _request('arg');
58
+        $hash = _request('hash');
59
+        $action = _request('action') ?: _request('formulaire_action');
60
+        if ($a = verifier_action_auteur("$action-$arg", $hash)) {
61
+            return $arg;
62
+        }
63
+        include_spip('inc/minipres');
64
+        echo minipres();
65
+        exit;
66
+    }
67 67
 }
68 68
 
69 69
 /**
@@ -82,29 +82,29 @@  discard block
 block discarded – undo
82 82
  */
83 83
 function demander_confirmation_avant_action($titre, $titre_bouton, $url_action = null) {
84 84
 
85
-	if (!$url_action) {
86
-		$url_action = self();
87
-		$action = _request('action');
88
-		$url_action = parametre_url($url_action, 'action', $action, '&');
89
-	}
90
-	else {
91
-		$action = parametre_url($url_action, 'action');
92
-	}
93
-
94
-	$arg = parametre_url($url_action, 'arg');
95
-	$confirm = md5("$action:$arg:" . realpath(__FILE__));
96
-	if (_request('confirm_action') === $confirm) {
97
-		return true;
98
-	}
99
-
100
-	$url_confirm = parametre_url($url_action, 'confirm_action', $confirm, '&');
101
-	include_spip('inc/filtres');
102
-	$bouton_action = bouton_action($titre_bouton, $url_confirm);
103
-	$corps = "<div style='text-align:center;'>$bouton_action</div>";
104
-
105
-	include_spip('inc/minipres');
106
-	echo minipres($titre, $corps);
107
-	exit;
85
+    if (!$url_action) {
86
+        $url_action = self();
87
+        $action = _request('action');
88
+        $url_action = parametre_url($url_action, 'action', $action, '&');
89
+    }
90
+    else {
91
+        $action = parametre_url($url_action, 'action');
92
+    }
93
+
94
+    $arg = parametre_url($url_action, 'arg');
95
+    $confirm = md5("$action:$arg:" . realpath(__FILE__));
96
+    if (_request('confirm_action') === $confirm) {
97
+        return true;
98
+    }
99
+
100
+    $url_confirm = parametre_url($url_action, 'confirm_action', $confirm, '&');
101
+    include_spip('inc/filtres');
102
+    $bouton_action = bouton_action($titre_bouton, $url_confirm);
103
+    $corps = "<div style='text-align:center;'>$bouton_action</div>";
104
+
105
+    include_spip('inc/minipres');
106
+    echo minipres($titre, $corps);
107
+    exit;
108 108
 }
109 109
 
110 110
 /**
@@ -135,34 +135,34 @@  discard block
 block discarded – undo
135 135
  */
136 136
 function securiser_action_auteur($action, $arg, $redirect = '', $mode = false, $att = '', $public = false) {
137 137
 
138
-	// mode URL ou array
139
-	if (!is_string($mode)) {
140
-		$hash = calculer_action_auteur("$action-$arg", is_numeric($att) ? $att : null);
141
-
142
-		$r = rawurlencode($redirect);
143
-		if ($mode === -1) {
144
-			return ['action' => $action, 'arg' => $arg, 'hash' => $hash];
145
-		} else {
146
-			return generer_url_action(
147
-				$action,
148
-				'arg=' . rawurlencode($arg) . "&hash=$hash" . ($r ? "&redirect=$r" : ''),
149
-				$mode,
150
-				$public
151
-			);
152
-		}
153
-	}
154
-
155
-	// mode formulaire
156
-	$hash = calculer_action_auteur("$action-$arg");
157
-	$att .= " style='margin: 0px; border: 0px'";
158
-	if ($redirect) {
159
-		$redirect = "\n\t\t<input name='redirect' type='hidden' value='" . str_replace("'", '&#39;', $redirect) . "' />";
160
-	}
161
-	$mode .= $redirect . "
138
+    // mode URL ou array
139
+    if (!is_string($mode)) {
140
+        $hash = calculer_action_auteur("$action-$arg", is_numeric($att) ? $att : null);
141
+
142
+        $r = rawurlencode($redirect);
143
+        if ($mode === -1) {
144
+            return ['action' => $action, 'arg' => $arg, 'hash' => $hash];
145
+        } else {
146
+            return generer_url_action(
147
+                $action,
148
+                'arg=' . rawurlencode($arg) . "&hash=$hash" . ($r ? "&redirect=$r" : ''),
149
+                $mode,
150
+                $public
151
+            );
152
+        }
153
+    }
154
+
155
+    // mode formulaire
156
+    $hash = calculer_action_auteur("$action-$arg");
157
+    $att .= " style='margin: 0px; border: 0px'";
158
+    if ($redirect) {
159
+        $redirect = "\n\t\t<input name='redirect' type='hidden' value='" . str_replace("'", '&#39;', $redirect) . "' />";
160
+    }
161
+    $mode .= $redirect . "
162 162
 <input name='hash' type='hidden' value='$hash' />
163 163
 <input name='arg' type='hidden' value='$arg' />";
164 164
 
165
-	return generer_form_action($action, $mode, $att, $public);
165
+    return generer_form_action($action, $mode, $att, $public);
166 166
 }
167 167
 
168 168
 /**
@@ -172,48 +172,48 @@  discard block
 block discarded – undo
172 172
  * @return array
173 173
  */
174 174
 function caracteriser_auteur($id_auteur = null) {
175
-	static $caracterisation = [];
176
-
177
-	if (is_null($id_auteur) && !isset($GLOBALS['visiteur_session']['id_auteur'])) {
178
-		// si l'auteur courant n'est pas connu alors qu'il peut demander une action
179
-		// c'est une connexion par php_auth ou 1 instal, on se rabat sur le cookie.
180
-		// S'il n'avait pas le droit de realiser cette action, le hash sera faux.
181
-		if (
182
-			isset($_COOKIE['spip_session'])
183
-			&& preg_match('/^(\d+)/', $_COOKIE['spip_session'], $r)
184
-		) {
185
-			return [$r[1], ''];
186
-			// Necessaire aux forums anonymes.
187
-			// Pour le reste, ca echouera.
188
-		} else {
189
-			return ['0', ''];
190
-		}
191
-	}
192
-	// Eviter l'acces SQL si le pass est connu de PHP
193
-	if (is_null($id_auteur)) {
194
-		$id_auteur = $GLOBALS['visiteur_session']['id_auteur'] ?? 0;
195
-		if (isset($GLOBALS['visiteur_session']['pass']) && $GLOBALS['visiteur_session']['pass']) {
196
-			return $caracterisation[$id_auteur] = [$id_auteur, $GLOBALS['visiteur_session']['pass']];
197
-		}
198
-	}
199
-
200
-	if (isset($caracterisation[$id_auteur])) {
201
-		return $caracterisation[$id_auteur];
202
-	}
203
-
204
-	if ($id_auteur) {
205
-		include_spip('base/abstract_sql');
206
-		$t = sql_fetsel('id_auteur, pass', 'spip_auteurs', "id_auteur=$id_auteur");
207
-		if ($t) {
208
-			return $caracterisation[$id_auteur] = [$t['id_auteur'], $t['pass']];
209
-		}
210
-		include_spip('inc/minipres');
211
-		echo minipres();
212
-		exit;
213
-	} // Visiteur anonyme, pour ls forums par exemple
214
-	else {
215
-		return ['0', ''];
216
-	}
175
+    static $caracterisation = [];
176
+
177
+    if (is_null($id_auteur) && !isset($GLOBALS['visiteur_session']['id_auteur'])) {
178
+        // si l'auteur courant n'est pas connu alors qu'il peut demander une action
179
+        // c'est une connexion par php_auth ou 1 instal, on se rabat sur le cookie.
180
+        // S'il n'avait pas le droit de realiser cette action, le hash sera faux.
181
+        if (
182
+            isset($_COOKIE['spip_session'])
183
+            && preg_match('/^(\d+)/', $_COOKIE['spip_session'], $r)
184
+        ) {
185
+            return [$r[1], ''];
186
+            // Necessaire aux forums anonymes.
187
+            // Pour le reste, ca echouera.
188
+        } else {
189
+            return ['0', ''];
190
+        }
191
+    }
192
+    // Eviter l'acces SQL si le pass est connu de PHP
193
+    if (is_null($id_auteur)) {
194
+        $id_auteur = $GLOBALS['visiteur_session']['id_auteur'] ?? 0;
195
+        if (isset($GLOBALS['visiteur_session']['pass']) && $GLOBALS['visiteur_session']['pass']) {
196
+            return $caracterisation[$id_auteur] = [$id_auteur, $GLOBALS['visiteur_session']['pass']];
197
+        }
198
+    }
199
+
200
+    if (isset($caracterisation[$id_auteur])) {
201
+        return $caracterisation[$id_auteur];
202
+    }
203
+
204
+    if ($id_auteur) {
205
+        include_spip('base/abstract_sql');
206
+        $t = sql_fetsel('id_auteur, pass', 'spip_auteurs', "id_auteur=$id_auteur");
207
+        if ($t) {
208
+            return $caracterisation[$id_auteur] = [$t['id_auteur'], $t['pass']];
209
+        }
210
+        include_spip('inc/minipres');
211
+        echo minipres();
212
+        exit;
213
+    } // Visiteur anonyme, pour ls forums par exemple
214
+    else {
215
+        return ['0', ''];
216
+    }
217 217
 }
218 218
 
219 219
 /**
@@ -222,31 +222,31 @@  discard block
 block discarded – undo
222 222
  * et verifier la legitimite de l'appel a l'action
223 223
  */
224 224
 function _action_auteur(string $action, int $id_auteur, #[\SensitiveParameter] ?string $pass, string $alea): string {
225
-	static $sha = [];
226
-	$pass ??= '';
227
-	$entry = "$action:$id_auteur:$pass:$alea";
228
-	if (!isset($sha[$entry])) {
229
-		$sha[$entry] = hash_hmac('sha256', "$action::$id_auteur", "$pass::" . _action_get_alea($alea));
230
-	}
231
-
232
-	return $sha[$entry];
225
+    static $sha = [];
226
+    $pass ??= '';
227
+    $entry = "$action:$id_auteur:$pass:$alea";
228
+    if (!isset($sha[$entry])) {
229
+        $sha[$entry] = hash_hmac('sha256', "$action::$id_auteur", "$pass::" . _action_get_alea($alea));
230
+    }
231
+
232
+    return $sha[$entry];
233 233
 }
234 234
 
235 235
 function _action_get_alea(string $alea): string {
236
-	if (!isset($GLOBALS['meta'][$alea])) {
237
-		$exec = _request('exec');
238
-		if (!$exec || !autoriser_sans_cookie($exec)) {
239
-			include_spip('inc/acces');
240
-			charger_aleas();
241
-			if (empty($GLOBALS['meta'][$alea])) {
242
-				include_spip('inc/minipres');
243
-				echo minipres();
244
-				spip_log("$alea indisponible");
245
-				exit;
246
-			}
247
-		}
248
-	}
249
-	return $GLOBALS['meta'][$alea] ?? '';
236
+    if (!isset($GLOBALS['meta'][$alea])) {
237
+        $exec = _request('exec');
238
+        if (!$exec || !autoriser_sans_cookie($exec)) {
239
+            include_spip('inc/acces');
240
+            charger_aleas();
241
+            if (empty($GLOBALS['meta'][$alea])) {
242
+                include_spip('inc/minipres');
243
+                echo minipres();
244
+                spip_log("$alea indisponible");
245
+                exit;
246
+            }
247
+        }
248
+    }
249
+    return $GLOBALS['meta'][$alea] ?? '';
250 250
 }
251 251
 
252 252
 /**
@@ -257,9 +257,9 @@  discard block
 block discarded – undo
257 257
  * @return string
258 258
  */
259 259
 function calculer_action_auteur($action, $id_auteur = null) {
260
-	[$id_auteur, $pass] = caracteriser_auteur($id_auteur);
260
+    [$id_auteur, $pass] = caracteriser_auteur($id_auteur);
261 261
 
262
-	return _action_auteur($action, $id_auteur, $pass, 'alea_ephemere');
262
+    return _action_auteur($action, $id_auteur, $pass, 'alea_ephemere');
263 263
 }
264 264
 
265 265
 
@@ -272,9 +272,9 @@  discard block
 block discarded – undo
272 272
  * @return bool
273 273
  */
274 274
 function verifier_action_auteur($action, $hash) {
275
-	[$id_auteur, $pass] = caracteriser_auteur();
276
-	return hash_equals($hash, _action_auteur($action, $id_auteur, $pass, 'alea_ephemere'))
277
-		|| hash_equals($hash, _action_auteur($action, $id_auteur, $pass, 'alea_ephemere_ancien'));
275
+    [$id_auteur, $pass] = caracteriser_auteur();
276
+    return hash_equals($hash, _action_auteur($action, $id_auteur, $pass, 'alea_ephemere'))
277
+        || hash_equals($hash, _action_auteur($action, $id_auteur, $pass, 'alea_ephemere_ancien'));
278 278
 }
279 279
 
280 280
 //
@@ -289,7 +289,7 @@  discard block
 block discarded – undo
289 289
  * @return string
290 290
  */
291 291
 function secret_du_site() {
292
-	return SpipCles::secret_du_site();
292
+    return SpipCles::secret_du_site();
293 293
 }
294 294
 
295 295
 /**
@@ -299,7 +299,7 @@  discard block
 block discarded – undo
299 299
  * @return string
300 300
  */
301 301
 function calculer_cle_action($action) {
302
-	return hash_hmac('sha256', $action, secret_du_site());
302
+    return hash_hmac('sha256', $action, secret_du_site());
303 303
 }
304 304
 
305 305
 /**
@@ -310,7 +310,7 @@  discard block
 block discarded – undo
310 310
  * @return bool
311 311
  */
312 312
 function verifier_cle_action($action, #[\SensitiveParameter] $cle) {
313
-	return hash_equals($cle, calculer_cle_action($action));
313
+    return hash_equals($cle, calculer_cle_action($action));
314 314
 }
315 315
 
316 316
 
@@ -327,17 +327,17 @@  discard block
 block discarded – undo
327 327
  * @return string Token, de la forme "{id}*{hash}"
328 328
  */
329 329
 function calculer_token_previsu($url, $id_auteur = null, $alea = 'alea_ephemere') {
330
-	if (is_null($id_auteur) && !empty($GLOBALS['visiteur_session']['id_auteur'])) {
331
-		$id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
332
-	}
333
-	if (!$id_auteur = (int) $id_auteur) {
334
-		return '';
335
-	}
336
-	// On nettoie l’URL de tous les var_.
337
-	$url = nettoyer_uri_var($url);
338
-
339
-	$token = _action_auteur('previsualiser-' . $url, $id_auteur, secret_du_site(), $alea);
340
-	return "$id_auteur-$token";
330
+    if (is_null($id_auteur) && !empty($GLOBALS['visiteur_session']['id_auteur'])) {
331
+        $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
332
+    }
333
+    if (!$id_auteur = (int) $id_auteur) {
334
+        return '';
335
+    }
336
+    // On nettoie l’URL de tous les var_.
337
+    $url = nettoyer_uri_var($url);
338
+
339
+    $token = _action_auteur('previsualiser-' . $url, $id_auteur, secret_du_site(), $alea);
340
+    return "$id_auteur-$token";
341 341
 }
342 342
 
343 343
 
@@ -355,31 +355,31 @@  discard block
 block discarded – undo
355 355
  *     + Tableau (id auteur, type d’objet, id_objet) sinon.
356 356
  */
357 357
 function verifier_token_previsu(#[\SensitiveParameter] $token) {
358
-	// retrouver auteur / hash
359
-	$e = explode('-', $token, 2);
360
-	if (count($e) == 2 && is_numeric(reset($e))) {
361
-		$id_auteur = (int) reset($e);
362
-	} else {
363
-		return false;
364
-	}
365
-
366
-	// calculer le type et id de l’url actuelle
367
-	include_spip('inc/urls');
368
-	include_spip('inc/filtres_mini');
369
-	$url = url_absolue(self());
370
-
371
-	// verifier le token
372
-	$_token = calculer_token_previsu($url, $id_auteur, 'alea_ephemere');
373
-	if (!$_token || !hash_equals($token, $_token)) {
374
-		$_token = calculer_token_previsu($url, $id_auteur, 'alea_ephemere_ancien');
375
-		if (!$_token || !hash_equals($token, $_token)) {
376
-			return false;
377
-		}
378
-	}
379
-
380
-	return [
381
-		'id_auteur' => $id_auteur,
382
-	];
358
+    // retrouver auteur / hash
359
+    $e = explode('-', $token, 2);
360
+    if (count($e) == 2 && is_numeric(reset($e))) {
361
+        $id_auteur = (int) reset($e);
362
+    } else {
363
+        return false;
364
+    }
365
+
366
+    // calculer le type et id de l’url actuelle
367
+    include_spip('inc/urls');
368
+    include_spip('inc/filtres_mini');
369
+    $url = url_absolue(self());
370
+
371
+    // verifier le token
372
+    $_token = calculer_token_previsu($url, $id_auteur, 'alea_ephemere');
373
+    if (!$_token || !hash_equals($token, $_token)) {
374
+        $_token = calculer_token_previsu($url, $id_auteur, 'alea_ephemere_ancien');
375
+        if (!$_token || !hash_equals($token, $_token)) {
376
+            return false;
377
+        }
378
+    }
379
+
380
+    return [
381
+        'id_auteur' => $id_auteur,
382
+    ];
383 383
 }
384 384
 
385 385
 /**
@@ -388,9 +388,9 @@  discard block
 block discarded – undo
388 388
  * @return bool|array
389 389
  */
390 390
 function decrire_token_previsu() {
391
-	static $desc = null;
392
-	if (is_null($desc)) {
393
-		$desc = ($token = _request('var_previewtoken')) ? verifier_token_previsu($token) : false;
394
-	}
395
-	return $desc;
391
+    static $desc = null;
392
+    if (is_null($desc)) {
393
+        $desc = ($token = _request('var_previewtoken')) ? verifier_token_previsu($token) : false;
394
+    }
395
+    return $desc;
396 396
 }
Please login to merge, or discard this patch.
ecrire/inc/commencer_page.php 1 patch
Indentation   +56 added lines, -56 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,25 +42,25 @@  discard block
 block discarded – undo
42 42
  * @return string Code HTML
43 43
  **/
44 44
 function inc_commencer_page_dist(
45
-	$titre = '',
46
-	$rubrique = 'accueil',
47
-	$sous_rubrique = 'accueil',
48
-	$id_rubrique = '',
49
-	$menu = true,
50
-	$minipres = false,
51
-	$alertes = true
45
+    $titre = '',
46
+    $rubrique = 'accueil',
47
+    $sous_rubrique = 'accueil',
48
+    $id_rubrique = '',
49
+    $menu = true,
50
+    $minipres = false,
51
+    $alertes = true
52 52
 ) {
53 53
 
54
-	include_spip('inc/headers');
54
+    include_spip('inc/headers');
55 55
 
56
-	http_no_cache();
56
+    http_no_cache();
57 57
 
58
-	return init_entete($titre, $id_rubrique, $minipres)
59
-	. init_body($rubrique, $sous_rubrique, $id_rubrique, $menu)
60
-	. "<div id='page'>"
61
-	. auteurs_recemment_connectes($GLOBALS['connect_id_auteur'])
62
-	. ($alertes ? alertes_auteur($GLOBALS['connect_id_auteur']) : '')
63
-	. '<div class="largeur">';
58
+    return init_entete($titre, $id_rubrique, $minipres)
59
+    . init_body($rubrique, $sous_rubrique, $id_rubrique, $menu)
60
+    . "<div id='page'>"
61
+    . auteurs_recemment_connectes($GLOBALS['connect_id_auteur'])
62
+    . ($alertes ? alertes_auteur($GLOBALS['connect_id_auteur']) : '')
63
+    . '<div class="largeur">';
64 64
 }
65 65
 
66 66
 /**
@@ -81,21 +81,21 @@  discard block
 block discarded – undo
81 81
  *     Entête du fichier HTML avec le DOCTYPE
82 82
  */
83 83
 function init_entete($titre = '', $dummy = 0, $minipres = false) {
84
-	include_spip('inc/texte');
85
-	if (!$nom_site_spip = textebrut(typo($GLOBALS['meta']['nom_site']))) {
86
-		$nom_site_spip = _T('info_mon_site_spip');
87
-	}
88
-
89
-	$titre = '['
90
-		. $nom_site_spip
91
-		. ']'
92
-		. ($titre ? ' ' . textebrut(typo($titre)) : '');
93
-
94
-	return _DOCTYPE_ECRIRE
95
-	. html_lang_attributes()
96
-	. "<head>\n"
97
-	. init_head($titre, $dummy, $minipres)
98
-	. "</head>\n";
84
+    include_spip('inc/texte');
85
+    if (!$nom_site_spip = textebrut(typo($GLOBALS['meta']['nom_site']))) {
86
+        $nom_site_spip = _T('info_mon_site_spip');
87
+    }
88
+
89
+    $titre = '['
90
+        . $nom_site_spip
91
+        . ']'
92
+        . ($titre ? ' ' . textebrut(typo($titre)) : '');
93
+
94
+    return _DOCTYPE_ECRIRE
95
+    . html_lang_attributes()
96
+    . "<head>\n"
97
+    . init_head($titre, $dummy, $minipres)
98
+    . "</head>\n";
99 99
 }
100 100
 
101 101
 /**
@@ -109,7 +109,7 @@  discard block
 block discarded – undo
109 109
  * @return string
110 110
  */
111 111
 function init_head($titre = '', $dummy = 0, $minipres = false) {
112
-	return recuperer_fond('prive/squelettes/head/dist', ['titre' => $titre, 'minipres' => $minipres ? ' ' : '']);
112
+    return recuperer_fond('prive/squelettes/head/dist', ['titre' => $titre, 'minipres' => $minipres ? ' ' : '']);
113 113
 }
114 114
 
115 115
 /**
@@ -131,20 +131,20 @@  discard block
 block discarded – undo
131 131
  */
132 132
 function init_body($rubrique = 'accueil', $sous_rubrique = 'accueil', $id_rubrique = '', $menu = true) {
133 133
 
134
-	$res = pipeline('body_prive', "<body class='"
135
-		. init_body_class() . ' ' . _request('exec') . "'"
136
-		. ($GLOBALS['spip_lang_rtl'] ? " dir='rtl'" : '')
137
-		. '>');
134
+    $res = pipeline('body_prive', "<body class='"
135
+        . init_body_class() . ' ' . _request('exec') . "'"
136
+        . ($GLOBALS['spip_lang_rtl'] ? " dir='rtl'" : '')
137
+        . '>');
138 138
 
139
-	if (!$menu) {
140
-		return $res;
141
-	}
139
+    if (!$menu) {
140
+        return $res;
141
+    }
142 142
 
143 143
 
144
-	$bandeau = charger_fonction('bandeau', 'inc');
144
+    $bandeau = charger_fonction('bandeau', 'inc');
145 145
 
146
-	return $res
147
-	. $bandeau();
146
+    return $res
147
+    . $bandeau();
148 148
 }
149 149
 
150 150
 /**
@@ -156,23 +156,23 @@  discard block
 block discarded – undo
156 156
  * @return string Classes CSS (séparées par des espaces)
157 157
  */
158 158
 function init_body_class() {
159
-	$display_modes = [
160
-		0 => 'icones_img_texte' // défaut.
161
-		/*init*/,
162
-		1 => 'icones_texte',
163
-		2 => 'icones_img_texte',
164
-		3 => 'icones_img'
165
-	];
159
+    $display_modes = [
160
+        0 => 'icones_img_texte' // défaut.
161
+        /*init*/,
162
+        1 => 'icones_texte',
163
+        2 => 'icones_img_texte',
164
+        3 => 'icones_img'
165
+    ];
166 166
 
167
-	$prefs = $GLOBALS['visiteur_session']['prefs'] ?? [];
167
+    $prefs = $GLOBALS['visiteur_session']['prefs'] ?? [];
168 168
 
169
-	$display_mode = $display_modes[(int) ($prefs['display'] ?? 0)] ?? $display_modes[0];
170
-	$spip_display_navigation = isset($prefs['display_navigation']) ? spip_sanitize_classname($prefs['display_navigation']) : 'navigation_avec_icones';
169
+    $display_mode = $display_modes[(int) ($prefs['display'] ?? 0)] ?? $display_modes[0];
170
+    $spip_display_navigation = isset($prefs['display_navigation']) ? spip_sanitize_classname($prefs['display_navigation']) : 'navigation_avec_icones';
171 171
 
172
-	$couleur = (int) ($prefs['couleur'] ?? 2);
172
+    $couleur = (int) ($prefs['couleur'] ?? 2);
173 173
 
174
-	$classes = "spip-theme-colors-$couleur $spip_display_navigation $display_mode";
175
-	return spip_sanitize_classname($classes);
174
+    $classes = "spip-theme-colors-$couleur $spip_display_navigation $display_mode";
175
+    return spip_sanitize_classname($classes);
176 176
 }
177 177
 
178 178
 
@@ -183,5 +183,5 @@  discard block
 block discarded – undo
183 183
  * @return string
184 184
  */
185 185
 function auteurs_recemment_connectes($id_auteur) {
186
-	return recuperer_fond('prive/objets/liste/auteurs_enligne');
186
+    return recuperer_fond('prive/objets/liste/auteurs_enligne');
187 187
 }
Please login to merge, or discard this patch.
ecrire/inc/livrer_fichier.php 1 patch
Indentation   +130 added lines, -130 removed lines patch added patch discarded remove patch
@@ -15,7 +15,7 @@  discard block
 block discarded – undo
15 15
  * @package SPIP\Core\Fichier
16 16
  **/
17 17
 if (!defined('_ECRIRE_INC_VERSION')) {
18
-	return;
18
+    return;
19 19
 }
20 20
 
21 21
 /**
@@ -35,28 +35,28 @@  discard block
 block discarded – undo
35 35
  */
36 36
 function spip_livrer_fichier($fichier, $content_type = 'application/octet-stream', $options = []) {
37 37
 
38
-	$defaut = [
39
-		'attachment' => false,
40
-		'expires' => 3600,
41
-		'range' => null,
42
-	];
43
-	$options = array_merge($defaut, $options);
44
-	if (is_numeric($options['expires']) && $options['expires'] > 0) {
45
-		$options['expires'] = gmdate('D, d M Y H:i:s', time() + $options['expires']) . ' GMT';
46
-	}
47
-
48
-	if (is_null($options) && isset($_SERVER['HTTP_RANGE'])) {
49
-		$options['range'] = $_SERVER['HTTP_RANGE'];
50
-	}
51
-
52
-	spip_livrer_fichier_entetes($fichier, $content_type, ($options['attachment'] && !$options['range']) ? $options['attachment'] : false, $options['expires']);
53
-
54
-	if (!is_null($options['range'])) {
55
-		spip_livrer_fichier_partie($fichier, $options['range']);
56
-	}
57
-	else {
58
-		spip_livrer_fichier_entier($fichier);
59
-	}
38
+    $defaut = [
39
+        'attachment' => false,
40
+        'expires' => 3600,
41
+        'range' => null,
42
+    ];
43
+    $options = array_merge($defaut, $options);
44
+    if (is_numeric($options['expires']) && $options['expires'] > 0) {
45
+        $options['expires'] = gmdate('D, d M Y H:i:s', time() + $options['expires']) . ' GMT';
46
+    }
47
+
48
+    if (is_null($options) && isset($_SERVER['HTTP_RANGE'])) {
49
+        $options['range'] = $_SERVER['HTTP_RANGE'];
50
+    }
51
+
52
+    spip_livrer_fichier_entetes($fichier, $content_type, ($options['attachment'] && !$options['range']) ? $options['attachment'] : false, $options['expires']);
53
+
54
+    if (!is_null($options['range'])) {
55
+        spip_livrer_fichier_partie($fichier, $options['range']);
56
+    }
57
+    else {
58
+        spip_livrer_fichier_entier($fichier);
59
+    }
60 60
 }
61 61
 
62 62
 /**
@@ -69,33 +69,33 @@  discard block
 block discarded – undo
69 69
  * @param int|string $expires
70 70
  */
71 71
 function spip_livrer_fichier_entetes($fichier, $content_type = 'application/octet-stream', $attachment = false, $expires = 0) {
72
-	// toujours envoyer un content type, meme vide !
73
-	header('Accept-Ranges: bytes');
74
-	header('Content-Type: ' . $content_type);
75
-
76
-	if (($fs = stat($fichier)) && !empty($fs['size']) && !empty($fs['mtime'])) {
77
-		header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $fs['mtime']) . ' GMT');
78
-		header(sprintf('Etag: "%x-%x"', $fs['size'], str_pad($fs['mtime'], 16, '0')));
79
-	}
80
-
81
-	if ($attachment) {
82
-		$f = (is_string($attachment) ? $attachment : basename($fichier));
83
-		// ce content-type est necessaire pour eviter des corruptions de zip dans ie6
84
-		header('Content-Type: application/octet-stream');
85
-
86
-		header("Content-Disposition: attachment; filename=\"$f\";");
87
-		header('Content-Transfer-Encoding: binary');
88
-
89
-		// fix for IE caching or PHP bug issue
90
-		header('Expires: 0'); // set expiration time
91
-		header('Pragma: public');
92
-		header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
93
-	}
94
-	else {
95
-		$f = (is_string($attachment) ? $attachment : basename($fichier));
96
-		header("Content-Disposition: inline; filename=\"$f\";");
97
-		header('Expires: ' . $expires); // set expiration time
98
-	}
72
+    // toujours envoyer un content type, meme vide !
73
+    header('Accept-Ranges: bytes');
74
+    header('Content-Type: ' . $content_type);
75
+
76
+    if (($fs = stat($fichier)) && !empty($fs['size']) && !empty($fs['mtime'])) {
77
+        header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $fs['mtime']) . ' GMT');
78
+        header(sprintf('Etag: "%x-%x"', $fs['size'], str_pad($fs['mtime'], 16, '0')));
79
+    }
80
+
81
+    if ($attachment) {
82
+        $f = (is_string($attachment) ? $attachment : basename($fichier));
83
+        // ce content-type est necessaire pour eviter des corruptions de zip dans ie6
84
+        header('Content-Type: application/octet-stream');
85
+
86
+        header("Content-Disposition: attachment; filename=\"$f\";");
87
+        header('Content-Transfer-Encoding: binary');
88
+
89
+        // fix for IE caching or PHP bug issue
90
+        header('Expires: 0'); // set expiration time
91
+        header('Pragma: public');
92
+        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
93
+    }
94
+    else {
95
+        $f = (is_string($attachment) ? $attachment : basename($fichier));
96
+        header("Content-Disposition: inline; filename=\"$f\";");
97
+        header('Expires: ' . $expires); // set expiration time
98
+    }
99 99
 }
100 100
 
101 101
 /**
@@ -103,20 +103,20 @@  discard block
 block discarded – undo
103 103
  * @param string $fichier
104 104
  */
105 105
 function spip_livrer_fichier_entier($fichier) {
106
-	if (!file_exists($fichier)) {
107
-		throw new \Exception(sprintf('File not found: %s', $fichier));
108
-	}
106
+    if (!file_exists($fichier)) {
107
+        throw new \Exception(sprintf('File not found: %s', $fichier));
108
+    }
109 109
 
110
-	if (!is_readable($fichier)) {
111
-		throw new \Exception(sprintf('File not readable: %s', $fichier));
112
-	}
110
+    if (!is_readable($fichier)) {
111
+        throw new \Exception(sprintf('File not readable: %s', $fichier));
112
+    }
113 113
 
114
-	if ($size = filesize($fichier)) {
115
-		header(sprintf('Content-Length: %d', $size));
116
-	}
114
+    if ($size = filesize($fichier)) {
115
+        header(sprintf('Content-Length: %d', $size));
116
+    }
117 117
 
118
-	readfile($fichier);
119
-	exit();
118
+    readfile($fichier);
119
+    exit();
120 120
 }
121 121
 
122 122
 /**
@@ -129,98 +129,98 @@  discard block
 block discarded – undo
129 129
  * @throws Exception
130 130
  */
131 131
 function spip_livrer_fichier_partie($fichier, $range = null) {
132
-	if (!file_exists($fichier)) {
133
-		throw new \Exception(sprintf('File not found: %s', $fichier));
134
-	}
132
+    if (!file_exists($fichier)) {
133
+        throw new \Exception(sprintf('File not found: %s', $fichier));
134
+    }
135 135
 
136
-	if (!is_readable($fichier)) {
137
-		throw new \Exception(sprintf('File not readable: %s', $fichier));
138
-	}
136
+    if (!is_readable($fichier)) {
137
+        throw new \Exception(sprintf('File not readable: %s', $fichier));
138
+    }
139 139
 
140 140
 
141
-	// Par defaut on envoie tout
142
-	$byteOffset = 0;
143
-	$byteLength = $fileSize = filesize($fichier);
141
+    // Par defaut on envoie tout
142
+    $byteOffset = 0;
143
+    $byteLength = $fileSize = filesize($fichier);
144 144
 
145 145
 
146
-	// Parse Content-Range header for byte offsets, looks like "bytes=11525-" OR "bytes=11525-12451"
147
-	if ($range && preg_match('%bytes=(\d+)-(\d+)?%i', $range, $match)) {
148
-		### Offset signifies where we should begin to read the file
149
-		$byteOffset = (int)$match[1];
146
+    // Parse Content-Range header for byte offsets, looks like "bytes=11525-" OR "bytes=11525-12451"
147
+    if ($range && preg_match('%bytes=(\d+)-(\d+)?%i', $range, $match)) {
148
+        ### Offset signifies where we should begin to read the file
149
+        $byteOffset = (int)$match[1];
150 150
 
151 151
 
152
-		### Length is for how long we should read the file according to the browser, and can never go beyond the file size
153
-		if (isset($match[2])) {
154
-			$finishBytes = (int)$match[2];
155
-			$byteLength = $finishBytes + 1;
156
-		} else {
157
-			$finishBytes = $fileSize - 1;
158
-		}
152
+        ### Length is for how long we should read the file according to the browser, and can never go beyond the file size
153
+        if (isset($match[2])) {
154
+            $finishBytes = (int)$match[2];
155
+            $byteLength = $finishBytes + 1;
156
+        } else {
157
+            $finishBytes = $fileSize - 1;
158
+        }
159 159
 
160
-		$cr_header = sprintf('Content-Range: bytes %d-%d/%d', $byteOffset, $finishBytes, $fileSize);
161
-	}
162
-	else {
163
-		// si pas de range valide, on delegue a la methode d'envoi complet
164
-		spip_livrer_fichier_entier($fichier);
165
-		// redondant, mais facilite la comprehension du code
166
-		exit();
167
-	}
160
+        $cr_header = sprintf('Content-Range: bytes %d-%d/%d', $byteOffset, $finishBytes, $fileSize);
161
+    }
162
+    else {
163
+        // si pas de range valide, on delegue a la methode d'envoi complet
164
+        spip_livrer_fichier_entier($fichier);
165
+        // redondant, mais facilite la comprehension du code
166
+        exit();
167
+    }
168 168
 
169
-	// Remove headers that might unnecessarily clutter up the output
170
-	header_remove('Cache-Control');
171
-	header_remove('Pragma');
169
+    // Remove headers that might unnecessarily clutter up the output
170
+    header_remove('Cache-Control');
171
+    header_remove('Pragma');
172 172
 
173
-	// partial content
174
-	header('HTTP/1.1 206 Partial content');
175
-	header($cr_header);  ### Decrease by 1 on byte-length since this definition is zero-based index of bytes being sent
173
+    // partial content
174
+    header('HTTP/1.1 206 Partial content');
175
+    header($cr_header);  ### Decrease by 1 on byte-length since this definition is zero-based index of bytes being sent
176 176
 
177 177
 
178
-	$byteRange = $byteLength - $byteOffset;
178
+    $byteRange = $byteLength - $byteOffset;
179 179
 
180
-	header(sprintf('Content-Length: %d', $byteRange));
180
+    header(sprintf('Content-Length: %d', $byteRange));
181 181
 
182
-	// Variable containing the buffer
183
-	$buffer = '';
184
-	// Just a reasonable buffer size
185
-	$bufferSize = 512 * 16;
186
-	// Contains how much is left to read of the byteRange
187
-	$bytePool = $byteRange;
182
+    // Variable containing the buffer
183
+    $buffer = '';
184
+    // Just a reasonable buffer size
185
+    $bufferSize = 512 * 16;
186
+    // Contains how much is left to read of the byteRange
187
+    $bytePool = $byteRange;
188 188
 
189
-	if (!$handle = fopen($fichier, 'r')) {
190
-		throw new \Exception(sprintf('Could not get handle for file %s', $fichier));
191
-	}
189
+    if (!$handle = fopen($fichier, 'r')) {
190
+        throw new \Exception(sprintf('Could not get handle for file %s', $fichier));
191
+    }
192 192
 
193
-	if (fseek($handle, $byteOffset, SEEK_SET) == -1) {
194
-		throw new \Exception(sprintf('Could not seek to byte offset %d', $byteOffset));
195
-	}
193
+    if (fseek($handle, $byteOffset, SEEK_SET) == -1) {
194
+        throw new \Exception(sprintf('Could not seek to byte offset %d', $byteOffset));
195
+    }
196 196
 
197 197
 
198
-	while ($bytePool > 0) {
199
-		// How many bytes we request on this iteration
200
-		$chunkSizeRequested = min($bufferSize, $bytePool);
198
+    while ($bytePool > 0) {
199
+        // How many bytes we request on this iteration
200
+        $chunkSizeRequested = min($bufferSize, $bytePool);
201 201
 
202
-		// Try readin $chunkSizeRequested bytes from $handle and put data in $buffer
203
-		$buffer = fread($handle, $chunkSizeRequested);
202
+        // Try readin $chunkSizeRequested bytes from $handle and put data in $buffer
203
+        $buffer = fread($handle, $chunkSizeRequested);
204 204
 
205
-		// Store how many bytes were actually read
206
-		$chunkSizeActual = strlen($buffer);
205
+        // Store how many bytes were actually read
206
+        $chunkSizeActual = strlen($buffer);
207 207
 
208
-		// If we didn't get any bytes that means something unexpected has happened since $bytePool should be zero already
209
-		if ($chunkSizeActual == 0) {
210
-			// For production servers this should go in your php error log, since it will break the output
211
-			trigger_error('Chunksize became 0', E_USER_WARNING);
212
-			break;
213
-		}
208
+        // If we didn't get any bytes that means something unexpected has happened since $bytePool should be zero already
209
+        if ($chunkSizeActual == 0) {
210
+            // For production servers this should go in your php error log, since it will break the output
211
+            trigger_error('Chunksize became 0', E_USER_WARNING);
212
+            break;
213
+        }
214 214
 
215
-		// Decrease byte pool with amount of bytes that were read during this iteration
216
-		$bytePool -= $chunkSizeActual;
215
+        // Decrease byte pool with amount of bytes that were read during this iteration
216
+        $bytePool -= $chunkSizeActual;
217 217
 
218
-		// Write the buffer to output
219
-		print $buffer;
218
+        // Write the buffer to output
219
+        print $buffer;
220 220
 
221
-		// Try to output the data to the client immediately
222
-		flush();
223
-	}
221
+        // Try to output the data to the client immediately
222
+        flush();
223
+    }
224 224
 
225
-	exit();
225
+    exit();
226 226
 }
Please login to merge, or discard this patch.