Fichier ecrire/public/criteres.php

Définition des {criteres} d'une boucle

Source

Proposer une amélioration

Liste des constantes

Liste des fonctions

void calculer_critere_arg_dynamique( $idb , & $boucles , $crit , $suffix = '' )

Paramètres

  1. $idb
  2. & $boucles
  3. $crit
  4. $suffix = ''

Utilisé par

Package

Proposer une amélioration

Ajoute en fonction des arguments trouvés par calculer_critere_infixe() les conditions WHERE à appliquer sur la boucle.

void calculer_critere_DEFAUT_args( string $idb , array & $boucles , \Critere $crit , array $args )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

  4. array $args

    Description du critère Cf. retour de calculer_critere_infixe()

Retour

  • void

Voir également

Package

Proposer une amélioration

Compile les critères non déclarés, ainsi que les parties de boucles avec les critères {0,1} ou {1/2}

void calculer_critere_DEFAUT_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • void

Package

Proposer une amélioration

On cherche la table du champ et on regarde si elle est déjà jointe Si oui et qu'on y cherche un champ nouveau, pas de jointure supplementaire Exemple: criteres {titre_mot=...}{type_mot=...} Dans les 2 autres cas ==> jointure (Exemple: criteres {type_mot=...}{type_mot=...} donne 2 jointures pour selectioner ce qui a exactement ces 2 mots-cles.

string calculer_critere_externe_init( \Boucle & $boucle , array $joints , string $col , array $desc , boolean $cond , boolean | string $checkarrivee = false )

Paramètres

  1. \Boucle & $boucle

    Description de la boucle

  2. array $joints

    Liste de jointures possibles (ex: $boucle->jointures ou $boucle->jointures_explicites)

  3. string $col

    Colonne cible de la jointure

  4. array $desc

    Description de la table

  5. boolean $cond

    Flag pour savoir si le critère est conditionnel ou non

  6. boolean | string $checkarrivee = false

    string : nom de la table jointe où on veut trouver le champ. n'a normalement pas d'appel sans $checkarrivee.

Retour

  • string

    Alias de la table de jointure (Lx) Vide sinon.

Package

Proposer une amélioration

Décrit un critère non déclaré comme {id_article} {id_article>3} en retournant un tableau de l'analyse si la colonne (ou l'alias) existe vraiment.

Ajoute au passage pour chaque colonne utilisée (alias et colonne véritable) un modificateur['criteres'][colonne].

S'occupe de rechercher des exceptions, tel que

  • les id_parent, id_enfant, id_secteur,
  • des colonnes avec des exceptions déclarées,
  • des critères de date (jour_relatif, ...),
  • des critères sur tables jointes explicites (mots.titre),
  • des critères sur tables de jointure non explicite (id_mot sur une boucle articles...)
array | string calculer_critere_infixe( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • array | string

    Liste si on trouve le champ :

    - string $arg
        Opérande avant l'opérateur : souvent la colonne d'application du critère, parfois un calcul
        plus complexe dans le cas des dates.
    
    - string $op
        L'opérateur utilisé, tel que '='
    
    - string[] $val
        Liste de codes PHP obtenant les valeurs des comparaisons (ex: id_article sur la boucle parente)
        Souvent (toujours ?) un tableau d'un seul élément.
    
    - $col_alias
    - $where_complement
    
    Chaîne vide si on ne trouve pas le champ...

Package

Proposer une amélioration

Lorsque la colonne correspond à un critère de date, tel que jour, jour_relatif, jour_x, age, age_relatif, age_x...

string | array calculer_critere_infixe_date( string $idb , array & $boucles , string $col )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. string $col

    Nom du champ demandé

Retour

  • string | array

    chaine vide si ne correspond pas à une date, sinon liste

    • expression SQL de calcul de la date,
    • nom de la colonne de date (si le calcul n'est pas relatif)

Package

Proposer une amélioration

Décrit un critère non déclaré comme {id_article} {id_article>3} qui correspond à un champ non présent dans la table, et donc à retrouver par jointure si possible.

array | string calculer_critere_infixe_externe( \Boucle $boucle , \Critere $crit , string $op , array $desc , string $col , string $col_alias , string $table )

Paramètres

  1. \Boucle $boucle

    Description de la boucle

  2. \Critere $crit

    Paramètres du critère dans cette boucle

  3. string $op

    L'opérateur utilisé, tel que '='

  4. array $desc

    Description de la table

  5. string $col

    Nom de la colonne à trouver (la véritable)

  6. string $col_alias

    Alias de la colonne éventuel utilisé dans le critère ex: id_enfant

  7. string $table

    Nom de la table SQL de la boucle

Retour

  • array | string

    Liste si jointure possible :

    - string $col
    - string $col_alias
    - string $table
    - array $where
    - array $desc
    
    Chaîne vide si on ne trouve pas le champ par jointure...

Package

Proposer une amélioration

Lorsque l'opérateur n'est pas explicite comme sur {id_article>0} c'est l'opérateur '=' qui est utilisé.

Traite les cas particuliers id_parent, id_enfant, date, lang

array calculer_critere_infixe_ops( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • array

    Liste :

    • string $fct Nom d'une fonction SQL sur le champ ou vide (ex: SUM)
    • string $col Nom de la colonne SQL utilisée
    • string $op Opérateur
    • string[] $val Liste de codes PHP obtenant les valeurs des comparaisons (ex: id_article sur la boucle parente) Souvent un tableau d'un seul élément.

    • string $args_sql Suite des arguments du critère. ?

Package

Proposer une amélioration
  • si le champ existe dans la table, on l'utilise
  • si c'est une exception de jointure, on l'utilise (et crée la jointure au besoin)
  • si c'est un champ dont la jointure est déjà présente on la réutilise
  • si c'est un champ dont la jointure n'est pas présente, on la crée.
array | string calculer_critere_par_champ( string $idb , array & $boucles , \Critere $crit , string $par , boolean $raw = false )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

  4. string $par

    Nom du tri à analyser ('champ' ou 'table.champ')

  5. boolean $raw = false

    Retourne le champ pour le compilateur ("'alias.champ'") ou brut ('alias.champ')

Retour

  • array | string

Package

Proposer une amélioration

Ajoute le calcul du texte multi extrait dans le SELECT de la boucle. Il ne peut y avoir qu'un seul critère de tri multi par boucle.

string calculer_critere_par_expression_multi( string $idb , array & $boucles , \Critere $crit , array $tri , string $champ )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

  4. array $tri

    Paramètre en cours du critère

  5. string $champ

    Texte suivant l'expression ('titre' dans {par multi titre})

Retour

  • string

    Clause pour le Order by

Package

Proposer une amélioration

Tri par numéro de texte (tel que "10. titre"). Le numéro calculé est ajouté au SELECT de la boucle. L'écriture {par num #ENV{tri}} est aussi prise en compte.

string calculer_critere_par_expression_num( string $idb , array & $boucles , \Critere $crit , array $tri , string $champ )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

  4. array $tri

    Paramètre en cours du critère

  5. string $champ

    Texte suivant l'expression ('titre' dans {par num titre})

Retour

  • string

    Clause pour le Order by

Package

Note

  • Les textes sans numéro valent 0 et sont donc placés avant les titres ayant des numéros. Utiliser {par sinum champ, num champ} pour avoir le comportement inverse.
Proposer une amélioration

Ajoute au SELECT la valeur 'sinum' qui vaut 0 si le champ a un numéro, 1 s'il n'en a pas. Ainsi {par sinum titre, num titre, titre} mettra les éléments sans numéro en fin de liste, contrairement à {par num titre, titre} seulement.

string calculer_critere_par_expression_sinum( string $idb , array & $boucles , \Critere $crit , array $tri , string $champ )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

  4. array $tri

    Paramètre en cours du critère

  5. string $champ

    Texte suivant l'expression ('titre' dans {par sinum titre})

Retour

  • string

    Clause pour le Order by

Package

Proposer une amélioration

Ajoute le générateur d'aléatoire au SELECT de la boucle.

string calculer_critere_par_hasard( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • string

    Clause pour le Order by

Utilisé par

Package

Proposer une amélioration

Le critère {i,j} limite l'affiche de la boucle en commançant l'itération au i-ème élément, et pour j nombre d'éléments. Le critère {n-i,j} limite en commençant au n moins i-ème élément de boucle Le critère {i,n-j} limite en terminant au n moins j-ème élément de boucle.

Le critère {i/j} affiche une part d'éléments de la boucle. Commence à i*n/j élément et boucle n/j éléments. {2/4} affiche le second quart des éléments d'une boucle.

Traduit si possible (absence de n dans {i,j}) la demande en une expression LIMIT du gestionnaire SQL

void calculer_critere_parties( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • void

Package

Proposer une amélioration

Pour l'élément demandé (a ou b) retrouve la valeur de l'élément, et de combien il est soustrait si c'est le cas comme dans {a-3,b}

array calculer_critere_parties_aux( string $idb , array & $boucles , array $param )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. array $param

    Paramètre à analyser (soit a, soit b dans {a,b} ou {a/b})

Retour

  • array

    Valeur de l'élément (peut être une expression PHP), Nombre soustrait

Package

Proposer une amélioration

Cette fonction d'aiguillage cherche des fonctions spécifiques déclarées pour chaque critère demandé, dans l'ordre ci-dessous :

  • critere{serveur}{table}_{critere}, sinon avec _dist
  • critere{serveur}{critere}, sinon avec _dist
  • critere{table}{critere}, sinon avec _dist
  • critere_{critere}, sinon avec _dist
  • calculer_critere_defaut, sinon avec _dist

Émet une erreur de squelette si un critère retourne une erreur.

string | array calculer_criteres( string $idb , array & $boucles )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

Retour

  • string | array

    string : Chaine vide sans erreur array : Erreur sur un des critères

Package

Proposer une amélioration
string calculer_lien_externe_init( \Boucle & $boucle , array $joints , string $col , array $desc , boolean $cond , boolean | string $checkarrivee = false )

Paramètres

  1. \Boucle & $boucle

    Description de la boucle

  2. array $joints

    Liste de jointures possibles (ex: $boucle->jointures ou $boucle->jointures_explicites)

  3. string $col

    Colonne cible de la jointure

  4. array $desc

    Description de la table

  5. boolean $cond

    Flag pour savoir si le critère est conditionnel ou non

  6. boolean | string $checkarrivee = false

    string : nom de la table jointe où on veut trouver le champ. n'a normalement pas d'appel sans $checkarrivee.

Retour

  • string

    Alias de la table de jointure (Lx)

Package

Todo

  • $checkarrivee doit être obligatoire ici ?
Proposer une amélioration

Le calcul SQL retournera un nombre de jours écoulés entre la date comparée et la colonne SQL indiquée

string calculer_param_date( string $date_compare , string $date_orig )

Paramètres

  1. string $date_compare

    Code PHP permettant d'obtenir le timestamp référent. C'est à partir de lui que l'on compte les jours

  2. string $date_orig

    Nom de la colonne SQL qui possède la date

Retour

  • string

    Expression SQL calculant le nombre de jours écoulé entre une valeur de colonne SQL et une date.

Package

Proposer une amélioration

Calcule une expression déterminant $debut_boucle et $fin_boucle (le début et la fin des éléments de la boucle qui doivent être affichés) et les déclare dans la propriété «mode_partie» de la boucle, qui se charge également de déplacer le pointeur de boucle sur le premier élément à afficher.

Place dans la propriété partie un test vérifiant que l'élément de boucle en cours de lecture appartient bien à la plage autorisée. Trop tôt, passe à l'élément suivant, trop tard, sort de l'itération de boucle.

void calculer_parties( array & $boucles , string $id_boucle , string $debut , string $mode )

Paramètres

  1. array & $boucles

    AST du squelette

  2. string $id_boucle

    Identifiant de la boucle

  3. string $debut

    Valeur ou code pour trouver le début (i dans {i,j})

  4. string $mode

    Mode (++, p+, +- ...) : 2 signes début & fin

    • le signe - indique -- qu'il faut soustraire debut du total {n-3,x}. 3 étant $debut -- qu'il faut raccourcir la fin {x,n-3} de 3 elements. 3 étant $total_parties
    • le signe p indique une pagination

Retour

  • void

Package

Proposer une amélioration
void calculer_vieux_in( $params )

Paramètres

  1. $params

Package

Proposer une amélioration
void critere_agenda_dist( $idb , & $boucles , $crit )

Paramètres

  1. $idb
  2. & $boucles
  3. $crit

Package

Critere

  • agenda
Proposer une amélioration

Cherche l'identifiant de la rubrique en premier paramètre du critère {branche XX} s'il est renseigné, sinon, sans paramètre ({branche} tout court) dans les boucles parentes. On calcule avec lui la liste des identifiants de rubrique de toute la branche.

La boucle qui possède ce critère cherche une liaison possible avec la colonne id_rubrique, et tentera de trouver une jointure avec une autre table si c'est nécessaire pour l'obtenir.

Ce critère peut être rendu optionnel avec {branche ?} en remarquant cependant que le test s'effectue sur la présence d'un champ 'id_rubrique' sinon d'une valeur 'id_rubrique' dans l'environnement (et non 'branche' donc).

void critere_branche_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • void

Package

Critere

  • branche
Proposer une amélioration

Cela permet avec le critère {par} de trier un texte selon l'interclassement indiqué. L'instruction s'appliquera sur les critères {par} qui succèdent ce critère, ainsi qu'au critère {par} précédent si aucun interclassement ne lui est déjà appliqué.

Techniquement, c'est la commande SQL "COLLATE" qui utilisée. (elle peut être appliquée sur les order by, group by, where, like ...)

void critere_collecte_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Exemples

    • {par titre}{collecte utf8_spanish_ci} ou {collecte utf8_spanish_ci}{par titre}

    • {par titre}{par surtitre}{collecte utf8_spanish_ci} : Seul 'surtitre' (par précédent) utilisera l'interclassement
    • {collecte utf8_spanish_ci}{par titre}{par surtitre} : 'titre' et 'surtitre' utiliseront l'interclassement (tous les par suivants)

Package

Note

  • Piège sur une éventuelle écriture peu probable : {par a}{collecte c1}{par b}{collecte c2} : le tri {par b} utiliserait l'interclassement c1 (et non c2 qui ne s'applique pas au par précédent s'il a déjà un interclassement demandé).

Critere

  • collecte
Proposer une amélioration

Permet de transmettre une durée de cache (time to live) utilisée pour certaines sources d'obtention des données (par exemple RSS), indiquant alors au bout de combien de temps la donnée est à réobtenir.

La durée par défaut est 1 journée.

void critere_DATA_datacache_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Package

Critere

  • DATA_datacache
Proposer une amélioration

Extrait un chemin d'un tableau de données

(DATA){datapath query.results}

void critere_DATA_datapath_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Package

Critere

  • DATA_datapath
Proposer une amélioration

Passe les valeurs de début et de fin d'une énumération, qui seront vues comme une liste d'autant d'éléments à parcourir pour aller du début à la fin.

Cela utilisera la fonction range() de PHP.

void critere_DATA_enum_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Exemples

  • (DATA){enum Xdebut, Xfin} (DATA){enum a,z} (DATA){enum z,a} (DATA){enum 1.0,9.2}

Package

Critere

  • DATA_enum
Proposer une amélioration

Passe une liste de données à l'itérateur DATA

void critere_DATA_liste_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Exemples

  • (DATA){liste X1, X2, X3} équivalent à (DATA){source tableau,#LISTE{X1, X2, X3}}

Package

Critere

  • DATA_liste
Proposer une amélioration

Permet de déclarer le mode d'obtention des données dans une boucle DATA (premier argument) et les données (la suite).

void critere_DATA_source_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Exemples

  • (DATA){source mode, "xxxxxx", arg, arg, arg} (DATA){source tableau, #LISTE{un,deux,trois}}

Package

Critere

  • DATA_source
Proposer une amélioration

Limite le nombre d'éléments affichés.

Ce critère permet de faire commencer la limitation des résultats par une variable passée dans l’URL et commençant par 'debut_' tel que {debut_page,10}. Le second paramètre est le nombre de résultats à afficher.

Note : il est plus simple d'utiliser le critère pagination.

void critere_debut_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • void

Package

Critere

  • debut
Proposer une amélioration

Ce critères enlève de la boucle les éléments déjà sauvegardés dans un précédent critère {doublon} sur une boucle de même table.

Il est possible de spécifier un nom au doublon tel que {doublons sommaire}

void critere_doublons_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • void

Package

Critere

  • doublons
Proposer une amélioration

Exclut du résultat l’élément dans lequel on se trouve déjà

void critere_exclus_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • void

Package

Critere

  • exclus
Proposer une amélioration

Trouver tous les objets qui n'ont pas d'enfants (les feuilles de l'arbre) {feuille} {!feuille} retourne les noeuds

void critere_feuille_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Variables globales

  • array $exceptions_des_tables

Package

Critere

  • feuille
Proposer une amélioration

C'est la commande SQL «GROUP BY»

void critere_fusion_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • void

Exemples

  • <BOUCLE_a(articles){fusion lang}>

Package

Critere

  • fusion
Proposer une amélioration
void critere_IN_cas( $idb , & $boucles , $crit2 , $arg , $op , $val , $col )

Paramètres

  1. $idb
  2. & $boucles
  3. $crit2
  4. $arg
  5. $op
  6. $val
  7. $col

Package

Critere

  • IN_cas
Proposer une amélioration

Permet de restreindre un champ sur une liste de valeurs tel que {id_article IN 3,4} {id_article IN #LISTE{3,4}}

Si on a une liste de valeurs dans #ENV{x}, utiliser la double etoile pour faire par exemple {id_article IN #ENV**{liste_articles}}

void critere_IN_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • void

Package

Critere

  • IN
Proposer une amélioration

Accèpte un paramètre pour déterminer le sens : {inverse #X} utilisera un tri croissant (ASC) si la valeur retournée par #X est considérée vrai (true), le sens contraire (DESC) sinon.

void critere_inverse_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Exemples

    • {par date}{inverse}, équivalent à {!par date}
    • {par date}{inverse #ENV{sens}} utilise la valeur d'environnement sens pour déterminer le sens.

Package

Critere

  • inverse
Proposer une amélioration

Permet de restreindre ou non une boucle en affichant uniquement les éléments dans la langue en cours. Certaines boucles tel que articles et rubriques restreignent par défaut sur la langue en cours.

Sans définir de valeur au critère, celui-ci utilise 'oui' comme valeur par défaut.

void critere_lang_select_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • void

Package

Critere

  • lang_select
Proposer une amélioration
void critere_logo_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • void

Package

Critere

  • logo
Proposer une amélioration

Sélectionne les éléments ayant le même parent que la boucle parente, c'est à dire les frères et sœurs.

void critere_meme_parent_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • void

Package

Critere

  • meme_parent
Proposer une amélioration

Trouver tous les objets qui ont des enfants (les noeuds de l'arbre) {noeud} {!noeud} retourne les feuilles

void critere_noeud_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Variables globales

  • array $exceptions_des_tables

Package

Critere

  • noeud
Proposer une amélioration

Sélectionne les éléments qui servent de base à des versions traduites (par exemple les articles "originaux" sur une boucle articles)

Équivalent à (id_trad>0 AND id_xx=id_trad) OR (id_trad=0)

void critere_origine_traduction_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • void

Package

Critere

  • origine_traduction
Proposer une amélioration

Demande à paginer la boucle pour n'afficher qu'une partie des résultats, et gère l'affichage de la partie de page demandée par debut_xx dans dans l'environnement du squelette.

Le premier paramètre indique le nombre d'éléments par page, le second, rarement utilisé permet de définir le nom de la variable désignant la page demandée (debut_xx), qui par défaut utilise l'identifiant de la boucle.

void critere_pagination_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • void

Exemples

  • {pagination}
    {pagination 20}
    {pagination #ENV{pages,5}} etc
    {pagination 20 #ENV{truc,chose}} pour utiliser la variable debut_#ENV{truc,chose}

Voir également

Package

Critere

  • pagination
Proposer une amélioration

Demande à trier la boucle selon certains champs (en SQL, la commande ORDER BY). Si plusieurs tris sont demandés (plusieurs fois le critère {par x}{par y} dans une boucle ou plusieurs champs séparés par des virgules dans le critère {par x, y, z}), ils seront appliqués dans l'ordre.

Quelques particularités :

  • {par hasard} : trie par hasard
  • {par num titre} : trie par numéro de titre
  • {par multi titre} : trie par la langue extraite d'une balise polyglotte <multi> sur le champ titre
  • {!par date} : trie par date inverse en utilisant le champ date principal déclaré pour la table (si c'est un objet éditorial).
  • {!par points} : trie par pertinence de résultat de recherche (avec le critère {recherche})
  • {par FUNCTION_SQL(n)} : trie en utilisant une fonction SQL (peut dépendre du moteur SQL utilisé). Exemple : {par SUBSTRING_INDEX(titre, ".", -1)} (tri ~ alphabétique en ignorant les numéros de titres (exemple erroné car faux dès qu'un titre possède un point.)).

  • {par table.champ} : trie en effectuant une jointure sur la table indiquée.
  • {par #BALISE} : trie sur la valeur retournée par la balise (doit être un champ de la table, ou 'hasard').
void critere_par_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Exemples

    • {par titre}
    • {!par date}
    • {par num titre, multi titre, hasard}

Package

Critere

  • par
Proposer une amélioration

Les expressions intermédiaires {par expr champ} sont calculées dans des fonctions calculer_critere_par_expression_{expr}() notamment {par num champ} ou {par multi champ}.

void critere_parinverse( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Package

Critere

  • parinverse
Proposer une amélioration

Permet de passer des arguments à un iterateur non-spip (PHP:xxxIterator){args argument1, argument2, argument3}

void critere_php_args_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Package

Critere

  • php_args
Proposer une amélioration

Ce critère sélectionne les éléments à la racine d'une hiérarchie, c'est à dire ayant id_parent=0

void critere_racine_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • void

Package

Critere

  • racine
Proposer une amélioration

Le texte cherché est pris dans le premier paramètre {recherche xx} ou à défaut dans la clé recherche de l'environnement du squelette.

void critere_recherche_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • void

Package

Critere

  • recherche
Proposer une amélioration

Le critère {si condition} est applicable à toutes les boucles et conditionne l'exécution de la boucle au résultat de la condition. La partie alternative de la boucle est alors affichée si une condition n'est pas remplie (comme lorsque la boucle ne ramène pas de résultat). La différence étant que si la boucle devait réaliser une requête SQL (par exemple une boucle ARTICLES), celle ci n'est pas réalisée si la condition n'est pas remplie.

Les valeurs de la condition sont forcément extérieures à cette boucle (sinon il faudrait l'exécuter pour connaître le résultat, qui doit tester si on exécute la boucle !)

Si plusieurs critères {si} sont présents, ils sont cumulés : si une seule des conditions n'est pas vérifiée, la boucle n'est pas exécutée.

void critere_si_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Exemples

  • {si #ENV{exec}|=={article}} {si (#_contenu:GRAND_TOTAL|>{10})} {si #AUTORISER{voir,articles}}

Package

Critere

  • si
Proposer une amélioration

Sélectionne toutes les traductions de l'élément courant (la boucle englobante) en différentes langues (y compris l'élément englobant)

Équivalent à (id_trad>0 AND id_trad=id_trad(precedent)) OR id_xx=id_xx(precedent)

void critere_traduction_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • void

Package

Critere

  • traduction
Proposer une amélioration

Le critère {tri} gère un champ de tri qui peut être modifié dynamiquement par la balise #TRI. Il s'utilise donc conjointement avec la balise #TRI dans la même boucle pour génerér les liens qui permettent de changer le critère de tri et le sens du tri

void critere_tri_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • void

Package

Syntaxe

  • {tri [champ_par_defaut][,sens_par_defaut][,nom_variable]}
    • champ_par_defaut : un champ de la table sql

    • sens_par_defaut : -1 ou inverse pour décroissant, 1 ou direct pour croissant peut être un tableau pour préciser des sens par défaut associés à chaque champ exemple : array('titre' => 1, 'date' => -1) pour trier par défaut les titre croissants et les dates décroissantes dans ce cas, quand un champ est utilisé pour le tri et n'est pas présent dans le tableau c'est la première valeur qui est utilisée

    • nomvariable : nom de la variable utilisée (par defaut `tri{nomboucle}`)
      {tri titre} {tri titre,inverse} {tri titre,-1} {tri titre,-1,truc}

    Exemple d'utilisation :
    <B_articles>
    <p>#TRI{titre,'Trier par titre'} | #TRI{date,'Trier par date'}</p>
    <ul>
    <BOUCLE_articles(ARTICLES){tri titre}>
     <li>#TITRE - [(#DATE|affdate_jourcourt)]</li>
    </BOUCLE_articles>
    </ul>
    </B_articles>

Note

  • Contraitement à {par ...}, {tri} ne peut prendre qu'un seul champ, mais il peut être complété avec {par ...} pour indiquer des criteres secondaires
    Exemble :
    `{tri num titre}{par titre}` permet de faire un tri sur le rang (modifiable dynamiquement)
    avec un second critère sur le titre en cas d'égalité des rangs

Critere

  • tri
Proposer une amélioration

Ajoute une contrainte sql WHERE, tout simplement pour faire le pont entre php et squelettes, en utilisant la syntaxe attendue par la propriété $where d'une Boucle.

void critere_where_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Retour

  • void

Package

Critere

  • where
Proposer une amélioration

..

Madeleine de Proust, revision MIT-1958 sqq, revision CERN-1989 hum, c'est kwoi cette fonxion ? on va dire qu'elle desemberlificote les guillemets...

http://code.spip.net/@kwote

string kwote( string $lisp , string $serveur = '' , string $type = '' )

Paramètres

  1. string $lisp

    Code compilé

  2. string $serveur = ''

    Connecteur de bdd utilisé

  3. string $type = ''

    Type d'échappement (char, int...)

Retour

  • string

    Code compilé rééchappé

Package

Proposer une amélioration

Ne pas appliquer sql_quote lors de la compilation, car on ne connait pas le serveur SQL

array<mixed,string> primary_doublee( array $decompose , string $table )

Paramètres

  1. array $decompose

    Liste nom du champ, code PHP pour obtenir la valeur

  2. string $table

    Nom de la table

Retour

  • array<mixed,string>

    Liste de 3 éléments pour une description where du compilateur :

    • operateur (=),
    • table.champ,
    • valeur

Package

Todo

  • Ce nom de fonction n'est pas très clair ?
Proposer une amélioration
boolean trouver_champ( string $champ , array $where )

Paramètres

  1. string $champ

    Expression régulière pour trouver un champ donné. Exemple : /\barticles.titre\b/

  2. array $where

    Tableau de valeurs dans lesquels chercher le champ.

Retour

  • boolean

    true si le champ est trouvé quelque part dans $where false sinon.

Package

Proposer une amélioration

Dépréciées

Permet de déclarer le mode d'obtention des données dans une boucle DATA

void critere_DATA_datasource_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Package

Deprecated

  • Utiliser directement le critère {source}

Critere

  • DATA_datasource
Proposer une amélioration
string critere_par_joint( string $table , string $champ , \Boucle & $boucle )

Paramètres

  1. string $table

    Table du champ désiré

  2. string $champ

    Champ désiré

  3. \Boucle & $boucle

    Boucle en cours de compilation

Retour

  • string

    Champ pour le compilateur si trouvé, tel que "'alias.champ'", sinon vide.

Package

Deprecated

Critere

  • par_joint
Proposer une amélioration

{tableau #XX} pour compatibilite ascendante boucle POUR ... préférer la notation (DATA){source tableau,#XX}

void critere_POUR_tableau_dist( string $idb , array & $boucles , \Critere $crit )

Paramètres

  1. string $idb

    Identifiant de la boucle

  2. array & $boucles

    AST du squelette

  3. \Critere $crit

    Paramètres du critère dans cette boucle

Package

Deprecated

  • Utiliser une boucle (DATA){source tableau,#XX}

Critere

  • POUR_tableau
Proposer une amélioration

Liste des marqueurs

Type Ligne Description
TODO 2088 Ce nom de fonction n'est pas très clair ?
TODO 2198 $checkarrivee doit être obligatoire ici ?

Liste des erreurs

GravitéLigneDescription
Erreur 664
  • Argument $idb is missing from the Docblock of calculer_critere_arg_dynamique
  • No summary for function \calculer_critere_arg_dynamique()
  • Argument $suffix is missing from the Docblock of calculer_critere_arg_dynamique
  • Argument $boucles is missing from the Docblock of calculer_critere_arg_dynamique
  • Argument $crit is missing from the Docblock of calculer_critere_arg_dynamique
Erreur 1084
  • No summary for function \critere_agenda_dist()
  • Argument $crit is missing from the Docblock of critere_agenda_dist
  • Argument $boucles is missing from the Docblock of critere_agenda_dist
  • Argument $idb is missing from the Docblock of critere_agenda_dist
Erreur 1512
  • Argument $val is missing from the Docblock of critere_IN_cas
  • Argument $col is missing from the Docblock of critere_IN_cas
  • No summary for function \critere_IN_cas()
  • Argument $op is missing from the Docblock of critere_IN_cas
  • Argument $idb is missing from the Docblock of critere_IN_cas
  • Argument $arg is missing from the Docblock of critere_IN_cas
  • Argument $boucles is missing from the Docblock of critere_IN_cas
  • Argument $crit2 is missing from the Docblock of critere_IN_cas
Erreur 2365
  • No summary for function \calculer_vieux_in()
  • Argument $params is missing from the Docblock of calculer_vieux_in