Subversion Repositories Applications.papyrus

Rev

Rev 1027 | Rev 1034 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
217 jpm 1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 4.1                                                                                      |
5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
7
// +------------------------------------------------------------------------------------------------------+
8
// | This file is part of Papyrus.                                                                        |
9
// |                                                                                                      |
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                                 |
12
// | the Free Software Foundation; either version 2 of the License, or                                    |
13
// | (at your option) any later version.                                                                  |
14
// |                                                                                                      |
15
// | Foobar is distributed in the hope that it will be useful,                                            |
16
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
17
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                        |
18
// | GNU General Public License for more details.                                                         |
19
// |                                                                                                      |
20
// | You should have received a copy of the GNU General Public License                                    |
21
// | along with Foobar; if not, write to the Free Software                                                |
22
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
23
// +------------------------------------------------------------------------------------------------------+
1032 jp_milcent 24
// CVS : $Id: more_recherche_papyrus_menu.class.php,v 1.8 2006-10-16 14:11:30 jp_milcent Exp $
217 jpm 25
/**
26
* Classe permettant d'effectuer des recherches sur les informations des menus de Papyrus.
27
*
28
* Permet de rechercher et classer les menus en fonction d'une chaine.
339 jpm 29
* Utilisation des bibliothèques inclue par Papyrus :
30
* - Papyrus pap_meta.fonct.php
31
* - Papyrus pap_menu.fonct.php
32
* - Papyrus pap_url.class.php
217 jpm 33
*
34
*@package Applette
35
*@subpackage Moteur_Recherche
36
//Auteur original :
37
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
38
//Autres auteurs :
39
*@author        aucun
40
*@copyright     Tela-Botanica 2000-2004
1032 jp_milcent 41
*@version       $Revision: 1.8 $ $Date: 2006-10-16 14:11:30 $
217 jpm 42
// +------------------------------------------------------------------------------------------------------+
43
*/
44
 
45
// +------------------------------------------------------------------------------------------------------+
46
// |                                            ENTETE du PROGRAMME                                       |
47
// +------------------------------------------------------------------------------------------------------+
339 jpm 48
///** Inclusion du fichier contenant les fonctions de manipulations des menus de Papyrus.*/
49
//require_once GEN_CHEMIN_BIBLIO.'pap_menu.fonct.php';
217 jpm 50
 
51
// +------------------------------------------------------------------------------------------------------+
52
// |                                            CORPS du PROGRAMME                                        |
53
// +------------------------------------------------------------------------------------------------------+
54
 
55
class Recherche_Papyrus_Menu extends Recherche{
56
 
57
    // Constructeur
58
    function Recherche_Menu_Meta($motif) {
59
        $this->setMotif($motif);
60
    }
61
 
62
    // Accesseurs
63
    function getMotif() {
64
        return $this->motif;
65
    }
66
    function setMotif($motif) {
67
        $this->motif = $motif;
68
    }
69
 
70
    // Méthodes
71
    function rechercherMotif($motif) {
72
        $db = $GLOBALS['_MOTEUR_RECHERCHE_']['bd']['papyrus'];
73
        $tab_menus = GEN_retournerMenus($db);
74
        foreach ($tab_menus as $cle => $menu_id) {
75
            // Initialisation du tableau de résultat vide
339 jpm 76
            $aso_resultat = array(  'poids' => 0, 'url' => '', 'titre' => '',
77
                                    'hreflang' => '', 'accesskey' => '', 'title' => '',
78
                                    'date_creation' => '', 'description' => '');
79
 
217 jpm 80
            // Récupération des infos du menu courant
81
            $aso_menu_info = GEN_lireInfoMenu($db, $menu_id, DB_FETCHMODE_ASSOC);
339 jpm 82
 
217 jpm 83
            // Récupération du contenu du menu courant
84
            $aso_menu_contenu = GEN_lireContenuMenu($db, $menu_id, DB_FETCHMODE_ASSOC);
1032 jp_milcent 85
 
86
			// Fusion des deux tableaux de champs à analyser
87
			$aso_menu = array_merge($aso_menu_info, $aso_menu_contenu);
88
 
89
            // Analyse du poids de cette page vis à vis des méta informations et du contenu
217 jpm 90
            $tab_champs_a_visiter = array(  'gm_nom', 'gm_titre', 'gm_titre_alternatif', 'gm_mots_cles',
91
                                            'gm_description_libre', 'gm_description_resume', 'gm_description_table_matieres',
92
                                            'gm_source', 'gm_auteur', 'gm_contributeur', 'gm_editeur', 'gm_categorie',
1032 jp_milcent 93
                                            'gm_public', 'gmc_contenu');
94
			$tab_motif = explode(' ', $motif);
95
			$bool_operateur_et = false;
217 jpm 96
            foreach ($tab_champs_a_visiter as $val) {
1032 jp_milcent 97
                $compteur_mot = 0;
98
                foreach ($tab_motif as $mot_motif) {
99
                	$nbre_mot = $this->retournerOccurenceMotif($mot_motif, $aso_menu[$val]);
100
                	if ($nbre_mot > 0) {
101
                		$compteur_mot++;
102
                	}
103
                	$aso_resultat['poids'] += $nbre_mot;
104
                }
105
                if ($compteur_mot == count($tab_motif)) {
106
                	$bool_operateur_et = true;
107
                }
217 jpm 108
            }
373 jpm 109
 
1032 jp_milcent 110
            // Si le menu contient les mots recherchés nous poursuivons
111
			if ($aso_resultat['poids'] > 0 && $bool_operateur_et == true) {
112
                // Création de l'url
113
	            // TODO : utiliser comme pour spip un fichier de config spécifique pour virer PAP_URL d'ici
114
	            $une_url =& new Pap_URL(PAP_URL);
115
	            $une_url->setId($menu_id);
116
	            $aso_resultat['url'] = $une_url->getURL();
117
 
118
	            // Récupération du titre de la page
119
	            if (trim($aso_menu_info['gm_nom']) != '') {
120
	                $aso_resultat['titre'] = htmlentities($aso_menu_info['gm_nom']);
121
	            } else if (trim($aso_menu_info['gm_titre']) != '') {
122
	                $aso_resultat['titre'] = htmlentities($aso_menu_info['gm_titre']);
123
	            } else if (trim($aso_menu_info['gm_titre_alternatif']) != '') {
124
	                $aso_resultat['titre'] = htmlentities($aso_menu_info['gm_titre_alternatif']);
125
	            }
126
	            $aso_resultat['hreflang'] = htmlentities($aso_menu_info['gm_ce_i18n']);
127
	            $raccourci_txt = '';
128
	            $aso_resultat['accesskey'] = htmlentities($aso_menu_info['gm_raccourci_clavier']);
129
	            if ($aso_resultat['accesskey'] != '') {
130
	                $raccourci_txt =    MORE_LG_RESULTAT_CADRE_OUVRIR.
131
	                                    MORE_LG_RESULTAT_RACCOURCI.$aso_resultat['accesskey'].' '.
132
	                                    MORE_LG_RESULTAT_CADRE_FERMER.MORE_LG_RESULTAT_POINT.' ';
133
	            }
134
	            $aso_resultat['title'] = htmlentities($raccourci_txt.$aso_menu_info['gm_description_resume']);
135
 
136
	            $aso_resultat['description'] = htmlentities($aso_menu_info['gm_description_libre']);
137
	            if (($jour = date('d', strtotime($aso_menu_info['gm_date_creation'] )) ) != 0 ) {
138
	                $aso_resultat['date_creation'] .= '<span class="page_modification_jour"> '.$jour.'</span>'."\n";
139
	            }
140
	            if (($mois = $this->traduireMois(date('m', strtotime($aso_menu_info['gm_date_creation'] ))) ) != '' ) {
141
	                $aso_resultat['date_creation'] .= '<span class="page_modification_mois"> '.$mois.'</span>'."\n";
142
	            }
143
	            if (($annee = date('Y', strtotime($aso_menu_info['gm_date_creation'] )) ) != 0 ) {
144
	                $aso_resultat['date_creation'] .= '<span class="page_modification_annee"> '.$annee.'</span>'."\n";
145
	            }
146
 
217 jpm 147
                $this->setResultat($aso_resultat);
148
            }
149
        }
150
        return $this->getResultats();
151
    }
152
}
153
 
154
/* +--Fin du code ----------------------------------------------------------------------------------------+
155
*
156
* $Log: not supported by cvs2svn $
1032 jp_milcent 157
* Revision 1.7  2006/10/10 13:28:13  jp_milcent
158
* Suppression d'une variable et utilisation de la constante PAP_URL
159
*
1027 jp_milcent 160
* Revision 1.6  2006/05/19 10:04:55  jp_milcent
161
* Ajout d'un moteur de recherche analysant les articles des sites sous Spip.
162
*
846 jp_milcent 163
* Revision 1.5  2006/04/28 12:41:49  florian
164
* corrections erreurs chemin
165
*
832 florian 166
* Revision 1.4  2005/05/25 13:49:22  jpm
167
* Corection erreur pour la recherche dans le contenu.
168
*
373 jpm 169
* Revision 1.3  2005/05/19 12:46:12  jpm
170
* Correction bogue accesskey.
171
* Ajout d'un id à la liste.
172
* Arrondissement des score.
173
*
368 jpm 174
* Revision 1.2  2005/04/14 17:39:34  jpm
175
* Amélioration du moteur de rechercher :
176
*  - pourcentage
177
*  - ajout d'info
178
*
339 jpm 179
* Revision 1.1  2004/12/07 10:24:06  jpm
180
* Moteur de recherche version de départ.
181
*
217 jpm 182
*
183
* +-- Fin du code ----------------------------------------------------------------------------------------+
184
*/
185
?>