uawdijnntqw1x1x1
IP : 216.73.216.90
Hostname : webm001.cluster110.gra.hosting.ovh.net
Kernel : Linux webm001.cluster110.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
OS : Linux
PATH:
/
home
/
etiennec
/
www
/
b9da6
/
..
/
ecrire
/
install
/
..
/
base
/
.
/
..
/
public
/
interfaces.php
/
/
<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Définition des noeuds de l'arbre de syntaxe abstraite * * @package SPIP\Compilateur\AST **/ if (!defined('_ECRIRE_INC_VERSION')) return; /** * Description d'un contexte de compilation * * Objet simple pour stocker le nom du fichier, la ligne, la boucle * permettant entre autre de localiser le lieu d'une erreur de compilation. * Cette structure est nécessaire au traitement d'erreur à l'exécution. * * Le champ code est inutilisé dans cette classe seule, mais harmonise * le traitement d'erreurs. * * @package SPIP\Compilateur\AST */ class Contexte { /** * Description du squelette * * 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 * * @var array */ public $descr = array(); /** * Identifiant de la boucle * @var string */ public $id_boucle = ''; /** * Numéro de ligne dans le code source du squelette * @var int */ public $ligne = 0; /** * Langue d'exécution * @var string */ public $lang = ''; /** * Résultat de la compilation: toujours une expression PHP * @var string */ public $code = ''; } /** * Description d'un texte * * @package SPIP\Compilateur\AST **/ class Texte { /** * Type de noeud * @var string */ public $type = 'texte'; /** * Le texte * @var string */ public $texte; /** * Contenu avant le texte. * * Vide ou apostrophe simple ou double si le texte en était entouré * @var string|array */ public $avant = ""; /** * Contenu après le texte. * * Vide ou apostrophe simple ou double si le texte en était entouré * @var string|array */ public $apres = ""; /** * Numéro de ligne dans le code source du squelette * @var int */ public $ligne = 0; } /** * Description d'une inclusion de squelette * * @package SPIP\Compilateur\AST **/ class Inclure { /** * Type de noeud * @var string */ public $type = 'include'; /** * Nom d'un fichier inclu * * - Objet Texte si inclusion d'un autre squelette * - chaîne si inclusion d'un fichier PHP directement * @var string|Texte */ public $texte; /** * Inutilisé, propriété générique de l'AST * @var string|array */ public $avant = ''; /** * Inutilisé, propriété générique de l'AST * @var string|array */ public $apres = ''; /** * Numéro de ligne dans le code source du squelette * @var int */ public $ligne = 0; /** * Valeurs des paramètres * @var array */ public $param = array(); } /** * Description d'une boucle * * @package SPIP\Compilateur\AST **/ class Boucle { /** * Type de noeud * @var string */ public $type = 'boucle'; /** * Identifiant de la boucle * @var string */ public $id_boucle; /** * Identifiant de la boucle parente * @var string */ public $id_parent =''; /** * Partie optionnelle avant * @var string|array */ public $avant = ''; /** * Pour chaque élément * @var string|array */ public $milieu = ''; /** * Partie optionnelle après * @var string|array */ public $apres = ''; /** * Partie alternative, si pas de résultat dans la boucle * @var string|array */ public $altern = ''; /** * La boucle doit-elle sélectionner la langue ? * @var string|null */ public $lang_select; /** * Alias de table d'application de la requête ou nom complet de la table SQL * @var string|null */ public $type_requete; /** * La table est elle optionnelle ? * * Si oui, aucune erreur ne sera générée si la table demandée n'est pas présente * @var bool */ public $table_optionnelle = false; /** * Nom du fichier de connexion * @var string */ public $sql_serveur = ''; /** * Paramètres de la boucle * * Description des paramètres passés à la boucle, qui servent ensuite * au calcul des critères * * @var array */ public $param = array(); /** * Critères de la boucle * @var Critere[] */ public $criteres = array(); /** * Textes insérés entre 2 éléments de boucle (critère inter) * @var string[] */ public $separateur = array(); /** * Liste des jointures possibles avec cette table * * Les jointures par défaut de la table sont complétées en priorité * des jointures déclarées explicitement sur la boucle * @see base_trouver_table_dist() * @var array */ public $jointures = array(); /** * Jointures explicites avec cette table * * Ces jointures sont utilisées en priorité par rapport aux jointures * normales possibles pour retrouver les colonnes demandées extérieures * à la boucle. * @var string|bool */ public $jointures_explicites = false; /** * Nom de la variable PHP stockant le noms de doublons utilisés "$doublons_index" * @var string|null */ public $doublons; var $partie, $total_parties,$mode_partie=''; var $externe = ''; # appel a partir d'une autre boucle (recursion) // champs pour la construction de la requete SQL var $select = array(); var $from = array(); var $from_type = array(); var $where = array(); var $join = array(); var $having = array(); var $limit; var $group = array(); var $order = array(); var $default_order = array(); var $date = 'date' ; var $hash = "" ; var $in = "" ; var $sous_requete = false; var $hierarchie = ''; var $statut = false; # definition/surcharge du statut des elements retournes // champs pour la construction du corps PHP var $show = array(); var $id_table; var $primary; var $return; var $numrows = false; var $cptrows = false; /** * Description du squelette * * 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 * * @var array */ public $descr = array(); /** * Numéro de ligne dans le code source du squelette * @var int */ public $ligne = 0; var $modificateur = array(); // table pour stocker les modificateurs de boucle tels que tout, plat ..., utilisable par les plugins egalement var $iterateur = ''; // type d'iterateur // obsoletes, conserves provisoirement pour compatibilite var $tout = false; var $plat = false; var $lien = false; } /** * Description d'un critère de boucle * * Sous-noeud de Boucle * * @package SPIP\Compilateur\AST **/ class Critere { /** * Type de noeud * @var string */ public $type = 'critere'; /** * Opérateur (>, <, >=, IN, ...) * @var null|string */ public $op; /** * Présence d'une négation (truc !op valeur) * @var null|string */ public $not; /** * Présence d'une exclusion (!truc op valeur) * @var null|string */ public $exclus; /** * Paramètres du critère * - $param[0] : élément avant l'opérateur * - $param[1..n] : éléments après l'opérateur * @var array */ var $param = array(); /** * Numéro de ligne dans le code source du squelette * @var int */ public $ligne = 0; } /** * Description d'un champ (balise SPIP) * * @package SPIP\Compilateur\AST **/ class Champ { /** * Type de noeud * @var string */ public $type = 'champ'; /** * Nom du champ demandé. Exemple 'ID_ARTICLE' * @var string|null */ public $nom_champ; /** * Identifiant de la boucle parente si explicité * @var string|null */ public $nom_boucle= ''; /** * Partie optionnelle avant * @var null|string|array */ public $avant; /** * Partie optionnelle après * @var null|string|array */ public $apres; /** * Étoiles : annuler des automatismes * * - '*' annule les filtres automatiques * - '**' annule en plus les protections de scripts * @var null|string */ public $etoile; /** * Arguments et filtres explicites sur la balise * - $param[0] contient les arguments de la balise * - $param[1..n] contient les filtres à appliquer à la balise * @var array */ public $param = array(); /** * Source des filtres (compatibilité) (?) * @var array|null */ public $fonctions = array(); /** * Identifiant de la boucle * @var string */ public $id_boucle = ''; /** * AST du squelette, liste de toutes les boucles * @var Boucles[] */ public $boucles; /** * Alias de table d'application de la requête ou nom complet de la table SQL * @var string|null */ public $type_requete; /** * Résultat de la compilation: toujours une expression PHP * @var string */ public $code = ''; /** * Interdire les scripts * * false si on est sûr de cette balise * @see interdire_scripts() * @var bool */ public $interdire_scripts = true; /** * Description du squelette * * 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 * * @var array */ public $descr = array(); /** * Numéro de ligne dans le code source du squelette * @var int */ public $ligne = 0; /** * Drapeau pour reperer les balises calculées par une fonction explicite * @var bool */ public $balise_calculee = false; } /** * Description d'une chaîne de langue **/ class Idiome { /** * Type de noeud * @var string */ public $type = 'idiome'; /** * Clé de traduction demandée. Exemple 'item_oui' * @var string */ public $nom_champ = ""; /** * Module de langue où chercher la clé de traduction. Exemple 'medias' * @var string */ public $module = ""; /** * Arguments à passer à la chaîne * @var array */ public $arg = array(); /** * Filtres à appliquer au résultat * @var array */ public $param = array(); /** * Source des filtres (compatibilité) (?) * @var array|null */ public $fonctions = array(); /** * Inutilisé, propriété générique de l'AST * @var string|array */ public $avant = ''; /** * Inutilisé, propriété générique de l'AST * @var string|array */ public $apres = ''; /** * Identifiant de la boucle * @var string */ public $id_boucle = ''; /** * AST du squelette, liste de toutes les boucles * @var Boucles[] */ public $boucles; /** * Alias de table d'application de la requête ou nom complet de la table SQL * @var string|null */ public $type_requete; /** * Résultat de la compilation: toujours une expression PHP * @var string */ public $code = ''; /** * Interdire les scripts * @see interdire_scripts() * @var bool */ public $interdire_scripts = false; /** * Description du squelette * * 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 * * @var array */ public $descr = array(); /** * Numéro de ligne dans le code source du squelette * @var int */ public $ligne = 0; } /** * Description d'un texte polyglotte (<multi>) * * @package SPIP\Compilateur\AST **/ class Polyglotte { /** * Type de noeud * @var string */ public $type = 'polyglotte'; /** * Tableau des traductions possibles classées par langue * * Tableau code de langue => texte * @var array */ var $traductions = array(); /** * Numéro de ligne dans le code source du squelette * @var int */ public $ligne = 0; } global $table_criteres_infixes; $table_criteres_infixes = array('<', '>', '<=', '>=', '==', '===', '!=', '!==', '<>', '?'); global $exception_des_connect; $exception_des_connect[] = ''; // ne pas transmettre le connect='' par les inclure /** * Déclarer les interfaces de la base pour le compilateur * * On utilise une fonction qui initialise les valeurs, * sans écraser d'eventuelles prédéfinition dans mes_options * et les envoie dans un pipeline * pour les plugins * * @link http://doc.spip.org/@declarer_interfaces * * @return void */ function declarer_interfaces(){ global $exceptions_des_tables, $table_des_tables, $table_date, $table_titre, $table_statut; $table_des_tables['articles']='articles'; $table_des_tables['auteurs']='auteurs'; $table_des_tables['rubriques']='rubriques'; $table_des_tables['hierarchie']='rubriques'; // definition des statuts de publication global $tables_statut; $table_statut = array(); // // tableau des tables de jointures // Ex: gestion du critere {id_mot} dans la boucle(ARTICLES) global $tables_jointures; $tables_jointures = array(); $tables_jointures['spip_jobs'][] = 'jobs_liens'; global $exceptions_des_jointures; #$exceptions_des_jointures['titre_mot'] = array('spip_mots', 'titre'); // pour exemple $exceptions_des_jointures['profondeur'] = array('spip_rubriques', 'profondeur'); global $table_des_traitements; define('_TRAITEMENT_TYPO', 'typo(%s, "TYPO", $connect, $Pile[0])'); define('_TRAITEMENT_RACCOURCIS', 'propre(%s, $connect, $Pile[0])'); define('_TRAITEMENT_TYPO_SANS_NUMERO', 'typo(supprimer_numero(%s), "TYPO", $connect, $Pile[0])'); $table_des_traitements['BIO'][]= _TRAITEMENT_RACCOURCIS; $table_des_traitements['CHAPO'][]= _TRAITEMENT_RACCOURCIS; $table_des_traitements['DATE'][]= 'normaliser_date(%s)'; $table_des_traitements['DATE_REDAC'][]= 'normaliser_date(%s)'; $table_des_traitements['DATE_MODIF'][]= 'normaliser_date(%s)'; $table_des_traitements['DATE_NOUVEAUTES'][]= 'normaliser_date(%s)'; $table_des_traitements['DESCRIPTIF'][]= _TRAITEMENT_RACCOURCIS; $table_des_traitements['INTRODUCTION'][]= 'PtoBR('. _TRAITEMENT_RACCOURCIS .')'; $table_des_traitements['NOM_SITE_SPIP'][]= _TRAITEMENT_TYPO; $table_des_traitements['NOM'][]= _TRAITEMENT_TYPO_SANS_NUMERO; $table_des_traitements['AUTEUR'][]= _TRAITEMENT_TYPO; $table_des_traitements['PS'][]= _TRAITEMENT_RACCOURCIS; $table_des_traitements['SOURCE'][]= _TRAITEMENT_TYPO; $table_des_traitements['SOUSTITRE'][]= _TRAITEMENT_TYPO; $table_des_traitements['SURTITRE'][]= _TRAITEMENT_TYPO; $table_des_traitements['TAGS'][]= '%s'; $table_des_traitements['TEXTE'][]= _TRAITEMENT_RACCOURCIS; $table_des_traitements['TITRE'][]= _TRAITEMENT_TYPO_SANS_NUMERO; $table_des_traitements['TYPE'][]= _TRAITEMENT_TYPO; $table_des_traitements['DESCRIPTIF_SITE_SPIP'][]= _TRAITEMENT_RACCOURCIS; $table_des_traitements['SLOGAN_SITE_SPIP'][]= _TRAITEMENT_TYPO; $table_des_traitements['ENV'][]= 'entites_html(%s,true)'; // valeur par defaut pour les balises non listees ci-dessus $table_des_traitements['*'][]= false; // pas de traitement, mais permet au compilo de trouver la declaration suivante // toujours securiser les DATA $table_des_traitements['*']['DATA']= 'safehtml(%s)'; // expliciter pour VALEUR qui est un champ calcule et ne sera pas protege par le catch-all * $table_des_traitements['VALEUR']['DATA']= 'safehtml(%s)'; // gerer l'affectation en 2 temps car si le pipe n'est pas encore declare, on ecrase les globales $interfaces = pipeline('declarer_tables_interfaces', array( 'table_des_tables'=>$table_des_tables, 'exceptions_des_tables'=>$exceptions_des_tables, 'table_date'=>$table_date, 'table_titre'=>$table_titre, 'tables_jointures'=>$tables_jointures, 'exceptions_des_jointures'=>$exceptions_des_jointures, 'table_des_traitements'=>$table_des_traitements, 'table_statut'=>$table_statut, )); if ($interfaces){ $table_des_tables = $interfaces['table_des_tables']; $exceptions_des_tables = $interfaces['exceptions_des_tables']; $table_date = $interfaces['table_date']; $table_titre = $interfaces['table_titre']; $tables_jointures = $interfaces['tables_jointures']; $exceptions_des_jointures = $interfaces['exceptions_des_jointures']; $table_des_traitements = $interfaces['table_des_traitements']; $table_statut = $interfaces['table_statut']; } } declarer_interfaces(); ?>
/home/etiennec/www/b9da6/../ecrire/install/../base/./../public/interfaces.php