Documentation du code de SPIP et de ses plugins

SPIP

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
string

squelette_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
bool

invalideur_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
uses
argumenter_squelette()

Pour calculer les arguments de l'inclusion

used-by
executer_balise_dynamique()

Pour calculer le code PHP d'inclusion produit

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
used-by
synthetiser_balise_dynamique()

Pour calculer les arguments de l'inclusion

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
see
calculer_balise_dynamique()
Return values
string

executer_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
uses
synthetiser_balise_dynamique()

Pour calculer le code PHP d'inclusion produit

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>|null

lang_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

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
int

calculer_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
string

calculer_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 = ''
Return values
string

        
On this page

Search results