Completed
Push — master ( 9a9099...f3ee10 )
by cam
01:09
created
ecrire/public/interfaces.php 1 patch
Indentation   +902 added lines, -902 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 
@@ -34,53 +34,53 @@  discard block
 block discarded – undo
34 34
  * @package SPIP\Core\Compilateur\AST
35 35
  */
36 36
 class Contexte {
37
-	/**
38
-	 * Description du squelette
39
-	 *
40
-	 * Sert pour la gestion d'erreur et la production de code dependant du contexte
41
-	 *
42
-	 * Peut contenir les index :
43
-	 *
44
-	 * - nom : Nom du fichier de cache
45
-	 * - gram : Nom de la grammaire du squelette (détermine le phraseur à utiliser)
46
-	 * - sourcefile : Chemin du squelette
47
-	 * - squelette : Code du squelette
48
-	 * - id_mere : Identifiant de la boucle parente
49
-	 * - documents : Pour embed et img dans les textes
50
-	 * - session : Pour un cache sessionné par auteur
51
-	 * - niv : Niveau de tabulation
52
-	 *
53
-	 * @var array
54
-	 */
55
-	public $descr = array();
56
-
57
-	/**
58
-	 * Identifiant de la boucle
59
-	 *
60
-	 * @var string
61
-	 */
62
-	public $id_boucle = '';
63
-
64
-	/**
65
-	 * Numéro de ligne dans le code source du squelette
66
-	 *
67
-	 * @var int
68
-	 */
69
-	public $ligne = 0;
70
-
71
-	/**
72
-	 * Langue d'exécution
73
-	 *
74
-	 * @var string
75
-	 */
76
-	public $lang = '';
77
-
78
-	/**
79
-	 * Résultat de la compilation: toujours une expression PHP
80
-	 *
81
-	 * @var string
82
-	 */
83
-	public $code = '';
37
+    /**
38
+     * Description du squelette
39
+     *
40
+     * Sert pour la gestion d'erreur et la production de code dependant du contexte
41
+     *
42
+     * Peut contenir les index :
43
+     *
44
+     * - nom : Nom du fichier de cache
45
+     * - gram : Nom de la grammaire du squelette (détermine le phraseur à utiliser)
46
+     * - sourcefile : Chemin du squelette
47
+     * - squelette : Code du squelette
48
+     * - id_mere : Identifiant de la boucle parente
49
+     * - documents : Pour embed et img dans les textes
50
+     * - session : Pour un cache sessionné par auteur
51
+     * - niv : Niveau de tabulation
52
+     *
53
+     * @var array
54
+     */
55
+    public $descr = array();
56
+
57
+    /**
58
+     * Identifiant de la boucle
59
+     *
60
+     * @var string
61
+     */
62
+    public $id_boucle = '';
63
+
64
+    /**
65
+     * Numéro de ligne dans le code source du squelette
66
+     *
67
+     * @var int
68
+     */
69
+    public $ligne = 0;
70
+
71
+    /**
72
+     * Langue d'exécution
73
+     *
74
+     * @var string
75
+     */
76
+    public $lang = '';
77
+
78
+    /**
79
+     * Résultat de la compilation: toujours une expression PHP
80
+     *
81
+     * @var string
82
+     */
83
+    public $code = '';
84 84
 }
85 85
 
86 86
 
@@ -90,44 +90,44 @@  discard block
 block discarded – undo
90 90
  * @package SPIP\Core\Compilateur\AST
91 91
  **/
92 92
 class Texte {
93
-	/**
94
-	 * Type de noeud
95
-	 *
96
-	 * @var string
97
-	 */
98
-	public $type = 'texte';
99
-
100
-	/**
101
-	 * Le texte
102
-	 *
103
-	 * @var string
104
-	 */
105
-	public $texte;
106
-
107
-	/**
108
-	 * Contenu avant le texte.
109
-	 *
110
-	 * Vide ou apostrophe simple ou double si le texte en était entouré
111
-	 *
112
-	 * @var string|array
113
-	 */
114
-	public $avant = "";
115
-
116
-	/**
117
-	 * Contenu après le texte.
118
-	 *
119
-	 * Vide ou apostrophe simple ou double si le texte en était entouré
120
-	 *
121
-	 * @var string|array
122
-	 */
123
-	public $apres = "";
124
-
125
-	/**
126
-	 * Numéro de ligne dans le code source du squelette
127
-	 *
128
-	 * @var int
129
-	 */
130
-	public $ligne = 0;
93
+    /**
94
+     * Type de noeud
95
+     *
96
+     * @var string
97
+     */
98
+    public $type = 'texte';
99
+
100
+    /**
101
+     * Le texte
102
+     *
103
+     * @var string
104
+     */
105
+    public $texte;
106
+
107
+    /**
108
+     * Contenu avant le texte.
109
+     *
110
+     * Vide ou apostrophe simple ou double si le texte en était entouré
111
+     *
112
+     * @var string|array
113
+     */
114
+    public $avant = "";
115
+
116
+    /**
117
+     * Contenu après le texte.
118
+     *
119
+     * Vide ou apostrophe simple ou double si le texte en était entouré
120
+     *
121
+     * @var string|array
122
+     */
123
+    public $apres = "";
124
+
125
+    /**
126
+     * Numéro de ligne dans le code source du squelette
127
+     *
128
+     * @var int
129
+     */
130
+    public $ligne = 0;
131 131
 }
132 132
 
133 133
 /**
@@ -136,50 +136,50 @@  discard block
 block discarded – undo
136 136
  * @package SPIP\Core\Compilateur\AST
137 137
  **/
138 138
 class Inclure {
139
-	/**
140
-	 * Type de noeud
141
-	 *
142
-	 * @var string
143
-	 */
144
-	public $type = 'include';
145
-
146
-	/**
147
-	 * Nom d'un fichier inclu
148
-	 *
149
-	 * - Objet Texte si inclusion d'un autre squelette
150
-	 * - chaîne si inclusion d'un fichier PHP directement
151
-	 *
152
-	 * @var string|Texte
153
-	 */
154
-	public $texte;
155
-
156
-	/**
157
-	 * Inutilisé, propriété générique de l'AST
158
-	 *
159
-	 * @var string|array
160
-	 */
161
-	public $avant = '';
162
-
163
-	/**
164
-	 * Inutilisé, propriété générique de l'AST
165
-	 *
166
-	 * @var string|array
167
-	 */
168
-	public $apres = '';
169
-
170
-	/**
171
-	 * Numéro de ligne dans le code source du squelette
172
-	 *
173
-	 * @var int
174
-	 */
175
-	public $ligne = 0;
176
-
177
-	/**
178
-	 * Valeurs des paramètres
179
-	 *
180
-	 * @var array
181
-	 */
182
-	public $param = array();
139
+    /**
140
+     * Type de noeud
141
+     *
142
+     * @var string
143
+     */
144
+    public $type = 'include';
145
+
146
+    /**
147
+     * Nom d'un fichier inclu
148
+     *
149
+     * - Objet Texte si inclusion d'un autre squelette
150
+     * - chaîne si inclusion d'un fichier PHP directement
151
+     *
152
+     * @var string|Texte
153
+     */
154
+    public $texte;
155
+
156
+    /**
157
+     * Inutilisé, propriété générique de l'AST
158
+     *
159
+     * @var string|array
160
+     */
161
+    public $avant = '';
162
+
163
+    /**
164
+     * Inutilisé, propriété générique de l'AST
165
+     *
166
+     * @var string|array
167
+     */
168
+    public $apres = '';
169
+
170
+    /**
171
+     * Numéro de ligne dans le code source du squelette
172
+     *
173
+     * @var int
174
+     */
175
+    public $ligne = 0;
176
+
177
+    /**
178
+     * Valeurs des paramètres
179
+     *
180
+     * @var array
181
+     */
182
+    public $param = array();
183 183
 }
184 184
 
185 185
 
@@ -189,376 +189,376 @@  discard block
 block discarded – undo
189 189
  * @package SPIP\Core\Compilateur\AST
190 190
  **/
191 191
 class Boucle {
192
-	/**
193
-	 * Type de noeud
194
-	 *
195
-	 * @var string
196
-	 */
197
-	public $type = 'boucle';
198
-
199
-	/**
200
-	 * Identifiant de la boucle
201
-	 *
202
-	 * @var string
203
-	 */
204
-	public $id_boucle;
205
-
206
-	/**
207
-	 * Identifiant de la boucle parente
208
-	 *
209
-	 * @var string
210
-	 */
211
-	public $id_parent = '';
212
-
213
-	/**
214
-	 * Partie avant toujours affichee
215
-	 *
216
-	 * @var string|array
217
-	 */
218
-	public $preaff = '';
219
-
220
-	/**
221
-	 * Partie optionnelle avant
222
-	 *
223
-	 * @var string|array
224
-	 */
225
-	public $avant = '';
226
-
227
-	/**
228
-	 * Pour chaque élément
229
-	 *
230
-	 * @var string|array
231
-	 */
232
-	public $milieu = '';
233
-
234
-	/**
235
-	 * Partie optionnelle après
236
-	 *
237
-	 * @var string|array
238
-	 */
239
-	public $apres = '';
240
-
241
-	/**
242
-	 * Partie alternative, si pas de résultat dans la boucle
243
-	 *
244
-	 * @var string|array
245
-	 */
246
-	public $altern = '';
247
-
248
-	/**
249
-	 * Partie apres toujours affichee
250
-	 *
251
-	 * @var string|array
252
-	 */
253
-	public $postaff = '';
254
-
255
-
256
-	/**
257
-	 * La boucle doit-elle sélectionner la langue ?
258
-	 *
259
-	 * @var string|null
260
-	 */
261
-	public $lang_select;
262
-
263
-	/**
264
-	 * Alias de table d'application de la requête ou nom complet de la table SQL
265
-	 *
266
-	 * @var string|null
267
-	 */
268
-	public $type_requete;
269
-
270
-	/**
271
-	 * La table est elle optionnelle ?
272
-	 *
273
-	 * Si oui, aucune erreur ne sera générée si la table demandée n'est pas présente
274
-	 *
275
-	 * @var bool
276
-	 */
277
-	public $table_optionnelle = false;
278
-
279
-	/**
280
-	 * Nom du fichier de connexion
281
-	 *
282
-	 * @var string
283
-	 */
284
-	public $sql_serveur = '';
285
-
286
-	/**
287
-	 * Paramètres de la boucle
288
-	 *
289
-	 * Description des paramètres passés à la boucle, qui servent ensuite
290
-	 * au calcul des critères
291
-	 *
292
-	 * @var array
293
-	 */
294
-	public $param = array();
295
-
296
-	/**
297
-	 * Critères de la boucle
298
-	 *
299
-	 * @var Critere[]
300
-	 */
301
-	public $criteres = array();
302
-
303
-	/**
304
-	 * Textes insérés entre 2 éléments de boucle (critère inter)
305
-	 *
306
-	 * @var string[]
307
-	 */
308
-	public $separateur = array();
309
-
310
-	/**
311
-	 * Liste des jointures possibles avec cette table
312
-	 *
313
-	 * Les jointures par défaut de la table sont complétées en priorité
314
-	 * des jointures déclarées explicitement sur la boucle
315
-	 *
316
-	 * @see base_trouver_table_dist()
317
-	 * @var array
318
-	 */
319
-	public $jointures = array();
320
-
321
-	/**
322
-	 * Jointures explicites avec cette table
323
-	 *
324
-	 * Ces jointures sont utilisées en priorité par rapport aux jointures
325
-	 * normales possibles pour retrouver les colonnes demandées extérieures
326
-	 * à la boucle.
327
-	 *
328
-	 * @var string|bool
329
-	 */
330
-	public $jointures_explicites = false;
331
-
332
-	/**
333
-	 * Nom de la variable PHP stockant le noms de doublons utilisés "$doublons_index"
334
-	 *
335
-	 * @var string|null
336
-	 */
337
-	public $doublons;
338
-
339
-	/**
340
-	 * Code PHP ajouté au début de chaque itération de boucle.
341
-	 *
342
-	 * Utilisé entre autre par les critères {pagination}, {n-a,b}, {a/b}...
343
-	 *
344
-	 * @var string
345
-	 */
346
-	public $partie = "";
347
-
348
-	/**
349
-	 * Nombre de divisions de la boucle, d'éléments à afficher,
350
-	 * ou de soustractions d'éléments à faire
351
-	 *
352
-	 * Dans les critères limitant le nombre d'éléments affichés
353
-	 * {a,b}, {a,n-b}, {a/b}, {pagination b}, b est affecté à total_parties.
354
-	 *
355
-	 * @var string
356
-	 */
357
-	public $total_parties = "";
358
-
359
-	/**
360
-	 * Code PHP ajouté avant l'itération de boucle.
361
-	 *
362
-	 * Utilisé entre autre par les critères {pagination}, {a,b}, {a/b}
363
-	 * pour initialiser les variables de début et de fin d'itération.
364
-	 *
365
-	 * @var string
366
-	 */
367
-	public $mode_partie = '';
368
-
369
-	/**
370
-	 * Identifiant d'une boucle qui appelle celle-ci de manière récursive
371
-	 *
372
-	 * Si une boucle est appelée de manière récursive quelque part par
373
-	 * une autre boucle comme <BOUCLE_rec(boucle_identifiant) />, cette
374
-	 * boucle (identifiant) reçoit dans cette propriété l'identifiant
375
-	 * de l'appelant (rec)
376
-	 *
377
-	 * @var string
378
-	 */
379
-	public $externe = '';
380
-
381
-	// champs pour la construction de la requete SQL
382
-
383
-	/**
384
-	 * Liste des champs à récupérer par la boucle
385
-	 *
386
-	 * Expression 'table.nom_champ' ou calculée 'nom_champ AS x'
387
-	 *
388
-	 * @var string[]
389
-	 */
390
-	public $select = array();
391
-
392
-	/**
393
-	 * Liste des alias / tables SQL utilisées dans la boucle
394
-	 *
395
-	 * L'index est un identifiant (xx dans spip_xx assez souvent) qui servira
396
-	 * d'alias au nom de la table ; la valeur est le nom de la table SQL désirée.
397
-	 *
398
-	 * L'index 0 peut définir le type de sources de données de l'itérateur DATA
399
-	 *
400
-	 * @var string[]
401
-	 */
402
-	public $from = array();
403
-
404
-	/**
405
-	 * Liste des alias / type de jointures utilisées dans la boucle
406
-	 *
407
-	 * L'index est le nom d'alias (comme pour la propriété $from), et la valeur
408
-	 * un type de jointure parmi 'INNER', 'LEFT', 'RIGHT', 'OUTER'.
409
-	 *
410
-	 * Lorsque le type n'est pas déclaré pour un alias, c'est 'INNER'
411
-	 * qui sera utilisé par défaut (créant donc un INNER JOIN).
412
-	 *
413
-	 * @var string[]
414
-	 */
415
-	public $from_type = array();
416
-
417
-	/**
418
-	 * Liste des conditions WHERE de la boucle
419
-	 *
420
-	 * Permet de restreindre les éléments retournés par une boucle
421
-	 * en fonctions des conditions transmises dans ce tableau.
422
-	 *
423
-	 * Ce tableau peut avoir plusieurs niveaux de profondeur.
424
-	 *
425
-	 * Les éléments du premier niveau sont reliés par des AND, donc
426
-	 * chaque élément ajouté directement au where par
427
-	 * $boucle->where[] = array(...) ou $boucle->where[] = "'expression'"
428
-	 * est une condition AND en plus.
429
-	 *
430
-	 * Par contre, lorsqu'on indique un tableau, il peut décrire des relations
431
-	 * internes différentes. Soit $expr un tableau d'expressions quelconques de 3 valeurs :
432
-	 * $expr = array(operateur, val1, val2)
433
-	 *
434
-	 * Ces 3 valeurs sont des expressions PHP. L'index 0 désigne l'opérateur
435
-	 * à réaliser tel que :
436
-	 *
437
-	 * - "'='" , "'>='", "'<'", "'IN'", "'REGEXP'", "'LIKE'", ... :
438
-	 *    val1 et val2 sont des champs et valeurs à utiliser dans la comparaison
439
-	 *    suivant cet ordre : "val1 operateur val2".
440
-	 *    Exemple : $boucle->where[] = array("'='", "'articles.statut'", "'\"publie\"'");
441
-	 * - "'AND'", "'OR'", "'NOT'" :
442
-	 *    dans ce cas val1 et val2 sont également des expressions
443
-	 *    de comparaison complètes, et peuvent être eux-même des tableaux comme $expr
444
-	 *    Exemples :
445
-	 *    $boucle->where[] = array("'OR'", $expr1, $expr2);
446
-	 *    $boucle->where[] = array("'NOT'", $expr); // val2 n'existe pas avec NOT
447
-	 *
448
-	 * D'autres noms sont possibles pour l'opérateur (le nombre de valeurs diffère) :
449
-	 * - "'SELF'", "'SUBSELECT'" : indiquent des sous requêtes
450
-	 * - "'?'" : indique une condition à faire évaluer (val1 ? val2 : val3)
451
-	 *
452
-	 * @var array
453
-	 */
454
-	public $where = array();
455
-
456
-	public $join = array();
457
-	public $having = array();
458
-	public $limit;
459
-	public $group = array();
460
-	public $order = array();
461
-	public $default_order = array();
462
-	public $date = 'date';
463
-	public $hash = "";
464
-	public $in = "";
465
-	public $sous_requete = false;
466
-
467
-	/**
468
-	 * Code PHP qui sera ajouté en tout début de la fonction de boucle
469
-	 *
470
-	 * Il sert à insérer le code calculant une hierarchie
471
-	 *
472
-	 * @var string
473
-	 */
474
-	public $hierarchie = '';
475
-
476
-	// champs pour la construction du corps PHP
477
-
478
-	/**
479
-	 * Description des sources de données de la boucle
480
-	 *
481
-	 * Description des données de la boucle issu de trouver_table
482
-	 * dans le cadre de l'itérateur SQL et contenant au moins l'index 'field'.
483
-	 *
484
-	 * @see base_trouver_table_dist()
485
-	 * @var array
486
-	 */
487
-	public $show = array();
488
-
489
-	/**
490
-	 * Nom de la table SQL principale de la boucle, sans son préfixe
491
-	 *
492
-	 * @var string
493
-	 */
494
-	public $id_table;
495
-
496
-	/**
497
-	 * Nom de la clé primaire de la table SQL principale de la boucle
498
-	 *
499
-	 * @var string
500
-	 */
501
-	public $primary;
502
-
503
-	/**
504
-	 * Code PHP compilé de la boucle
505
-	 *
506
-	 * @var string
507
-	 */
508
-	public $return;
509
-
510
-	public $numrows = false;
511
-	public $cptrows = false;
512
-
513
-	/**
514
-	 * Description du squelette
515
-	 *
516
-	 * Sert pour la gestion d'erreur et la production de code dependant du contexte
517
-	 *
518
-	 * Peut contenir les index :
519
-	 *
520
-	 * - nom : Nom du fichier de cache
521
-	 * - gram : Nom de la grammaire du squelette (détermine le phraseur à utiliser)
522
-	 * - sourcefile : Chemin du squelette
523
-	 * - squelette : Code du squelette
524
-	 * - id_mere : Identifiant de la boucle parente
525
-	 * - documents : Pour embed et img dans les textes
526
-	 * - session : Pour un cache sessionné par auteur
527
-	 * - niv : Niveau de tabulation
528
-	 *
529
-	 * @var array
530
-	 */
531
-	public $descr = array();
532
-
533
-	/**
534
-	 * Numéro de ligne dans le code source du squelette
535
-	 *
536
-	 * @var int
537
-	 */
538
-	public $ligne = 0;
539
-
540
-
541
-	public $modificateur = array(); // table pour stocker les modificateurs de boucle tels que tout, plat ..., utilisable par les plugins egalement
542
-
543
-	/**
544
-	 * Type d'itérateur utilisé pour cette boucle
545
-	 *
546
-	 * - 'SQL' dans le cadre d'une boucle sur une table SQL
547
-	 * - 'DATA' pour l'itérateur DATA, ...
548
-	 *
549
-	 * @var string
550
-	 */
551
-	public $iterateur = ''; // type d'iterateur
552
-
553
-	/**
554
-	 * @var array $debug Textes qui seront insérés dans l’entête de boucle du mode debug
555
-	 */
556
-	public $debug = [];
557
-
558
-	// obsoletes, conserves provisoirement pour compatibilite
559
-	public $tout = false;
560
-	public $plat = false;
561
-	public $lien = false;
192
+    /**
193
+     * Type de noeud
194
+     *
195
+     * @var string
196
+     */
197
+    public $type = 'boucle';
198
+
199
+    /**
200
+     * Identifiant de la boucle
201
+     *
202
+     * @var string
203
+     */
204
+    public $id_boucle;
205
+
206
+    /**
207
+     * Identifiant de la boucle parente
208
+     *
209
+     * @var string
210
+     */
211
+    public $id_parent = '';
212
+
213
+    /**
214
+     * Partie avant toujours affichee
215
+     *
216
+     * @var string|array
217
+     */
218
+    public $preaff = '';
219
+
220
+    /**
221
+     * Partie optionnelle avant
222
+     *
223
+     * @var string|array
224
+     */
225
+    public $avant = '';
226
+
227
+    /**
228
+     * Pour chaque élément
229
+     *
230
+     * @var string|array
231
+     */
232
+    public $milieu = '';
233
+
234
+    /**
235
+     * Partie optionnelle après
236
+     *
237
+     * @var string|array
238
+     */
239
+    public $apres = '';
240
+
241
+    /**
242
+     * Partie alternative, si pas de résultat dans la boucle
243
+     *
244
+     * @var string|array
245
+     */
246
+    public $altern = '';
247
+
248
+    /**
249
+     * Partie apres toujours affichee
250
+     *
251
+     * @var string|array
252
+     */
253
+    public $postaff = '';
254
+
255
+
256
+    /**
257
+     * La boucle doit-elle sélectionner la langue ?
258
+     *
259
+     * @var string|null
260
+     */
261
+    public $lang_select;
262
+
263
+    /**
264
+     * Alias de table d'application de la requête ou nom complet de la table SQL
265
+     *
266
+     * @var string|null
267
+     */
268
+    public $type_requete;
269
+
270
+    /**
271
+     * La table est elle optionnelle ?
272
+     *
273
+     * Si oui, aucune erreur ne sera générée si la table demandée n'est pas présente
274
+     *
275
+     * @var bool
276
+     */
277
+    public $table_optionnelle = false;
278
+
279
+    /**
280
+     * Nom du fichier de connexion
281
+     *
282
+     * @var string
283
+     */
284
+    public $sql_serveur = '';
285
+
286
+    /**
287
+     * Paramètres de la boucle
288
+     *
289
+     * Description des paramètres passés à la boucle, qui servent ensuite
290
+     * au calcul des critères
291
+     *
292
+     * @var array
293
+     */
294
+    public $param = array();
295
+
296
+    /**
297
+     * Critères de la boucle
298
+     *
299
+     * @var Critere[]
300
+     */
301
+    public $criteres = array();
302
+
303
+    /**
304
+     * Textes insérés entre 2 éléments de boucle (critère inter)
305
+     *
306
+     * @var string[]
307
+     */
308
+    public $separateur = array();
309
+
310
+    /**
311
+     * Liste des jointures possibles avec cette table
312
+     *
313
+     * Les jointures par défaut de la table sont complétées en priorité
314
+     * des jointures déclarées explicitement sur la boucle
315
+     *
316
+     * @see base_trouver_table_dist()
317
+     * @var array
318
+     */
319
+    public $jointures = array();
320
+
321
+    /**
322
+     * Jointures explicites avec cette table
323
+     *
324
+     * Ces jointures sont utilisées en priorité par rapport aux jointures
325
+     * normales possibles pour retrouver les colonnes demandées extérieures
326
+     * à la boucle.
327
+     *
328
+     * @var string|bool
329
+     */
330
+    public $jointures_explicites = false;
331
+
332
+    /**
333
+     * Nom de la variable PHP stockant le noms de doublons utilisés "$doublons_index"
334
+     *
335
+     * @var string|null
336
+     */
337
+    public $doublons;
338
+
339
+    /**
340
+     * Code PHP ajouté au début de chaque itération de boucle.
341
+     *
342
+     * Utilisé entre autre par les critères {pagination}, {n-a,b}, {a/b}...
343
+     *
344
+     * @var string
345
+     */
346
+    public $partie = "";
347
+
348
+    /**
349
+     * Nombre de divisions de la boucle, d'éléments à afficher,
350
+     * ou de soustractions d'éléments à faire
351
+     *
352
+     * Dans les critères limitant le nombre d'éléments affichés
353
+     * {a,b}, {a,n-b}, {a/b}, {pagination b}, b est affecté à total_parties.
354
+     *
355
+     * @var string
356
+     */
357
+    public $total_parties = "";
358
+
359
+    /**
360
+     * Code PHP ajouté avant l'itération de boucle.
361
+     *
362
+     * Utilisé entre autre par les critères {pagination}, {a,b}, {a/b}
363
+     * pour initialiser les variables de début et de fin d'itération.
364
+     *
365
+     * @var string
366
+     */
367
+    public $mode_partie = '';
368
+
369
+    /**
370
+     * Identifiant d'une boucle qui appelle celle-ci de manière récursive
371
+     *
372
+     * Si une boucle est appelée de manière récursive quelque part par
373
+     * une autre boucle comme <BOUCLE_rec(boucle_identifiant) />, cette
374
+     * boucle (identifiant) reçoit dans cette propriété l'identifiant
375
+     * de l'appelant (rec)
376
+     *
377
+     * @var string
378
+     */
379
+    public $externe = '';
380
+
381
+    // champs pour la construction de la requete SQL
382
+
383
+    /**
384
+     * Liste des champs à récupérer par la boucle
385
+     *
386
+     * Expression 'table.nom_champ' ou calculée 'nom_champ AS x'
387
+     *
388
+     * @var string[]
389
+     */
390
+    public $select = array();
391
+
392
+    /**
393
+     * Liste des alias / tables SQL utilisées dans la boucle
394
+     *
395
+     * L'index est un identifiant (xx dans spip_xx assez souvent) qui servira
396
+     * d'alias au nom de la table ; la valeur est le nom de la table SQL désirée.
397
+     *
398
+     * L'index 0 peut définir le type de sources de données de l'itérateur DATA
399
+     *
400
+     * @var string[]
401
+     */
402
+    public $from = array();
403
+
404
+    /**
405
+     * Liste des alias / type de jointures utilisées dans la boucle
406
+     *
407
+     * L'index est le nom d'alias (comme pour la propriété $from), et la valeur
408
+     * un type de jointure parmi 'INNER', 'LEFT', 'RIGHT', 'OUTER'.
409
+     *
410
+     * Lorsque le type n'est pas déclaré pour un alias, c'est 'INNER'
411
+     * qui sera utilisé par défaut (créant donc un INNER JOIN).
412
+     *
413
+     * @var string[]
414
+     */
415
+    public $from_type = array();
416
+
417
+    /**
418
+     * Liste des conditions WHERE de la boucle
419
+     *
420
+     * Permet de restreindre les éléments retournés par une boucle
421
+     * en fonctions des conditions transmises dans ce tableau.
422
+     *
423
+     * Ce tableau peut avoir plusieurs niveaux de profondeur.
424
+     *
425
+     * Les éléments du premier niveau sont reliés par des AND, donc
426
+     * chaque élément ajouté directement au where par
427
+     * $boucle->where[] = array(...) ou $boucle->where[] = "'expression'"
428
+     * est une condition AND en plus.
429
+     *
430
+     * Par contre, lorsqu'on indique un tableau, il peut décrire des relations
431
+     * internes différentes. Soit $expr un tableau d'expressions quelconques de 3 valeurs :
432
+     * $expr = array(operateur, val1, val2)
433
+     *
434
+     * Ces 3 valeurs sont des expressions PHP. L'index 0 désigne l'opérateur
435
+     * à réaliser tel que :
436
+     *
437
+     * - "'='" , "'>='", "'<'", "'IN'", "'REGEXP'", "'LIKE'", ... :
438
+     *    val1 et val2 sont des champs et valeurs à utiliser dans la comparaison
439
+     *    suivant cet ordre : "val1 operateur val2".
440
+     *    Exemple : $boucle->where[] = array("'='", "'articles.statut'", "'\"publie\"'");
441
+     * - "'AND'", "'OR'", "'NOT'" :
442
+     *    dans ce cas val1 et val2 sont également des expressions
443
+     *    de comparaison complètes, et peuvent être eux-même des tableaux comme $expr
444
+     *    Exemples :
445
+     *    $boucle->where[] = array("'OR'", $expr1, $expr2);
446
+     *    $boucle->where[] = array("'NOT'", $expr); // val2 n'existe pas avec NOT
447
+     *
448
+     * D'autres noms sont possibles pour l'opérateur (le nombre de valeurs diffère) :
449
+     * - "'SELF'", "'SUBSELECT'" : indiquent des sous requêtes
450
+     * - "'?'" : indique une condition à faire évaluer (val1 ? val2 : val3)
451
+     *
452
+     * @var array
453
+     */
454
+    public $where = array();
455
+
456
+    public $join = array();
457
+    public $having = array();
458
+    public $limit;
459
+    public $group = array();
460
+    public $order = array();
461
+    public $default_order = array();
462
+    public $date = 'date';
463
+    public $hash = "";
464
+    public $in = "";
465
+    public $sous_requete = false;
466
+
467
+    /**
468
+     * Code PHP qui sera ajouté en tout début de la fonction de boucle
469
+     *
470
+     * Il sert à insérer le code calculant une hierarchie
471
+     *
472
+     * @var string
473
+     */
474
+    public $hierarchie = '';
475
+
476
+    // champs pour la construction du corps PHP
477
+
478
+    /**
479
+     * Description des sources de données de la boucle
480
+     *
481
+     * Description des données de la boucle issu de trouver_table
482
+     * dans le cadre de l'itérateur SQL et contenant au moins l'index 'field'.
483
+     *
484
+     * @see base_trouver_table_dist()
485
+     * @var array
486
+     */
487
+    public $show = array();
488
+
489
+    /**
490
+     * Nom de la table SQL principale de la boucle, sans son préfixe
491
+     *
492
+     * @var string
493
+     */
494
+    public $id_table;
495
+
496
+    /**
497
+     * Nom de la clé primaire de la table SQL principale de la boucle
498
+     *
499
+     * @var string
500
+     */
501
+    public $primary;
502
+
503
+    /**
504
+     * Code PHP compilé de la boucle
505
+     *
506
+     * @var string
507
+     */
508
+    public $return;
509
+
510
+    public $numrows = false;
511
+    public $cptrows = false;
512
+
513
+    /**
514
+     * Description du squelette
515
+     *
516
+     * Sert pour la gestion d'erreur et la production de code dependant du contexte
517
+     *
518
+     * Peut contenir les index :
519
+     *
520
+     * - nom : Nom du fichier de cache
521
+     * - gram : Nom de la grammaire du squelette (détermine le phraseur à utiliser)
522
+     * - sourcefile : Chemin du squelette
523
+     * - squelette : Code du squelette
524
+     * - id_mere : Identifiant de la boucle parente
525
+     * - documents : Pour embed et img dans les textes
526
+     * - session : Pour un cache sessionné par auteur
527
+     * - niv : Niveau de tabulation
528
+     *
529
+     * @var array
530
+     */
531
+    public $descr = array();
532
+
533
+    /**
534
+     * Numéro de ligne dans le code source du squelette
535
+     *
536
+     * @var int
537
+     */
538
+    public $ligne = 0;
539
+
540
+
541
+    public $modificateur = array(); // table pour stocker les modificateurs de boucle tels que tout, plat ..., utilisable par les plugins egalement
542
+
543
+    /**
544
+     * Type d'itérateur utilisé pour cette boucle
545
+     *
546
+     * - 'SQL' dans le cadre d'une boucle sur une table SQL
547
+     * - 'DATA' pour l'itérateur DATA, ...
548
+     *
549
+     * @var string
550
+     */
551
+    public $iterateur = ''; // type d'iterateur
552
+
553
+    /**
554
+     * @var array $debug Textes qui seront insérés dans l’entête de boucle du mode debug
555
+     */
556
+    public $debug = [];
557
+
558
+    // obsoletes, conserves provisoirement pour compatibilite
559
+    public $tout = false;
560
+    public $plat = false;
561
+    public $lien = false;
562 562
 }
563 563
 
564 564
 /**
@@ -569,56 +569,56 @@  discard block
 block discarded – undo
569 569
  * @package SPIP\Core\Compilateur\AST
570 570
  **/
571 571
 class Critere {
572
-	/**
573
-	 * Type de noeud
574
-	 *
575
-	 * @var string
576
-	 */
577
-	public $type = 'critere';
578
-
579
-	/**
580
-	 * Opérateur (>, <, >=, IN, ...)
581
-	 *
582
-	 * @var null|string
583
-	 */
584
-	public $op;
585
-
586
-	/**
587
-	 * Présence d'une négation (truc !op valeur)
588
-	 *
589
-	 * @var null|string
590
-	 */
591
-	public $not;
592
-
593
-	/**
594
-	 * Présence d'une exclusion (!truc op valeur)
595
-	 *
596
-	 * @var null|string
597
-	 */
598
-	public $exclus;
599
-
600
-	/**
601
-	 * Présence d'une condition dans le critère (truc ?)
602
-	 *
603
-	 * @var bool
604
-	 */
605
-	public $cond = false;
606
-
607
-	/**
608
-	 * Paramètres du critère
609
-	 * - $param[0] : élément avant l'opérateur
610
-	 * - $param[1..n] : éléments après l'opérateur
611
-	 *
612
-	 * @var array
613
-	 */
614
-	public $param = array();
615
-
616
-	/**
617
-	 * Numéro de ligne dans le code source du squelette
618
-	 *
619
-	 * @var int
620
-	 */
621
-	public $ligne = 0;
572
+    /**
573
+     * Type de noeud
574
+     *
575
+     * @var string
576
+     */
577
+    public $type = 'critere';
578
+
579
+    /**
580
+     * Opérateur (>, <, >=, IN, ...)
581
+     *
582
+     * @var null|string
583
+     */
584
+    public $op;
585
+
586
+    /**
587
+     * Présence d'une négation (truc !op valeur)
588
+     *
589
+     * @var null|string
590
+     */
591
+    public $not;
592
+
593
+    /**
594
+     * Présence d'une exclusion (!truc op valeur)
595
+     *
596
+     * @var null|string
597
+     */
598
+    public $exclus;
599
+
600
+    /**
601
+     * Présence d'une condition dans le critère (truc ?)
602
+     *
603
+     * @var bool
604
+     */
605
+    public $cond = false;
606
+
607
+    /**
608
+     * Paramètres du critère
609
+     * - $param[0] : élément avant l'opérateur
610
+     * - $param[1..n] : éléments après l'opérateur
611
+     *
612
+     * @var array
613
+     */
614
+    public $param = array();
615
+
616
+    /**
617
+     * Numéro de ligne dans le code source du squelette
618
+     *
619
+     * @var int
620
+     */
621
+    public $ligne = 0;
622 622
 }
623 623
 
624 624
 /**
@@ -627,139 +627,139 @@  discard block
 block discarded – undo
627 627
  * @package SPIP\Core\Compilateur\AST
628 628
  **/
629 629
 class Champ {
630
-	/**
631
-	 * Type de noeud
632
-	 *
633
-	 * @var string
634
-	 */
635
-	public $type = 'champ';
636
-
637
-	/**
638
-	 * Nom du champ demandé. Exemple 'ID_ARTICLE'
639
-	 *
640
-	 * @var string|null
641
-	 */
642
-	public $nom_champ;
643
-
644
-	/**
645
-	 * Identifiant de la boucle parente si explicité
646
-	 *
647
-	 * @var string|null
648
-	 */
649
-	public $nom_boucle = '';
650
-
651
-	/**
652
-	 * Partie optionnelle avant
653
-	 *
654
-	 * @var null|string|array
655
-	 */
656
-	public $avant;
657
-
658
-	/**
659
-	 * Partie optionnelle après
660
-	 *
661
-	 * @var null|string|array
662
-	 */
663
-	public $apres;
664
-
665
-	/**
666
-	 * Étoiles : annuler des automatismes
667
-	 *
668
-	 * - '*' annule les filtres automatiques
669
-	 * - '**' annule en plus les protections de scripts
670
-	 *
671
-	 * @var null|string
672
-	 */
673
-	public $etoile;
674
-
675
-	/**
676
-	 * Arguments et filtres explicites sur la balise
677
-	 *
678
-	 * - $param[0] contient les arguments de la balise
679
-	 * - $param[1..n] contient les filtres à appliquer à la balise
680
-	 *
681
-	 * @var array
682
-	 */
683
-	public $param = array();
684
-
685
-	/**
686
-	 * Source des filtres  (compatibilité) (?)
687
-	 *
688
-	 * @var array|null
689
-	 */
690
-	public $fonctions = array();
691
-
692
-	/**
693
-	 * Identifiant de la boucle
694
-	 *
695
-	 * @var string
696
-	 */
697
-	public $id_boucle = '';
698
-
699
-	/**
700
-	 * AST du squelette, liste de toutes les boucles
701
-	 *
702
-	 * @var Boucles[]
703
-	 */
704
-	public $boucles;
705
-
706
-	/**
707
-	 * Alias de table d'application de la requête ou nom complet de la table SQL
708
-	 *
709
-	 * @var string|null
710
-	 */
711
-	public $type_requete;
712
-
713
-	/**
714
-	 * Résultat de la compilation: toujours une expression PHP
715
-	 *
716
-	 * @var string
717
-	 */
718
-	public $code = '';
719
-
720
-	/**
721
-	 * Interdire les scripts
722
-	 *
723
-	 * false si on est sûr de cette balise
724
-	 *
725
-	 * @see interdire_scripts()
726
-	 * @var bool
727
-	 */
728
-	public $interdire_scripts = true;
729
-
730
-	/**
731
-	 * Description du squelette
732
-	 *
733
-	 * Sert pour la gestion d'erreur et la production de code dependant du contexte
734
-	 *
735
-	 * Peut contenir les index :
736
-	 *
737
-	 * - nom : Nom du fichier de cache
738
-	 * - gram : Nom de la grammaire du squelette (détermine le phraseur à utiliser)
739
-	 * - sourcefile : Chemin du squelette
740
-	 * - squelette : Code du squelette
741
-	 * - id_mere : Identifiant de la boucle parente
742
-	 * - documents : Pour embed et img dans les textes
743
-	 * - session : Pour un cache sessionné par auteur
744
-	 * - niv : Niveau de tabulation
745
-	 *
746
-	 * @var array
747
-	 */
748
-	public $descr = array();
749
-
750
-	/**
751
-	 * Numéro de ligne dans le code source du squelette
752
-	 *
753
-	 * @var int
754
-	 */
755
-	public $ligne = 0;
756
-
757
-	/**
758
-	 * Drapeau pour reperer les balises calculées par une fonction explicite
759
-	 *
760
-	 * @var bool
761
-	 */
762
-	public $balise_calculee = false;
630
+    /**
631
+     * Type de noeud
632
+     *
633
+     * @var string
634
+     */
635
+    public $type = 'champ';
636
+
637
+    /**
638
+     * Nom du champ demandé. Exemple 'ID_ARTICLE'
639
+     *
640
+     * @var string|null
641
+     */
642
+    public $nom_champ;
643
+
644
+    /**
645
+     * Identifiant de la boucle parente si explicité
646
+     *
647
+     * @var string|null
648
+     */
649
+    public $nom_boucle = '';
650
+
651
+    /**
652
+     * Partie optionnelle avant
653
+     *
654
+     * @var null|string|array
655
+     */
656
+    public $avant;
657
+
658
+    /**
659
+     * Partie optionnelle après
660
+     *
661
+     * @var null|string|array
662
+     */
663
+    public $apres;
664
+
665
+    /**
666
+     * Étoiles : annuler des automatismes
667
+     *
668
+     * - '*' annule les filtres automatiques
669
+     * - '**' annule en plus les protections de scripts
670
+     *
671
+     * @var null|string
672
+     */
673
+    public $etoile;
674
+
675
+    /**
676
+     * Arguments et filtres explicites sur la balise
677
+     *
678
+     * - $param[0] contient les arguments de la balise
679
+     * - $param[1..n] contient les filtres à appliquer à la balise
680
+     *
681
+     * @var array
682
+     */
683
+    public $param = array();
684
+
685
+    /**
686
+     * Source des filtres  (compatibilité) (?)
687
+     *
688
+     * @var array|null
689
+     */
690
+    public $fonctions = array();
691
+
692
+    /**
693
+     * Identifiant de la boucle
694
+     *
695
+     * @var string
696
+     */
697
+    public $id_boucle = '';
698
+
699
+    /**
700
+     * AST du squelette, liste de toutes les boucles
701
+     *
702
+     * @var Boucles[]
703
+     */
704
+    public $boucles;
705
+
706
+    /**
707
+     * Alias de table d'application de la requête ou nom complet de la table SQL
708
+     *
709
+     * @var string|null
710
+     */
711
+    public $type_requete;
712
+
713
+    /**
714
+     * Résultat de la compilation: toujours une expression PHP
715
+     *
716
+     * @var string
717
+     */
718
+    public $code = '';
719
+
720
+    /**
721
+     * Interdire les scripts
722
+     *
723
+     * false si on est sûr de cette balise
724
+     *
725
+     * @see interdire_scripts()
726
+     * @var bool
727
+     */
728
+    public $interdire_scripts = true;
729
+
730
+    /**
731
+     * Description du squelette
732
+     *
733
+     * Sert pour la gestion d'erreur et la production de code dependant du contexte
734
+     *
735
+     * Peut contenir les index :
736
+     *
737
+     * - nom : Nom du fichier de cache
738
+     * - gram : Nom de la grammaire du squelette (détermine le phraseur à utiliser)
739
+     * - sourcefile : Chemin du squelette
740
+     * - squelette : Code du squelette
741
+     * - id_mere : Identifiant de la boucle parente
742
+     * - documents : Pour embed et img dans les textes
743
+     * - session : Pour un cache sessionné par auteur
744
+     * - niv : Niveau de tabulation
745
+     *
746
+     * @var array
747
+     */
748
+    public $descr = array();
749
+
750
+    /**
751
+     * Numéro de ligne dans le code source du squelette
752
+     *
753
+     * @var int
754
+     */
755
+    public $ligne = 0;
756
+
757
+    /**
758
+     * Drapeau pour reperer les balises calculées par une fonction explicite
759
+     *
760
+     * @var bool
761
+     */
762
+    public $balise_calculee = false;
763 763
 }
764 764
 
765 765
 
@@ -767,123 +767,123 @@  discard block
 block discarded – undo
767 767
  * Description d'une chaîne de langue
768 768
  **/
769 769
 class Idiome {
770
-	/**
771
-	 * Type de noeud
772
-	 *
773
-	 * @var string
774
-	 */
775
-	public $type = 'idiome';
776
-
777
-	/**
778
-	 * Clé de traduction demandée. Exemple 'item_oui'
779
-	 *
780
-	 * @var string
781
-	 */
782
-	public $nom_champ = "";
783
-
784
-	/**
785
-	 * Module de langue où chercher la clé de traduction. Exemple 'medias'
786
-	 *
787
-	 * @var string
788
-	 */
789
-	public $module = "";
790
-
791
-	/**
792
-	 * Arguments à passer à la chaîne
793
-	 *
794
-	 * @var array
795
-	 */
796
-	public $arg = array();
797
-
798
-	/**
799
-	 * Filtres à appliquer au résultat
800
-	 *
801
-	 * @var array
802
-	 */
803
-	public $param = array();
804
-
805
-	/**
806
-	 * Source des filtres  (compatibilité) (?)
807
-	 *
808
-	 * @var array|null
809
-	 */
810
-	public $fonctions = array();
811
-
812
-	/**
813
-	 * Inutilisé, propriété générique de l'AST
814
-	 *
815
-	 * @var string|array
816
-	 */
817
-	public $avant = '';
818
-
819
-	/**
820
-	 * Inutilisé, propriété générique de l'AST
821
-	 *
822
-	 * @var string|array
823
-	 */
824
-	public $apres = '';
825
-
826
-	/**
827
-	 * Identifiant de la boucle
828
-	 *
829
-	 * @var string
830
-	 */
831
-	public $id_boucle = '';
832
-
833
-	/**
834
-	 * AST du squelette, liste de toutes les boucles
835
-	 *
836
-	 * @var Boucles[]
837
-	 */
838
-	public $boucles;
839
-
840
-	/**
841
-	 * Alias de table d'application de la requête ou nom complet de la table SQL
842
-	 *
843
-	 * @var string|null
844
-	 */
845
-	public $type_requete;
846
-
847
-	/**
848
-	 * Résultat de la compilation: toujours une expression PHP
849
-	 *
850
-	 * @var string
851
-	 */
852
-	public $code = '';
853
-
854
-	/**
855
-	 * Interdire les scripts
856
-	 *
857
-	 * @see interdire_scripts()
858
-	 * @var bool
859
-	 */
860
-	public $interdire_scripts = false;
861
-
862
-	/**
863
-	 * Description du squelette
864
-	 *
865
-	 * Sert pour la gestion d'erreur et la production de code dependant du contexte
866
-	 *
867
-	 * Peut contenir les index :
868
-	 * - nom : Nom du fichier de cache
869
-	 * - gram : Nom de la grammaire du squelette (détermine le phraseur à utiliser)
870
-	 * - sourcefile : Chemin du squelette
871
-	 * - squelette : Code du squelette
872
-	 * - id_mere : Identifiant de la boucle parente
873
-	 * - documents : Pour embed et img dans les textes
874
-	 * - session : Pour un cache sessionné par auteur
875
-	 * - niv : Niveau de tabulation
876
-	 *
877
-	 * @var array
878
-	 */
879
-	public $descr = array();
880
-
881
-	/**
882
-	 * Numéro de ligne dans le code source du squelette
883
-	 *
884
-	 * @var int
885
-	 */
886
-	public $ligne = 0;
770
+    /**
771
+     * Type de noeud
772
+     *
773
+     * @var string
774
+     */
775
+    public $type = 'idiome';
776
+
777
+    /**
778
+     * Clé de traduction demandée. Exemple 'item_oui'
779
+     *
780
+     * @var string
781
+     */
782
+    public $nom_champ = "";
783
+
784
+    /**
785
+     * Module de langue où chercher la clé de traduction. Exemple 'medias'
786
+     *
787
+     * @var string
788
+     */
789
+    public $module = "";
790
+
791
+    /**
792
+     * Arguments à passer à la chaîne
793
+     *
794
+     * @var array
795
+     */
796
+    public $arg = array();
797
+
798
+    /**
799
+     * Filtres à appliquer au résultat
800
+     *
801
+     * @var array
802
+     */
803
+    public $param = array();
804
+
805
+    /**
806
+     * Source des filtres  (compatibilité) (?)
807
+     *
808
+     * @var array|null
809
+     */
810
+    public $fonctions = array();
811
+
812
+    /**
813
+     * Inutilisé, propriété générique de l'AST
814
+     *
815
+     * @var string|array
816
+     */
817
+    public $avant = '';
818
+
819
+    /**
820
+     * Inutilisé, propriété générique de l'AST
821
+     *
822
+     * @var string|array
823
+     */
824
+    public $apres = '';
825
+
826
+    /**
827
+     * Identifiant de la boucle
828
+     *
829
+     * @var string
830
+     */
831
+    public $id_boucle = '';
832
+
833
+    /**
834
+     * AST du squelette, liste de toutes les boucles
835
+     *
836
+     * @var Boucles[]
837
+     */
838
+    public $boucles;
839
+
840
+    /**
841
+     * Alias de table d'application de la requête ou nom complet de la table SQL
842
+     *
843
+     * @var string|null
844
+     */
845
+    public $type_requete;
846
+
847
+    /**
848
+     * Résultat de la compilation: toujours une expression PHP
849
+     *
850
+     * @var string
851
+     */
852
+    public $code = '';
853
+
854
+    /**
855
+     * Interdire les scripts
856
+     *
857
+     * @see interdire_scripts()
858
+     * @var bool
859
+     */
860
+    public $interdire_scripts = false;
861
+
862
+    /**
863
+     * Description du squelette
864
+     *
865
+     * Sert pour la gestion d'erreur et la production de code dependant du contexte
866
+     *
867
+     * Peut contenir les index :
868
+     * - nom : Nom du fichier de cache
869
+     * - gram : Nom de la grammaire du squelette (détermine le phraseur à utiliser)
870
+     * - sourcefile : Chemin du squelette
871
+     * - squelette : Code du squelette
872
+     * - id_mere : Identifiant de la boucle parente
873
+     * - documents : Pour embed et img dans les textes
874
+     * - session : Pour un cache sessionné par auteur
875
+     * - niv : Niveau de tabulation
876
+     *
877
+     * @var array
878
+     */
879
+    public $descr = array();
880
+
881
+    /**
882
+     * Numéro de ligne dans le code source du squelette
883
+     *
884
+     * @var int
885
+     */
886
+    public $ligne = 0;
887 887
 }
888 888
 
889 889
 /**
@@ -892,28 +892,28 @@  discard block
 block discarded – undo
892 892
  * @package SPIP\Core\Compilateur\AST
893 893
  **/
894 894
 class Polyglotte {
895
-	/**
896
-	 * Type de noeud
897
-	 *
898
-	 * @var string
899
-	 */
900
-	public $type = 'polyglotte';
901
-
902
-	/**
903
-	 * Tableau des traductions possibles classées par langue
904
-	 *
905
-	 * Tableau code de langue => texte
906
-	 *
907
-	 * @var array
908
-	 */
909
-	public $traductions = array();
910
-
911
-	/**
912
-	 * Numéro de ligne dans le code source du squelette
913
-	 *
914
-	 * @var int
915
-	 */
916
-	public $ligne = 0;
895
+    /**
896
+     * Type de noeud
897
+     *
898
+     * @var string
899
+     */
900
+    public $type = 'polyglotte';
901
+
902
+    /**
903
+     * Tableau des traductions possibles classées par langue
904
+     *
905
+     * Tableau code de langue => texte
906
+     *
907
+     * @var array
908
+     */
909
+    public $traductions = array();
910
+
911
+    /**
912
+     * Numéro de ligne dans le code source du squelette
913
+     *
914
+     * @var int
915
+     */
916
+    public $ligne = 0;
917 917
 }
918 918
 
919 919
 
@@ -938,86 +938,86 @@  discard block
 block discarded – undo
938 938
  */
939 939
 function declarer_interfaces() {
940 940
 
941
-	$GLOBALS['table_des_tables']['articles'] = 'articles';
942
-	$GLOBALS['table_des_tables']['auteurs'] = 'auteurs';
943
-	$GLOBALS['table_des_tables']['rubriques'] = 'rubriques';
944
-	$GLOBALS['table_des_tables']['hierarchie'] = 'rubriques';
945
-
946
-	// definition des statuts de publication
947
-	$GLOBALS['table_statut'] = array();
948
-
949
-	//
950
-	// tableau des tables de jointures
951
-	// Ex: gestion du critere {id_mot} dans la boucle(ARTICLES)
952
-	$GLOBALS['tables_jointures'] = array();
953
-	$GLOBALS['tables_jointures']['spip_jobs'][] = 'jobs_liens';
954
-
955
-	// $GLOBALS['exceptions_des_jointures']['titre_mot'] = array('spip_mots', 'titre'); // pour exemple
956
-	$GLOBALS['exceptions_des_jointures']['profondeur'] = array('spip_rubriques', 'profondeur');
957
-
958
-
959
-	if (!defined('_TRAITEMENT_TYPO')) {
960
-		define('_TRAITEMENT_TYPO', 'typo(%s, "TYPO", $connect, $Pile[0])');
961
-	}
962
-	if (!defined('_TRAITEMENT_RACCOURCIS')) {
963
-		define('_TRAITEMENT_RACCOURCIS', 'propre(%s, $connect, $Pile[0])');
964
-	}
965
-	if (!defined('_TRAITEMENT_TYPO_SANS_NUMERO')) {
966
-		define('_TRAITEMENT_TYPO_SANS_NUMERO', 'supprimer_numero(typo(%s, "TYPO", $connect, $Pile[0]))');
967
-	}
968
-	$GLOBALS['table_des_traitements']['BIO'][] = _TRAITEMENT_RACCOURCIS;
969
-	$GLOBALS['table_des_traitements']['CHAPO'][] = _TRAITEMENT_RACCOURCIS;
970
-	$GLOBALS['table_des_traitements']['DATE'][] = 'normaliser_date(%s)';
971
-	$GLOBALS['table_des_traitements']['DATE_REDAC'][] = 'normaliser_date(%s)';
972
-	$GLOBALS['table_des_traitements']['DATE_MODIF'][] = 'normaliser_date(%s)';
973
-	$GLOBALS['table_des_traitements']['DATE_NOUVEAUTES'][] = 'normaliser_date(%s)';
974
-	$GLOBALS['table_des_traitements']['DESCRIPTIF'][] = _TRAITEMENT_RACCOURCIS;
975
-	$GLOBALS['table_des_traitements']['INTRODUCTION'][] = _TRAITEMENT_RACCOURCIS;
976
-	$GLOBALS['table_des_traitements']['NOM_SITE_SPIP'][] = _TRAITEMENT_TYPO;
977
-	$GLOBALS['table_des_traitements']['NOM'][] = _TRAITEMENT_TYPO_SANS_NUMERO;
978
-	$GLOBALS['table_des_traitements']['AUTEUR'][] = _TRAITEMENT_TYPO;
979
-	$GLOBALS['table_des_traitements']['PS'][] = _TRAITEMENT_RACCOURCIS;
980
-	$GLOBALS['table_des_traitements']['SOURCE'][] = _TRAITEMENT_TYPO;
981
-	$GLOBALS['table_des_traitements']['SOUSTITRE'][] = _TRAITEMENT_TYPO;
982
-	$GLOBALS['table_des_traitements']['SURTITRE'][] = _TRAITEMENT_TYPO;
983
-	$GLOBALS['table_des_traitements']['TAGS'][] = '%s';
984
-	$GLOBALS['table_des_traitements']['TEXTE'][] = _TRAITEMENT_RACCOURCIS;
985
-	$GLOBALS['table_des_traitements']['TITRE'][] = _TRAITEMENT_TYPO_SANS_NUMERO;
986
-	$GLOBALS['table_des_traitements']['TYPE'][] = _TRAITEMENT_TYPO;
987
-	$GLOBALS['table_des_traitements']['DESCRIPTIF_SITE_SPIP'][] = _TRAITEMENT_RACCOURCIS;
988
-	$GLOBALS['table_des_traitements']['SLOGAN_SITE_SPIP'][] = _TRAITEMENT_TYPO;
989
-	$GLOBALS['table_des_traitements']['ENV'][] = 'entites_html(%s,true)';
990
-
991
-	// valeur par defaut pour les balises non listees ci-dessus
992
-	$GLOBALS['table_des_traitements']['*'][] = false; // pas de traitement, mais permet au compilo de trouver la declaration suivante
993
-	// toujours securiser les DATA
994
-	$GLOBALS['table_des_traitements']['*']['DATA'] = 'safehtml(%s)';
995
-	// expliciter pour VALEUR qui est un champ calcule et ne sera pas protege par le catch-all *
996
-	$GLOBALS['table_des_traitements']['VALEUR']['DATA'] = 'safehtml(%s)';
997
-
998
-
999
-	// gerer l'affectation en 2 temps car si le pipe n'est pas encore declare, on ecrase les globales
1000
-	$interfaces = pipeline('declarer_tables_interfaces',
1001
-		array(
1002
-			'table_des_tables' => $GLOBALS['table_des_tables'],
1003
-			'exceptions_des_tables' => $GLOBALS['exceptions_des_tables'],
1004
-			'table_date' => $GLOBALS['table_date'],
1005
-			'table_titre' => $GLOBALS['table_titre'],
1006
-			'tables_jointures' => $GLOBALS['tables_jointures'],
1007
-			'exceptions_des_jointures' => $GLOBALS['exceptions_des_jointures'],
1008
-			'table_des_traitements' => $GLOBALS['table_des_traitements'],
1009
-			'table_statut' => $GLOBALS['table_statut'],
1010
-		));
1011
-	if ($interfaces) {
1012
-		$GLOBALS['table_des_tables'] = $interfaces['table_des_tables'];
1013
-		$GLOBALS['exceptions_des_tables'] = $interfaces['exceptions_des_tables'];
1014
-		$GLOBALS['table_date'] = $interfaces['table_date'];
1015
-		$GLOBALS['table_titre'] = $interfaces['table_titre'];
1016
-		$GLOBALS['tables_jointures'] = $interfaces['tables_jointures'];
1017
-		$GLOBALS['exceptions_des_jointures'] = $interfaces['exceptions_des_jointures'];
1018
-		$GLOBALS['table_des_traitements'] = $interfaces['table_des_traitements'];
1019
-		$GLOBALS['table_statut'] = $interfaces['table_statut'];
1020
-	}
941
+    $GLOBALS['table_des_tables']['articles'] = 'articles';
942
+    $GLOBALS['table_des_tables']['auteurs'] = 'auteurs';
943
+    $GLOBALS['table_des_tables']['rubriques'] = 'rubriques';
944
+    $GLOBALS['table_des_tables']['hierarchie'] = 'rubriques';
945
+
946
+    // definition des statuts de publication
947
+    $GLOBALS['table_statut'] = array();
948
+
949
+    //
950
+    // tableau des tables de jointures
951
+    // Ex: gestion du critere {id_mot} dans la boucle(ARTICLES)
952
+    $GLOBALS['tables_jointures'] = array();
953
+    $GLOBALS['tables_jointures']['spip_jobs'][] = 'jobs_liens';
954
+
955
+    // $GLOBALS['exceptions_des_jointures']['titre_mot'] = array('spip_mots', 'titre'); // pour exemple
956
+    $GLOBALS['exceptions_des_jointures']['profondeur'] = array('spip_rubriques', 'profondeur');
957
+
958
+
959
+    if (!defined('_TRAITEMENT_TYPO')) {
960
+        define('_TRAITEMENT_TYPO', 'typo(%s, "TYPO", $connect, $Pile[0])');
961
+    }
962
+    if (!defined('_TRAITEMENT_RACCOURCIS')) {
963
+        define('_TRAITEMENT_RACCOURCIS', 'propre(%s, $connect, $Pile[0])');
964
+    }
965
+    if (!defined('_TRAITEMENT_TYPO_SANS_NUMERO')) {
966
+        define('_TRAITEMENT_TYPO_SANS_NUMERO', 'supprimer_numero(typo(%s, "TYPO", $connect, $Pile[0]))');
967
+    }
968
+    $GLOBALS['table_des_traitements']['BIO'][] = _TRAITEMENT_RACCOURCIS;
969
+    $GLOBALS['table_des_traitements']['CHAPO'][] = _TRAITEMENT_RACCOURCIS;
970
+    $GLOBALS['table_des_traitements']['DATE'][] = 'normaliser_date(%s)';
971
+    $GLOBALS['table_des_traitements']['DATE_REDAC'][] = 'normaliser_date(%s)';
972
+    $GLOBALS['table_des_traitements']['DATE_MODIF'][] = 'normaliser_date(%s)';
973
+    $GLOBALS['table_des_traitements']['DATE_NOUVEAUTES'][] = 'normaliser_date(%s)';
974
+    $GLOBALS['table_des_traitements']['DESCRIPTIF'][] = _TRAITEMENT_RACCOURCIS;
975
+    $GLOBALS['table_des_traitements']['INTRODUCTION'][] = _TRAITEMENT_RACCOURCIS;
976
+    $GLOBALS['table_des_traitements']['NOM_SITE_SPIP'][] = _TRAITEMENT_TYPO;
977
+    $GLOBALS['table_des_traitements']['NOM'][] = _TRAITEMENT_TYPO_SANS_NUMERO;
978
+    $GLOBALS['table_des_traitements']['AUTEUR'][] = _TRAITEMENT_TYPO;
979
+    $GLOBALS['table_des_traitements']['PS'][] = _TRAITEMENT_RACCOURCIS;
980
+    $GLOBALS['table_des_traitements']['SOURCE'][] = _TRAITEMENT_TYPO;
981
+    $GLOBALS['table_des_traitements']['SOUSTITRE'][] = _TRAITEMENT_TYPO;
982
+    $GLOBALS['table_des_traitements']['SURTITRE'][] = _TRAITEMENT_TYPO;
983
+    $GLOBALS['table_des_traitements']['TAGS'][] = '%s';
984
+    $GLOBALS['table_des_traitements']['TEXTE'][] = _TRAITEMENT_RACCOURCIS;
985
+    $GLOBALS['table_des_traitements']['TITRE'][] = _TRAITEMENT_TYPO_SANS_NUMERO;
986
+    $GLOBALS['table_des_traitements']['TYPE'][] = _TRAITEMENT_TYPO;
987
+    $GLOBALS['table_des_traitements']['DESCRIPTIF_SITE_SPIP'][] = _TRAITEMENT_RACCOURCIS;
988
+    $GLOBALS['table_des_traitements']['SLOGAN_SITE_SPIP'][] = _TRAITEMENT_TYPO;
989
+    $GLOBALS['table_des_traitements']['ENV'][] = 'entites_html(%s,true)';
990
+
991
+    // valeur par defaut pour les balises non listees ci-dessus
992
+    $GLOBALS['table_des_traitements']['*'][] = false; // pas de traitement, mais permet au compilo de trouver la declaration suivante
993
+    // toujours securiser les DATA
994
+    $GLOBALS['table_des_traitements']['*']['DATA'] = 'safehtml(%s)';
995
+    // expliciter pour VALEUR qui est un champ calcule et ne sera pas protege par le catch-all *
996
+    $GLOBALS['table_des_traitements']['VALEUR']['DATA'] = 'safehtml(%s)';
997
+
998
+
999
+    // gerer l'affectation en 2 temps car si le pipe n'est pas encore declare, on ecrase les globales
1000
+    $interfaces = pipeline('declarer_tables_interfaces',
1001
+        array(
1002
+            'table_des_tables' => $GLOBALS['table_des_tables'],
1003
+            'exceptions_des_tables' => $GLOBALS['exceptions_des_tables'],
1004
+            'table_date' => $GLOBALS['table_date'],
1005
+            'table_titre' => $GLOBALS['table_titre'],
1006
+            'tables_jointures' => $GLOBALS['tables_jointures'],
1007
+            'exceptions_des_jointures' => $GLOBALS['exceptions_des_jointures'],
1008
+            'table_des_traitements' => $GLOBALS['table_des_traitements'],
1009
+            'table_statut' => $GLOBALS['table_statut'],
1010
+        ));
1011
+    if ($interfaces) {
1012
+        $GLOBALS['table_des_tables'] = $interfaces['table_des_tables'];
1013
+        $GLOBALS['exceptions_des_tables'] = $interfaces['exceptions_des_tables'];
1014
+        $GLOBALS['table_date'] = $interfaces['table_date'];
1015
+        $GLOBALS['table_titre'] = $interfaces['table_titre'];
1016
+        $GLOBALS['tables_jointures'] = $interfaces['tables_jointures'];
1017
+        $GLOBALS['exceptions_des_jointures'] = $interfaces['exceptions_des_jointures'];
1018
+        $GLOBALS['table_des_traitements'] = $interfaces['table_des_traitements'];
1019
+        $GLOBALS['table_statut'] = $interfaces['table_statut'];
1020
+    }
1021 1021
 }
1022 1022
 
1023 1023
 declarer_interfaces();
Please login to merge, or discard this patch.