Subversion Repositories Applications.papyrus

Rev

Rev 2140 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2140 Rev 2142
1
<?php
1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
3
// +------------------------------------------------------------------------------------------------------+
3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 4.1                                                                                      |
4
// | PHP version 4.1                                                                                      |
5
// +------------------------------------------------------------------------------------------------------+
5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
7
// +------------------------------------------------------------------------------------------------------+
7
// +------------------------------------------------------------------------------------------------------+
8
// | This file is part of Papyrus.                                                                        |
8
// | This file is part of Papyrus.                                                                        |
9
// |                                                                                                      |
9
// |                                                                                                      |
10
// | Foobar is free software; you can redistribute it and/or modify                                       |
10
// | Foobar is free software; you can redistribute it and/or modify                                       |
11
// | it under the terms of the GNU General Public License as published by                                 |
11
// | it under the terms of the GNU General Public License as published by                                 |
12
// | the Free Software Foundation; either version 2 of the License, or                                    |
12
// | the Free Software Foundation; either version 2 of the License, or                                    |
13
// | (at your option) any later version.                                                                  |
13
// | (at your option) any later version.                                                                  |
14
// |                                                                                                      |
14
// |                                                                                                      |
15
// | Foobar is distributed in the hope that it will be useful,                                            |
15
// | Foobar is distributed in the hope that it will be useful,                                            |
16
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
16
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
17
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                        |
17
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                        |
18
// | GNU General Public License for more details.                                                         |
18
// | GNU General Public License for more details.                                                         |
19
// |                                                                                                      |
19
// |                                                                                                      |
20
// | You should have received a copy of the GNU General Public License                                    |
20
// | You should have received a copy of the GNU General Public License                                    |
21
// | along with Foobar; if not, write to the Free Software                                                |
21
// | along with Foobar; if not, write to the Free Software                                                |
22
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
22
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
23
// +------------------------------------------------------------------------------------------------------+
23
// +------------------------------------------------------------------------------------------------------+
24
// CVS : $Id: moteur_recherche.php,v 1.24 2008-10-21 15:24:50 aperonnet Exp $
24
// CVS : $Id: moteur_recherche.php,v 1.24 2008-10-21 15:24:50 aperonnet Exp $
25
/**
25
/**
26
* Applette : moteur de recherche
26
* Applette : moteur de recherche
27
*
27
*
28
* Génère un formulaire contenant une zone de saisie permettant de taper un texte � rechercher sur l'ensemble
28
* Génère un formulaire contenant une zone de saisie permettant de taper un texte � rechercher sur l'ensemble
29
* des sites gérés par Papyrus.
29
* des sites gérés par Papyrus.
30
* Utilisation des bibliothèques inclue par Papyrus :
30
* Utilisation des bibliothèques inclue par Papyrus :
31
* - Papyrus pap_meta.fonct.php
31
* - Papyrus pap_meta.fonct.php
32
* - PEAR NET_URL
32
* - PEAR NET_URL
33
*
33
*
34
*@package Applette
34
*@package Applette
35
*@subpackage Moteur_recherche
35
*@subpackage Moteur_recherche
36
//Auteur original :
36
//Auteur original :
37
*@author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
37
*@author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
38
//Autres auteurs :
38
//Autres auteurs :
39
*@author		Aucun
39
*@author		Aucun
40
*@copyright	 Tela-Botanica 2000-2004
40
*@copyright	 Tela-Botanica 2000-2004
41
*@version	   $Revision: 1.24 $ $Date: 2008-10-21 15:24:50 $
41
*@version	   $Revision: 1.24 $ $Date: 2008-10-21 15:24:50 $
42
// +------------------------------------------------------------------------------------------------------+
42
// +------------------------------------------------------------------------------------------------------+
43
*/
43
*/
44
 
44
 
45
 
45
 
46
// pour utiliser Sphinx, cela désactive alors l'appel à $moteur->rechercherMotif()
46
// pour utiliser Sphinx, cela désactive alors l'appel à $moteur->rechercherMotif()
47
// et utilise sphinx_search() (moteur_recherche_sphinx.php)
47
// et utilise sphinx_search() (moteur_recherche_sphinx.php)
48
// TODO: un test avec mysql_connect() sur le SPHINX_DSN tel que défini dans moteur_recherche_sphinx.php
48
// TODO: un test avec mysql_connect() sur le SPHINX_DSN tel que défini dans moteur_recherche_sphinx.php
49
// pourrait être un plus.
49
// pourrait être un plus.
50
define('USE_SPHINX', TRUE);
50
define('USE_SPHINX', TRUE);
51
// XXX: PHP-5.4
51
// XXX: PHP-5.4
52
if(!defined('ENT_HTML401')) {
52
if(!defined('ENT_HTML401')) {
53
	define('ENT_HTML401', ENT_COMPAT);
53
	define('ENT_HTML401', ENT_COMPAT);
54
}
54
}
55
 
55
 
56
// +------------------------------------------------------------------------------------------------------+
56
// +------------------------------------------------------------------------------------------------------+
57
// |											ENTETE du PROGRAMME									   |
57
// |											ENTETE du PROGRAMME									   |
58
// +------------------------------------------------------------------------------------------------------+
58
// +------------------------------------------------------------------------------------------------------+
59
$GLOBALS['_GEN_commun']['info_applette_nom_fonction'] = 'afficherMoteurRecherche';
59
$GLOBALS['_GEN_commun']['info_applette_nom_fonction'] = 'afficherMoteurRecherche';
60
$GLOBALS['_GEN_commun']['info_applette_balise'] =
60
$GLOBALS['_GEN_commun']['info_applette_balise'] =
61
	'(?:<!-- '.$GLOBALS['_GEN_commun']['balise_prefixe'].'(MOTEUR_RECHERCHE) -->|'.
61
	'(?:<!-- '.$GLOBALS['_GEN_commun']['balise_prefixe'].'(MOTEUR_RECHERCHE) -->|'.
62
	'\{\{[[Mm]oteurRecherche'.
62
	'\{\{[[Mm]oteurRecherche'.
63
	'(?:\s*'.
63
	'(?:\s*'.
64
		'(?:'.
64
		'(?:'.
65
			'(url="[^"]*")|(sphinx="(?:0|1)")'.
65
			'(url="[^"]*")|(sphinx="(?:0|1)")'.
66
		')'.
66
		')'.
67
	')+'.
67
	')+'.
68
	'\s*\}\})';
68
	'\s*\}\})';
69
 
69
 
70
// --------------------------------------------------------------------------------------------------------
70
// --------------------------------------------------------------------------------------------------------
71
//Utilisation de la bibliothèque Papyrus pap_meta.fonct.php inclue par Papyrus
71
//Utilisation de la bibliothèque Papyrus pap_meta.fonct.php inclue par Papyrus
72
//Utilisation de la bibliothèque PEAR NET_URL inclue par Papyrus
72
//Utilisation de la bibliothèque PEAR NET_URL inclue par Papyrus
73
/** Inclusion du fichier de configuration de cette application.*/
73
/** Inclusion du fichier de configuration de cette application.*/
74
require_once GEN_CHEMIN_APPLETTE.'moteur_recherche/configuration/more_configuration.inc.php';
74
require_once GEN_CHEMIN_APPLETTE.'moteur_recherche/configuration/more_configuration.inc.php';
75
/** Inclusion du fichier de configuration des Spip.*/
75
/** Inclusion du fichier de configuration des Spip.*/
76
require_once GEN_CHEMIN_APPLETTE.'moteur_recherche/configuration/more_config_spip.inc.php';
76
require_once GEN_CHEMIN_APPLETTE.'moteur_recherche/configuration/more_config_spip.inc.php';
77
/** Inclusion du fichier de configuration de l appli projet.*/
77
/** Inclusion du fichier de configuration de l appli projet.*/
78
require_once GEN_CHEMIN_APPLETTE.'moteur_recherche/configuration/more_config_projet.inc.php';
78
require_once GEN_CHEMIN_APPLETTE.'moteur_recherche/configuration/more_config_projet.inc.php';
79
/** Inclusion du fichier de configuration de l appli bazar.*/
79
/** Inclusion du fichier de configuration de l appli bazar.*/
80
require_once GEN_CHEMIN_APPLETTE.'moteur_recherche/configuration/more_config_bazar.inc.php';
80
require_once GEN_CHEMIN_APPLETTE.'moteur_recherche/configuration/more_config_bazar.inc.php';
81
 
81
 
82
// Inclusion des fichiers de traduction de l'appli ADME de Papyrus
82
// Inclusion des fichiers de traduction de l'appli ADME de Papyrus
83
if (file_exists(MORE_CHEMIN_LANGUE.'more_langue_'.$GLOBALS['_GEN_commun']['i18n'].'.inc.php')) {
83
if (file_exists(MORE_CHEMIN_LANGUE.'more_langue_'.$GLOBALS['_GEN_commun']['i18n'].'.inc.php')) {
84
	/** Inclusion du fichier de traduction suite � la transaction avec le navigateur.*/
84
	/** Inclusion du fichier de traduction suite � la transaction avec le navigateur.*/
85
	require_once MORE_CHEMIN_LANGUE.'more_langue_'.$GLOBALS['_GEN_commun']['i18n'].'.inc.php';
85
	require_once MORE_CHEMIN_LANGUE.'more_langue_'.$GLOBALS['_GEN_commun']['i18n'].'.inc.php';
86
} else {
86
} else {
87
	/** Inclusion du fichier de traduction par d�faut.*/
87
	/** Inclusion du fichier de traduction par d�faut.*/
88
	require_once MORE_CHEMIN_LANGUE.'more_langue_'.MORE_I18N_DEFAUT.'.inc.php';
88
	require_once MORE_CHEMIN_LANGUE.'more_langue_'.MORE_I18N_DEFAUT.'.inc.php';
89
}
89
}
90
 
90
 
91
// +------------------------------------------------------------------------------------------------------+
91
// +------------------------------------------------------------------------------------------------------+
92
// |											CORPS du PROGRAMME										|
92
// |											CORPS du PROGRAMME										|
93
// +------------------------------------------------------------------------------------------------------+
93
// +------------------------------------------------------------------------------------------------------+
94
 
94
 
95
if (isset($_POST['more_motif']) && !empty($_POST['more_motif'])) {
95
if (isset($_POST['more_motif']) && !empty($_POST['more_motif'])) {
96
	// Initialisation de variable extèrieures
96
	// Initialisation de variable extèrieures
97
	$GLOBALS['_VEI_']['usurpation'] = MORE_LG_USURPATION.htmlentities(stripslashes($_POST['more_motif']), ENT_COMPAT|ENT_HTML401, 'ISO8859-15');
97
	$GLOBALS['_VEI_']['usurpation'] = MORE_LG_USURPATION.htmlentities(stripslashes($_POST['more_motif']), ENT_COMPAT|ENT_HTML401, 'ISO8859-15');
98
	$GLOBALS['_PAPYRUS_']['general']['application_chemin'] = null;
98
	$GLOBALS['_PAPYRUS_']['general']['application_chemin'] = null;
99
	// Modification des meta de l'ent�te de la page
99
	// Modification des meta de l'ent�te de la page
100
	GEN_modifierMetaHttpEquiv('Content-Type', 'text/html; charset=ISO-8859-15');
100
	GEN_modifierMetaHttpEquiv('Content-Type', 'text/html; charset=ISO-8859-15');
101
	GEN_modifierMetaHttpEquiv('Content-style-type', 'text/css');
101
	GEN_modifierMetaHttpEquiv('Content-style-type', 'text/css');
102
	GEN_modifierMetaHttpEquiv('Content-script-type', 'text/javascript');
102
	GEN_modifierMetaHttpEquiv('Content-script-type', 'text/javascript');
103
	GEN_modifierMetaHttpEquiv('Content-language', $GLOBALS['_GEN_commun']['i18n']);
103
	GEN_modifierMetaHttpEquiv('Content-language', $GLOBALS['_GEN_commun']['i18n']);
104
 
104
 
105
	GEN_modifierMetaName('revisit-after', '15 days');
105
	GEN_modifierMetaName('revisit-after', '15 days');
106
	GEN_modifierMetaName('robots', 'index,follow');
106
	GEN_modifierMetaName('robots', 'index,follow');
107
	GEN_modifierMetaName('author', 'Tela Botanica');
107
	GEN_modifierMetaName('author', 'Tela Botanica');
108
	GEN_modifierMetaName('keywords', 'Recherche, résultat.');
108
	GEN_modifierMetaName('keywords', 'Recherche, résultat.');
109
	GEN_modifierMetaName('description', 'Page de résultats du moteur de recherche de Papyrus.');
109
	GEN_modifierMetaName('description', 'Page de résultats du moteur de recherche de Papyrus.');
110
 
110
 
111
	GEN_viderMeta('dc');
111
	GEN_viderMeta('dc');
112
}
112
}
113
 
113
 
114
// +------------------------------------------------------------------------------------------------------+
114
// +------------------------------------------------------------------------------------------------------+
115
// |										   LISTE de FONCTIONS										 |
115
// |										   LISTE de FONCTIONS										 |
116
// +------------------------------------------------------------------------------------------------------+
116
// +------------------------------------------------------------------------------------------------------+
117
 
117
 
118
/** Fonction afficherMoteurRecherche() - Fournit un formulaire de recherche.
118
/** Fonction afficherMoteurRecherche() - Fournit un formulaire de recherche.
119
*
119
*
120
* Renvoie un formulaire permettant de rechercher une chaine de caractères dans les sites
120
* Renvoie un formulaire permettant de rechercher une chaine de caractères dans les sites
121
* gérés par Papyrus.
121
* gérés par Papyrus.
122
* Necessite l'utilisation de Pear Net_URL par le programme appelant cette fonction.
122
* Necessite l'utilisation de Pear Net_URL par le programme appelant cette fonction.
123
*
123
*
124
* @param  array  tableau d'éventuel arguments présent dans la balise transmis à la fonction.
124
* @param  array  tableau d'éventuel arguments présent dans la balise transmis à la fonction.
125
* @param  array  tableau global de Papyrus.
125
* @param  array  tableau global de Papyrus.
126
* @return string  formulaire XHTML de recherche.
126
* @return string  formulaire XHTML de recherche.
127
*/
127
*/
128
function afficherMoteurRecherche($tab_applette_arguments, $_GEN_commun)
128
function afficherMoteurRecherche($tab_applette_arguments, $_GEN_commun)
129
{
129
{
130
	//+----------------------------------------------------------------------------------------------------------------+
130
	//+----------------------------------------------------------------------------------------------------------------+
131
	// Gestion des arguments
131
	// Gestion des arguments
132
	$options = array();
132
	$options = array();
133
	$balise = $tab_applette_arguments[0];
133
	$balise = $tab_applette_arguments[0];
134
	$tab_arguments = $tab_applette_arguments;
134
	$tab_arguments = $tab_applette_arguments;
135
	unset($tab_arguments[0]);
135
	unset($tab_arguments[0]);
136
	foreach ($tab_arguments as $argument) {
136
	foreach ($tab_arguments as $argument) {
137
		if (!empty($argument)) {
137
		if (!empty($argument)) {
138
			$tab_parametres = explode('=', $argument, 2);
138
			$tab_parametres = explode('=', $argument, 2);
139
			$options[$tab_parametres[0]] = trim($tab_parametres[1], '"');
139
			$options[$tab_parametres[0]] = trim($tab_parametres[1], '"');
140
		}
140
		}
141
	}
141
	}
142
 
142
 
143
	// --------------------------------------------------------------------------------------------------------
143
	// --------------------------------------------------------------------------------------------------------
144
	// Initialisation de variable de configuration.
144
	// Initialisation de variable de configuration.
145
	$liste_type_site = '102, 103';// Les id des types des sites pouvant apparaitre dans le sélecteur
145
	$liste_type_site = '102, 103';// Les id des types des sites pouvant apparaitre dans le sélecteur
146
	$objet_pear_db =& $_GEN_commun['pear_db'];//objet Pear créé par DB contenant la connexion à la base de données.
146
	$objet_pear_db =& $_GEN_commun['pear_db'];//objet Pear créé par DB contenant la connexion à la base de données.
-
 
147
	// Connexion à la BD de Papyrus
147
	$GLOBALS['_MOTEUR_RECHERCHE_']['bd']['papyrus'] =& $_GEN_commun['pear_db'];// Connexion à la BD de Papyrus
148
	$GLOBALS['_MOTEUR_RECHERCHE_']['bd']['papyrus'] =& $_GEN_commun['pear_db'];
-
 
149
	// Connexion aux BDD sur Agathis
148
	$GLOBALS['_MOTEUR_RECHERCHE_']['bd']['bota'] =& DB::connect(MORE_DSN_BOTA);// Connexion aux BDD sur Agathis
150
	$GLOBALS['_MOTEUR_RECHERCHE_']['bd']['bota'] =& DB::connect(MORE_DSN_BOTA);
-
 
151
	if (DB::isError($GLOBALS['_MOTEUR_RECHERCHE_']['bd']['bota'])) {
-
 
152
		$msg_erreur_connection = 'Impossible de se connecter à la base de données botaniques.';
-
 
153
		die(BOG_afficherErreurSql(__FILE__, __LINE__, $GLOBALS['_MOTEUR_RECHERCHE_']['bd']['bota']->getMessage(), 'connexion à la base de données',$msg_erreur_connection));
-
 
154
	}
149
	$GLOBALS['_MOTEUR_RECHERCHE_']['variables'] = array();
155
	$GLOBALS['_MOTEUR_RECHERCHE_']['variables'] = array();
150
	$code_site = $_GEN_commun['url_site'];// identifiant du site courant.
156
	$code_site = $_GEN_commun['url_site'];// identifiant du site courant.
151
	$url = $_GEN_commun['url'];
157
	$url = $_GEN_commun['url'];
152
	$sphinx = array_key_exists('sphinx', $options) && $options['sphinx'] ? true : false;
158
	$sphinx = array_key_exists('sphinx', $options) && $options['sphinx'] ? true : false;
153
	$url_id_type_site = GEN_URL_ID_TYPE_SITE;
159
	$url_id_type_site = GEN_URL_ID_TYPE_SITE;
154
	$indent_origine = 12;// Indentation de départ en nombre d'espace
160
	$indent_origine = 12;// Indentation de départ en nombre d'espace
155
	$indent_pas	 = 4;// Pas d'indentation en nombre d'espace
161
	$indent_pas	 = 4;// Pas d'indentation en nombre d'espace
156
	$retour = '';
162
	$retour = '';
157
	$retour_resultats = '';
163
	$retour_resultats = '';
158
 
164
 
159
	// --------------------------------------------------------------------------------------------------------
165
	// --------------------------------------------------------------------------------------------------------
160
	// Lancement de la recherche si nécessaire
166
	// Lancement de la recherche si nécessaire
161
	$aso_squelette = array('formulaire' => MORE_FORM_SQUELETTE);
167
	$aso_squelette = array('formulaire' => MORE_FORM_SQUELETTE);
162
	$_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif'] = '';
168
	$_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif'] = '';
163
 
169
 
164
	//Greg : gestion d'une url personnalisée passée en paramètres url=""
170
	//Greg : gestion d'une url personnalisée passée en paramètres url=""
165
	if (!isset($options['url']))	{
171
	if (!isset($options['url']))	{
166
		$GLOBALS['_MOTEUR_RECHERCHE_']['formulaire']['form_url'] = $url->getUrl();
172
		$GLOBALS['_MOTEUR_RECHERCHE_']['formulaire']['form_url'] = $url->getUrl();
167
	} else {
173
	} else {
168
		$GLOBALS['_MOTEUR_RECHERCHE_']['formulaire']['form_url'] = $options['url'];
174
		$GLOBALS['_MOTEUR_RECHERCHE_']['formulaire']['form_url'] = $options['url'];
169
	}
175
	}
170
 
176
 
171
	$GLOBALS['_MOTEUR_RECHERCHE_']['formulaire']['form_tab'] = MORE_FORM_MOTIF_TAB;
177
	$GLOBALS['_MOTEUR_RECHERCHE_']['formulaire']['form_tab'] = MORE_FORM_MOTIF_TAB;
172
	$GLOBALS['_MOTEUR_RECHERCHE_']['formulaire']['more_motif_base'] = MORE_LG_FORM_MOTIF_VALUE;
178
	$GLOBALS['_MOTEUR_RECHERCHE_']['formulaire']['more_motif_base'] = MORE_LG_FORM_MOTIF_VALUE;
173
	if (!isset($_POST['more_motif']) || empty($_POST['more_motif'])) {
179
	if (!isset($_POST['more_motif']) || empty($_POST['more_motif'])) {
174
		$GLOBALS['_MOTEUR_RECHERCHE_']['formulaire']['more_motif'] = MORE_LG_FORM_MOTIF_VALUE;
180
		$GLOBALS['_MOTEUR_RECHERCHE_']['formulaire']['more_motif'] = MORE_LG_FORM_MOTIF_VALUE;
175
	} else {
181
	} else {
176
		// Ajout du squelette de résultat
182
		// Ajout du squelette de résultat
177
		$aso_squelette['resultat'] = MORE_RESULTAT_SQUELETTE;
183
		$aso_squelette['resultat'] = MORE_RESULTAT_SQUELETTE;
178
		// Titre de la page
184
		// Titre de la page
179
		$GLOBALS['_PAPYRUS_']['rendu']['TITRE_PAGE'] = MORE_LG_TITRE.htmlentities(stripslashes($_POST['more_motif']), ENT_COMPAT|ENT_HTML401, 'ISO8859-15');
185
		$GLOBALS['_PAPYRUS_']['rendu']['TITRE_PAGE'] = MORE_LG_TITRE.htmlentities(stripslashes($_POST['more_motif']), ENT_COMPAT|ENT_HTML401, 'ISO8859-15');
180
		$_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif'] = $_POST['more_motif'];
186
		$_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif'] = $_POST['more_motif'];
181
		$GLOBALS['_MOTEUR_RECHERCHE_']['formulaire']['more_motif'] =  htmlentities(stripslashes($_POST['more_motif']), ENT_COMPAT|ENT_HTML401, 'ISO8859-15');
187
		$GLOBALS['_MOTEUR_RECHERCHE_']['formulaire']['more_motif'] =  htmlentities(stripslashes($_POST['more_motif']), ENT_COMPAT|ENT_HTML401, 'ISO8859-15');
182
 
188
 
183
		/** Inclusion de la classe Recherche.*/
189
		/** Inclusion de la classe Recherche.*/
184
		require_once MORE_CHEMIN_BIBLIO.'more_recherche.class.php';
190
		require_once MORE_CHEMIN_BIBLIO.'more_recherche.class.php';
185
		/** Inclusion de la classe Recherche_Papyrus_Menu.*/
191
		/** Inclusion de la classe Recherche_Papyrus_Menu.*/
186
		require_once MORE_CHEMIN_BIBLIO.'more_recherche_papyrus_menu.class.php';
192
		require_once MORE_CHEMIN_BIBLIO.'more_recherche_papyrus_menu.class.php';
187
		/** Inclusion de la classe Recherche_Spip_Article.*/
193
		/** Inclusion de la classe Recherche_Spip_Article.*/
188
		require_once MORE_CHEMIN_BIBLIO.'more_recherche_spip_article.class.php';
194
		require_once MORE_CHEMIN_BIBLIO.'more_recherche_spip_article.class.php';
189
		/** Inclusion de la classe Recherche_Projet.*/
195
		/** Inclusion de la classe Recherche_Projet.*/
190
		require_once MORE_CHEMIN_BIBLIO.'more_recherche_projet.class.php';
196
		require_once MORE_CHEMIN_BIBLIO.'more_recherche_projet.class.php';
191
		/** inclusion de la classe Recheche Bazar. */
197
		/** inclusion de la classe Recheche Bazar. */
192
		require_once MORE_CHEMIN_BIBLIO.'more_recherche_bazar.class.php';
198
		require_once MORE_CHEMIN_BIBLIO.'more_recherche_bazar.class.php';
193
		$moteur = new More_Recherche($_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif']);
199
		$moteur = new More_Recherche($_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif']);
194
 
200
 
195
		$recherche_papyrus_menu = new More_Recherche_Papyrus_Menu($_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif']);
201
		$recherche_papyrus_menu = new More_Recherche_Papyrus_Menu($_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif']);
196
		$moteur->ajouterRecherche($recherche_papyrus_menu);
202
		$moteur->ajouterRecherche($recherche_papyrus_menu);
197
 
203
 
198
		if (!empty($GLOBALS['_MOTEUR_RECHERCHE_']['spip']))	{
204
		if (!empty($GLOBALS['_MOTEUR_RECHERCHE_']['spip']))	{
199
			$recherche_spip_article = new More_Recherche_Spip_Article($_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif']);
205
			$recherche_spip_article = new More_Recherche_Spip_Article($_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif']);
200
			$moteur->ajouterRecherche($recherche_spip_article);
206
			$moteur->ajouterRecherche($recherche_spip_article);
201
		}
207
		}
202
 
208
 
203
		if (!empty($GLOBALS['_MOTEUR_RECHERCHE_']['bazar'][0]))	{
209
		if (!empty($GLOBALS['_MOTEUR_RECHERCHE_']['bazar'][0]))	{
204
			$recherche_bazar = new More_Recherche_Bazar($_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif']);
210
			$recherche_bazar = new More_Recherche_Bazar($_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif']);
205
			$moteur->ajouterRecherche($recherche_bazar);
211
			$moteur->ajouterRecherche($recherche_bazar);
206
		}
212
		}
207
 
213
 
208
		if (!empty($GLOBALS['_MOTEUR_RECHERCHE_']['projet']['url']))	{
214
		if (!empty($GLOBALS['_MOTEUR_RECHERCHE_']['projet']['url']))	{
209
			$recherche_projet = new More_Recherche_Projet($_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif']);
215
			$recherche_projet = new More_Recherche_Projet($_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif']);
210
			$moteur->ajouterRecherche($recherche_projet);
216
			$moteur->ajouterRecherche($recherche_projet);
211
		}
217
		}
212
 
218
 
213
		$sphinx_connect = FALSE;
219
		$sphinx_connect = FALSE;
214
		if (USE_SPHINX && $sphinx) {
220
		if (USE_SPHINX && $sphinx) {
215
			require_once('moteur_recherche_sphinx.php');
221
			require_once('moteur_recherche_sphinx.php');
216
			$sphinx_connect = @mysql_connect(SPHINX_DSN, NULL, NULL, TRUE);
222
			$sphinx_connect = @mysql_connect(SPHINX_DSN, NULL, NULL, TRUE);
217
			if(!$sphinx_connect) {
223
			if(!$sphinx_connect) {
218
				error_log("sphinx: can't connect to " . SPHINX_DSN . ", traditionnal SQL fallback [moteur_recherche.php]");
224
				error_log("sphinx: can't connect to " . SPHINX_DSN . ", traditionnal SQL fallback [moteur_recherche.php]");
219
			}
225
			}
220
		}
226
		}
221
		if (!$sphinx_connect) {
227
		if (!$sphinx_connect) {
222
			// recherche traditionnelle
228
			// recherche traditionnelle
223
			$GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'] = $moteur->rechercherMotif();
229
			$GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'] = $moteur->rechercherMotif();
224
		} else {
230
		} else {
225
			/* ce fichier/cette fonction peut-être réclamé plusieurs fois
231
			/* ce fichier/cette fonction peut-être réclamé plusieurs fois
226
			car le motif du template '{{MoteurRecherche}}' est inclu récursivement,
232
			car le motif du template '{{MoteurRecherche}}' est inclu récursivement,
227
			(la première substitution fait réapparaître '{{MoteurRecherche}}')
233
			(la première substitution fait réapparaître '{{MoteurRecherche}}')
228
			Cela est lié au fonctionnement des sessions et diffère selon un espace de test
234
			Cela est lié au fonctionnement des sessions et diffère selon un espace de test
229
			et la config' en production... */
235
			et la config' en production... */
230
			// if(!isset($GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'])) {
236
			// if(!isset($GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'])) {
231
				$GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'] = sphinx_search($_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif']);
237
				$GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'] = sphinx_search($_SESSION['_MOTEUR_RECHERCHE_']['rechercher']['more_motif']);
232
			// }
238
			// }
233
		}
239
		}
234
 
240
 
235
		//$GLOBALS['_DEBOGAGE_'] = '<pre>'.print_r($GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'], true).'</pre>';
241
		//$GLOBALS['_DEBOGAGE_'] = '<pre>'.print_r($GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'], true).'</pre>';
236
		$nbre_pages = count($GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats']);
242
		$nbre_pages = count($GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats']);
237
		$GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['nbre_pages'] = $nbre_pages;
243
		$GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['nbre_pages'] = $nbre_pages;
238
		$GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['vide'] = MORE_LG_RESULTAT_VIDE;
244
		$GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['vide'] = MORE_LG_RESULTAT_VIDE;
239
		if ($nbre_pages <= 1) {
245
		if ($nbre_pages <= 1) {
240
			$GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['titre'] = sprintf(MORE_LG_RESULTAT_TITRE, $nbre_pages);
246
			$GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['titre'] = sprintf(MORE_LG_RESULTAT_TITRE, $nbre_pages);
241
		} else {
247
		} else {
242
			$GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['titre'] = sprintf(MORE_LG_RESULTAT_TITRE_PLURIEL, $nbre_pages);
248
			$GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['titre'] = sprintf(MORE_LG_RESULTAT_TITRE_PLURIEL, $nbre_pages);
243
		}
249
		}
244
 
250
 
245
		foreach ($GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'] as $cle => $val) {
251
		foreach ($GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'] as $cle => $val) {
246
			if (empty($val['url'])) {
252
			if (empty($val['url'])) {
247
				unset($GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'][$cle]);
253
				unset($GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'][$cle]);
248
			} else {
254
			} else {
249
				$GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'][$cle]['score'] = trim($val['score']);
255
				$GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'][$cle]['score'] = trim($val['score']);
250
				$GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'][$cle]['date_creation'] = trim($val['date_creation']);
256
				$GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'][$cle]['date_creation'] = trim($val['date_creation']);
251
				$GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'][$cle]['description'] = trim($val['description']);
257
				$GLOBALS['_MOTEUR_RECHERCHE_']['resultat']['resultats'][$cle]['description'] = trim($val['description']);
252
			}
258
			}
253
		}
259
		}
254
	}
260
	}
255
 
261
 
256
	// Génération du contenu à partir des squelettes
262
	// Génération du contenu à partir des squelettes
257
	foreach ($aso_squelette as $squelette => $fichier) {
263
	foreach ($aso_squelette as $squelette => $fichier) {
258
		// Extrait les variables et les ajoutes à l'espace de noms local
264
		// Extrait les variables et les ajoutes à l'espace de noms local
259
		extract($GLOBALS['_MOTEUR_RECHERCHE_'][$squelette]);
265
		extract($GLOBALS['_MOTEUR_RECHERCHE_'][$squelette]);
260
		// Démarre le buffer
266
		// Démarre le buffer
261
		ob_start();
267
		ob_start();
262
		// Inclusion du fichier
268
		// Inclusion du fichier
263
		include(MORE_CHEMIN_SQUELETTE.$fichier);
269
		include(MORE_CHEMIN_SQUELETTE.$fichier);
264
		// Récupérer le  contenu du buffer
270
		// Récupérer le  contenu du buffer
265
		$retour = ob_get_contents();
271
		$retour = ob_get_contents();
266
		// Arrête et détruit le buffer
272
		// Arrête et détruit le buffer
267
		ob_end_clean();
273
		ob_end_clean();
268
		// Retourne le contenu
274
		// Retourne le contenu
269
		switch ($squelette) {
275
		switch ($squelette) {
270
			case 'resultat' :
276
			case 'resultat' :
271
				// L'applette fournie un résultat qui écrase le contenu de la page courrante
277
				// L'applette fournie un résultat qui écrase le contenu de la page courrante
272
				$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_NAVIGATION'] = '';
278
				$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_NAVIGATION'] = '';
273
				$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_TETE'] = '';
279
				$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_TETE'] = '';
274
				$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_CORPS'] = $retour;
280
				$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_CORPS'] = $retour;
275
				$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_PIED'] = '';
281
				$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_PIED'] = '';
276
				$GLOBALS['_GEN_commun']['info_menu'] = '';
282
				$GLOBALS['_GEN_commun']['info_menu'] = '';
277
				break;
283
				break;
278
			case 'formulaire' :
284
			case 'formulaire' :
279
				// L'applette est appelée par défaut
285
				// L'applette est appelée par défaut
280
				$retour_formulaire = $retour;
286
				$retour_formulaire = $retour;
281
				break;
287
				break;
282
			default:
288
			default:
283
				$e = "Squellette <$squelette> pour le moteur de recherche inconnu!";
289
				$e = "Squellette <$squelette> pour le moteur de recherche inconnu!";
284
				trigger_error($e, E_USER_WARNING);
290
				trigger_error($e, E_USER_WARNING);
285
		}
291
		}
286
	}
292
	}
287
	return $retour_formulaire;
293
	return $retour_formulaire;
288
}
294
}
289
 
295
 
290
// +------------------------------------------------------------------------------------------------------+
296
// +------------------------------------------------------------------------------------------------------+
291
// |											PIED du PROGRAMME										 |
297
// |											PIED du PROGRAMME										 |
292
// +------------------------------------------------------------------------------------------------------+
298
// +------------------------------------------------------------------------------------------------------+
293
 
299
 
294
 
300
 
295
/* +--Fin du code ----------------------------------------------------------------------------------------+
301
/* +--Fin du code ----------------------------------------------------------------------------------------+
296
*
302
*
297
* $Log: not supported by cvs2svn $
303
* $Log: not supported by cvs2svn $
298
* Revision 1.23  2008-08-26 15:31:16  alexandre_tb
304
* Revision 1.23  2008-08-26 15:31:16  alexandre_tb
299
* ajout du moteur de recherche dans l'appli projet
305
* ajout du moteur de recherche dans l'appli projet
300
*
306
*
301
* Revision 1.22  2007-11-30 14:02:48  alexandre_tb
307
* Revision 1.22  2007-11-30 14:02:48  alexandre_tb
302
* Fusion avec la livraison
308
* Fusion avec la livraison
303
*
309
*
304
* Revision 1.21  2007-10-29 18:29:30  jp_milcent
310
* Revision 1.21  2007-10-29 18:29:30  jp_milcent
305
* Ajout d'un pr�fixe devant les classes de l'applette pour �viter les conflits avec d'autres classes provenant des applis clientes.
311
* Ajout d'un pr�fixe devant les classes de l'applette pour �viter les conflits avec d'autres classes provenant des applis clientes.
306
*
312
*
307
* Revision 1.20  2007-06-15 12:27:39  jp_milcent
313
* Revision 1.20  2007-06-15 12:27:39  jp_milcent
308
* Ajout de fonctionnalit�s Javascript au moteur de recherche.
314
* Ajout de fonctionnalit�s Javascript au moteur de recherche.
309
*
315
*
310
* Revision 1.19  2007-01-02 18:49:22  jp_milcent
316
* Revision 1.19  2007-01-02 18:49:22  jp_milcent
311
* Am�lioration de la gestion du motif.
317
* Am�lioration de la gestion du motif.
312
* Ajout de la gestion des expressions compl�te via l'utilisation de guillemets.
318
* Ajout de la gestion des expressions compl�te via l'utilisation de guillemets.
313
*
319
*
314
* Revision 1.18  2006/12/12 13:53:54  jp_milcent
320
* Revision 1.18  2006/12/12 13:53:54  jp_milcent
315
* Mise en place du nouveau format des balises d'applette.
321
* Mise en place du nouveau format des balises d'applette.
316
*
322
*
317
* Revision 1.17  2006/12/01 16:33:40  florian
323
* Revision 1.17  2006/12/01 16:33:40  florian
318
* Am�lioration de la gestion des applettes et compatibilit� avec le nouveau mode de gestion de l'inclusion des applettes.
324
* Am�lioration de la gestion des applettes et compatibilit� avec le nouveau mode de gestion de l'inclusion des applettes.
319
*
325
*
320
* Revision 1.16  2006/11/20 09:36:59  jp_milcent
326
* Revision 1.16  2006/11/20 09:36:59  jp_milcent
321
* Correction bogue z�ro r�sultat et ajout d'url simple pour indiquer la page de l'article.
327
* Correction bogue z�ro r�sultat et ajout d'url simple pour indiquer la page de l'article.
322
*
328
*
323
* Revision 1.15  2006/11/14 16:10:13  jp_milcent
329
* Revision 1.15  2006/11/14 16:10:13  jp_milcent
324
* Extraction du XHTML et utilisation de squelettes � la place.
330
* Extraction du XHTML et utilisation de squelettes � la place.
325
* Possibilit� de configurer le squlette voulu via le fichier de conf.
331
* Possibilit� de configurer le squlette voulu via le fichier de conf.
326
*
332
*
327
* Revision 1.14  2006/10/10 13:28:14  jp_milcent
333
* Revision 1.14  2006/10/10 13:28:14  jp_milcent
328
* Suppression d'une variable et utilisation de la constante PAP_URL
334
* Suppression d'une variable et utilisation de la constante PAP_URL
329
*
335
*
330
* Revision 1.13  2006/10/10 12:02:30  jp_milcent
336
* Revision 1.13  2006/10/10 12:02:30  jp_milcent
331
* Suppression d'une biblioth�que Pear qu'il est inutile d'inclure.
337
* Suppression d'une biblioth�que Pear qu'il est inutile d'inclure.
332
* Ajout du chemin vers la bibliotheque Pear de Papyrus.
338
* Ajout du chemin vers la bibliotheque Pear de Papyrus.
333
*
339
*
334
* Revision 1.12  2006/06/16 09:45:10  jp_milcent
340
* Revision 1.12  2006/06/16 09:45:10  jp_milcent
335
* Correction bogue li� � la suppression de l'objet info_menu.
341
* Correction bogue li� � la suppression de l'objet info_menu.
336
*
342
*
337
* Revision 1.11  2006/05/23 13:39:13  florian
343
* Revision 1.11  2006/05/23 13:39:13  florian
338
* corection bug notice de jean pascal ;-)
344
* corection bug notice de jean pascal ;-)
339
*
345
*
340
* Revision 1.10  2006/05/19 10:04:55  jp_milcent
346
* Revision 1.10  2006/05/19 10:04:55  jp_milcent
341
* Ajout d'un moteur de recherche analysant les articles des sites sous Spip.
347
* Ajout d'un moteur de recherche analysant les articles des sites sous Spip.
342
*
348
*
343
* Revision 1.9  2006/04/28 12:41:49  florian
349
* Revision 1.9  2006/04/28 12:41:49  florian
344
* corrections erreurs chemin
350
* corrections erreurs chemin
345
*
351
*
346
* Revision 1.8  2006/03/02 10:49:49  ddelon
352
* Revision 1.8  2006/03/02 10:49:49  ddelon
347
* Fusion branche multilinguisme dans branche principale
353
* Fusion branche multilinguisme dans branche principale
348
*
354
*
349
* Revision 1.7.2.2  2005/12/27 15:56:00  ddelon
355
* Revision 1.7.2.2  2005/12/27 15:56:00  ddelon
350
* Fusion Head vers multilinguisme (wikini double clic)
356
* Fusion Head vers multilinguisme (wikini double clic)
351
*
357
*
352
* Revision 1.7.2.1  2005/12/20 14:40:25  ddelon
358
* Revision 1.7.2.1  2005/12/20 14:40:25  ddelon
353
* Fusion Head vers Livraison
359
* Fusion Head vers Livraison
354
*
360
*
355
* Revision 1.7  2005/09/27 09:07:32  ddelon
361
* Revision 1.7  2005/09/27 09:07:32  ddelon
356
* size applette et squelettes
362
* size applette et squelettes
357
*
363
*
358
* Revision 1.6  2005/05/25 13:49:22  jpm
364
* Revision 1.6  2005/05/25 13:49:22  jpm
359
* Corection erreur pour la recherche dans le contenu.
365
* Corection erreur pour la recherche dans le contenu.
360
*
366
*
361
* Revision 1.5  2005/05/19 12:46:12  jpm
367
* Revision 1.5  2005/05/19 12:46:12  jpm
362
* Correction bogue accesskey.
368
* Correction bogue accesskey.
363
* Ajout d'un id � la liste.
369
* Ajout d'un id � la liste.
364
* Arrondissement des score.
370
* Arrondissement des score.
365
*
371
*
366
* Revision 1.4  2005/04/14 17:39:34  jpm
372
* Revision 1.4  2005/04/14 17:39:34  jpm
367
* Am�lioration du moteur de rechercher :
373
* Am�lioration du moteur de rechercher :
368
*  - pourcentage
374
*  - pourcentage
369
*  - ajout d'info
375
*  - ajout d'info
370
*
376
*
371
* Revision 1.3  2005/02/22 19:27:21  jpm
377
* Revision 1.3  2005/02/22 19:27:21  jpm
372
* Changement de nom de variables.
378
* Changement de nom de variables.
373
* Suppression de l'attribut nam de la balise form via une m�thode de HTML_Common.
379
* Suppression de l'attribut nam de la balise form via une m�thode de HTML_Common.
374
*
380
*
375
* Revision 1.2  2005/02/22 17:44:03  jpm
381
* Revision 1.2  2005/02/22 17:44:03  jpm
376
* Suppression de r�f�rence posant probl�me.
382
* Suppression de r�f�rence posant probl�me.
377
*
383
*
378
* Revision 1.1  2004/12/07 10:24:01  jpm
384
* Revision 1.1  2004/12/07 10:24:01  jpm
379
* Moteur de recherche version de d�part.
385
* Moteur de recherche version de d�part.
380
*
386
*
381
*
387
*
382
* +-- Fin du code ----------------------------------------------------------------------------------------+
388
* +-- Fin du code ----------------------------------------------------------------------------------------+
383
*/
389
*/
384
?>
390
?>