Skip to content
Extraits de code Groupes Projets
Valider 8902c9a3 rédigé par Fil's avatar Fil
Parcourir les fichiers

etend le critere {recherche} de maniere a ce qu'il cherche dans le contexte...

etend le critere {recherche} de maniere a ce qu'il cherche dans le contexte (demande par #832); au passage on peut faire <#INCLURE{fond=x}{recherche=NNN}> mais aussi <BOUCLE_t(ARTICLES){recherche #ENV{autre}}>  (je n'ai pas reussi a faire une syntaxe {recherche=#ENV{autre}} qui eut ete plus intuitive).
parent 4cc2db26
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -885,6 +885,12 @@ function requete_hash ($rech) {
function prepare_recherche($recherche, $primary = 'id_article', $id_table='articles',$nom_table='spip_articles', $cond=false) {
static $cache = array();
static $fcache = array();
// si recherche n'est pas dans le contexte, on va prendre en globals
// ca permet de faire des inclure simple.
if (!isset($recherche) AND isset($GLOBALS['recherche']))
$recherche = $GLOBALS['recherche'];
// traiter le cas {recherche?}
if ($cond AND !strlen($recherche))
return array("''" /* as points */, /* where */ '1');
......
......@@ -347,10 +347,7 @@ function balise_TOTAL_BOUCLE_dist($p) {
// Si on est hors d'une boucle {recherche}, ne pas "prendre" cette balise
// http://doc.spip.org/@balise_POINTS_dist
function balise_POINTS_dist($p) {
if ($p->boucles[$p->nom_boucle ? $p->nom_boucle : $p->id_boucle]->hash)
return rindex_pile($p, 'points', 'recherche');
else
return NULL;
return rindex_pile($p, 'points', 'recherche');
}
// http://doc.spip.org/@balise_POPULARITE_ABSOLUE_dist
......
......@@ -130,7 +130,7 @@ function critere_fragment_dist($idb, &$boucles, $crit) {
}
// {recherche}
// {recherche} ou {recherche susan}
// http://www.spip.net/@recherche
// http://doc.spip.org/@critere_recherche_dist
function critere_recherche_dist($idb, &$boucles, $crit) {
......@@ -140,10 +140,15 @@ function critere_recherche_dist($idb, &$boucles, $crit) {
if (in_array($t,$table_des_tables))
$t = "spip_$t";
if (isset($crit->param[0]))
$quoi = calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
else
$quoi = '$Pile[0]["recherche"]';
// Ne pas executer la requete en cas de hash vide
$boucle->hash = '
// RECHERCHE
list($rech_select, $rech_where) = prepare_recherche($GLOBALS["recherche"], "'.$boucle->primary.'", "'.$boucle->id_table.'", "'.$t.'", "'.$crit->cond.'");
list($rech_select, $rech_where) = prepare_recherche('.$quoi.', "'.$boucle->primary.'", "'.$boucle->id_table.'", "'.$t.'", "'.$crit->cond.'");
';
// Sauf si le critere est conditionnel {recherche ?}
......@@ -701,7 +706,7 @@ function calculer_critere_infixe($idb, &$boucles, $crit) {
else if (($col == 'id_secteur')&& ($type == 'forums')) {
$table = critere_secteur_forum($idb, $boucles, $val, $crit);
}
// Cas particulier : expressions de date
else if ($table_date[$type]
AND preg_match(",^((age|jour|mois|annee)_relatif|date|mois|annee|jour|heure|age)(_[a-z]+)?$,",
......
......@@ -546,25 +546,22 @@ function rindex_pile($p, $champ, $motif)
$b = $p->id_boucle;
$p->code = '';
while ($b != '') {
if ($s = $p->boucles[$b]->param) {
foreach($s as $v) {
if (strpos($v[1][0]->texte,$motif) !== false) {
$p->code = '$Pile[$SP' . (($n==0) ? "" : "-$n") .
"]['$champ']";
$b = '';
break;
foreach($p->boucles[$b]->criteres as $critere) {
if ($critere->op == $motif) {
$p->code = '$Pile[$SP' . (($n==0) ? "" : "-$n") .
"]['$champ']";
$b = '';
break 2;
}
}
}
}
$n++;
$b = $p->boucles[$b]->id_parent;
}
if (!$p->code) {
erreur_squelette(_T('zbug_champ_hors_motif',
array('champ' => '#' . strtoupper($champ),
'motif' => $motif)
), $p->id_boucle);
$n++;
$b = $p->boucles[$b]->id_parent;
}
// si on est hors d'une boucle de {recherche}, cette balise est vide
if (!$p->code)
$p->code = "''";
$p->interdire_scripts = false;
return $p;
}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter