paheko-fork/doc/admin/brindille_modifiers.md
2024-01-19 16:39:49 +01:00

20 KiB

Title: Référence des filtres Brindille

{{{.nav

<>

Filtres PHP

Ces filtres viennent directement de PHP et utilisent donc les mêmes paramètres. Voir la documentation PHP pour plus de détails.

Nom Description Documentation PHP
htmlentities Convertit tous les caractères éligibles en entités HTML Documentation PHP
htmlspecialchars Convertit les caractères spéciaux en entités HTML Documentation PHP
trim Supprime les espaces et lignes vides au début et à la fin d'un texte Documentation PHP
ltrim Supprime les espaces et lignes vides au début d'un texte Documentation PHP
rtrim Supprime les espaces et lignes vides à la fin d'un texte Documentation PHP
md5 Génère un hash MD5 d'un texte Documentation PHP
sha1 Génère un hash SHA1 d'un texte Documentation PHP
strlen Nombre de caractères dans une chaîne de texte Documentation PHP
strpos Position d'un élément dans une chaîne de texte Documentation PHP
strrpos Position d'un dernier élément dans une chaîne de texte Documentation PHP
substr Découpe une chaîne de caractère Documentation PHP
strtotime Transforme une date en timestamp UNIX Documentation PHP
strip_tags Supprime les tags HTML Documentation PHP
nl2br Remplace les retours à la ligne par des tags HTML <br/> Documentation PHP
wordwrap Ajoute des retours à la ligne tous les 75 caractères Documentation PHP
abs Renvoie la valeur absolue d'un nombre (exemple : -42 sera transformé en 42) Documentation PHP
gettype Renvoie le type d'une variable
intval Transforme une valeur en entier (integer) Documentation PHP
boolval Transforme une valeur en booléen (true ou false) Documentation PHP
floatval Transforme une valeur en nombre flottant (à virgule) Documentation PHP
strval Transforme une valeur en chaîne de texte Documentation PHP
arrayval Transforme une valeur en tableau Documentation PHP
json_decode Transforme une chaîne JSON en valeur Documentation PHP
json_encode Transforme une valeur en chaîne JSON Documentation PHP
http_build_query Transformer un tableau en chaîne query string pour URL Documentation PHP
str_getcsv Transformer une chaîne de texte de format CSV en tableau Documentation PHP

Filtres utiles pour les e-mails

check_email

Permet de vérifier la validité d'une adresse email. Cette fonction vérifie la syntaxe de l'adresse mais aussi que le nom de domaine indiqué possède bien un enregistrement de type MX.

Renvoie true si l'adresse est valide.

{{if !$_POST.email|check_email}}
<p class="alert">L'adresse e-mail indiquée est invalide.</p>
{{/if}}

protect_contact

Crée un lien protégé pour une adresse email, pour éviter que l'adresse ne soit recueillie par les robots spammeurs (empêche également le copier-coller et le lien ne fonctionnera pas avec javascript désactivé).

Filtres de tableaux

has

Renvoie vrai si le tableau contient l'élément passé en paramètre.

{{:assign var="table" a="bleu" b="orange"}}
{{if $table|has:"bleu"}}
	Oui, il y a du bleu
{{/if}}

in

Renvoie vrai si l'élément fait partie du tableau passé en paramètre.

C'est exactement la même chose que has, mais exprimé à l'envers.

{{:assign var="table" a="bleu" b="orange"}}
{{if "bleu"|in:$table}}
	Oui, il y a du bleu
{{/if}}

has_key

Renvoie vrai si le tableau contient la clé passée en paramètre.

{{:assign var="table" a="bleu" b="orange"}}
{{if $table|has_key:"b"}}
	Oui, il y a la clé "b"
{{/if}}

key_in

Renvoie vrai si la clé fait partie du tableau passé en paramètre.

C'est exactement la même chose que has_key, mais exprimé à l'envers.

{{:assign var="table" a="bleu" b="orange"}}
{{if "b"|key_in:$table}}
	Oui, il y a la clé "b"
{{/if}}

keys

Renvoie les clés du tableau, sous forme de tableau.

{{:assign var="table" a="bleu" b="orange"}}
{{:assign var="cles" value=$table|keys}}
{{$cles|implode:","}}

Donnera :

a,b

values

Renvoie les valeurs du tableau, sous forme de tableau.

Cela revient en fait à supprimer les clés associatives.

{{:assign var="table" a="bleu" b="orange"}}
{{#foreach from=$table key="cle" item="valeur"}}
	{{$cle}} = {{$valeur}}
{{/foreach}}
--
{{:assign var="valeurs" value=$table|values}}
{{#foreach from=$valeurs key="cle" item="valeur"}}
	{{$cle}} = {{$valeur}}
{{/foreach}}

Donnera :

a = bleu
b = orange
--
0 = bleu
1 = orange

count

Compte le nombre d'entrées dans un tableau.

{{$products|count}}
= 5

explode

Sépare une chaîne de texte en tableau à partir d'une chaîne de séparation.

{{:assign var="table" value="a,b,c"|explode:","}}
- {{$table.0}}
- {{$table.1}}
- {{$table.2}}

Affichera :

- a
- b
- c

implode

Réunit un tableau sous forme de chaîne de texte en utilisant éventuellement une chaîne de liaison entre chaque élément du tableau.

{{:assign var="table" a="bleu" b="orange"}}
{{$table|implode}}
{{$table|implode:" - "}}

Affichera :

bleuorange
bleu - orange

map

Applique un filtre sur chaque élément du tableau.

Le premier paramètre doit être le nom du filtre. Les autres paramètres seront passés au filtre.

{{:assign var="table" a="01" b="02"}}
{{:assign var="table" value=$table|map:intval}}
- {{$table.a}}
- {{$table.b}}

Affichera :

- 1
- 2

ksort, sort

Trie un tableau par ordre alpha-numérique, sans tenir compte des majuscules/minuscules. ksort trie le tableau en utilisant les clés, et sort trie le tableau en utilisant les valeurs.

{{:assign var="table" b="3" a="2" c="1"}}
{{$table|sort|implode:","}}
{{$table|ksort|implode:","}}

Affichera :

1,2,3
2,3,1

max, min

Renvoie respectivement la valeur la plus haute ou la plus basse d'un tableau de valeurs numériques.

{{:assign var="table" b="3" a="2" c="1"}}
{{$table|max}}
{{$table|min}}

Affichera :

3
1

Filtres de texte

args

Remplace des arguments dans le texte selon le schéma utilisé par sprintf.

{{"Il y a %d résultats dans la recherche sur le terme '%s'."|args:$results_count:$query}}
= Il y a 5 résultat dans la recherche sur le terme 'test'.

cat

Concaténer un texte avec un autre.

{{"Tangerine"|cat:" Dream"}}
= Tangerine Dream

count_words

Compte le nombre de mots dans un texte.

escape

Échappe le contenu pour un usage dans un document HTML. Ce filtre est appliqué par défaut à tout ce qui est affiché (variables, etc.) sauf à utiliser le filtre raw (voir plus bas).

excerpt

Produit un extrait d'un texte.

Supprime les tags HTML, tronque au nombre de caractères indiqué en second argument (si rien n'est indiqué, alors 600 est utilisé), et englobe dans un paragraphe <p>...</p>.

Équivalent de :

<p>{{$html|strip_tags|truncate:600|nl2br}}</p>

extract_leading_number

Extrait le numéro au début d'une chaîne de texte.

Exemple :

{{:assign title="02. Cours sur la physique nucléaire"}}
{{$title|extract_leading_number}}

Affichera :

02

format_phone_number

Formatte un numéro de téléphone selon le format du pays de l'association.

Seule la France est supportée pour le moment.

Exemple :

{{:assign number="0102030405"}}
{{$number|format_phone_number}}

Affichera :

01 02 03 04 05

markdown

Transforme un texte en HTML en utilisant la syntaxe Markdown.

Il est conseillé de rajouter le filtre |raw pour ne pas échapper le HTML produit, si on veut afficher le texte formatté dans une page HTML.

{{$texte|markdown|raw}}

raw

Passer ce filtre désactive la protection automatique contre le HTML (échappement) dans le texte. À utiliser en connaissance de cause avec les contenus qui contiennent du HTML et sont déjà filtrés !

{{"<b>Test"}} = &lt;b&gt;Test
{{"<b>Test"|raw}} = <b>Test

replace

Remplace des parties du texte par une autre partie.

{{"Tata yoyo"|replace:"yoyo":"yaya"}}
= Tata yaya

regexp_replace

Remplace des valeurs en utilisant une expression rationnelles (regexp) (documentation PHP).

{{"Tartagueule"|regexp_replace:"/ta/i":"tou"}}
= tourtougueule

remove_leading_number

Supprime le numéro au début d'un titre.

Cela permet de définir un ordre spécifique aux pages et catégories dans les listes.

{{"03. Beau titre"|remove_leading_number}}
Beau titre

truncate

Tronque un texte à une longueur définie.

Argument Fonction Valeur par défaut (si omis)
1 longueur en nombre de caractères 80
2 texte à placer à la fin (si tronqué)
3 coupure stricte, si true alors un mot pourra être coupé en deux, si false le texte sera coupé au dernier mot complet false
{{:assign texte="Ceci n'est pas un texte."}}
{{$texte|truncate:19:"(...)":true}}
{{$texte|truncate:19:"":false}}

Affichera :

Ceci n'est pas un (...)
Ceci n'est pas un t

typo

Formatte un texte selon les règles typographiques françaises : ajoute des espaces insécables devant ou derrière les ponctuations françaises (« » ? ! :).

urlencode

Encode une chaîne de texte pour utilisation dans une adresse URL (alias de rawurlencode en PHP).

xml_escape

Échappe le contenu pour un usage dans un document XML.

Autres filtres de texte

Les filtres suivants modifient la casse (majuscule/minuscules) d'un texte et ne fonctionneront correctement que si l'extension mbstring est installée sur le serveur. Sinon les lettres accentuées ne seront pas modifiées.

Note : il est donc préférable d'utiliser la propriété CSS text-transform pour modifier la casse si l'usage n'est que pour l'affichage, et non pas pour enregistrer les données.

  • tolower : transforme un texte en minuscules
  • toupper : transforme un texte en majuscules
  • ucfirst : met la première lettre du texte en majuscule
  • ucwords : met la première lettre de chaque mot en majuscule
  • lcfirst : met la première lettre du texte en minuscule

Filtres sur les sommes en devises

money

Formatte une valeur de monnaie pour l'affichage.

Une valeur de monnaie doit toujours inclure les cents (exprimée sous forme d'entier). Ainsi 15,02 doit être exprimée sous la forme 1502.

Paramètres optionnels :

  1. true (défaut) pour ne rien afficher si la valeur est zéro, ou false pour afficher 0,00
  2. true pour afficher le signe + si le nombre est positif (- est toujours affiché si le nombre est négatif)
{{* 12 345,67 = 1234567 *}}
{{:assign amount=1234567}}
{{$amount|money}}
12 345,67

money_currency

Comme money (même paramètres), formatte une valeur de monnaie (entier) pour affichage, mais en ajoutant la devise.

{{:assign amount=1502}}
{{$amount|money_currency}}
15,02 €

money_html

Idem que money, mais pour l'affichage en HTML :

{{* 12 345,67 = 1234567 *}}
{{:assign amount=1234567}}
{{$amount|money_html}}
<span class="money">12&nbsp;345,67</span>

money_currency_html

Idem que money_currency, mais pour l'affichage en HTML :

{{:assign amount=1502}}
{{$amount|money_currency_html}}
<span class="money">15,02&nbsp;€</span>

money_raw

Formatte une valeur de monnaie (entier) de manière brute : les milliers n'auront pas de séparateur.

{{:assign amount=1234567}}
{{$amount|money_raw}}
12345,67

money_int

Transforme un nombre à partir d'une chaîne de caractère (par exemple 12345,67) en entier (1234567) pour stocker une valeur de monnaie.

{{:assign montant=$_POST.montant|trim|money_int}}

Filtres SQL

quote_sql

Protège une chaîne contre les attaques SQL, pour l'utilisation dans une condition.

Note : il est FORTEMENT déconseillé d'intégrer directement des sources extérieures dans les requêtes SQL, il est préférable d'utiliser les paramètres dans la boucle sql et ses dérivées, comme ceci : {{#sql select="id, nom" tables="users" where="lettre_infos = :lettre" :lettre=$_GET.lettre}}.

Exemple :

{{:assign nom=$_GET.nom|quote_sql}}
{{#sql select="id, nom" tables="users" where="nom = %s"|args:$nom}}

quote_sql_identifier

La même chose que quote_sql, mais pour les identifiants (par exemple nom de table ou de colonne).

Exemple :

{{:assign colonne=$_GET.colonne|quote_sql_identifier}}
{{#sql select="id, %s"|args:$colonne tables="users"}}

Il est possible d'utiliser un préfixe en argument, utile par exemple quand on a plusieurs tables avec le même nom de colonne :

{{:assign colonne=$_GET.colonne|quote_sql_identifier:"u1"}}
{{#sql select="u1.id, %s"|args:$colonne tables="users AS u1 INNER JOIN users AS u2 ON u2.id_parent = u1.id"}}

sql_where

Permet de créer une partie d'une clause SQL WHERE complexe.

Le premier paramètre est le nom de la colonne (sans préfixe).

Paramètres :

  1. Comparateur : =, !=, IN, NOT IN, >, >=, <, <=
  2. Valeur à comparer (peut être un tableau)

Exemple pour afficher la liste des membres des catégories n°1 et n°2:

{{:assign var="list." value=1}}
{{:assign var="list." value=2}}
{{#sql select="nom" tables="users" where="id_category"|sql_where:'IN':$id_list}}
    {{$nom}}
{{/sql}}

Le requête SQL générée sera alors SELECT nom FROM users WHERE id_category IN (1, 2).

sql_user_fields

Permet de récupérer le contenu de champs de la fiche utilisateur pour une requête SQL.

C'est particulièrement utile si le module permet de sélectionner dans sa configuration une liste de champs de membre (par exemple pour la carte de membre, ou les reçus fiscaux).

Si un champ mentionné n'existe plus dans les fiches de membres, il sera ignoré.

  • Le premier paramètre est la liste des champs (tableau ou chaîne de texte)
  • Le second est le préfixe à utiliser (alias de la table membres), optionnel
  • Le troisième est la chaîne de texte à utiliser pour coller les champs entre eux

Exemple :

{{:assign var="champs_adresse." value="rue"}}
{{:assign var="champs_adresse." value="ville"}}
{{:assign var="champs_adresse_sql" value=$champs_adresse|sql_user_fields:"u":" - "}}
{{#select !champs_adresse_sql AS adresse FROM users AS u; !champs_adresse_sql=$champs_adresse_sql}}
	{{$adresse}}
{{/select}}

Affichera :

30 rue de Machin Chose — Dijon

Et la clause SQL générée sera :

LTRIM(COALESCE(' - ' || u.rue, '') || COALESCE(' - ' || u.ville), ' - ')

Filtres de date

date

Formatte une date selon le format spécifié en premier paramètre.

Le format est identique au format utilisé par PHP.

Si aucun format n'est indiqué, le défaut sera d/m/Y à H:i. (en français)

Exemples :

{{:assign this_year=$now|date:'Y'}}
{{$date|date:'d/m/Y'}}

strftime

Formatte une date selon un format spécifié en premier paramètre.

Le format à utiliser est identique au format utilisé par la fonction strftime de PHP.

Un format doit obligatoirement être spécifié.

En passant un code de langue en second paramètre, cette langue sera utilisée. Sont supportés le français (fr) et l'anglais (en). Le défaut est le français si aucune valeur n'est passée en second paramètre .

{{:assign this_year=$now|date:'%Y'}}
{{$date|date:'%d/%m/%Y'}}

relative_date

Renvoie une date relative à la date du jour : aujourd'hui, hier, demain, ou sinon mardi 2 janvier (si la date est de l'année en cours) ou 2 janvier 2021 (si la date est d'une autre année).

En spécifiant true en premier paramètre, l'heure sera ajoutée au format 14h34.

date_short

Formatte une date au format court : d/m/Y.

En spécifiant true en premier paramètre l'heure sera ajoutée : à H\hi.

date_long

Formatte une date au format long : lundi 2 janvier 2021.

En spécifiant true en premier paramètre l'heure sera ajoutée : à 20h42.

date_hour

Formatte une date en renvoyant l'heure uniquement : 20h00.

En passant true en premier paramètre, les minutes seront omises si elles sont égales à zéro : 20h.

atom_date

Formatte une date au format ATOM : Y-m-d\TH:i:sP

parse_date

Vérifie le format d'une chaîne de texte représentant la date et la transforme en chaîne de date standardisée au format AAAA-MM-JJ.

Les formats acceptés sont :

  • AAAA-MM-JJ
  • JJ/MM/AAAA
  • JJ/MM/AA

parse_datetime

Vérifie le format d'une chaîne de texte représentant la date et l'heure et la transforme en chaîne de date et heure standardisée au format AAAA-MM-JJ HH:mm.

Les formats acceptés sont :

  • AAAA-MM-JJ HH:mm:ss
  • AAAA-MM-JJ HH:mm
  • JJ/MM/AAAA HH:mm

parse_time

Vérifie le format d'une chaîne de texte représentant l'heure et la transforme en chaîne de date standardisée au format HH:MM.

Les formats acceptés sont :

  • HH:MM
  • H:M
  • H:MM
  • HH:M

Le séparateur peut être : ou h.

Filtres de condition

Ces filtres sont à utiliser dans les conditions

match

Renvoie true si le texte indiqué en premier paramètre est trouvé dans la variable.

Ce filtre est insensible à la casse.

{{if $page.path|match:"/aide"}}Bienvenue dans l'aide !{{/if}}

regexp_match

Renvoie true si l'expression régulière indiquée en premier paramètre est trouvée dans la variable.

Exemple pour voir si le texte contient les mots "Bonjour" ou "Au revoir" (insensible à la casse) :

{{if $texte|regexp_match:"/Bonjour|Au revoir/i"}}
	Trouvé !
{{else}}
	Rien trouvé :-(
{{/if}}

Autres filtres

math

Réalise un calcul mathématique. Cette fonction accepte :

  • les nombres: 42, 13,37, 14.05
  • les signes : + - / * pour additionner, diminuer, diviser ou multiplier
  • les parenthèses : ( )
  • les fonctions : round(0.5452, 2) ceil(29,09) floor(0.99) mais aussi : min, max, cos, sin, tan, asin, acos, atan, sinh, cosh, tanh, exp, sqrt, abs, log, log10, et pi.

Le résultat est renvoyé sous la forme d'un entier, ou d'un nombre flottant dont les décimales sont séparées par un point.

{{"1+1"|math}}
= 2

Il est possible de donner d'autres arguments, de la même manière qu'avec args pour y inclure des données provenant de variables :

{{:assign age=42}}
{{"1+%d"|math:$age}}
= 43
{{:assign prix=39.99 tva=19.1}}
{{"round(%f*%f, 2)"|math:$prix:$tva}}
= 47.63

or

Si la variable passée est évalue comme false (c'est à dire que sa valeur est un texte vide, ou un nombre qui vaut zéro, ou la valeur false), alors le premier paramètre sera utilisé.

{{:assign texte=""}}
{{$texte|or:"Le texte est vide"}}

Il est possible de chaîner les appels à or :

{{:assign texte1="" texte2="0"}}
{{$texte1|or:$texte2|or:"Aucun texte"}}

size_in_bytes

Renvoie une taille en octets, Ko, Mo, ou Go à partir d'une taille en octets.

{{100|size_in_bytes}} = 100 o
{{1500|size_in_bytes}} = 1,50 Ko
{{1048576|size_in_bytes}} = 1 Mo

spell_out_number

Épelle un nombre en toutes lettres.

Le premier paramètre peut être utilisé pour spécifier le code de la langue à utiliser (par défaut c'est le français, donc le code fr).

{{42|spell_out_number}}

Donnera :

quarante deux

uuid

Renvoie un identifiant unique au format UUIDv4.