Classe \Boucle

Description d'une boucle

Source

Liste des propriétés

string | array apres = ''
string | array avant = ''
unknown cptrows = false
array<mixed,\Critere> criteres = array()
unknown date = 'date'
unknown default_order = array()

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
array descr = array()

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)

string externe = ''

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

array<mixed,string> from = array()

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).

array<mixed,string> from_type = array()
unknown group = array()
unknown hash = ""
unknown having = array()

Il sert à insérer le code calculant une hierarchie

string hierarchie = ''
unknown in = ""
  • 'SQL' dans le cadre d'une boucle sur une table SQL
  • 'DATA' pour l'itérateur DATA, ...
string iterateur = ''
unknown join = array()

Les jointures par défaut de la table sont complétées en priorité des jointures déclarées explicitement sur la boucle

array jointures = array()

Voir également

Ces jointures sont utilisées en priorité par rapport aux jointures normales possibles pour retrouver les colonnes demandées extérieures à la boucle.

string | boolean jointures_explicites = false
unknown lien = false
unknown limit
string | array milieu = ''

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.

string mode_partie = ''
unknown modificateur = array()
unknown numrows = false
unknown order = array()

Description des paramètres passés à la boucle, qui servent ensuite au calcul des critères

array param = array()

Utilisé entre autre par les critères {pagination}, {n-a,b}, {a/b}...

string partie = ""
unknown plat = false

Expression 'table.nom_champ' ou calculée 'nom_champ AS x'

array<mixed,string> select = array()

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'.

array show = array()

Voir également

unknown sous_requete = false
boolean statut = false

Deprecated

  • Remplacé par $boucle->modificateur['criteres']['statut']

Si oui, aucune erreur ne sera générée si la table demandée n'est pas présente

boolean table_optionnelle = false

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.

string total_parties = ""
unknown tout = false
string type = 'boucle'

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)
array where = array()