1,5 → 1,5 |
<?php |
/*vim: set expandtab tabstop=4 shiftwidth=4: */ |
/*vim: set expandtab tabstop=4 shiftwidth=4: */ |
// +------------------------------------------------------------------------------------------------------+ |
// | PHP version 4.1 | |
// +------------------------------------------------------------------------------------------------------+ |
25,9 → 25,9 |
/** |
* Applette : moteur de recherche |
* |
* G�n�re un formulaire contenant une zone de saisie permettant de taper un texte � rechercher sur l'ensemble |
* des sites g�r�s par Papyrus. |
* Utilisation des biblioth�ques inclue par Papyrus : |
* Génère un formulaire contenant une zone de saisie permettant de taper un texte � rechercher sur l'ensemble |
* des sites gérés par Papyrus. |
* Utilisation des bibliothèques inclue par Papyrus : |
* - Papyrus pap_meta.fonct.php |
* - PEAR NET_URL |
* |
34,11 → 34,11 |
*@package Applette |
*@subpackage Moteur_recherche |
//Auteur original : |
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.24 $ $Date: 2008-10-21 15:24:50 $ |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.24 $ $Date: 2008-10-21 15:24:50 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
|
54,21 → 54,22 |
} |
|
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
$GLOBALS['_GEN_commun']['info_applette_nom_fonction'] = 'afficherMoteurRecherche'; |
$GLOBALS['_GEN_commun']['info_applette_balise'] = '(?:<!-- '.$GLOBALS['_GEN_commun']['balise_prefixe'].'(MOTEUR_RECHERCHE) -->|'. |
'\{\{[[Mm]oteurRecherche'. |
'(?:\s*'. |
'(?:'. |
'(url="[^"]*")|(sphinx="(?:0|1)")'. |
')'. |
')+'. |
'\s*\}\})'; |
$GLOBALS['_GEN_commun']['info_applette_balise'] = |
'(?:<!-- '.$GLOBALS['_GEN_commun']['balise_prefixe'].'(MOTEUR_RECHERCHE) -->|'. |
'\{\{[[Mm]oteurRecherche'. |
'(?:\s*'. |
'(?:'. |
'(url="[^"]*")|(sphinx="(?:0|1)")'. |
')'. |
')+'. |
'\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 |
//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.*/ |
80,47 → 81,47 |
|
// 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'; |
/** 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'; |
/** Inclusion du fichier de traduction par d�faut.*/ |
require_once MORE_CHEMIN_LANGUE.'more_langue_'.MORE_I18N_DEFAUT.'.inc.php'; |
} |
|
// +------------------------------------------------------------------------------------------------------+ |
// | CORPS du PROGRAMME | |
// | CORPS du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
|
if (isset($_POST['more_motif']) && !empty($_POST['more_motif'])) { |
// Initialisation de variable ext�rieures |
$GLOBALS['_VEI_']['usurpation'] = MORE_LG_USURPATION.htmlentities(stripslashes($_POST['more_motif']), ENT_COMPAT|ENT_HTML401, 'ISO8859-15'); |
$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'); |
// Initialisation de variable extèrieures |
$GLOBALS['_VEI_']['usurpation'] = MORE_LG_USURPATION.htmlentities(stripslashes($_POST['more_motif']), ENT_COMPAT|ENT_HTML401, 'ISO8859-15'); |
$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 | |
// | 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. |
* 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 d'éventuel arguments présent dans la balise transmis à la fonction. |
* @param array tableau global de Papyrus. |
* @return string formulaire XHTML de recherche. |
*/ |
130,117 → 131,120 |
// Gestion des arguments |
$options = array(); |
$balise = $tab_applette_arguments[0]; |
$tab_arguments = $tab_applette_arguments; |
$tab_arguments = $tab_applette_arguments; |
unset($tab_arguments[0]); |
foreach($tab_arguments as $argument) { |
if (!empty($argument)) { |
$tab_parametres = explode('=', $argument, 2); |
$options[$tab_parametres[0]] = trim($tab_parametres[1], '"'); |
} |
} |
foreach ($tab_arguments as $argument) { |
if (!empty($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']; |
$sphinx = array_key_exists('sphinx', $options) && $options['sphinx'] ? true : false; |
$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']; |
} |
|
// Initialisation de variable de configuration. |
$liste_type_site = '102, 103';// Les id des types des sites pouvant apparaitre 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_']['bd']['bota'] =& DB::connect(MORE_DSN_BOTA);// Connexion aux BDD sur Agathis |
$GLOBALS['_MOTEUR_RECHERCHE_']['variables'] = array(); |
$code_site = $_GEN_commun['url_site'];// identifiant du site courant. |
$url = $_GEN_commun['url']; |
$sphinx = array_key_exists('sphinx', $options) && $options['sphinx'] ? true : false; |
$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']) || empty($_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; |
if (!isset($_POST['more_motif']) || empty($_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']), ENT_COMPAT|ENT_HTML401, 'ISO8859-15'); |
$_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif'] = $_POST['more_motif']; |
$GLOBALS['_MOTEUR_RECHERCHE_']['formulaire']['more_motif'] = htmlentities(stripslashes($_POST['more_motif']), ENT_COMPAT|ENT_HTML401, 'ISO8859-15'); |
|
/** 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']); |
|
/** 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 (!empty($GLOBALS['_MOTEUR_RECHERCHE_']['projet']['url'])) { |
$recherche_projet = new More_Recherche_Projet($_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif']); |
$moteur->ajouterRecherche($recherche_projet); |
} |
|
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 (!empty($GLOBALS['_MOTEUR_RECHERCHE_']['projet']['url'])) { |
$recherche_projet = new More_Recherche_Projet($_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif']); |
$moteur->ajouterRecherche($recherche_projet); |
} |
|
$sphinx_connect = FALSE; |
if(USE_SPHINX && $sphinx) { |
require_once("moteur_recherche_sphinx.php"); |
if (USE_SPHINX && $sphinx) { |
require_once('moteur_recherche_sphinx.php'); |
$sphinx_connect = @mysql_connect(SPHINX_DSN, NULL, NULL, TRUE); |
if(!$sphinx_connect) error_log("sphinx: can't connect to " . SPHINX_DSN . ", traditionnal SQL fallback [moteur_recherche.php]"); |
if(!$sphinx_connect) { |
error_log("sphinx: can't connect to " . SPHINX_DSN . ", traditionnal SQL fallback [moteur_recherche.php]"); |
} |
} |
if(!$sphinx_connect) { |
if (!$sphinx_connect) { |
// recherche traditionnelle |
$GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'] = $moteur->rechercherMotif(); |
} else { |
/* ce fichier/cette fonction peut-être réclamé plusieurs fois |
car le motif du template '{{MoteurRecherche}}' est inclu récursivement, |
(la première substitution fait réapparaître '{{MoteurRecherche}}') |
Cela est lié au fonctionnement des sessions et diffère selon un espace de test |
et la config' en production... */ |
car le motif du template '{{MoteurRecherche}}' est inclu récursivement, |
(la première substitution fait réapparaître '{{MoteurRecherche}}') |
Cela est lié au fonctionnement des sessions et diffère selon un espace de test |
et la config' en production... */ |
// if(!isset($GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'])) { |
$GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'] = sphinx_search($_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif']); |
// } |
} |
|
//$GLOBALS['_DEBOGAGE_'] = '<pre>'.print_r($GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'], true).'</pre>'; |
$nbre_pages = count($GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats']); |
//$GLOBALS['_DEBOGAGE_'] = '<pre>'.print_r($GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'], true).'</pre>'; |
$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); |
} |
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]); |
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']); |
249,22 → 253,22 |
} |
} |
|
// G�n�ration du contenu � partir des squelettes |
// 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 |
// Extrait les variables et les ajoutes à l'espace de noms local |
extract($GLOBALS['_MOTEUR_RECHERCHE_'][$squelette]); |
// D�marre le buffer |
// Démarre le buffer |
ob_start(); |
// Inclusion du fichier |
include(MORE_CHEMIN_SQUELETTE.$fichier); |
// R�cup�rer le contenu du buffer |
// Récupérer le contenu du buffer |
$retour = ob_get_contents(); |
// Arr�te et d�truit le buffer |
// 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 |
// 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; |
272,7 → 276,7 |
$GLOBALS['_GEN_commun']['info_menu'] = ''; |
break; |
case 'formulaire' : |
// L'applette est appel�e par d�faut |
// L'applette est appelée par défaut |
$retour_formulaire = $retour; |
break; |
default: |
284,7 → 288,7 |
} |
|
// +------------------------------------------------------------------------------------------------------+ |
// | PIED du PROGRAMME | |
// | PIED du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
|
|