feat: critère `{selecteurgenerique_recherche_auteur #ENV{q}, strict}`

Qui remplace `{contenu_auteur_select strict}`
pull/3/head
Matthieu Marcillaud 4 weeks ago
parent f193090a3b
commit 51cd03d6b4

@ -2,18 +2,20 @@
if (!defined("_ECRIRE_INC_VERSION")) return;
/**
* Critere `{contenu_auteur_select}` qui recherche un·e auteur / autrice
*
* Récupère la valeur de query-string `q` pour effectuer la recherche.
*
* @syntaxe
* - `{contenu_auteur_select #ENV{q}} : dans tout le nom
* - `{contenu_auteur_select #ENV{q}, strict} : uniquement depuis le début du nom
* - `{contenu_auteur_select} : dans tout le nom
* - `{contenu_auteur_select strict} : uniquement depuis le début du nom
*
* @critere contenu_auteur_select
*/
function critere_contenu_auteur_select_dist($idb, &$boucles, $crit) {
trigger_deprecation('selecteur_generique', '2.0', 'Using "%s" criteria is deprecated, use "%s" criteria instead.', 'contenu_auteur_select', 'selecteurgenerique_recherche_auteur');
$boucle = &$boucles[$idb];
$debut = ($crit->param[0][0]->texte ?? null) === 'strict' ? '' : '%';
@ -41,3 +43,53 @@ function critere_contenu_auteur_select_dist($idb, &$boucles, $crit) {
$boucle->where[] = '$s';
}
/**
* Critere `{selecteurgenerique_recherche_auteur}` qui recherche un·e auteur / autrice
*
* @syntaxe
* - `{selecteurgenerique_recherche_auteur #ENV{q}} : dans tout le nom
* - `{selecteurgenerique_recherche_auteur #ENV{q}, strict} : uniquement depuis le début du nom
*
* @critere selecteurgenerique_recherche_auteur
*/
function critere_selecteurgenerique_recherche_auteur_dist($idb, &$boucles, $crit) {
$boucle = &$boucles[$idb];
$q = isset($crit->param[0][0])
? calculer_liste([$crit->param[0][0]], $idb, $boucles, $boucle->id_parent)
: "''";
$mode = isset($crit->param[1][0])
? calculer_liste([$crit->param[1][0]], $idb, $boucles, $boucle->id_parent)
: "''";
// un peu trop rapide, ca... le compilateur exige mieux (??)
// on ne cherche pas dans la bio etc
// si on peut trouver direct dans le nom ou l'email
$boucle->hash .= <<<PHP
// RECHERCHE
\$s = 1;
if (\$r = $q) {
\$r .= '%';
if ($mode !== 'strict') {
\$r = '%' . \$r;
}
\$r = sql_quote(\$r);
\$s = "(
auteurs.nom LIKE \$r
OR auteurs.email LIKE \$r";
if ($mode !== 'strict') {
\$s .= "
OR auteurs.bio LIKE \$r
OR auteurs.nom_site LIKE \$r
OR auteurs.url_site LIKE \$r";
}
\$s .= ")";
}
PHP;
#dump($boucle->hash);
$boucle->where[] = '$s';
}

@ -15,7 +15,7 @@
{
"results": \[
<BOUCLE_e(AUTEURS auteurs_liens){tout}{objet}{id_objet}{doublons}></BOUCLE_e>
<BOUCLE_s1(AUTEURS){tout}{contenu_auteur_select strict}{0,20}{par nom}{doublons}{","}>
<BOUCLE_s1(AUTEURS){tout}{selecteurgenerique_recherche_auteur #ENV{q}, strict}{0,20}{par nom}{doublons}{","}>
[(#SET{label,[(#STATUT|puce_statut{auteur}|liens_absolus) ]#NOM[ - (#BIO|textebrut|couper{20})][ ((#EMAIL))]})]
{
"id": [(#ID_AUTEUR|json_encode)],
@ -23,7 +23,7 @@
"text": [(#NOM|json_encode)]
}
</BOUCLE_s1>
<BOUCLE_s2(AUTEURS){tout}{contenu_auteur_select}{0,20}{par nom}{doublons}{","}>
<BOUCLE_s2(AUTEURS){tout}{selecteurgenerique_recherche_auteur #ENV{q}}{0,20}{par nom}{doublons}{","}>
[(#SET{label,[(#STATUT|puce_statut{auteur}|liens_absolus) ]#NOM[ - (#BIO|textebrut|couper{20})][ ((#EMAIL))]})]
{
"id": [(#ID_AUTEUR|json_encode)],

Loading…
Cancel
Save