Nouveau point d'entrée dans la recherche
Pour centraliser la recherche sur l'espace privé pour les plugins, je propose d'insérer le pipeline suivant dans exec/recherche.php à la ligne 129 :
$nbplug = pipeline('recherche', array('args' => array('recherche' => $recherche, 'where' => $where, 'hash_recherche' => $hash_recherche, 'testnum' => $testnum), 'data' => _)); if (!$nba AND !$nba1 AND !$nbb AND !$nbb1 AND !$nbr AND !$nbr1 AND !$nbt AND !$nbs AND !$nbs1 AND !$nbplug) { echo ""._T('avis_aucun_resultat').""; }
C'est utilisé sur spip-lettres avec la fonction suivante pour information :
/** * lettres_recherche * * `param array flux * `return array flux * `author Pierre Basson **/ function lettres_recherche($flux) { $args = $flux['args']; $data = $flux['data']; $activer_moteur = ($GLOBALS['meta']['activer_moteur'] == 'oui'); $testnum = $args['testnum']; $recherche = $args['recherche']; $where = $args['where']; $hash_recherche = $args['hash_recherche']; $where_abonnes = split("[[:space:]]+", $recherche); if ($where_abonnes) { foreach ($where_abonnes as $k => $v) $where_abonnes[$k] = "'%" . substr(str_replace("%","\%", spip_abstract_quote($v)),1,-1) . "%'"; $where_abonnes = ($testnum ? "OR " : _) . ("(A.email LIKE " . join(" AND A.email LIKE ", $where_abonnes) . ")"); } $query_lettres['FROM'] = 'spip_lettres'; $query_lettres['WHERE'] = ($testnum ? "(id_lettre = $recherche)" :_) . $where; $query_lettres['ORDER BY'] = "maj DESC"; $query_archives['FROM'] = 'spip_archives'; $query_archives['WHERE'] = ($testnum ? "(id_archive = $recherche)" :_) . $where; $query_archives['ORDER BY'] = "date DESC"; $query_abonnes['FROM'] = 'spip_abonnes AS A, spip_abonnes_lettres AS AL'; $query_abonnes['WHERE'] = ($testnum ? "(A.id_abonne = $recherche)" :_) . $where_abonnes. ' AND A.id_abonne=AL.id_abonne '; $query_abonnes['ORDER BY'] = "A.maj DESC"; $query_abonnes['GROUP BY'] = "A.id_abonne"; if ($activer_moteur) { // texte integral $query_lettres_int = requete_txt_integral('spip_lettres', $hash_recherche); $query_archives_int = requete_txt_integral('spip_archives', $hash_recherche); } $nbl = lettres_afficher_lettres(_T('lettres:lettres_trouvees'), $query_lettres); $nbar = lettres_afficher_archives(_T('lettres:archives_trouvees'), $query_archives); $nba = lettres_afficher_abonnes(_T('lettres:abonnes_trouves'), $query_abonnes); echo $nbl; echo $nbar; echo $nba; if ($activer_moteur) { if ($nbl) { $doublons = join($nbl, ","); $query_lettres_int['WHERE'] .= " AND objet.id_lettre NOT IN ($doublons)"; } $nbl1 = lettres_afficher_lettres(_T('lettres:lettres_trouvees_dans_texte'), $query_lettres_int); echo $nbl1; if ($nbar) { $doublons = join($nbar, ","); $query_archives_int['WHERE'] .= " AND objet.id_archive NOT IN ($doublons)"; } $nbar1 = lettres_afficher_archives(_T('lettres:archives_trouvees_dans_texte'), $query_archives_int); echo $nbar1; } if ($data) $resultat = true; else if ($nbl OR $nbar OR $nba OR $nbl1 OR $nbar1) $resultat = true; else $resultat = false; return array('args' => $args, 'data' => $resultat); }