Documentation du code de SPIP et de ses plugins

SPIP

Boucle
in package

Description d'une boucle

Table of Contents

$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, mixed>
Liste des alias / tables SQL utilisées dans la boucle
$from_type  : array<string|int, mixed>
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|int, 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, mixed>
Liste des champs à récupérer par la boucle
$separateur  : array<string|int, mixed>
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
$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 = ''

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

$debug

public array<string|int, mixed> $debug = []

Textes qui seront insérés dans l’entête de boucle du mode debug

$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, mixed> $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, mixed> $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).

$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_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 = ''

$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, ...

$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
see
base_trouver_table_dist()

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

$ligne

Numéro de ligne dans le code source du squelette

public int $ligne = 0

$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|int, mixed> $modificateur = []

$nom

Un nom explicite qui peut être affecté manuellement à certaines boucles générées

public string $nom = ''

$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}...

$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, mixed> $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, mixed> $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
see
base_trouver_table_dist()

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

$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 ?)

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

Search results