//Autres auteurs : *@author Aucun *@copyright Tela-Botanica 2000-2004 *@version $Revision: 1.24 $ $Date: 2008-10-21 15:24:50 $ // +------------------------------------------------------------------------------------------------------+ */ // +------------------------------------------------------------------------------------------------------+ // | ENTETE du PROGRAMME | // +------------------------------------------------------------------------------------------------------+ $GLOBALS['_GEN_commun']['info_applette_nom_fonction'] = 'afficherMoteurRecherche'; $GLOBALS['_GEN_commun']['info_applette_balise'] = '(?:|'. '\{\{[[Mm]oteurRecherche'. '(?:\s*'. '(?:'. '(url="[^"]*")|'. ')'. ')+'. '\s*\}\})'; // -------------------------------------------------------------------------------------------------------- //Utilisation de la bibliothï¿œque Papyrus pap_meta.fonct.php inclue par Papyrus //Utilisation de la bibliothï¿œque PEAR NET_URL inclue par Papyrus /** Inclusion du fichier de configuration de cette application.*/ require_once GEN_CHEMIN_APPLETTE.'moteur_recherche/configuration/more_configuration.inc.php'; /** Inclusion du fichier de configuration des Spip.*/ require_once GEN_CHEMIN_APPLETTE.'moteur_recherche/configuration/more_config_spip.inc.php'; /** Inclusion du fichier de configuration de l appli projet.*/ require_once GEN_CHEMIN_APPLETTE.'moteur_recherche/configuration/more_config_projet.inc.php'; /** Inclusion du fichier de configuration de l appli bazar.*/ require_once GEN_CHEMIN_APPLETTE.'moteur_recherche/configuration/more_config_bazar.inc.php'; // Inclusion des fichiers de traduction de l'appli ADME de Papyrus if (file_exists(MORE_CHEMIN_LANGUE.'more_langue_'.$GLOBALS['_GEN_commun']['i18n'].'.inc.php')) { /** Inclusion du fichier de traduction suite ï¿œ la transaction avec le navigateur.*/ require_once MORE_CHEMIN_LANGUE.'more_langue_'.$GLOBALS['_GEN_commun']['i18n'].'.inc.php'; } else { /** Inclusion du fichier de traduction par dï¿œfaut.*/ require_once MORE_CHEMIN_LANGUE.'more_langue_'.MORE_I18N_DEFAUT.'.inc.php'; } // +------------------------------------------------------------------------------------------------------+ // | CORPS du PROGRAMME | // +------------------------------------------------------------------------------------------------------+ if (isset($_POST['more_motif']) && $_POST['more_motif'] != '') { // Initialisation de variable extï¿œrieures $GLOBALS['_VEI_']['usurpation'] = MORE_LG_USURPATION.htmlentities(stripslashes($_POST['more_motif'])); $GLOBALS['_PAPYRUS_']['general']['application_chemin'] = null; // Modification des meta de l'entï¿œte de la page GEN_modifierMetaHttpEquiv('Content-Type', 'text/html; charset=ISO-8859-15'); GEN_modifierMetaHttpEquiv('Content-style-type', 'text/css'); GEN_modifierMetaHttpEquiv('Content-script-type', 'text/javascript'); GEN_modifierMetaHttpEquiv('Content-language', $GLOBALS['_GEN_commun']['i18n']); GEN_modifierMetaName('revisit-after', '15 days'); GEN_modifierMetaName('robots', 'index,follow'); GEN_modifierMetaName('author', 'Tela Botanica'); GEN_modifierMetaName('keywords', 'Recherche, rï¿œsultat.'); GEN_modifierMetaName('description', 'Page de rï¿œsultats du moteur de recherche de Papyrus.'); GEN_viderMeta('dc'); } // +------------------------------------------------------------------------------------------------------+ // | LISTE de FONCTIONS | // +------------------------------------------------------------------------------------------------------+ /** Fonction afficherMoteurRecherche() - Fournit un formulaire de recherche. * * Renvoie un formulaire permettant de rechercher une chaine de caractï¿œres dans les sites * gï¿œrï¿œs par Papyrus. * Necessite l'utilisation de Pear Net_URL par le programme appelant cette fonction. * * @param array tableau d'ï¿œventuel arguments prï¿œsent dans la balise transmis ï¿œ la fonction. * @param array tableau global de Papyrus. * @return string formulaire XHTML de recherche. */ function afficherMoteurRecherche($tab_applette_arguments, $_GEN_commun) { //+----------------------------------------------------------------------------------------------------------------+ // Gestion des arguments $balise = $tab_applette_arguments[0]; $tab_arguments = $tab_applette_arguments; unset($tab_arguments[0]); foreach($tab_arguments as $argument) { if ($argument != '') { $tab_parametres = explode('=', $argument, 2); $options[$tab_parametres[0]] = trim($tab_parametres[1], '"'); } } // -------------------------------------------------------------------------------------------------------- // Initialisation de variable de configuration. $liste_type_site = '102, 103';// Les id des types des sites pouvant apparaï¿œtre dans le sï¿œlecteur $objet_pear_db =& $_GEN_commun['pear_db'];//objet Pear crᅵᅵ par DB contenant la connexion ï¿œ la base de donnï¿œes. $GLOBALS['_MOTEUR_RECHERCHE_']['bd']['papyrus'] =& $_GEN_commun['pear_db'];// Connexion ï¿œ la BD de Papyrus $GLOBALS['_MOTEUR_RECHERCHE_']['variables'] = array(); $code_site = $_GEN_commun['url_site'];// identifiant du site courant. $url = $_GEN_commun['url']; $url_id_type_site = GEN_URL_ID_TYPE_SITE; $indent_origine = 12;// Indentation de dï¿œpart en nombre d'espace $indent_pas = 4;// Pas d'indentation en nombre d'espace $retour = ''; $retour_resultats = ''; // -------------------------------------------------------------------------------------------------------- // Lancement de la recherche si nï¿œcessaire $aso_squelette = array('formulaire' => MORE_FORM_SQUELETTE); $_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif'] = ''; //Greg : gestion d'une url personnalisée passée en paramètres url="" if (!isset($options['url'])) { $GLOBALS['_MOTEUR_RECHERCHE_']['formulaire']['form_url'] = $url->getUrl(); } else { $GLOBALS['_MOTEUR_RECHERCHE_']['formulaire']['form_url'] = $options['url']; } $GLOBALS['_MOTEUR_RECHERCHE_']['formulaire']['form_tab'] = MORE_FORM_MOTIF_TAB; $GLOBALS['_MOTEUR_RECHERCHE_']['formulaire']['more_motif_base'] = MORE_LG_FORM_MOTIF_VALUE; if (!isset($_POST['more_motif']) || $_POST['more_motif'] == '') { $GLOBALS['_MOTEUR_RECHERCHE_']['formulaire']['more_motif'] = MORE_LG_FORM_MOTIF_VALUE; } else { // Ajout du squelette de rï¿œsultat $aso_squelette['resultat'] = MORE_RESULTAT_SQUELETTE; // Titre de la page $GLOBALS['_PAPYRUS_']['rendu']['TITRE_PAGE'] = MORE_LG_TITRE.htmlentities(stripslashes($_POST['more_motif'])); $_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif'] = $_POST['more_motif']; $GLOBALS['_MOTEUR_RECHERCHE_']['formulaire']['more_motif'] = htmlentities(stripslashes($_POST['more_motif'])); /** Inclusion de la classe Recherche.*/ require_once MORE_CHEMIN_BIBLIO.'more_recherche.class.php'; /** Inclusion de la classe Recherche_Papyrus_Menu.*/ require_once MORE_CHEMIN_BIBLIO.'more_recherche_papyrus_menu.class.php'; /** Inclusion de la classe Recherche_Spip_Article.*/ require_once MORE_CHEMIN_BIBLIO.'more_recherche_spip_article.class.php'; /** Inclusion de la classe Recherche_Projet.*/ require_once MORE_CHEMIN_BIBLIO.'more_recherche_projet.class.php'; /** inclusion de la classe Recheche Bazar. */ require_once MORE_CHEMIN_BIBLIO.'more_recherche_bazar.class.php'; $moteur = new More_Recherche($_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif']); $recherche_papyrus_menu = new More_Recherche_Papyrus_Menu($_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif']); $moteur->ajouterRecherche($recherche_papyrus_menu); if (!empty($GLOBALS['_MOTEUR_RECHERCHE_']['spip'])) { $recherche_spip_article = new More_Recherche_Spip_Article($_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif']); $moteur->ajouterRecherche($recherche_spip_article); } if (!empty($GLOBALS['_MOTEUR_RECHERCHE_']['bazar'][0])) { $recherche_bazar = new More_Recherche_Bazar($_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif']); $moteur->ajouterRecherche($recherche_bazar); } if ($GLOBALS['_MOTEUR_RECHERCHE_']['projet']['url']!="") { $recherche_projet = new More_Recherche_Projet($_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif']); $moteur->ajouterRecherche($recherche_projet); } $GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'] = $moteur->rechercherMotif(); //$GLOBALS['_DEBOGAGE_'] = '
'.print_r($GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'], true).'
'; $nbre_pages = count($GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats']); $GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['nbre_pages'] = $nbre_pages; $GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['vide'] = MORE_LG_RESULTAT_VIDE; if ($nbre_pages <= 1) { $GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['titre'] = sprintf(MORE_LG_RESULTAT_TITRE, $nbre_pages); } else { $GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['titre'] = sprintf(MORE_LG_RESULTAT_TITRE_PLURIEL, $nbre_pages); } foreach ($GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'] as $cle => $val) { if (empty($val['url'])) { unset($GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'][$cle]); } else { $GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'][$cle]['score'] = trim($val['score']); $GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'][$cle]['date_creation'] = trim($val['date_creation']); $GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'][$cle]['description'] = trim($val['description']); } } } // Gᅵnᅵration du contenu ᅵ partir des squelettes foreach ($aso_squelette as $squelette => $fichier) { // Extrait les variables et les ajoutes ᅵ l'espace de noms local extract($GLOBALS['_MOTEUR_RECHERCHE_'][$squelette]); // Dᅵmarre le buffer ob_start(); // Inclusion du fichier include(MORE_CHEMIN_SQUELETTE.$fichier); // Rᅵcupᅵrer le contenu du buffer $retour = ob_get_contents(); // Arrᅵte et dᅵtruit le buffer ob_end_clean(); // Retourne le contenu switch ($squelette) { case 'resultat' : // L'applette fournie un rᅵsultat qui ᅵcrase le contenu de la page courrante $GLOBALS['_PAPYRUS_']['rendu']['CONTENU_NAVIGATION'] = ''; $GLOBALS['_PAPYRUS_']['rendu']['CONTENU_TETE'] = ''; $GLOBALS['_PAPYRUS_']['rendu']['CONTENU_CORPS'] = $retour; $GLOBALS['_PAPYRUS_']['rendu']['CONTENU_PIED'] = ''; $GLOBALS['_GEN_commun']['info_menu'] = ''; break; case 'formulaire' : // L'applette est appelᅵe par dᅵfaut $retour_formulaire = $retour; break; default: $e = "Squellette <$squelette> pour le moteur de recherche inconnu!"; trigger_error($e, E_USER_WARNING); } } return $retour_formulaire; } // +------------------------------------------------------------------------------------------------------+ // | PIED du PROGRAMME | // +------------------------------------------------------------------------------------------------------+ /* +--Fin du code ----------------------------------------------------------------------------------------+ * * $Log: not supported by cvs2svn $ * Revision 1.23 2008-08-26 15:31:16 alexandre_tb * ajout du moteur de recherche dans l'appli projet * * Revision 1.22 2007-11-30 14:02:48 alexandre_tb * Fusion avec la livraison * * Revision 1.21 2007-10-29 18:29:30 jp_milcent * Ajout d'un prᅵfixe devant les classes de l'applette pour ᅵviter les conflits avec d'autres classes provenant des applis clientes. * * Revision 1.20 2007-06-15 12:27:39 jp_milcent * Ajout de fonctionnalitᅵs Javascript au moteur de recherche. * * Revision 1.19 2007-01-02 18:49:22 jp_milcent * Amᅵlioration de la gestion du motif. * Ajout de la gestion des expressions complᅵte via l'utilisation de guillemets. * * Revision 1.18 2006/12/12 13:53:54 jp_milcent * Mise en place du nouveau format des balises d'applette. * * Revision 1.17 2006/12/01 16:33:40 florian * Amᅵlioration de la gestion des applettes et compatibilitᅵ avec le nouveau mode de gestion de l'inclusion des applettes. * * Revision 1.16 2006/11/20 09:36:59 jp_milcent * Correction bogue zᅵro rᅵsultat et ajout d'url simple pour indiquer la page de l'article. * * Revision 1.15 2006/11/14 16:10:13 jp_milcent * Extraction du XHTML et utilisation de squelettes ᅵ la place. * Possibilitᅵ de configurer le squlette voulu via le fichier de conf. * * Revision 1.14 2006/10/10 13:28:14 jp_milcent * Suppression d'une variable et utilisation de la constante PAP_URL * * Revision 1.13 2006/10/10 12:02:30 jp_milcent * Suppression d'une bibliothᅵque Pear qu'il est inutile d'inclure. * Ajout du chemin vers la bibliotheque Pear de Papyrus. * * Revision 1.12 2006/06/16 09:45:10 jp_milcent * Correction bogue liᅵ ᅵ la suppression de l'objet info_menu. * * Revision 1.11 2006/05/23 13:39:13 florian * corection bug notice de jean pascal ;-) * * Revision 1.10 2006/05/19 10:04:55 jp_milcent * Ajout d'un moteur de recherche analysant les articles des sites sous Spip. * * Revision 1.9 2006/04/28 12:41:49 florian * corrections erreurs chemin * * Revision 1.8 2006/03/02 10:49:49 ddelon * Fusion branche multilinguisme dans branche principale * * Revision 1.7.2.2 2005/12/27 15:56:00 ddelon * Fusion Head vers multilinguisme (wikini double clic) * * Revision 1.7.2.1 2005/12/20 14:40:25 ddelon * Fusion Head vers Livraison * * Revision 1.7 2005/09/27 09:07:32 ddelon * size applette et squelettes * * Revision 1.6 2005/05/25 13:49:22 jpm * Corection erreur pour la recherche dans le contenu. * * Revision 1.5 2005/05/19 12:46:12 jpm * Correction bogue accesskey. * Ajout d'un id ᅵ la liste. * Arrondissement des score. * * Revision 1.4 2005/04/14 17:39:34 jpm * Amᅵlioration du moteur de rechercher : * - pourcentage * - ajout d'info * * Revision 1.3 2005/02/22 19:27:21 jpm * Changement de nom de variables. * Suppression de l'attribut nam de la balise form via une mᅵthode de HTML_Common. * * Revision 1.2 2005/02/22 17:44:03 jpm * Suppression de rᅵfᅵrence posant problᅵme. * * Revision 1.1 2004/12/07 10:24:01 jpm * Moteur de recherche version de dᅵpart. * * * +-- Fin du code ----------------------------------------------------------------------------------------+ */ ?>