Completed
Push — master ( 00feac...30a191 )
by cam
01:28
created
ecrire/public/references.php 2 patches
Indentation   +521 added lines, -521 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Core\Compilateur\References
17 17
  **/
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 /**
@@ -41,14 +41,14 @@  discard block
 block discarded – undo
41 41
  *     - '' si une référence explicite incorrecte est envoyée
42 42
  */
43 43
 function index_boucle($p) {
44
-	if (strlen($p->nom_boucle)) {
45
-		// retourne l’index explicite demandé s’il existe
46
-		if (!empty($p->boucles[$p->nom_boucle])) {
47
-			return $p->nom_boucle;
48
-		}
49
-		return '';
50
-	}
51
-	return $p->id_boucle;
44
+    if (strlen($p->nom_boucle)) {
45
+        // retourne l’index explicite demandé s’il existe
46
+        if (!empty($p->boucles[$p->nom_boucle])) {
47
+            return $p->nom_boucle;
48
+        }
49
+        return '';
50
+    }
51
+    return $p->id_boucle;
52 52
 }
53 53
 
54 54
 
@@ -71,17 +71,17 @@  discard block
 block discarded – undo
71 71
  *     - '' si une référence explicite incorrecte est envoyée
72 72
  */
73 73
 function index_boucle_mere($p) {
74
-	if (strlen($p->nom_boucle)) {
75
-		// retourne l’index explicite demandé s’il existe
76
-		if (!empty($p->boucles[$p->nom_boucle])) {
77
-			return $p->nom_boucle;
78
-		}
79
-		return '';
80
-	}
81
-	if (!empty($p->descr['id_mere'])) {
82
-		return $p->descr['id_mere'];
83
-	}
84
-	return '';
74
+    if (strlen($p->nom_boucle)) {
75
+        // retourne l’index explicite demandé s’il existe
76
+        if (!empty($p->boucles[$p->nom_boucle])) {
77
+            return $p->nom_boucle;
78
+        }
79
+        return '';
80
+    }
81
+    if (!empty($p->descr['id_mere'])) {
82
+        return $p->descr['id_mere'];
83
+    }
84
+    return '';
85 85
 }
86 86
 
87 87
 /**
@@ -115,74 +115,74 @@  discard block
 block discarded – undo
115 115
  *     Code PHP pour obtenir le champ SQL
116 116
  */
117 117
 function index_pile(
118
-	$idb,
119
-	$nom_champ,
120
-	&$boucles,
121
-	$explicite = '',
122
-	$defaut = null,
123
-	$remonte_pile = true,
124
-	$select = true
118
+    $idb,
119
+    $nom_champ,
120
+    &$boucles,
121
+    $explicite = '',
122
+    $defaut = null,
123
+    $remonte_pile = true,
124
+    $select = true
125 125
 ) {
126
-	if (!is_string($defaut)) {
127
-		$defaut = '@$Pile[0][\'' . strtolower($nom_champ) . '\']';
128
-	}
129
-
130
-	$idb_origine = $idb;
131
-	$nom_champ_origine = $nom_champ;
132
-
133
-	$i = 0;
134
-	if (strlen($explicite)) {
135
-		// Recherche d'un champ dans un etage superieur
136
-		while (($idb !== $explicite) && ($idb !== '')) {
137
-			#	spip_log("Cherchexpl: $nom_champ '$explicite' '$idb' '$i'");
138
-			$i++;
139
-			$idb = $boucles[$idb]->id_parent;
140
-		}
141
-	}
142
-
143
-	#	spip_log("Cherche: $nom_champ a partir de '$idb'");
144
-	$nom_champ = strtolower($nom_champ);
145
-	$conditionnel = [];
146
-	// attention: entre la boucle nommee 0, "" et le tableau vide,
147
-	// il y a incoherences qu'il vaut mieux eviter
148
-	while (isset($boucles[$idb])) {
149
-		$joker = true;
150
-		// modifie $joker si tous les champs sont autorisés.
151
-		// $t = le select pour le champ, si on l'a trouvé (ou si joker)
152
-		// $c = le nom du champ demandé
153
-		list($t, $c) = index_tables_en_pile($idb, $nom_champ, $boucles, $joker);
154
-		if ($t) {
155
-			if ($select and !in_array($t, $boucles[$idb]->select)) {
156
-				$boucles[$idb]->select[] = $t;
157
-			}
158
-			// renseigner la boucle source de ce champ pour les traitements
159
-			$boucles[$idb_origine]->index_champ[$nom_champ_origine] = $idb;
160
-			$champ = '$Pile[$SP' . ($i ? "-$i" : '') . '][\'' . $c . '\']';
161
-			if (!$joker) {
162
-				return index_compose($conditionnel, $champ);
163
-			}
164
-
165
-			// tant que l'on trouve des tables avec joker, on continue
166
-			// avec la boucle parente et on conditionne à l'exécution
167
-			// la présence du champ. Si le champ existe à l'exécution
168
-			// dans une boucle, il est pris, sinon on le cherche dans le parent...
169
-			$conditionnel[] = "isset($champ)?$champ";
170
-		}
171
-
172
-		if ($remonte_pile) {
173
-			#	spip_log("On remonte vers $i");
174
-			// Sinon on remonte d'un cran
175
-			$idb = $boucles[$idb]->id_parent;
176
-			$i++;
177
-		} else {
178
-			$idb = null;
179
-		}
180
-	}
181
-
182
-	#	spip_log("Pas vu $nom_champ");
183
-	// esperons qu'il y sera
184
-	// ou qu'on a fourni une valeur par "defaut" plus pertinent
185
-	return index_compose($conditionnel, $defaut);
126
+    if (!is_string($defaut)) {
127
+        $defaut = '@$Pile[0][\'' . strtolower($nom_champ) . '\']';
128
+    }
129
+
130
+    $idb_origine = $idb;
131
+    $nom_champ_origine = $nom_champ;
132
+
133
+    $i = 0;
134
+    if (strlen($explicite)) {
135
+        // Recherche d'un champ dans un etage superieur
136
+        while (($idb !== $explicite) && ($idb !== '')) {
137
+            #	spip_log("Cherchexpl: $nom_champ '$explicite' '$idb' '$i'");
138
+            $i++;
139
+            $idb = $boucles[$idb]->id_parent;
140
+        }
141
+    }
142
+
143
+    #	spip_log("Cherche: $nom_champ a partir de '$idb'");
144
+    $nom_champ = strtolower($nom_champ);
145
+    $conditionnel = [];
146
+    // attention: entre la boucle nommee 0, "" et le tableau vide,
147
+    // il y a incoherences qu'il vaut mieux eviter
148
+    while (isset($boucles[$idb])) {
149
+        $joker = true;
150
+        // modifie $joker si tous les champs sont autorisés.
151
+        // $t = le select pour le champ, si on l'a trouvé (ou si joker)
152
+        // $c = le nom du champ demandé
153
+        list($t, $c) = index_tables_en_pile($idb, $nom_champ, $boucles, $joker);
154
+        if ($t) {
155
+            if ($select and !in_array($t, $boucles[$idb]->select)) {
156
+                $boucles[$idb]->select[] = $t;
157
+            }
158
+            // renseigner la boucle source de ce champ pour les traitements
159
+            $boucles[$idb_origine]->index_champ[$nom_champ_origine] = $idb;
160
+            $champ = '$Pile[$SP' . ($i ? "-$i" : '') . '][\'' . $c . '\']';
161
+            if (!$joker) {
162
+                return index_compose($conditionnel, $champ);
163
+            }
164
+
165
+            // tant que l'on trouve des tables avec joker, on continue
166
+            // avec la boucle parente et on conditionne à l'exécution
167
+            // la présence du champ. Si le champ existe à l'exécution
168
+            // dans une boucle, il est pris, sinon on le cherche dans le parent...
169
+            $conditionnel[] = "isset($champ)?$champ";
170
+        }
171
+
172
+        if ($remonte_pile) {
173
+            #	spip_log("On remonte vers $i");
174
+            // Sinon on remonte d'un cran
175
+            $idb = $boucles[$idb]->id_parent;
176
+            $i++;
177
+        } else {
178
+            $idb = null;
179
+        }
180
+    }
181
+
182
+    #	spip_log("Pas vu $nom_champ");
183
+    // esperons qu'il y sera
184
+    // ou qu'on a fourni une valeur par "defaut" plus pertinent
185
+    return index_compose($conditionnel, $defaut);
186 186
 }
187 187
 
188 188
 /**
@@ -196,12 +196,12 @@  discard block
 block discarded – undo
196 196
  * @return string              Code PHP complet de recherche d'un champ
197 197
  */
198 198
 function index_compose($conditionnel, $defaut) {
199
-	while ($c = array_pop($conditionnel)) {
200
-		// si on passe defaut = '', ne pas générer d'erreur de compilation.
201
-		$defaut = "($c:(" . ($defaut ? $defaut : "''") . '))';
202
-	}
199
+    while ($c = array_pop($conditionnel)) {
200
+        // si on passe defaut = '', ne pas générer d'erreur de compilation.
201
+        $defaut = "($c:(" . ($defaut ? $defaut : "''") . '))';
202
+    }
203 203
 
204
-	return $defaut;
204
+    return $defaut;
205 205
 }
206 206
 
207 207
 /**
@@ -237,77 +237,77 @@  discard block
 block discarded – undo
237 237
  **/
238 238
 function index_tables_en_pile($idb, $nom_champ, &$boucles, &$joker) {
239 239
 
240
-	$r = $boucles[$idb]->type_requete;
241
-	// boucle recursive, c'est foutu...
242
-	if ($r == TYPE_RECURSIF) {
243
-		return [];
244
-	}
245
-	if (!$r) {
246
-		$joker = false; // indiquer a l'appelant
247
-		# continuer pour chercher l'erreur suivante
248
-		return ["'#" . $r . ':' . $nom_champ . "'", ''];
249
-	}
250
-
251
-	$desc = $boucles[$idb]->show;
252
-	// le nom du champ est il une exception de la table ? un alias ?
253
-	$excep = isset($GLOBALS['exceptions_des_tables'][$r]) ? $GLOBALS['exceptions_des_tables'][$r] : '';
254
-	if ($excep) {
255
-		$excep = isset($excep[$nom_champ]) ? $excep[$nom_champ] : '';
256
-	}
257
-	if ($excep) {
258
-		$joker = false; // indiquer a l'appelant
259
-		return index_exception($boucles[$idb], $desc, $nom_champ, $excep);
260
-	} // pas d'alias. Le champ existe t'il ?
261
-	else {
262
-		// le champ est réellement présent, on le prend.
263
-		if (isset($desc['field'][$nom_champ])) {
264
-			$t = $boucles[$idb]->id_table;
265
-			$joker = false; // indiquer a l'appelant
266
-			return ["$t.$nom_champ", $nom_champ];
267
-		}
268
-		// Tous les champs sont-ils acceptés ?
269
-		// Si oui, on retourne le champ, et on lève le flag joker
270
-		// C'est le cas des itérateurs DATA qui acceptent tout
271
-		// et testent la présence du champ à l'exécution et non à la compilation
272
-		// car ils ne connaissent pas ici leurs contenus.
273
-		elseif (
240
+    $r = $boucles[$idb]->type_requete;
241
+    // boucle recursive, c'est foutu...
242
+    if ($r == TYPE_RECURSIF) {
243
+        return [];
244
+    }
245
+    if (!$r) {
246
+        $joker = false; // indiquer a l'appelant
247
+        # continuer pour chercher l'erreur suivante
248
+        return ["'#" . $r . ':' . $nom_champ . "'", ''];
249
+    }
250
+
251
+    $desc = $boucles[$idb]->show;
252
+    // le nom du champ est il une exception de la table ? un alias ?
253
+    $excep = isset($GLOBALS['exceptions_des_tables'][$r]) ? $GLOBALS['exceptions_des_tables'][$r] : '';
254
+    if ($excep) {
255
+        $excep = isset($excep[$nom_champ]) ? $excep[$nom_champ] : '';
256
+    }
257
+    if ($excep) {
258
+        $joker = false; // indiquer a l'appelant
259
+        return index_exception($boucles[$idb], $desc, $nom_champ, $excep);
260
+    } // pas d'alias. Le champ existe t'il ?
261
+    else {
262
+        // le champ est réellement présent, on le prend.
263
+        if (isset($desc['field'][$nom_champ])) {
264
+            $t = $boucles[$idb]->id_table;
265
+            $joker = false; // indiquer a l'appelant
266
+            return ["$t.$nom_champ", $nom_champ];
267
+        }
268
+        // Tous les champs sont-ils acceptés ?
269
+        // Si oui, on retourne le champ, et on lève le flag joker
270
+        // C'est le cas des itérateurs DATA qui acceptent tout
271
+        // et testent la présence du champ à l'exécution et non à la compilation
272
+        // car ils ne connaissent pas ici leurs contenus.
273
+        elseif (
274 274
 /*$joker AND */
275
-			isset($desc['field']['*'])
276
-		) {
277
-			$joker = true; // indiquer a l'appelant
278
-			return [$nom_champ, $nom_champ];
279
-		}
280
-		// pas d'alias, pas de champ, pas de joker...
281
-		// tenter via une jointure...
282
-		else {
283
-			$joker = false; // indiquer a l'appelant
284
-			// regarder si le champ est deja dans une jointure existante
285
-			// sinon, si il y a des joitures explicites, la construire
286
-			if (!$t = trouver_champ_exterieur($nom_champ, $boucles[$idb]->from, $boucles[$idb])) {
287
-				if ($boucles[$idb]->jointures_explicites) {
288
-					// [todo] Ne pas lancer que lorsque il y a des jointures explicites !!!!
289
-					// fonctionnel, il suffit d'utiliser $boucles[$idb]->jointures au lieu de jointures_explicites
290
-					// mais est-ce ce qu'on veut ?
291
-					$jointures = preg_split('/\s+/', $boucles[$idb]->jointures_explicites);
292
-					if ($cle = trouver_jointure_champ($nom_champ, $boucles[$idb], $jointures)) {
293
-						$t = trouver_champ_exterieur($nom_champ, $boucles[$idb]->from, $boucles[$idb]);
294
-					}
295
-				}
296
-			}
297
-			if ($t) {
298
-				// si on a trouvé une jointure possible, on fait comme
299
-				// si c'était une exception pour le champ demandé
300
-				return index_exception(
301
-					$boucles[$idb],
302
-					$desc,
303
-					$nom_champ,
304
-					[$t[1]['id_table'], reset($t[2])]
305
-				);
306
-			}
307
-
308
-			return ['', ''];
309
-		}
310
-	}
275
+            isset($desc['field']['*'])
276
+        ) {
277
+            $joker = true; // indiquer a l'appelant
278
+            return [$nom_champ, $nom_champ];
279
+        }
280
+        // pas d'alias, pas de champ, pas de joker...
281
+        // tenter via une jointure...
282
+        else {
283
+            $joker = false; // indiquer a l'appelant
284
+            // regarder si le champ est deja dans une jointure existante
285
+            // sinon, si il y a des joitures explicites, la construire
286
+            if (!$t = trouver_champ_exterieur($nom_champ, $boucles[$idb]->from, $boucles[$idb])) {
287
+                if ($boucles[$idb]->jointures_explicites) {
288
+                    // [todo] Ne pas lancer que lorsque il y a des jointures explicites !!!!
289
+                    // fonctionnel, il suffit d'utiliser $boucles[$idb]->jointures au lieu de jointures_explicites
290
+                    // mais est-ce ce qu'on veut ?
291
+                    $jointures = preg_split('/\s+/', $boucles[$idb]->jointures_explicites);
292
+                    if ($cle = trouver_jointure_champ($nom_champ, $boucles[$idb], $jointures)) {
293
+                        $t = trouver_champ_exterieur($nom_champ, $boucles[$idb]->from, $boucles[$idb]);
294
+                    }
295
+                }
296
+            }
297
+            if ($t) {
298
+                // si on a trouvé une jointure possible, on fait comme
299
+                // si c'était une exception pour le champ demandé
300
+                return index_exception(
301
+                    $boucles[$idb],
302
+                    $desc,
303
+                    $nom_champ,
304
+                    [$t[1]['id_table'], reset($t[2])]
305
+                );
306
+            }
307
+
308
+            return ['', ''];
309
+        }
310
+    }
311 311
 }
312 312
 
313 313
 
@@ -335,52 +335,52 @@  discard block
 block discarded – undo
335 335
  *     est une expression pour le SELECT de la boucle du style "mots.titre AS titre_mot"
336 336
  **/
337 337
 function index_exception(&$boucle, $desc, $nom_champ, $excep) {
338
-	static $trouver_table;
339
-	if (!$trouver_table) {
340
-		$trouver_table = charger_fonction('trouver_table', 'base');
341
-	}
342
-
343
-	if (is_array($excep)) {
344
-		// permettre aux plugins de gerer eux meme des jointures derogatoire ingerables
345
-		$t = null;
346
-		if (count($excep) == 3) {
347
-			$index_exception_derogatoire = array_pop($excep);
348
-			$t = $index_exception_derogatoire($boucle, $desc, $nom_champ, $excep);
349
-		}
350
-		if ($t == null) {
351
-			list($e, $x) = $excep;  #PHP4 affecte de gauche a droite
352
-			$excep = $x;    #PHP5 de droite a gauche !
353
-			$j = $trouver_table($e, $boucle->sql_serveur);
354
-			if (!$j) {
355
-				return ['', ''];
356
-			}
357
-			$e = $j['table'];
358
-			if (!$t = array_search($e, $boucle->from)) {
359
-				$k = $j['key']['PRIMARY KEY'];
360
-				if (strpos($k, ',')) {
361
-					$l = (preg_split('/\s*,\s*/', $k));
362
-					$k = $desc['key']['PRIMARY KEY'];
363
-					if (!in_array($k, $l)) {
364
-						spip_log("jointure impossible $e " . join(',', $l));
365
-
366
-						return ['', ''];
367
-					}
368
-				}
369
-				$k = [$boucle->id_table, [$e], $k];
370
-				fabrique_jointures($boucle, [$k]);
371
-				$t = array_search($e, $boucle->from);
372
-			}
373
-		}
374
-	} else {
375
-		$t = $boucle->id_table;
376
-	}
377
-	// demander a SQL de gerer le synonyme
378
-	// ca permet que excep soit dynamique (Cedric, 2/3/06)
379
-	if ($excep != $nom_champ) {
380
-		$excep .= ' AS ' . $nom_champ;
381
-	}
382
-
383
-	return ["$t.$excep", $nom_champ];
338
+    static $trouver_table;
339
+    if (!$trouver_table) {
340
+        $trouver_table = charger_fonction('trouver_table', 'base');
341
+    }
342
+
343
+    if (is_array($excep)) {
344
+        // permettre aux plugins de gerer eux meme des jointures derogatoire ingerables
345
+        $t = null;
346
+        if (count($excep) == 3) {
347
+            $index_exception_derogatoire = array_pop($excep);
348
+            $t = $index_exception_derogatoire($boucle, $desc, $nom_champ, $excep);
349
+        }
350
+        if ($t == null) {
351
+            list($e, $x) = $excep;  #PHP4 affecte de gauche a droite
352
+            $excep = $x;    #PHP5 de droite a gauche !
353
+            $j = $trouver_table($e, $boucle->sql_serveur);
354
+            if (!$j) {
355
+                return ['', ''];
356
+            }
357
+            $e = $j['table'];
358
+            if (!$t = array_search($e, $boucle->from)) {
359
+                $k = $j['key']['PRIMARY KEY'];
360
+                if (strpos($k, ',')) {
361
+                    $l = (preg_split('/\s*,\s*/', $k));
362
+                    $k = $desc['key']['PRIMARY KEY'];
363
+                    if (!in_array($k, $l)) {
364
+                        spip_log("jointure impossible $e " . join(',', $l));
365
+
366
+                        return ['', ''];
367
+                    }
368
+                }
369
+                $k = [$boucle->id_table, [$e], $k];
370
+                fabrique_jointures($boucle, [$k]);
371
+                $t = array_search($e, $boucle->from);
372
+            }
373
+        }
374
+    } else {
375
+        $t = $boucle->id_table;
376
+    }
377
+    // demander a SQL de gerer le synonyme
378
+    // ca permet que excep soit dynamique (Cedric, 2/3/06)
379
+    if ($excep != $nom_champ) {
380
+        $excep .= ' AS ' . $nom_champ;
381
+    }
382
+
383
+    return ["$t.$excep", $nom_champ];
384 384
 }
385 385
 
386 386
 /**
@@ -405,7 +405,7 @@  discard block
 block discarded – undo
405 405
  *     Code PHP pour retrouver le champ
406 406
  */
407 407
 function champ_sql($champ, $p, $defaut = null, $remonte_pile = true) {
408
-	return index_pile($p->id_boucle, $champ, $p->boucles, $p->nom_boucle, $defaut, $remonte_pile);
408
+    return index_pile($p->id_boucle, $champ, $p->boucles, $p->nom_boucle, $defaut, $remonte_pile);
409 409
 }
410 410
 
411 411
 
@@ -425,9 +425,9 @@  discard block
 block discarded – undo
425 425
  *     Code PHP pour d'exécution de la balise et de ses filtres
426 426
  **/
427 427
 function calculer_champ($p) {
428
-	$p = calculer_balise($p->nom_champ, $p);
428
+    $p = calculer_balise($p->nom_champ, $p);
429 429
 
430
-	return applique_filtres($p);
430
+    return applique_filtres($p);
431 431
 }
432 432
 
433 433
 
@@ -464,26 +464,26 @@  discard block
 block discarded – undo
464 464
  **/
465 465
 function calculer_balise($nom, $p) {
466 466
 
467
-	// S'agit-t-il d'une balise_XXXX[_dist]() ?
468
-	if ($f = charger_fonction($nom, 'balise', true)) {
469
-		$p->balise_calculee = true;
470
-		$res = $f($p);
471
-		if ($res !== null and is_object($res)) {
472
-			return $res;
473
-		}
474
-	}
475
-
476
-	// Certaines des balises comportant un _ sont generiques
477
-	if ($balise_generique = chercher_balise_generique($nom)) {
478
-		$res = $balise_generique['fonction_generique']($p);
479
-		if ($res !== null and is_object($res)) {
480
-			return $res;
481
-		}
482
-	}
483
-
484
-	$f = charger_fonction('DEFAUT', 'calculer_balise');
485
-
486
-	return $f($nom, $p);
467
+    // S'agit-t-il d'une balise_XXXX[_dist]() ?
468
+    if ($f = charger_fonction($nom, 'balise', true)) {
469
+        $p->balise_calculee = true;
470
+        $res = $f($p);
471
+        if ($res !== null and is_object($res)) {
472
+            return $res;
473
+        }
474
+    }
475
+
476
+    // Certaines des balises comportant un _ sont generiques
477
+    if ($balise_generique = chercher_balise_generique($nom)) {
478
+        $res = $balise_generique['fonction_generique']($p);
479
+        if ($res !== null and is_object($res)) {
480
+            return $res;
481
+        }
482
+    }
483
+
484
+    $f = charger_fonction('DEFAUT', 'calculer_balise');
485
+
486
+    return $f($nom, $p);
487 487
 }
488 488
 
489 489
 
@@ -511,37 +511,37 @@  discard block
 block discarded – undo
511 511
  **/
512 512
 function calculer_balise_DEFAUT_dist($nom, $p) {
513 513
 
514
-	// ca pourrait etre un champ SQL homonyme,
515
-	$p->code = index_pile($p->id_boucle, $nom, $p->boucles, $p->nom_boucle);
516
-
517
-	// compatibilite: depuis qu'on accepte #BALISE{ses_args} sans [(...)] autour
518
-	// il faut recracher {...} quand ce n'est finalement pas des args
519
-	if ($p->fonctions and (!$p->fonctions[0][0]) and $p->fonctions[0][1]) {
520
-		$code = addslashes($p->fonctions[0][1]);
521
-		$p->code .= " . '$code'";
522
-	}
523
-
524
-	// ne pas passer le filtre securite sur les id_xxx
525
-	if (strpos($nom, 'ID_') === 0) {
526
-		$p->interdire_scripts = false;
527
-	}
528
-
529
-	// Compatibilite ascendante avec les couleurs html (#FEFEFE) :
530
-	// SI le champ SQL n'est pas trouve
531
-	// ET si la balise a une forme de couleur
532
-	// ET s'il n'y a ni filtre ni etoile
533
-	// ALORS retourner la couleur.
534
-	// Ca permet si l'on veut vraiment de recuperer [(#ACCEDE*)]
535
-	if (
536
-		preg_match('/^[A-F]{1,6}$/i', $nom)
537
-		and !$p->etoile
538
-		and !$p->fonctions
539
-	) {
540
-		$p->code = "'#$nom'";
541
-		$p->interdire_scripts = false;
542
-	}
543
-
544
-	return $p;
514
+    // ca pourrait etre un champ SQL homonyme,
515
+    $p->code = index_pile($p->id_boucle, $nom, $p->boucles, $p->nom_boucle);
516
+
517
+    // compatibilite: depuis qu'on accepte #BALISE{ses_args} sans [(...)] autour
518
+    // il faut recracher {...} quand ce n'est finalement pas des args
519
+    if ($p->fonctions and (!$p->fonctions[0][0]) and $p->fonctions[0][1]) {
520
+        $code = addslashes($p->fonctions[0][1]);
521
+        $p->code .= " . '$code'";
522
+    }
523
+
524
+    // ne pas passer le filtre securite sur les id_xxx
525
+    if (strpos($nom, 'ID_') === 0) {
526
+        $p->interdire_scripts = false;
527
+    }
528
+
529
+    // Compatibilite ascendante avec les couleurs html (#FEFEFE) :
530
+    // SI le champ SQL n'est pas trouve
531
+    // ET si la balise a une forme de couleur
532
+    // ET s'il n'y a ni filtre ni etoile
533
+    // ALORS retourner la couleur.
534
+    // Ca permet si l'on veut vraiment de recuperer [(#ACCEDE*)]
535
+    if (
536
+        preg_match('/^[A-F]{1,6}$/i', $nom)
537
+        and !$p->etoile
538
+        and !$p->fonctions
539
+    ) {
540
+        $p->code = "'#$nom'";
541
+        $p->interdire_scripts = false;
542
+    }
543
+
544
+    return $p;
545 545
 }
546 546
 
547 547
 
@@ -584,39 +584,39 @@  discard block
 block discarded – undo
584 584
  **/
585 585
 function calculer_balise_dynamique($p, $nom, $l, $supp = []) {
586 586
 
587
-	if (!balise_distante_interdite($p)) {
588
-		$p->code = "''";
589
-
590
-		return $p;
591
-	}
592
-	// compatibilite: depuis qu'on accepte #BALISE{ses_args} sans [(...)] autour
593
-	// il faut recracher {...} quand ce n'est finalement pas des args
594
-	if ($p->fonctions and (!$p->fonctions[0][0]) and $p->fonctions[0][1]) {
595
-		$p->fonctions = null;
596
-	}
597
-
598
-	if ($p->param and ($c = $p->param[0])) {
599
-		// liste d'arguments commence toujours par la chaine vide
600
-		array_shift($c);
601
-		// construire la liste d'arguments comme pour un filtre
602
-		$param = compose_filtres_args($p, $c, ',');
603
-	} else {
604
-		$param = '';
605
-	}
606
-	$collecte = collecter_balise_dynamique($l, $p, $nom);
607
-
608
-	$p->code = sprintf(
609
-		CODE_EXECUTER_BALISE,
610
-		$nom,
611
-		join(',', $collecte),
612
-		($collecte ? $param : substr($param, 1)), # virer la virgule
613
-		memoriser_contexte_compil($p),
614
-		(!$supp ? '' : (', ' . join(',', $supp)))
615
-	);
616
-
617
-	$p->interdire_scripts = false;
618
-
619
-	return $p;
587
+    if (!balise_distante_interdite($p)) {
588
+        $p->code = "''";
589
+
590
+        return $p;
591
+    }
592
+    // compatibilite: depuis qu'on accepte #BALISE{ses_args} sans [(...)] autour
593
+    // il faut recracher {...} quand ce n'est finalement pas des args
594
+    if ($p->fonctions and (!$p->fonctions[0][0]) and $p->fonctions[0][1]) {
595
+        $p->fonctions = null;
596
+    }
597
+
598
+    if ($p->param and ($c = $p->param[0])) {
599
+        // liste d'arguments commence toujours par la chaine vide
600
+        array_shift($c);
601
+        // construire la liste d'arguments comme pour un filtre
602
+        $param = compose_filtres_args($p, $c, ',');
603
+    } else {
604
+        $param = '';
605
+    }
606
+    $collecte = collecter_balise_dynamique($l, $p, $nom);
607
+
608
+    $p->code = sprintf(
609
+        CODE_EXECUTER_BALISE,
610
+        $nom,
611
+        join(',', $collecte),
612
+        ($collecte ? $param : substr($param, 1)), # virer la virgule
613
+        memoriser_contexte_compil($p),
614
+        (!$supp ? '' : (', ' . join(',', $supp)))
615
+    );
616
+
617
+    $p->interdire_scripts = false;
618
+
619
+    return $p;
620 620
 }
621 621
 
622 622
 
@@ -646,13 +646,13 @@  discard block
 block discarded – undo
646 646
  *     Liste des codes PHP d'éxecution des balises collectées
647 647
  **/
648 648
 function collecter_balise_dynamique($l, &$p, $nom) {
649
-	$args = [];
650
-	foreach ($l as $c) {
651
-		$x = calculer_balise($c, $p);
652
-		$args[] = $x->code;
653
-	}
649
+    $args = [];
650
+    foreach ($l as $c) {
651
+        $x = calculer_balise($c, $p);
652
+        $args[] = $x->code;
653
+    }
654 654
 
655
-	return $args;
655
+    return $args;
656 656
 }
657 657
 
658 658
 
@@ -667,22 +667,22 @@  discard block
 block discarded – undo
667 667
  *     Nom de la connexion
668 668
  **/
669 669
 function trouver_nom_serveur_distant($p) {
670
-	$nom = $p->id_boucle;
671
-	if (
672
-		$nom
673
-		and isset($p->boucles[$nom])
674
-	) {
675
-		$s = $p->boucles[$nom]->sql_serveur;
676
-		if (
677
-			strlen($s)
678
-			and strlen($serveur = strtolower($s))
679
-			and !in_array($serveur, $GLOBALS['exception_des_connect'])
680
-		) {
681
-			return $serveur;
682
-		}
683
-	}
684
-
685
-	return '';
670
+    $nom = $p->id_boucle;
671
+    if (
672
+        $nom
673
+        and isset($p->boucles[$nom])
674
+    ) {
675
+        $s = $p->boucles[$nom]->sql_serveur;
676
+        if (
677
+            strlen($s)
678
+            and strlen($serveur = strtolower($s))
679
+            and !in_array($serveur, $GLOBALS['exception_des_connect'])
680
+        ) {
681
+            return $serveur;
682
+        }
683
+    }
684
+
685
+    return '';
686 686
 }
687 687
 
688 688
 
@@ -706,15 +706,15 @@  discard block
 block discarded – undo
706 706
  *     - false : La balise est interdite car le serveur est distant
707 707
  **/
708 708
 function balise_distante_interdite($p) {
709
-	$nom = $p->id_boucle;
709
+    $nom = $p->id_boucle;
710 710
 
711
-	if ($nom and trouver_nom_serveur_distant($p)) {
712
-		spip_log($nom . ':' . $p->nom_champ . ' ' . _T('zbug_distant_interdit'));
711
+    if ($nom and trouver_nom_serveur_distant($p)) {
712
+        spip_log($nom . ':' . $p->nom_champ . ' ' . _T('zbug_distant_interdit'));
713 713
 
714
-		return false;
715
-	}
714
+        return false;
715
+    }
716 716
 
717
-	return true;
717
+    return true;
718 718
 }
719 719
 
720 720
 
@@ -725,84 +725,84 @@  discard block
 block discarded – undo
725 725
 // https://code.spip.net/@champs_traitements
726 726
 function champs_traitements($p) {
727 727
 
728
-	if (isset($GLOBALS['table_des_traitements'][$p->nom_champ])) {
729
-		$ps = $GLOBALS['table_des_traitements'][$p->nom_champ];
730
-	} else {
731
-		// quand on utilise un traitement catch-all *
732
-		// celui-ci ne s'applique pas sur les balises calculees qui peuvent gerer
733
-		// leur propre securite
734
-		if (!$p->balise_calculee) {
735
-			$ps = $GLOBALS['table_des_traitements']['*'];
736
-		} else {
737
-			$ps = false;
738
-		}
739
-	}
740
-
741
-	if (is_array($ps)) {
742
-		// Recuperer le type de boucle (articles, DATA) et la table SQL sur laquelle elle porte
743
-		$idb = index_boucle($p);
744
-		// si le champ a ete trouve dans une boucle parente sa source est renseignee ici
745
-		if (!empty($p->boucles[$idb]->index_champ[$p->nom_champ])) {
746
-			$idb = $p->boucles[$idb]->index_champ[$p->nom_champ];
747
-		}
748
-
749
-		// mais on peut aussi etre hors boucle. Se mefier.
750
-		$type_requete = isset($p->boucles[$idb]->type_requete) ? $p->boucles[$idb]->type_requete : false;
751
-		$table_sql = isset($p->boucles[$idb]->show['table_sql']) ? $p->boucles[$idb]->show['table_sql'] : false;
752
-
753
-		// bien prendre en compte les alias de boucles (hierarchie => rubrique, syndication => syncdic, etc.)
754
-		if ($type_requete and isset($GLOBALS['table_des_tables'][$type_requete])) {
755
-			$type_alias = $type_requete;
756
-			$type_requete = $GLOBALS['table_des_tables'][$type_requete];
757
-		} else {
758
-			$type_alias = false;
759
-		}
760
-
761
-		// le traitement peut n'etre defini que pour une table en particulier "spip_articles"
762
-		if ($table_sql and isset($ps[$table_sql])) {
763
-			$ps = $ps[$table_sql];
764
-		} // ou pour une boucle en particulier "DATA","articles"
765
-		elseif ($type_requete and isset($ps[$type_requete])) {
766
-			$ps = $ps[$type_requete];
767
-		} // ou pour une boucle utilisant un alias ("hierarchie")
768
-		elseif ($type_alias and isset($ps[$type_alias])) {
769
-			$ps = $ps[$type_alias];
770
-		} // ou pour indifféremment quelle que soit la boucle
771
-		elseif (isset($ps[0])) {
772
-			$ps = $ps[0];
773
-		} else {
774
-			$ps = false;
775
-		}
776
-	}
777
-
778
-	if (!$ps) {
779
-		return $p->code;
780
-	}
781
-
782
-	// Si une boucle DOCUMENTS{doublons} est presente dans le squelette,
783
-	// ou si in INCLURE contient {doublons}
784
-	// on insere une fonction de remplissage du tableau des doublons
785
-	// dans les filtres propre() ou typo()
786
-	// (qui traitent les raccourcis <docXX> referencant les docs)
787
-
788
-	if (
789
-		isset($p->descr['documents'])
790
-		and
791
-		$p->descr['documents']
792
-		and (
793
-			(strpos($ps, 'propre') !== false)
794
-			or
795
-			(strpos($ps, 'typo') !== false)
796
-		)
797
-	) {
798
-		$ps = 'traiter_doublons_documents($doublons, ' . $ps . ')';
799
-	}
800
-
801
-	// La protection des champs par |safehtml est assuree par les extensions
802
-	// dans la declaration des traitements des champs sensibles
803
-
804
-	// Remplacer enfin le placeholder %s par le vrai code de la balise
805
-	return str_replace('%s', $p->code, $ps);
728
+    if (isset($GLOBALS['table_des_traitements'][$p->nom_champ])) {
729
+        $ps = $GLOBALS['table_des_traitements'][$p->nom_champ];
730
+    } else {
731
+        // quand on utilise un traitement catch-all *
732
+        // celui-ci ne s'applique pas sur les balises calculees qui peuvent gerer
733
+        // leur propre securite
734
+        if (!$p->balise_calculee) {
735
+            $ps = $GLOBALS['table_des_traitements']['*'];
736
+        } else {
737
+            $ps = false;
738
+        }
739
+    }
740
+
741
+    if (is_array($ps)) {
742
+        // Recuperer le type de boucle (articles, DATA) et la table SQL sur laquelle elle porte
743
+        $idb = index_boucle($p);
744
+        // si le champ a ete trouve dans une boucle parente sa source est renseignee ici
745
+        if (!empty($p->boucles[$idb]->index_champ[$p->nom_champ])) {
746
+            $idb = $p->boucles[$idb]->index_champ[$p->nom_champ];
747
+        }
748
+
749
+        // mais on peut aussi etre hors boucle. Se mefier.
750
+        $type_requete = isset($p->boucles[$idb]->type_requete) ? $p->boucles[$idb]->type_requete : false;
751
+        $table_sql = isset($p->boucles[$idb]->show['table_sql']) ? $p->boucles[$idb]->show['table_sql'] : false;
752
+
753
+        // bien prendre en compte les alias de boucles (hierarchie => rubrique, syndication => syncdic, etc.)
754
+        if ($type_requete and isset($GLOBALS['table_des_tables'][$type_requete])) {
755
+            $type_alias = $type_requete;
756
+            $type_requete = $GLOBALS['table_des_tables'][$type_requete];
757
+        } else {
758
+            $type_alias = false;
759
+        }
760
+
761
+        // le traitement peut n'etre defini que pour une table en particulier "spip_articles"
762
+        if ($table_sql and isset($ps[$table_sql])) {
763
+            $ps = $ps[$table_sql];
764
+        } // ou pour une boucle en particulier "DATA","articles"
765
+        elseif ($type_requete and isset($ps[$type_requete])) {
766
+            $ps = $ps[$type_requete];
767
+        } // ou pour une boucle utilisant un alias ("hierarchie")
768
+        elseif ($type_alias and isset($ps[$type_alias])) {
769
+            $ps = $ps[$type_alias];
770
+        } // ou pour indifféremment quelle que soit la boucle
771
+        elseif (isset($ps[0])) {
772
+            $ps = $ps[0];
773
+        } else {
774
+            $ps = false;
775
+        }
776
+    }
777
+
778
+    if (!$ps) {
779
+        return $p->code;
780
+    }
781
+
782
+    // Si une boucle DOCUMENTS{doublons} est presente dans le squelette,
783
+    // ou si in INCLURE contient {doublons}
784
+    // on insere une fonction de remplissage du tableau des doublons
785
+    // dans les filtres propre() ou typo()
786
+    // (qui traitent les raccourcis <docXX> referencant les docs)
787
+
788
+    if (
789
+        isset($p->descr['documents'])
790
+        and
791
+        $p->descr['documents']
792
+        and (
793
+            (strpos($ps, 'propre') !== false)
794
+            or
795
+            (strpos($ps, 'typo') !== false)
796
+        )
797
+    ) {
798
+        $ps = 'traiter_doublons_documents($doublons, ' . $ps . ')';
799
+    }
800
+
801
+    // La protection des champs par |safehtml est assuree par les extensions
802
+    // dans la declaration des traitements des champs sensibles
803
+
804
+    // Remplacer enfin le placeholder %s par le vrai code de la balise
805
+    return str_replace('%s', $p->code, $ps);
806 806
 }
807 807
 
808 808
 
@@ -815,112 +815,112 @@  discard block
 block discarded – undo
815 815
 // https://code.spip.net/@applique_filtres
816 816
 function applique_filtres($p) {
817 817
 
818
-	// Traitements standards (cf. supra)
819
-	if ($p->etoile == '') {
820
-		$code = champs_traitements($p);
821
-	} else {
822
-		$code = $p->code;
823
-	}
818
+    // Traitements standards (cf. supra)
819
+    if ($p->etoile == '') {
820
+        $code = champs_traitements($p);
821
+    } else {
822
+        $code = $p->code;
823
+    }
824 824
 
825
-	// Appliquer les filtres perso
826
-	if ($p->param) {
827
-		$code = compose_filtres($p, $code);
828
-	}
825
+    // Appliquer les filtres perso
826
+    if ($p->param) {
827
+        $code = compose_filtres($p, $code);
828
+    }
829 829
 
830
-	// S'il y a un lien avec la session, ajouter un code qui levera
831
-	// un drapeau dans la structure d'invalidation $Cache
832
-	if (isset($p->descr['session'])) {
833
-		$code = "invalideur_session(\$Cache, $code)";
834
-	}
830
+    // S'il y a un lien avec la session, ajouter un code qui levera
831
+    // un drapeau dans la structure d'invalidation $Cache
832
+    if (isset($p->descr['session'])) {
833
+        $code = "invalideur_session(\$Cache, $code)";
834
+    }
835 835
 
836
-	$code = sandbox_composer_interdire_scripts($code, $p);
836
+    $code = sandbox_composer_interdire_scripts($code, $p);
837 837
 
838
-	return $code;
838
+    return $code;
839 839
 }
840 840
 
841 841
 // Cf. function pipeline dans ecrire/inc_utils.php
842 842
 // https://code.spip.net/@compose_filtres
843 843
 function compose_filtres(&$p, $code) {
844 844
 
845
-	$image_miette = false;
846
-	foreach ($p->param as $filtre) {
847
-		$fonc = array_shift($filtre);
848
-		if (!$fonc) {
849
-			continue;
850
-		} // normalement qu'au premier tour.
851
-		$is_filtre_image = ((substr($fonc, 0, 6) == 'image_') and $fonc != 'image_graver');
852
-		if ($image_miette and !$is_filtre_image) {
853
-			// il faut graver maintenant car apres le filtre en cours
854
-			// on est pas sur d'avoir encore le nom du fichier dans le pipe
855
-			$code = "filtrer('image_graver', $code)";
856
-			$image_miette = false;
857
-		}
858
-
859
-		// recuperer les arguments du filtre,
860
-		// a separer par "," ou ":" dans le cas du filtre "?{a,b}"
861
-		$countfiltre = count($filtre);
862
-		if ($fonc !== '?') {
863
-			$sep = ',';
864
-		} else {
865
-			$sep = ':';
866
-			// |?{a,b} *doit* avoir exactement 2 arguments ; on les force
867
-			if ($countfiltre != 2) {
868
-				$filtre = [$filtre[0] ?? '', $filtre[1] ?? ''];
869
-				$countfiltre = 2;
870
-			}
871
-		}
872
-		$arglist = compose_filtres_args($p, $filtre, $sep);
873
-		$logique = filtre_logique($fonc, $code, substr($arglist, 1));
874
-		if ($logique) {
875
-			$code = $logique;
876
-		} else {
877
-			$code = sandbox_composer_filtre($fonc, $code, $arglist, $p, $countfiltre);
878
-			if ($is_filtre_image) {
879
-				$image_miette = true;
880
-			}
881
-		}
882
-	}
883
-	// ramasser les images intermediaires inutiles et graver l'image finale
884
-	if ($image_miette) {
885
-		$code = "filtrer('image_graver',$code)";
886
-	}
887
-
888
-	return $code;
845
+    $image_miette = false;
846
+    foreach ($p->param as $filtre) {
847
+        $fonc = array_shift($filtre);
848
+        if (!$fonc) {
849
+            continue;
850
+        } // normalement qu'au premier tour.
851
+        $is_filtre_image = ((substr($fonc, 0, 6) == 'image_') and $fonc != 'image_graver');
852
+        if ($image_miette and !$is_filtre_image) {
853
+            // il faut graver maintenant car apres le filtre en cours
854
+            // on est pas sur d'avoir encore le nom du fichier dans le pipe
855
+            $code = "filtrer('image_graver', $code)";
856
+            $image_miette = false;
857
+        }
858
+
859
+        // recuperer les arguments du filtre,
860
+        // a separer par "," ou ":" dans le cas du filtre "?{a,b}"
861
+        $countfiltre = count($filtre);
862
+        if ($fonc !== '?') {
863
+            $sep = ',';
864
+        } else {
865
+            $sep = ':';
866
+            // |?{a,b} *doit* avoir exactement 2 arguments ; on les force
867
+            if ($countfiltre != 2) {
868
+                $filtre = [$filtre[0] ?? '', $filtre[1] ?? ''];
869
+                $countfiltre = 2;
870
+            }
871
+        }
872
+        $arglist = compose_filtres_args($p, $filtre, $sep);
873
+        $logique = filtre_logique($fonc, $code, substr($arglist, 1));
874
+        if ($logique) {
875
+            $code = $logique;
876
+        } else {
877
+            $code = sandbox_composer_filtre($fonc, $code, $arglist, $p, $countfiltre);
878
+            if ($is_filtre_image) {
879
+                $image_miette = true;
880
+            }
881
+        }
882
+    }
883
+    // ramasser les images intermediaires inutiles et graver l'image finale
884
+    if ($image_miette) {
885
+        $code = "filtrer('image_graver',$code)";
886
+    }
887
+
888
+    return $code;
889 889
 }
890 890
 
891 891
 // Filtres et,ou,oui,non,sinon,xou,xor,and,or,not,yes
892 892
 // et comparateurs
893 893
 function filtre_logique($fonc, $code, $arg) {
894 894
 
895
-	switch (true) {
896
-		case in_array($fonc, $GLOBALS['table_criteres_infixes']):
897
-			return "($code $fonc $arg)";
898
-		case ($fonc == 'and') or ($fonc == 'et'):
899
-			return "((($code) AND ($arg)) ?' ' :'')";
900
-		case ($fonc == 'or') or ($fonc == 'ou'):
901
-			return "((($code) OR ($arg)) ?' ' :'')";
902
-		case ($fonc == 'xor') or ($fonc == 'xou'):
903
-			return "((($code) XOR ($arg)) ?' ' :'')";
904
-		case ($fonc == 'sinon'):
905
-			return "(((\$a = $code) OR (is_string(\$a) AND strlen(\$a))) ? \$a : $arg)";
906
-		case ($fonc == 'not') or ($fonc == 'non'):
907
-			return "(($code) ?'' :' ')";
908
-		case ($fonc == 'yes') or ($fonc == 'oui'):
909
-			return "(($code) ?' ' :'')";
910
-	}
911
-
912
-	return '';
895
+    switch (true) {
896
+        case in_array($fonc, $GLOBALS['table_criteres_infixes']):
897
+            return "($code $fonc $arg)";
898
+        case ($fonc == 'and') or ($fonc == 'et'):
899
+            return "((($code) AND ($arg)) ?' ' :'')";
900
+        case ($fonc == 'or') or ($fonc == 'ou'):
901
+            return "((($code) OR ($arg)) ?' ' :'')";
902
+        case ($fonc == 'xor') or ($fonc == 'xou'):
903
+            return "((($code) XOR ($arg)) ?' ' :'')";
904
+        case ($fonc == 'sinon'):
905
+            return "(((\$a = $code) OR (is_string(\$a) AND strlen(\$a))) ? \$a : $arg)";
906
+        case ($fonc == 'not') or ($fonc == 'non'):
907
+            return "(($code) ?'' :' ')";
908
+        case ($fonc == 'yes') or ($fonc == 'oui'):
909
+            return "(($code) ?' ' :'')";
910
+    }
911
+
912
+    return '';
913 913
 }
914 914
 
915 915
 // https://code.spip.net/@compose_filtres_args
916 916
 function compose_filtres_args($p, $args, $sep) {
917
-	$arglist = '';
918
-	foreach ($args as $arg) {
919
-		$arglist .= $sep .
920
-			calculer_liste($arg, $p->descr, $p->boucles, $p->id_boucle);
921
-	}
917
+    $arglist = '';
918
+    foreach ($args as $arg) {
919
+        $arglist .= $sep .
920
+            calculer_liste($arg, $p->descr, $p->boucles, $p->id_boucle);
921
+    }
922 922
 
923
-	return $arglist;
923
+    return $arglist;
924 924
 }
925 925
 
926 926
 
@@ -938,15 +938,15 @@  discard block
 block discarded – undo
938 938
  **/
939 939
 function calculer_argument_precedent($idb, $nom_champ, &$boucles, $defaut = null) {
940 940
 
941
-	// si recursif, forcer l'extraction du champ SQL mais ignorer le code
942
-	if ($boucles[$idb]->externe) {
943
-		index_pile($idb, $nom_champ, $boucles, '', $defaut);
944
-		// retourner $Pile[$SP] et pas $Pile[0] si recursion en 1ere boucle
945
-		// on ignore le defaut fourni dans ce cas
946
-		$defaut = "@\$Pile[\$SP]['$nom_champ']";
947
-	}
941
+    // si recursif, forcer l'extraction du champ SQL mais ignorer le code
942
+    if ($boucles[$idb]->externe) {
943
+        index_pile($idb, $nom_champ, $boucles, '', $defaut);
944
+        // retourner $Pile[$SP] et pas $Pile[0] si recursion en 1ere boucle
945
+        // on ignore le defaut fourni dans ce cas
946
+        $defaut = "@\$Pile[\$SP]['$nom_champ']";
947
+    }
948 948
 
949
-	return index_pile($boucles[$idb]->id_parent, $nom_champ, $boucles, '', $defaut);
949
+    return index_pile($boucles[$idb]->id_parent, $nom_champ, $boucles, '', $defaut);
950 950
 }
951 951
 
952 952
 //
@@ -961,30 +961,30 @@  discard block
 block discarded – undo
961 961
 
962 962
 // https://code.spip.net/@rindex_pile
963 963
 function rindex_pile($p, $champ, $motif) {
964
-	$n = 0;
965
-	$b = $p->id_boucle;
966
-	$p->code = '';
967
-	while ($b != '') {
968
-		foreach ($p->boucles[$b]->criteres as $critere) {
969
-			if ($critere->op == $motif) {
970
-				$p->code = '$Pile[$SP' . (($n == 0) ? '' : "-$n") .
971
-					"]['$champ']";
972
-				$b = '';
973
-				break 2;
974
-			}
975
-		}
976
-		$n++;
977
-		$b = $p->boucles[$b]->id_parent;
978
-	}
979
-
980
-	// si on est hors d'une boucle de {recherche}, cette balise est vide
981
-	if (!$p->code) {
982
-		$p->code = "''";
983
-	}
984
-
985
-	$p->interdire_scripts = false;
986
-
987
-	return $p;
964
+    $n = 0;
965
+    $b = $p->id_boucle;
966
+    $p->code = '';
967
+    while ($b != '') {
968
+        foreach ($p->boucles[$b]->criteres as $critere) {
969
+            if ($critere->op == $motif) {
970
+                $p->code = '$Pile[$SP' . (($n == 0) ? '' : "-$n") .
971
+                    "]['$champ']";
972
+                $b = '';
973
+                break 2;
974
+            }
975
+        }
976
+        $n++;
977
+        $b = $p->boucles[$b]->id_parent;
978
+    }
979
+
980
+    // si on est hors d'une boucle de {recherche}, cette balise est vide
981
+    if (!$p->code) {
982
+        $p->code = "''";
983
+    }
984
+
985
+    $p->interdire_scripts = false;
986
+
987
+    return $p;
988 988
 }
989 989
 
990 990
 /**
@@ -994,7 +994,7 @@  discard block
 block discarded – undo
994 994
  * @return string Nom de la balise, avec indication de boucle explicite si présent.
995 995
  */
996 996
 function zbug_presenter_champ($p, $champ = '') {
997
-	$balise = $champ ? $champ : $p->nom_champ;
998
-	$explicite = $p->nom_boucle ? $p->nom_boucle . ':' : '';
999
-	return "#{$explicite}{$balise}";
997
+    $balise = $champ ? $champ : $p->nom_champ;
998
+    $explicite = $p->nom_boucle ? $p->nom_boucle . ':' : '';
999
+    return "#{$explicite}{$balise}";
1000 1000
 }
Please login to merge, or discard this patch.
Spacing   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -124,7 +124,7 @@  discard block
 block discarded – undo
124 124
 	$select = true
125 125
 ) {
126 126
 	if (!is_string($defaut)) {
127
-		$defaut = '@$Pile[0][\'' . strtolower($nom_champ) . '\']';
127
+		$defaut = '@$Pile[0][\''.strtolower($nom_champ).'\']';
128 128
 	}
129 129
 
130 130
 	$idb_origine = $idb;
@@ -157,7 +157,7 @@  discard block
 block discarded – undo
157 157
 			}
158 158
 			// renseigner la boucle source de ce champ pour les traitements
159 159
 			$boucles[$idb_origine]->index_champ[$nom_champ_origine] = $idb;
160
-			$champ = '$Pile[$SP' . ($i ? "-$i" : '') . '][\'' . $c . '\']';
160
+			$champ = '$Pile[$SP'.($i ? "-$i" : '').'][\''.$c.'\']';
161 161
 			if (!$joker) {
162 162
 				return index_compose($conditionnel, $champ);
163 163
 			}
@@ -198,7 +198,7 @@  discard block
 block discarded – undo
198 198
 function index_compose($conditionnel, $defaut) {
199 199
 	while ($c = array_pop($conditionnel)) {
200 200
 		// si on passe defaut = '', ne pas générer d'erreur de compilation.
201
-		$defaut = "($c:(" . ($defaut ? $defaut : "''") . '))';
201
+		$defaut = "($c:(".($defaut ? $defaut : "''").'))';
202 202
 	}
203 203
 
204 204
 	return $defaut;
@@ -245,7 +245,7 @@  discard block
 block discarded – undo
245 245
 	if (!$r) {
246 246
 		$joker = false; // indiquer a l'appelant
247 247
 		# continuer pour chercher l'erreur suivante
248
-		return ["'#" . $r . ':' . $nom_champ . "'", ''];
248
+		return ["'#".$r.':'.$nom_champ."'", ''];
249 249
 	}
250 250
 
251 251
 	$desc = $boucles[$idb]->show;
@@ -348,8 +348,8 @@  discard block
 block discarded – undo
348 348
 			$t = $index_exception_derogatoire($boucle, $desc, $nom_champ, $excep);
349 349
 		}
350 350
 		if ($t == null) {
351
-			list($e, $x) = $excep;  #PHP4 affecte de gauche a droite
352
-			$excep = $x;    #PHP5 de droite a gauche !
351
+			list($e, $x) = $excep; #PHP4 affecte de gauche a droite
352
+			$excep = $x; #PHP5 de droite a gauche !
353 353
 			$j = $trouver_table($e, $boucle->sql_serveur);
354 354
 			if (!$j) {
355 355
 				return ['', ''];
@@ -361,7 +361,7 @@  discard block
 block discarded – undo
361 361
 					$l = (preg_split('/\s*,\s*/', $k));
362 362
 					$k = $desc['key']['PRIMARY KEY'];
363 363
 					if (!in_array($k, $l)) {
364
-						spip_log("jointure impossible $e " . join(',', $l));
364
+						spip_log("jointure impossible $e ".join(',', $l));
365 365
 
366 366
 						return ['', ''];
367 367
 					}
@@ -377,7 +377,7 @@  discard block
 block discarded – undo
377 377
 	// demander a SQL de gerer le synonyme
378 378
 	// ca permet que excep soit dynamique (Cedric, 2/3/06)
379 379
 	if ($excep != $nom_champ) {
380
-		$excep .= ' AS ' . $nom_champ;
380
+		$excep .= ' AS '.$nom_champ;
381 381
 	}
382 382
 
383 383
 	return ["$t.$excep", $nom_champ];
@@ -611,7 +611,7 @@  discard block
 block discarded – undo
611 611
 		join(',', $collecte),
612 612
 		($collecte ? $param : substr($param, 1)), # virer la virgule
613 613
 		memoriser_contexte_compil($p),
614
-		(!$supp ? '' : (', ' . join(',', $supp)))
614
+		(!$supp ? '' : (', '.join(',', $supp)))
615 615
 	);
616 616
 
617 617
 	$p->interdire_scripts = false;
@@ -709,7 +709,7 @@  discard block
 block discarded – undo
709 709
 	$nom = $p->id_boucle;
710 710
 
711 711
 	if ($nom and trouver_nom_serveur_distant($p)) {
712
-		spip_log($nom . ':' . $p->nom_champ . ' ' . _T('zbug_distant_interdit'));
712
+		spip_log($nom.':'.$p->nom_champ.' '._T('zbug_distant_interdit'));
713 713
 
714 714
 		return false;
715 715
 	}
@@ -795,7 +795,7 @@  discard block
 block discarded – undo
795 795
 			(strpos($ps, 'typo') !== false)
796 796
 		)
797 797
 	) {
798
-		$ps = 'traiter_doublons_documents($doublons, ' . $ps . ')';
798
+		$ps = 'traiter_doublons_documents($doublons, '.$ps.')';
799 799
 	}
800 800
 
801 801
 	// La protection des champs par |safehtml est assuree par les extensions
@@ -916,7 +916,7 @@  discard block
 block discarded – undo
916 916
 function compose_filtres_args($p, $args, $sep) {
917 917
 	$arglist = '';
918 918
 	foreach ($args as $arg) {
919
-		$arglist .= $sep .
919
+		$arglist .= $sep.
920 920
 			calculer_liste($arg, $p->descr, $p->boucles, $p->id_boucle);
921 921
 	}
922 922
 
@@ -967,7 +967,7 @@  discard block
 block discarded – undo
967 967
 	while ($b != '') {
968 968
 		foreach ($p->boucles[$b]->criteres as $critere) {
969 969
 			if ($critere->op == $motif) {
970
-				$p->code = '$Pile[$SP' . (($n == 0) ? '' : "-$n") .
970
+				$p->code = '$Pile[$SP'.(($n == 0) ? '' : "-$n").
971 971
 					"]['$champ']";
972 972
 				$b = '';
973 973
 				break 2;
@@ -995,6 +995,6 @@  discard block
 block discarded – undo
995 995
  */
996 996
 function zbug_presenter_champ($p, $champ = '') {
997 997
 	$balise = $champ ? $champ : $p->nom_champ;
998
-	$explicite = $p->nom_boucle ? $p->nom_boucle . ':' : '';
998
+	$explicite = $p->nom_boucle ? $p->nom_boucle.':' : '';
999 999
 	return "#{$explicite}{$balise}";
1000 1000
 }
Please login to merge, or discard this patch.