From 644fea738f22d8c4ee949ab8cbb76e505b75bff1 Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Mon, 13 Dec 2010 09:26:57 +0000 Subject: [PATCH] report ameliore et plus generique de http://core.spip.org/trac/spip/changeset/aa0a47b Il subsiste un defaut : seuls les criteres present avant le {recherche} sont pris en compte dans la recherche. A ameliorer si possible. --- ecrire/inc/prepare_recherche.php | 24 +++++++++++++++++++----- ecrire/public/criteres.php | 3 ++- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/ecrire/inc/prepare_recherche.php b/ecrire/inc/prepare_recherche.php index 0e5faf2287..2f01166dda 100644 --- a/ecrire/inc/prepare_recherche.php +++ b/ecrire/inc/prepare_recherche.php @@ -16,10 +16,24 @@ if (!defined("_ECRIRE_INC_VERSION")) return; include_spip('inc/rechercher'); if (!defined('_DELAI_CACHE_resultats')) define('_DELAI_CACHE_resultats', 600); -// Preparer les listes id_article IN (...) pour les parties WHERE -// et points = des requetes du moteur de recherche -// http://doc.spip.org/@inc_prepare_recherche_dist -function inc_prepare_recherche_dist($recherche, $table='articles', $cond=false, $serveur='') { +/** + * Preparer les listes id_article IN (...) pour les parties WHERE + * et points = des requetes du moteur de recherche + * http://doc.spip.org/@inc_prepare_recherche_dist + * + * @param string $recherche + * chaine recherchee + * @param string $table + * table dans laquelle porte la recherche + * @param bool $cond + * critere conditionnel sur {recherche?} + * @param string $serveur + * serveur de base de donnees + * @param array $modificateurs + * modificateurs de boucle, ie liste des criteres presents + * @return array + */ +function inc_prepare_recherche_dist($recherche, $table='articles', $cond=false, $serveur='', $modificateurs = array()) { static $cache = array(); $delai_fraicheur = min(_DELAI_CACHE_resultats,time()-$GLOBALS['meta']['derniere_modif']); @@ -60,7 +74,7 @@ function inc_prepare_recherche_dist($recherche, $table='articles', $cond=false, // permettre aux plugins de modifier le resultat $points = pipeline('prepare_recherche',array( - 'args'=>array('type'=>$x,'recherche'=>$recherche,'serveur'=>$serveur), + 'args'=>array('type'=>$x,'recherche'=>$recherche,'serveur'=>$serveur,'modificateurs'=>$modificateurs), 'data'=>$points )); diff --git a/ecrire/public/criteres.php b/ecrire/public/criteres.php index 4d10729e1a..fc44fd4a1a 100644 --- a/ecrire/public/criteres.php +++ b/ecrire/public/criteres.php @@ -187,10 +187,11 @@ function critere_recherche_dist($idb, &$boucles, $crit) { else $quoi = '@$Pile[0]["recherche"]'; + $_modificateur = var_export($boucle->modificateur,true); $boucle->hash .= ' // RECHERCHE $prepare_recherche = charger_fonction(\'prepare_recherche\', \'inc\'); - list($rech_select, $rech_where) = $prepare_recherche('.$quoi.', "'.$boucle->id_table.'", "'.$crit->cond.'","' . $boucle->sql_serveur . '"); + list($rech_select, $rech_where) = $prepare_recherche('.$quoi.', "'.$boucle->id_table.'", "'.$crit->cond.'","' . $boucle->sql_serveur . '",'.$_modificateur.'); '; $t = $boucle->id_table . '.' . $boucle->primary; -- GitLab