Boucle
in package
Description d'une boucle
Table of Contents
Properties
- $altern : string|array<string|int, mixed>
- Partie alternative, si pas de résultat dans la boucle
- $apres : string|array<string|int, mixed>
- Partie optionnelle après
- $avant : string|array<string|int, mixed>
- Partie optionnelle avant
- $code : string
- Résultat de la compilation (?) (sert au débusqueur)
- $cptrows : mixed
- $criteres : string|array<string|int, Critere>
- Critères de la boucle
- $date : string
- $debug : array<string|int, mixed>
- $default_order : array<string|int, mixed>
- $descr : array<string|int, mixed>
- Description du squelette
- $doublons : string
- Nom de la variable PHP stockant le noms de doublons utilisés "$doublons_index"
- $externe : string
- Identifiant d'une boucle qui appelle celle-ci de manière récursive
- $fonctions : array<string|int, mixed>
- Source des filtres (compatibilité) (?)
- $from : array<string|int, string>
- Liste des alias / tables SQL utilisées dans la boucle
- $from_type : array<string|int, string>
- Liste des alias / type de jointures utilisées dans la boucle
- $group : array<string|int, mixed>
- $hash : string
- $having : array<string|int, mixed>
- $hierarchie : string
- Code PHP qui sera ajouté en tout début de la fonction de boucle
- $id_boucle : string
- Identifiant de la boucle
- $id_parent : string
- Identifiant de la boucle parente
- $id_table : string
- Nom de la table SQL principale de la boucle, sans son préfixe
- $in : mixed
- $index_champ : array<string|int, mixed>
- Index de la boucle dont le champ présent dans cette boucle est originaire, notamment si le champ a été trouve dans une boucle parente
- $iterateur : string
- Type d'itérateur utilisé pour cette boucle
- $join : array<string|int, mixed>
- $jointures : array<string|int, mixed>
- Liste des jointures possibles avec cette table
- $jointures_explicites : string|bool
- Jointures explicites avec cette table
- $lang_select : string
- La boucle doit-elle sélectionner la langue ?
- $lien : mixed
- $ligne : int
- Numéro de ligne dans le code source du squelette
- $limit : mixed
- $milieu : string|array<string|int, mixed>
- Pour chaque élément
- $mode_partie : string
- Code PHP ajouté avant l'itération de boucle.
- $modificateur : array<string, mixed>
- table pour stocker les modificateurs de boucle tels que tout, plat ..., utilisable par les plugins egalement
- $nom : string
- Un nom explicite qui peut être affecté manuellement à certaines boucles générées
- $numrows : mixed
- $order : array<string|int, mixed>
- $param : false|array<string|int, mixed>
- Paramètres de la boucle
- $partie : string
- Code PHP ajouté au début de chaque itération de boucle.
- $plat : mixed
- $postaff : string|array<string|int, mixed>
- Partie apres toujours affichee
- $preaff : string|array<string|int, mixed>
- Partie avant toujours affichee
- $primary : string
- Nom de la clé primaire de la table SQL principale de la boucle
- $return : string|false
- Code PHP compilé de la boucle
- $select : array<string|int, string>
- Liste des champs à récupérer par la boucle
- $separateur : array<string|int, string>
- Textes insérés entre 2 éléments de boucle (critère inter)
- $show : array<string|int, mixed>
- Description des sources de données de la boucle
- $sous_requete : bool
- $sql_serveur : string
- Nom du fichier de connexion
- $table_optionnelle : bool
- La table est elle optionnelle ?
- $total_parties : string
- Nombre de divisions de la boucle, d'éléments à afficher, ou de soustractions d'éléments à faire
- $tout : mixed
- $type : string
- Type de noeud
- $type_requete : string|false|null
- Alias de table d'application de la requête ou nom complet de la table SQL
- $type_table_optionnelle : string
- $where : array<string|int, mixed>
- Liste des conditions WHERE de la boucle
Properties
$altern
Partie alternative, si pas de résultat dans la boucle
public
string|array<string|int, mixed>
$altern
= ''
$apres
Partie optionnelle après
public
string|array<string|int, mixed>
$apres
= ''
$avant
Partie optionnelle avant
public
string|array<string|int, mixed>
$avant
= ''
$code
Résultat de la compilation (?) (sert au débusqueur)
public
string
$code
= ''
$cptrows
public
mixed
$cptrows
= false
$criteres
Critères de la boucle
public
string|array<string|int, Critere>
$criteres
= []
FIXME: type array unique.
- string: phrasage (code brut). Il reste si erreur de critère
- array: analyse correcte des critères...
$date
public
string
$date
= 'date'
$debug
public
array<string|int, mixed>
$debug
= []
Textes qui seront insérés dans l’entête de boucle du mode debug
$default_order
public
array<string|int, mixed>
$default_order
= []
$descr
Description du squelette
public
array<string|int, mixed>
$descr
= []
Sert pour la gestion d'erreur et la production de code dependant du contexte
Peut contenir les index :
- nom : Nom du fichier de cache
- gram : Nom de la grammaire du squelette (détermine le phraseur à utiliser)
- sourcefile : Chemin du squelette
- squelette : Code du squelette
- id_mere : Identifiant de la boucle parente
- documents : Pour embed et img dans les textes
- session : Pour un cache sessionné par auteur
- niv : Niveau de tabulation
$doublons
Nom de la variable PHP stockant le noms de doublons utilisés "$doublons_index"
public
string
$doublons
= ''
$externe
Identifiant d'une boucle qui appelle celle-ci de manière récursive
public
string
$externe
= ''
Si une boucle est appelée de manière récursive quelque part par une autre boucle comme <BOUCLE_rec(boucle_identifiant) />, cette boucle (identifiant) reçoit dans cette propriété l'identifiant de l'appelant (rec)
$fonctions
Source des filtres (compatibilité) (?)
public
array<string|int, mixed>
$fonctions
= []
$from
Liste des alias / tables SQL utilisées dans la boucle
public
array<string|int, string>
$from
= []
L'index est un identifiant (xx dans spip_xx assez souvent) qui servira d'alias au nom de la table ; la valeur est le nom de la table SQL désirée.
L'index 0 peut définir le type de sources de données de l'itérateur DATA
$from_type
Liste des alias / type de jointures utilisées dans la boucle
public
array<string|int, string>
$from_type
= []
L'index est le nom d'alias (comme pour la propriété $from), et la valeur un type de jointure parmi 'INNER', 'LEFT', 'RIGHT', 'OUTER'.
Lorsque le type n'est pas déclaré pour un alias, c'est 'INNER' qui sera utilisé par défaut (créant donc un INNER JOIN).
$group
public
array<string|int, mixed>
$group
= []
$hash
public
string
$hash
= ''
$having
public
array<string|int, mixed>
$having
= []
$hierarchie
Code PHP qui sera ajouté en tout début de la fonction de boucle
public
string
$hierarchie
= ''
Il sert à insérer le code calculant une hierarchie
$id_boucle
Identifiant de la boucle
public
string
$id_boucle
$id_parent
Identifiant de la boucle parente
public
string
$id_parent
= ''
$id_table
Nom de la table SQL principale de la boucle, sans son préfixe
public
string
$id_table
= ''
$in
public
mixed
$in
= ''
$index_champ
Index de la boucle dont le champ présent dans cette boucle est originaire, notamment si le champ a été trouve dans une boucle parente
public
array<string|int, mixed>
$index_champ
= []
Tableau nom du champ => index de boucle
$iterateur
Type d'itérateur utilisé pour cette boucle
public
string
$iterateur
= ''
- 'SQL' dans le cadre d'une boucle sur une table SQL
- 'DATA' pour l'itérateur DATA, ...
$join
public
array<string|int, mixed>
$join
= []
$jointures
Liste des jointures possibles avec cette table
public
array<string|int, mixed>
$jointures
= []
Les jointures par défaut de la table sont complétées en priorité des jointures déclarées explicitement sur la boucle
Tags
$jointures_explicites
Jointures explicites avec cette table
public
string|bool
$jointures_explicites
= false
Ces jointures sont utilisées en priorité par rapport aux jointures normales possibles pour retrouver les colonnes demandées extérieures à la boucle.
$lang_select
La boucle doit-elle sélectionner la langue ?
public
string
$lang_select
= ''
Valeurs : '', 'oui', 'non'
$lien
public
mixed
$lien
= false
$ligne
Numéro de ligne dans le code source du squelette
public
int
$ligne
= 0
$limit
public
mixed
$limit
= ''
$milieu
Pour chaque élément
public
string|array<string|int, mixed>
$milieu
= ''
$mode_partie
Code PHP ajouté avant l'itération de boucle.
public
string
$mode_partie
= ''
Utilisé entre autre par les critères {pagination}, {a,b}, {a/b} pour initialiser les variables de début et de fin d'itération.
$modificateur
table pour stocker les modificateurs de boucle tels que tout, plat ..., utilisable par les plugins egalement
public
array<string, mixed>
$modificateur
= []
$nom
Un nom explicite qui peut être affecté manuellement à certaines boucles générées
public
string
$nom
= ''
$numrows
public
mixed
$numrows
= false
$order
public
array<string|int, mixed>
$order
= []
$param
Paramètres de la boucle
public
false|array<string|int, mixed>
$param
= []
Description des paramètres passés à la boucle, qui servent ensuite au calcul des critères
FIXME: type unique.
- false: erreur de syntaxe
$partie
Code PHP ajouté au début de chaque itération de boucle.
public
string
$partie
= ''
Utilisé entre autre par les critères {pagination}, {n-a,b}, {a/b}...
$plat
public
mixed
$plat
= false
$postaff
Partie apres toujours affichee
public
string|array<string|int, mixed>
$postaff
= ''
$preaff
Partie avant toujours affichee
public
string|array<string|int, mixed>
$preaff
= ''
$primary
Nom de la clé primaire de la table SQL principale de la boucle
public
string
$primary
= ''
$return
Code PHP compilé de la boucle
public
string|false
$return
= ''
FIXME: un seul type (string ?)
- false: boucle fautive ?
$select
Liste des champs à récupérer par la boucle
public
array<string|int, string>
$select
= []
Expression 'table.nom_champ' ou calculée 'nom_champ AS x'
$separateur
Textes insérés entre 2 éléments de boucle (critère inter)
public
array<string|int, string>
$separateur
= []
$show
Description des sources de données de la boucle
public
array<string|int, mixed>
$show
= []
Description des données de la boucle issu de trouver_table dans le cadre de l'itérateur SQL et contenant au moins l'index 'field'.
Tags
$sous_requete
public
bool
$sous_requete
= false
$sql_serveur
Nom du fichier de connexion
public
string
$sql_serveur
= ''
$table_optionnelle
La table est elle optionnelle ?
public
bool
$table_optionnelle
= false
Si oui, aucune erreur ne sera générée si la table demandée n'est pas présente
$total_parties
Nombre de divisions de la boucle, d'éléments à afficher, ou de soustractions d'éléments à faire
public
string
$total_parties
= ''
Dans les critères limitant le nombre d'éléments affichés {a,b}, {a,n-b}, {a/b}, {pagination b}, b est affecté à total_parties.
$tout
public
mixed
$tout
= false
$type
Type de noeud
public
string
$type
= 'boucle'
$type_requete
Alias de table d'application de la requête ou nom complet de la table SQL
public
string|false|null
$type_requete
= null
FIXME: un seul typage (string ?)
$type_table_optionnelle
public
string
$type_table_optionnelle
= ''
$where
Liste des conditions WHERE de la boucle
public
array<string|int, mixed>
$where
= []
Permet de restreindre les éléments retournés par une boucle en fonctions des conditions transmises dans ce tableau.
Ce tableau peut avoir plusieurs niveaux de profondeur.
Les éléments du premier niveau sont reliés par des AND, donc chaque élément ajouté directement au where par $boucle->where[] = array(...) ou $boucle->where[] = "'expression'" est une condition AND en plus.
Par contre, lorsqu'on indique un tableau, il peut décrire des relations internes différentes. Soit $expr un tableau d'expressions quelconques de 3 valeurs : $expr = array(operateur, val1, val2)
Ces 3 valeurs sont des expressions PHP. L'index 0 désigne l'opérateur à réaliser tel que :
- "'='" , "'>='", "'<'", "'IN'", "'REGEXP'", "'LIKE'", ... : val1 et val2 sont des champs et valeurs à utiliser dans la comparaison suivant cet ordre : "val1 operateur val2". Exemple : $boucle->where[] = array("'='", "'articles.statut'", "'"publie"'");
- "'AND'", "'OR'", "'NOT'" : dans ce cas val1 et val2 sont également des expressions de comparaison complètes, et peuvent être eux-même des tableaux comme $expr Exemples : $boucle->where[] = array("'OR'", $expr1, $expr2); $boucle->where[] = array("'NOT'", $expr); // val2 n'existe pas avec NOT
D'autres noms sont possibles pour l'opérateur (le nombre de valeurs diffère) :
- "'SELF'", "'SUBSELECT'" : indiquent des sous requêtes
- "'?'" : indique une condition à faire évaluer (val1 ? val2 : val3)