composer.php
SPIP, Système de publication pour l'internet
Copyright © avec tendresse depuis 2001 Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James
Ce programme est un logiciel libre distribué sous licence GNU/GPL.
Table of Contents
Constants
- CODE_INCLURE_BALISE = '<' . '?php include_once("%s"); if ($lang_select = "%s") $lang_select = lang_select($lang_select); inserer_balise_dynamique(balise_%s_dyn(%s), array(%s)); if ($lang_select) lang_select(); ?' . '>'
- Code PHP pour inclure une balise dynamique à l'exécution d'une page
Functions
- public_composer_dist() : string|null
- Charge et retourne un composeur ou '' s'il est inconnu. Le compile au besoin Charge egalement un fichier homonyme de celui du squelette mais de suffixe '_fonctions.php' pouvant contenir: 1. des filtres 2. des fonctions de traduction de balise, de critere et de boucle 3. des declaration de tables SQL supplementaires Toutefois pour 2. et 3. preferer la technique de la surcharge
- squelette_assemble_code_fonctions() : string
- Assemble le tableau de code des fonctions des boucles en un code complet correspondant au squelette
- squelette_compile_obsolete() : bool
- Determiner si le squelette compilé en PHP est obsolete ou non
- invalideur_session() : mixed
- analyse_resultat_skel() : array<string|int, mixed>
- Collecter des informations sur le code produit par le calcul d'un squelette, nottament : - les headers, que l'on collecte pour envoyer tout à la fin via le pipeline affichage_entetes_final - la durée de cache spécifiéer via la balise #CACHE (implémentée via un header php) - les filtres insérés via la balise #FILTRE (implémentée via un header php) - le type de code produit : statique html, ou php qui nécessite un eval final (typiquement si <INCLURE> ou balises dynamiques)
- synthetiser_balise_dynamique() : string
- Synthétise une balise dynamique : crée l'appel à l'inclusion en transmettant les arguments calculés et le contexte de compilation.
- argumenter_squelette() : string
- Crée le code PHP pour transmettre des arguments (généralement pour une inclusion)
- executer_balise_dynamique_dans_un_modele() : string
- Fonction proxy pour retarder le calcul d'un formulaire si on est au depart dans un modele
- executer_balise_dynamique() : string
- Calcule et retourne le code PHP retourné par l'exécution d'une balise dynamique.
- chercher_balise_generique() : array<string|int, mixed>|null
- Pour une balise "NOM" donné, cherche s'il existe une balise générique qui peut la traiter
- lang_select_public() : mixed
- Selectionner la langue de l'objet dans la boucle
- nettoyer_env_doublons() : mixed
- match_self() : string|bool
- Cherche la présence d'un opérateur SELF ou SUBSELECT
- remplace_sous_requete() : array<string|int, mixed>|string
- Remplace une condition décrivant une sous requête par son code
- trouver_sous_requetes() : array<string|int, mixed>
- Sépare les conditions de boucles simples de celles possédant des sous-requêtes.
- calculer_select() : mixed
- preparer_calculer_select() : array{select: array, from: array, where: array, orderby: string, having: array, serveur: string, requeter: bool|array|string, debug: array}
- Calcule une requête et l’exécute
- executer_calculer_select() : mixed
- compter_calculer_select() : int
- calculer_where_to_string() : string
- Analogue a calculer_mysql_expression et autre (a unifier ?)
- calculer_jointnul() : mixed
- reinjecte_joint() : mixed
- remplacer_jointnul() : mixed
- calculer_nom_fonction_squelette_compile() : string
- calcul du nom de la fonction principale du squelette compilé
Constants
CODE_INCLURE_BALISE
Code PHP pour inclure une balise dynamique à l'exécution d'une page
public
mixed
CODE_INCLURE_BALISE
= '<' . '?php
include_once("%s");
if ($lang_select = "%s") $lang_select = lang_select($lang_select);
inserer_balise_dynamique(balise_%s_dyn(%s), array(%s));
if ($lang_select) lang_select();
?' . '>'
Functions
public_composer_dist()
Charge et retourne un composeur ou '' s'il est inconnu. Le compile au besoin Charge egalement un fichier homonyme de celui du squelette mais de suffixe '_fonctions.php' pouvant contenir: 1. des filtres 2. des fonctions de traduction de balise, de critere et de boucle 3. des declaration de tables SQL supplementaires Toutefois pour 2. et 3. preferer la technique de la surcharge
public_composer_dist(string $squelette[, array<string|int, mixed> $options = [] ][, string $connect = '' ]) : string|null
Parameters
- $squelette : string
- $options : array<string|int, mixed> = []
-
?string $ext (par defaut 'html') ?string $gram (par defaut 'html') ?string $sourcefile (par defaut {$squelette}.{$mime_type}) ?string $var_mode ?string $var_no_cache
- $connect : string = ''
Return values
string|null —nom de la fonction php principale du squelette compilé
squelette_assemble_code_fonctions()
Assemble le tableau de code des fonctions des boucles en un code complet correspondant au squelette
squelette_assemble_code_fonctions(string $source_code, string $sourcefile, array<string|int, mixed> $code_php_fonctions) : string
Parameters
- $source_code : string
- $sourcefile : string
- $code_php_fonctions : array<string|int, mixed>
Return values
stringsquelette_compile_obsolete()
Determiner si le squelette compilé en PHP est obsolete ou non
squelette_compile_obsolete(string $phpfile, string $sourcefile[, string|null $var_mode = null ]) : bool
Parameters
- $phpfile : string
- $sourcefile : string
- $var_mode : string|null = null
Return values
boolinvalideur_session()
invalideur_session(mixed &$Cache[, mixed $code = null ]) : mixed
Parameters
- $Cache : mixed
- $code : mixed = null
analyse_resultat_skel()
Collecter des informations sur le code produit par le calcul d'un squelette, nottament : - les headers, que l'on collecte pour envoyer tout à la fin via le pipeline affichage_entetes_final - la durée de cache spécifiéer via la balise #CACHE (implémentée via un header php) - les filtres insérés via la balise #FILTRE (implémentée via un header php) - le type de code produit : statique html, ou php qui nécessite un eval final (typiquement si <INCLURE> ou balises dynamiques)
analyse_resultat_skel(string $nom, array<string|int, mixed> $cache, string $corps[, string $sourcefile = '' ]) : array<string|int, mixed>
Parameters
- $nom : string
- $cache : array<string|int, mixed>
- $corps : string
- $sourcefile : string = ''
Return values
array<string|int, mixed>synthetiser_balise_dynamique()
Synthétise une balise dynamique : crée l'appel à l'inclusion en transmettant les arguments calculés et le contexte de compilation.
synthetiser_balise_dynamique(string $nom, array<string|int, mixed> $args, string $file, array<string|int, mixed> $context_compil) : string
Parameters
- $nom : string
-
Nom de la balise dynamique
- $args : array<string|int, mixed>
-
Liste des arguments calculés
- $file : string
-
Chemin du fichier de squelette à inclure
- $context_compil : array<string|int, mixed>
-
Tableau d'informations sur la compilation
Tags
Return values
string —Code PHP pour inclure le squelette de la balise dynamique
argumenter_squelette()
Crée le code PHP pour transmettre des arguments (généralement pour une inclusion)
argumenter_squelette(array<string|int, mixed>|string $v) : string
Parameters
- $v : array<string|int, mixed>|string
-
Arguments à transmettre :
- string : un simple texte à faire écrire
- array : couples ('nom' => 'valeur') liste des arguments et leur valeur
Tags
Return values
string —- Code PHP créant le tableau des arguments à transmettre,
- ou texte entre quote
'(si$vétait une chaîne)
executer_balise_dynamique_dans_un_modele()
Fonction proxy pour retarder le calcul d'un formulaire si on est au depart dans un modele
executer_balise_dynamique_dans_un_modele(mixed ...$args) : string
un modele est toujours inséré en texte dans son contenant donc si on est dans le public avec un cache on va perdre le dynamisme et on risque de mettre en cache les valeurs pre-remplies du formulaire on passe donc par une fonction proxy qui si besoin va collecter les arguments et injecter le PHP qui va appeler la fonction pour generer le formulaire au lieu de directement la fonction (dans l'espace prive on a pas de cache, donc pas de soucis (et un leak serait moins grave))
Parameters
- $args : mixed
Tags
Return values
stringexecuter_balise_dynamique()
Calcule et retourne le code PHP retourné par l'exécution d'une balise dynamique.
executer_balise_dynamique(string $nom, array<string|int, mixed> $args, array<string|int, mixed> $context_compil) : string
Vérifier les arguments et filtres et calcule le code PHP à inclure.
- charge le fichier PHP de la balise dynamique dans le répertoire
balise/, soit du nom complet de la balise, soit d'un nom générique (comme 'formulaire_.php'). Dans ce dernier cas, le nom de la balise est ajouté en premier argument. - appelle une éventuelle fonction de traitement des arguments
balise_NOM_stat() - crée le code PHP de la balise si une fonction
balise_NOM_dyn()(ou variantes) est effectivement trouvée.
Parameters
- $nom : string
-
Nom de la balise dynamique
- $args : array<string|int, mixed>
-
Liste des arguments calculés de la balise
- $context_compil : array<string|int, mixed>
-
Tableau d'informations sur la compilation
Tags
Return values
string —Code PHP d'exécutant l'inclusion du squelette (ou texte) de la balise dynamique
chercher_balise_generique()
Pour une balise "NOM" donné, cherche s'il existe une balise générique qui peut la traiter
chercher_balise_generique(string $nom) : array<string|int, mixed>|null
Le nom de balise doit contenir au moins un souligné "A_B", auquel cas on cherche une balise générique "A_"
S'il y a plus d'un souligné, tel que "A_B_C_D" on cherche différentes balises génériques en commençant par la plus longue possible, tel que "A_B_C_", sinon "A_B_" sinon "A_"
Parameters
- $nom : string
Return values
array<string|int, mixed>|nulllang_select_public()
Selectionner la langue de l'objet dans la boucle
lang_select_public(string $lang, string $lang_select[, null|string $titre = null ]) : mixed
Applique sur un item de boucle la langue de l'élément qui est parcourru. Sauf dans les cas ou il ne le faut pas !
La langue n'est pas modifiée lorsque :
- la globale 'forcer_lang' est définie à true
- l'objet ne définit pas de langue
- le titre contient une balise multi.
Parameters
- $lang : string
-
Langue de l'objet
- $lang_select : string
-
'oui' si critère lang_select est présent, '' sinon.
- $titre : null|string = null
-
Titre de l'objet
nettoyer_env_doublons()
nettoyer_env_doublons(mixed $envd) : mixed
Parameters
- $envd : mixed
match_self()
Cherche la présence d'un opérateur SELF ou SUBSELECT
match_self(string|array<string|int, mixed> $w) : string|bool
Cherche dans l'index 0 d'un tableau, la valeur SELF ou SUBSELECT indiquant pour une expression WHERE de boucle que nous sommes face à une sous-requête.
Cherche de manière récursive également dans les autres valeurs si celles-ci sont des tableaux
Parameters
- $w : string|array<string|int, mixed>
-
Description d'une condition WHERE de boucle (ou une partie de cette description)
Return values
string|bool —Opérateur trouvé (SELF ou SUBSELECT) sinon false.
remplace_sous_requete()
Remplace une condition décrivant une sous requête par son code
remplace_sous_requete(array<string|int, mixed>|string $w, string $sousrequete) : array<string|int, mixed>|string
Parameters
- $w : array<string|int, mixed>|string
-
Description d'une condition WHERE de boucle (ou une partie de cette description) qui possède une description de sous-requête
- $sousrequete : string
-
Code PHP de la sous requête (qui doit remplacer la description)
Return values
array<string|int, mixed>|string —Tableau de description du WHERE dont la description de sous-requête est remplacée par son code.
trouver_sous_requetes()
Sépare les conditions de boucles simples de celles possédant des sous-requêtes.
trouver_sous_requetes(array<string|int, mixed> $where) : array<string|int, mixed>
Parameters
- $where : array<string|int, mixed>
-
Description d'une condition WHERE de boucle
Return values
array<string|int, mixed> —Liste de 2 tableaux :
- Conditions simples (ne possédant pas de sous requêtes)
- Conditions avec des sous requêtes
calculer_select()
calculer_select(mixed ...$args) : mixed
Parameters
- $args : mixed
Tags
preparer_calculer_select()
Calcule une requête et l’exécute
preparer_calculer_select([array<string|int, mixed> $select = [] ][, array<string|int, mixed> $from = [] ][, array<string|int, mixed> $from_type = [] ][, array<string|int, mixed> $where = [] ][, array<string|int, mixed> $join = [] ][, array<string|int, mixed> $groupby = [] ][, array<string|int, mixed> $orderby = [] ][, string $limit = '' ][, array<string|int, mixed> $having = [] ][, string $table = '' ][, string $id = '' ][, string $serveur = '' ][, bool|array<string|int, mixed>|string $requeter = true ]) : array{select: array, from: array, where: array, orderby: string, having: array, serveur: string, requeter: bool|array|string, debug: array}
Cette fonction est présente dans les squelettes compilés. Elle peut permettre de générer des requêtes avec jointure.
Parameters
- $select : array<string|int, mixed> = []
- $from : array<string|int, mixed> = []
- $from_type : array<string|int, mixed> = []
- $where : array<string|int, mixed> = []
- $join : array<string|int, mixed> = []
- $groupby : array<string|int, mixed> = []
- $orderby : array<string|int, mixed> = []
- $limit : string = ''
- $having : array<string|int, mixed> = []
- $table : string = ''
- $id : string = ''
- $serveur : string = ''
- $requeter : bool|array<string|int, mixed>|string = true
Return values
array{select: array, from: array, where: array, orderby: string, having: array, serveur: string, requeter: bool|array|string, debug: array}executer_calculer_select()
executer_calculer_select(array<string|int, mixed> $requete) : mixed
Parameters
- $requete : array<string|int, mixed>
compter_calculer_select()
compter_calculer_select(array<string|int, mixed> $requete) : int
Parameters
- $requete : array<string|int, mixed>
Return values
intcalculer_where_to_string()
Analogue a calculer_mysql_expression et autre (a unifier ?)
calculer_where_to_string(string|array<string|int, mixed> $v[, string $join = 'AND' ]) : string
Parameters
- $v : string|array<string|int, mixed>
- $join : string = 'AND'
Return values
stringcalculer_jointnul()
calculer_jointnul(mixed $cle, mixed $exp[, mixed $equiv = '' ]) : mixed
Parameters
- $cle : mixed
- $exp : mixed
- $equiv : mixed = ''
reinjecte_joint()
reinjecte_joint(mixed $afrom, mixed $from) : mixed
Parameters
- $afrom : mixed
- $from : mixed
remplacer_jointnul()
remplacer_jointnul(mixed $cle, mixed $exp[, mixed $equiv = '' ]) : mixed
Parameters
- $cle : mixed
- $exp : mixed
- $equiv : mixed = ''
calculer_nom_fonction_squelette_compile()
calcul du nom de la fonction principale du squelette compilé
calculer_nom_fonction_squelette_compile(mixed $squelette[, mixed $extension = 'html' ][, string $connect = '' ]) : string
Parameters
- $squelette : mixed
- $extension : mixed = 'html'
- $connect : string = ''