Subversion Repositories Applications.papyrus

Rev

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

Rev 344 Rev 350
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 library is free software; you can redistribute it and/or                                        |
8
// | This library is free software; you can redistribute it and/or                                        |
9
// | modify it under the terms of the GNU Lesser General Public                                           |
9
// | modify it under the terms of the GNU Lesser General Public                                           |
10
// | License as published by the Free Software Foundation; either                                         |
10
// | License as published by the Free Software Foundation; either                                         |
11
// | version 2.1 of the License, or (at your option) any later version.                                   |
11
// | version 2.1 of the License, or (at your option) any later version.                                   |
12
// |                                                                                                      |
12
// |                                                                                                      |
13
// | This library is distributed in the hope that it will be useful,                                      |
13
// | This library is distributed in the hope that it will be useful,                                      |
14
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
14
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
15
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
15
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
16
// | Lesser General Public License for more details.                                                      |
16
// | Lesser General Public License for more details.                                                      |
17
// |                                                                                                      |
17
// |                                                                                                      |
18
// | You should have received a copy of the GNU Lesser General Public                                     |
18
// | You should have received a copy of the GNU Lesser General Public                                     |
19
// | License along with this library; if not, write to the Free Software                                  |
19
// | License along with this library; if not, write to the Free Software                                  |
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
21
// +------------------------------------------------------------------------------------------------------+
21
// +------------------------------------------------------------------------------------------------------+
22
// CVS : $Id: pap_menu.fonct.php,v 1.17 2005-04-18 16:41:25 jpm Exp $
22
// CVS : $Id: pap_menu.fonct.php,v 1.18 2005-04-19 17:21:19 jpm Exp $
23
/**
23
/**
24
* Bibliothèque de fonction sur le rendu.
24
* Bibliothèque de fonction sur le rendu.
25
*
25
*
26
* Cette bibliothèque contient des fonctions utilisé par le rendu des pages de Papyrus.
26
* Cette bibliothèque contient des fonctions utilisé par le rendu des pages de Papyrus.
27
*
27
*
28
*@package Papyrus
28
*@package Papyrus
29
*@subpackage Fonctions
29
*@subpackage Fonctions
30
//Auteur original :
30
//Auteur original :
31
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
31
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
32
//Autres auteurs :
32
//Autres auteurs :
33
*@author        Alexandre GRANIER <alexadandre@tela-botanica.org>
33
*@author        Alexandre GRANIER <alexadandre@tela-botanica.org>
34
*@author        Laurent COUDOUNEAU <laurent.coudouneau@ema.fr>
34
*@author        Laurent COUDOUNEAU <laurent.coudouneau@ema.fr>
35
*@copyright     Tela-Botanica 2000-2004
35
*@copyright     Tela-Botanica 2000-2004
36
*@version       $Revision: 1.17 $ $Date: 2005-04-18 16:41:25 $
36
*@version       $Revision: 1.18 $ $Date: 2005-04-19 17:21:19 $
37
// +------------------------------------------------------------------------------------------------------+
37
// +------------------------------------------------------------------------------------------------------+
38
*/
38
*/
39
 
39
 
40
// +------------------------------------------------------------------------------------------------------+
40
// +------------------------------------------------------------------------------------------------------+
41
// |                                            LISTE des FONCTIONS                                       |
41
// |                                            LISTE des FONCTIONS                                       |
42
// +------------------------------------------------------------------------------------------------------+
42
// +------------------------------------------------------------------------------------------------------+
43
 
43
 
44
/** Fonction GEN_donnerProfondeurMax() - Renvoie le nombre de niveau de menu.
44
/** Fonction GEN_donnerProfondeurMax() - Renvoie le nombre de niveau de menu.
45
*
45
*
46
* Cette fonction calcule, pour un menu donné, le nombre de niveau de menu fils complétant 
46
* Cette fonction calcule, pour un menu donné, le nombre de niveau de menu fils complétant 
47
* l'arbre des menus jusqu'au feuilles.
47
* l'arbre des menus jusqu'au feuilles.
48
* Ici on l'utilise en passant l'argument égal à zéro c'est à dire
48
* Ici on l'utilise en passant l'argument égal à zéro c'est à dire
49
* en partant du menu racine d'un site gmr_id_menu_02 = 0.
49
* en partant du menu racine d'un site gmr_id_menu_02 = 0.
50
* C'est une fonction récursive.
50
* C'est une fonction récursive.
51
* Noter que la variable $prof est statique.
51
* Noter que la variable $prof est statique.
52
*
52
*
53
* @param integer identifiant du site sur lequel la profondeur est calculé.
53
* @param integer identifiant du site sur lequel la profondeur est calculé.
54
* @param integer identifiant du menu à partir delaquelle on souhaite calculer la profondeur.
54
* @param integer identifiant du menu à partir delaquelle on souhaite calculer la profondeur.
55
* @return integer le nombre de niveau de menu.
55
* @return integer le nombre de niveau de menu.
56
*/
56
*/
57
function GEN_donnerProfondeurMax($id_site, $id_menu)
57
function GEN_donnerProfondeurMax($id_site, $id_menu)
58
{
58
{
59
    global $db;
59
    global $db;
60
    static $prof = 0;
60
    static $prof = 0;
61
    
61
    
62
    // Requête sur les relations de type "avoir père" entre menus
62
    // Requête sur les relations de type "avoir père" entre menus
63
    $requete =  'SELECT gmr_id_menu_01 '.
63
    $requete =  'SELECT gmr_id_menu_01 '.
64
                'FROM gen_menu, gen_menu_relation '.
64
                'FROM gen_menu, gen_menu_relation '.
65
                'WHERE gmr_id_menu_02 = '.$id_menu.' '.
65
                'WHERE gmr_id_menu_02 = '.$id_menu.' '.
66
                'AND gmr_id_menu_01 = gm_id_menu '.
66
                'AND gmr_id_menu_01 = gm_id_menu '.
67
                'AND gm_ce_site = '.$id_site.' '.
67
                'AND gm_ce_site = '.$id_site.' '.
68
                'AND gmr_id_valeur = 1 '.
68
                'AND gmr_id_valeur = 1 '.
69
                'ORDER BY gmr_ordre ASC';
69
                'ORDER BY gmr_ordre ASC';
70
    
70
    
71
    $resultat = $db->query($requete);
71
    $resultat = $db->query($requete);
72
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
72
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
73
    
73
    
74
    if ($resultat->numRows() == 0) {
74
    if ($resultat->numRows() == 0) {
75
        return $prof;
75
        return $prof;
76
    }
76
    }
77
    $prof++;
77
    $prof++;
78
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
78
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
79
        $prof = GEN_donnerProfondeurMax($id_site, $ligne->gmr_id_menu_01);
79
        $prof = GEN_donnerProfondeurMax($id_site, $ligne->gmr_id_menu_01);
80
    }
80
    }
81
    return $prof;
81
    return $prof;
82
}
82
}
83
 
83
 
84
/** Fonction GEN_donnerDernierFreres() - Renvoie l'id du dernier menu frère.
84
/** Fonction GEN_donnerDernierFreres() - Renvoie l'id du dernier menu frère.
85
*
85
*
86
* Cette fonction regarde si un menu donné possède au moins un frère dans l'arbre
86
* Cette fonction regarde si un menu donné possède au moins un frère dans l'arbre
87
* des menus. Elle retourne l'id du dernier menu frére en utilisant gmr_ordre.
87
* des menus. Elle retourne l'id du dernier menu frére en utilisant gmr_ordre.
88
* Cette fonction fait appel à la fonction : GEN_lireIdentifiantMenuPere().
88
* Cette fonction fait appel à la fonction : GEN_lireIdentifiantMenuPere().
89
*
89
*
90
* @param integer identifiant du menu.
90
* @param integer identifiant du menu.
91
* @return boolean renvoi l'id du dernier menu frère sinon faux.
91
* @return boolean renvoi l'id du dernier menu frère sinon faux.
92
*/
92
*/
93
function GEN_donnerDernierFreres($id_menu)
93
function GEN_donnerDernierFreres($id_menu)
94
{
94
{
95
    // Initialisation des variables.
95
    // Initialisation des variables.
96
    global $db;
96
    global $db;
97
    
97
    
98
    $requete =  'SELECT gmr_id_menu_01 '.
98
    $requete =  'SELECT gmr_id_menu_01 '.
99
                'FROM gen_menu_relation '.
99
                'FROM gen_menu_relation '.
100
                'WHERE gmr_id_menu_02 = '.GEN_lireIdentifiantMenuPere($id_menu).' '.
100
                'WHERE gmr_id_menu_02 = '.GEN_lireIdentifiantMenuPere($id_menu).' '.
101
                'AND gmr_id_valeur = 1 '.
101
                'AND gmr_id_valeur = 1 '.
102
                'AND gmr_id_menu_01 <> '.$id_menu.' '.
102
                'AND gmr_id_menu_01 <> '.$id_menu.' '.
103
                'ORDER BY gmr_ordre DESC';
103
                'ORDER BY gmr_ordre DESC';
104
    
104
    
105
    $resultat = $db->query($requete);
105
    $resultat = $db->query($requete);
106
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
106
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
107
    
107
    
108
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
108
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
109
    if ($resultat->numRows() > 0) {
109
    if ($resultat->numRows() > 0) {
110
        return $ligne->gmr_id_menu_01;
110
        return $ligne->gmr_id_menu_01;
111
    } else {
111
    } else {
112
        return false;
112
        return false;
113
    }
113
    }
114
}
114
}
115
 
115
 
116
/** Fonction GEN_etreFreres() - Renvoie vrai si les menus ont le même père.
116
/** Fonction GEN_etreFreres() - Renvoie vrai si les menus ont le même père.
117
*
117
*
118
* Cette fonction regarde si deux menus donnés sont frères dans l'arbre
118
* Cette fonction regarde si deux menus donnés sont frères dans l'arbre
119
* des menus. Nous regardons si les menus ont le même identifiant comme père.
119
* des menus. Nous regardons si les menus ont le même identifiant comme père.
120
*
120
*
121
* @param integer identifiant du premier menu.
121
* @param integer identifiant du premier menu.
122
* @param integer identifiant du seconde menu.
122
* @param integer identifiant du seconde menu.
123
* @return boolean renvoi vrai si les deux menus sont frères sinon faux.
123
* @return boolean renvoi vrai si les deux menus sont frères sinon faux.
124
*/
124
*/
125
function GEN_etreFreres($id_menu_1, $id_menu_2)
125
function GEN_etreFreres($id_menu_1, $id_menu_2)
126
{
126
{
127
    // Initialisation des variables.
127
    // Initialisation des variables.
128
    global $db;
128
    global $db;
129
    
129
    
130
    $requete =  'SELECT gmr_id_menu_02 '.
130
    $requete =  'SELECT gmr_id_menu_02 '.
131
                'FROM gen_menu_relation '.
131
                'FROM gen_menu_relation '.
132
                'WHERE gmr_id_menu_01 = '.$id_menu_1.' '.
132
                'WHERE gmr_id_menu_01 = '.$id_menu_1.' '.
133
                'AND gmr_id_valeur = 1 ';
133
                'AND gmr_id_valeur = 1 ';
134
    
134
    
135
    $resultat = $db->query($requete);
135
    $resultat = $db->query($requete);
136
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
136
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
137
    
137
    
138
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
138
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
139
    $id_pere_1 = $ligne->gmr_id_menu_02;
139
    $id_pere_1 = $ligne->gmr_id_menu_02;
140
    $resultat->free();
140
    $resultat->free();
141
 
141
 
142
    $requete =  'SELECT gmr_id_menu_02 '.
142
    $requete =  'SELECT gmr_id_menu_02 '.
143
                'FROM gen_menu_relation '.
143
                'FROM gen_menu_relation '.
144
                'WHERE gmr_id_menu_01 = '.$id_menu_2.' '.
144
                'WHERE gmr_id_menu_01 = '.$id_menu_2.' '.
145
                'AND gmr_id_valeur = 1 ';
145
                'AND gmr_id_valeur = 1 ';
146
    
146
    
147
    $resultat = $db->query($requete);
147
    $resultat = $db->query($requete);
148
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
148
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
149
    
149
    
150
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
150
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
151
    $id_pere_2 = $ligne->gmr_id_menu_02;
151
    $id_pere_2 = $ligne->gmr_id_menu_02;
152
    $resultat->free();
152
    $resultat->free();
153
    
153
    
154
    return ($id_pere_1 == $id_pere_2);
154
    return ($id_pere_1 == $id_pere_2);
155
}
155
}
156
 
156
 
157
/** Fonction GEN_etreAncetre() - Renvoie vrai si le premier argument (identifiant de menu) est un ancètre du second.
157
/** Fonction GEN_etreAncetre() - Renvoie vrai si le premier argument (identifiant de menu) est un ancètre du second.
158
*
158
*
159
* Nous récupérons l'identifiant du père du menu passé en argument numéro 2. Puis,
159
* Nous récupérons l'identifiant du père du menu passé en argument numéro 2. Puis,
160
* nous le comparons à l'argument 1. Si c'est les même on retourne faux. Sinon on rapelle
160
* nous le comparons à l'argument 1. Si c'est les même on retourne faux. Sinon on rapelle
161
* la fonction avec l'identifiant du père trouvé pour l'argument 2. Ainsi de suite jusqu'a
161
* la fonction avec l'identifiant du père trouvé pour l'argument 2. Ainsi de suite jusqu'a
162
* renvoyé vrai où tomber sur un menu racine (idetifiant du père = 0).
162
* renvoyé vrai où tomber sur un menu racine (idetifiant du père = 0).
163
* Si les variable sont null nous retournons false.
163
* Si les variable sont null nous retournons false.
164
* C'est une fonction récursive.
164
* C'est une fonction récursive.
165
*
165
*
166
* @param integer identifiant d'un menu numéro 1.
166
* @param integer identifiant d'un menu numéro 1.
167
* @param integer identifiant d'un menu numéro 2.
167
* @param integer identifiant d'un menu numéro 2.
168
* @return boolean vrai si le menu numéro 1 est ancètre du second.
168
* @return boolean vrai si le menu numéro 1 est ancètre du second.
169
*/
169
*/
170
function GEN_etreAncetre($id_menu_1, $id_menu_2)
170
function GEN_etreAncetre($id_menu_1, $id_menu_2)
171
{
171
{
172
    //Test erreur
172
    //Test erreur
173
    if (is_null($id_menu_1) || is_null($id_menu_2)) {
173
    if (is_null($id_menu_1) || is_null($id_menu_2)) {
174
        return false;
174
        return false;
175
    }
175
    }
176
    
176
    
177
    // Initialisation des variables.
177
    // Initialisation des variables.
178
    global $db;
178
    global $db;
179
    
179
    
180
    $requete =  'SELECT gmr_id_menu_02 '.
180
    $requete =  'SELECT gmr_id_menu_02 '.
181
                'FROM gen_menu_relation '.
181
                'FROM gen_menu_relation '.
182
                'WHERE gmr_id_menu_01 = '.$id_menu_2.' '.
182
                'WHERE gmr_id_menu_01 = '.$id_menu_2.' '.
183
                'AND gmr_id_valeur = 1 ';
183
                'AND gmr_id_valeur = 1 ';
184
    
184
    
185
    $resultat = $db->query($requete);
185
    $resultat = $db->query($requete);
186
    (DB::isError($resultat)) ? die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
186
    (DB::isError($resultat)) ? die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
187
    
187
    
188
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
188
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
189
    $resultat->free();
189
    $resultat->free();
190
    if ($ligne->gmr_id_menu_02 == 0) {
190
    if ($ligne->gmr_id_menu_02 == 0) {
191
        return false;
191
        return false;
192
    } else if ($ligne->gmr_id_menu_02 == $id_menu_1) {
192
    } else if ($ligne->gmr_id_menu_02 == $id_menu_1) {
193
        return true;
193
        return true;
194
    } else {
194
    } else {
195
        return GEN_etreAncetre($id_menu_1, $ligne->gmr_id_menu_02);
195
        return GEN_etreAncetre($id_menu_1, $ligne->gmr_id_menu_02);
196
    }
196
    }
197
}
197
}
198
 
198
 
199
/** Fonction GEN_lireIdentifiantMenuAncetre() - Renvoie l'identifiant du menu ancètre du menu passé en paramètre.
199
/** Fonction GEN_lireIdentifiantMenuAncetre() - Renvoie l'identifiant du menu ancètre du menu passé en paramètre.
200
*
200
*
201
*   Cette fonction parcours la table gen_menu_relation et retourne l'identifiant du
201
*   Cette fonction parcours la table gen_menu_relation et retourne l'identifiant du
202
*   menu dont le père est le menu racine (identifiant = 0) pour le menu passé en paramètre.
202
*   menu dont le père est le menu racine (identifiant = 0) pour le menu passé en paramètre.
203
*
203
*
204
*   @global mixed   objet Pear DB de connexion à la base de données..
204
*   @global mixed   objet Pear DB de connexion à la base de données..
205
*   @param  int     identifiant du menu dont il faut rechercher le père.
205
*   @param  int     identifiant du menu dont il faut rechercher le père.
206
*   @return int     identifiant du menu ancètre du menu passé en paramètre.
206
*   @return int     identifiant du menu ancètre du menu passé en paramètre.
207
*/
207
*/
208
function GEN_lireIdentifiantMenuAncetre($id_menu)
208
function GEN_lireIdentifiantMenuAncetre($id_menu)
209
{
209
{
210
    global $db;
210
    global $db;
211
    // On teste si on est au niveau d'un menu racine i.e GM_ID_PERE=0
211
    // On teste si on est au niveau d'un menu racine i.e GM_ID_PERE=0
212
    $requete =  'SELECT gmr_id_menu_02 '.
212
    $requete =  'SELECT gmr_id_menu_02 '.
213
                'FROM gen_menu_relation '.
213
                'FROM gen_menu_relation '.
214
                'WHERE gmr_id_menu_01 = '.$id_menu.' '.
214
                'WHERE gmr_id_menu_01 = '.$id_menu.' '.
215
                'AND gmr_id_valeur = 1 ';// 1 = avoir "père"
215
                'AND gmr_id_valeur = 1 ';// 1 = avoir "père"
216
    
216
    
217
    $resultat = $db->query($requete);
217
    $resultat = $db->query($requete);
218
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
218
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
219
    
219
    
220
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
220
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
221
    $resultat->free();
221
    $resultat->free();
222
    
222
    
223
    // Dans le cas où le menu en paramètre est un menu racine
223
    // Dans le cas où le menu en paramètre est un menu racine
224
    if ($ligne->gmr_id_menu_02 == 0) {
224
    if ($ligne->gmr_id_menu_02 == 0) {
225
        return $id_menu;
225
        return $id_menu;
226
    }
226
    }
227
    
227
    
228
    return GEN_lireIdentifiantMenuAncetre($ligne->gmr_id_menu_02);
228
    return GEN_lireIdentifiantMenuAncetre($ligne->gmr_id_menu_02);
229
}
229
}
230
 
230
 
231
/** Fonction GEN_lireIdentifiantMenuPere() - Renvoie l'identifiant du père du menu passé en paramètre.
231
/** Fonction GEN_lireIdentifiantMenuPere() - Renvoie l'identifiant du père du menu passé en paramètre.
232
*
232
*
233
* Cette fonction parcours la table gen_menu_relation et retourne l'identifiant du
233
* Cette fonction parcours la table gen_menu_relation et retourne l'identifiant du
234
* menu père du menu passé en paramètre.
234
* menu père du menu passé en paramètre.
235
*
235
*
236
* @global mixed   objet Pear DB de connexion à la base de données..
236
* @global mixed   objet Pear DB de connexion à la base de données..
237
* @param  int     l'identifiant du fils
237
* @param  int     l'identifiant du fils
238
* @param  mixed     une instance de la classse Pear DB.
238
* @param  mixed     une instance de la classse Pear DB.
239
* @return mixed   l'identifiant du père,ou false en cas d'erreur.
239
* @return mixed   l'identifiant du père,ou false en cas d'erreur.
240
*/
240
*/
241
function GEN_lireIdentifiantMenuPere($id_menu, $db = null)
241
function GEN_lireIdentifiantMenuPere($id_menu, $db = null)
242
{
242
{
243
    if (is_null($db)) {
243
    if (is_null($db)) {
244
        $db =& $GLOBALS['_GEN_commun']['pear_db'];
244
        $db =& $GLOBALS['_GEN_commun']['pear_db'];
245
    }
245
    }
246
    
246
    
247
    $requete =  'SELECT gmr_id_menu_02 '.
247
    $requete =  'SELECT gmr_id_menu_02 '.
248
                'FROM gen_menu_relation '.
248
                'FROM gen_menu_relation '.
249
                'WHERE gmr_id_menu_01 = '.$id_menu.' '.
249
                'WHERE gmr_id_menu_01 = '.$id_menu.' '.
250
                'AND gmr_id_valeur = 1 ';// 1 = avoir "père"
250
                'AND gmr_id_valeur = 1 ';// 1 = avoir "père"
251
    
251
    
252
    $resultat = $db->getOne($requete) ;
252
    $resultat = $db->getOne($requete) ;
253
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
253
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
254
    
254
    
255
    return $resultat;
255
    return $resultat;
256
}
256
}
257
 
257
 
258
/** Fonction GEN_lireInfoMenu() - Renvoie un objet ou un tableau contenant une ligne de la table gen_menu
258
/** Fonction GEN_lireInfoMenu() - Renvoie un objet ou un tableau contenant une ligne de la table gen_menu
259
*
259
*
260
* Retourne la ligne de la table gen_menu concernant le menu ayant pour identifiant la valeur
260
* Retourne la ligne de la table gen_menu concernant le menu ayant pour identifiant la valeur
261
* passée en paramètre.
261
* passée en paramètre.
262
* Ancien nom : getLevel()
262
* Ancien nom : getLevel()
263
*
263
*
264
* @param  mixed     une instance de la classse Pear DB.
264
* @param  mixed     une instance de la classse Pear DB.
265
* @param  int       l'identifiant d'un menu.
265
* @param  int       l'identifiant d'un menu.
266
* @param  string    le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
266
* @param  string    le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
267
* @return  mixed    un objet ou tableau résultat de Pear DB contenant une ligne de la table gen_menu, ou false en cas d'erreur.
267
* @return  mixed    un objet ou tableau résultat de Pear DB contenant une ligne de la table gen_menu, ou false en cas d'erreur.
268
*/
268
*/
269
function GEN_lireInfoMenu($db, $id_menu, $mode = DB_FETCHMODE_OBJECT)
269
function GEN_lireInfoMenu(&$db, $id_menu, $mode = DB_FETCHMODE_OBJECT)
270
{
270
{
271
    //----------------------------------------------------------------------------
271
    //----------------------------------------------------------------------------
272
    // Gestion des erreurs
272
    // Gestion des erreurs
273
    
273
    
274
    //----------------------------------------------------------------------------
274
    //----------------------------------------------------------------------------
275
    // Recherche des informations sur le menu
275
    // Recherche des informations sur le menu
276
    $requete =  'SELECT * '.
276
    $requete =  'SELECT * '.
277
                'FROM gen_menu '.
277
                'FROM gen_menu '.
278
                'WHERE gm_id_menu = '.$id_menu;
278
                'WHERE gm_id_menu = '.$id_menu;
279
    
279
    
280
    $resultat = $db->query($requete);
280
    $resultat = $db->query($requete);
281
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
281
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
282
    
282
    
283
    if ($resultat->numRows() != 1) {
283
    if ($resultat->numRows() != 1) {
284
        return false;
284
        return false;
285
    }
285
    }
286
    
286
    
287
    //----------------------------------------------------------------------------
287
    //----------------------------------------------------------------------------
288
    // Récupération des infos
288
    // Récupération des infos
289
    $info_menu = $resultat->fetchRow($mode);
289
    $info_menu = $resultat->fetchRow($mode);
290
    $resultat->free();
290
    $resultat->free();
291
    
291
    
292
    return $info_menu;
292
    return $info_menu;
293
}
293
}
294
/** Fonction GEN_retournerMenuCodeNum() - Renvoie le code num d'un menu en fonction du code Alphanumérique
294
/** Fonction GEN_retournerMenuCodeNum() - Renvoie le code num d'un menu en fonction du code Alphanumérique
295
*
295
*
296
* Retourne le code numérique d'un menu en fonction du code alphanumérique.
296
* Retourne le code numérique d'un menu en fonction du code alphanumérique.
297
*
297
*
298
* @param  mixed  une instance de la classse Pear DB.
298
* @param  mixed  une instance de la classse Pear DB.
299
* @param  string le code alphanumérique d'un menu.
299
* @param  string le code alphanumérique d'un menu.
300
* @return mixed le code numérique du menu sinon false.
300
* @return mixed le code numérique du menu sinon false.
301
*/
301
*/
302
function GEN_retournerMenuCodeNum($db, $code_alphanum)
302
function GEN_retournerMenuCodeNum(&$db, $code_alphanum)
303
{
303
{
304
    //----------------------------------------------------------------------------
304
    //----------------------------------------------------------------------------
305
    // Recherche des informations sur le menu
305
    // Recherche des informations sur le menu
306
    $requete =  'SELECT gm_code_num '.
306
    $requete =  'SELECT gm_code_num '.
307
                'FROM gen_menu '.
307
                'FROM gen_menu '.
308
                'WHERE gm_code_alpha = "'.$code_alphanum.'"';
308
                'WHERE gm_code_alpha = "'.$code_alphanum.'"';
309
    
309
    
310
    $resultat = $db->query($requete);
310
    $resultat = $db->query($requete);
311
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
311
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
312
    
312
    
313
    if ($resultat->numRows() != 1) {
313
    if ($resultat->numRows() != 1) {
314
        return false;
314
        return false;
315
    }
315
    }
316
    
316
    
317
    //----------------------------------------------------------------------------
317
    //----------------------------------------------------------------------------
318
    // Récupération des infos
318
    // Récupération des infos
319
    $info_menu = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
319
    $info_menu = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
320
    $code_num = $info_menu->gm_code_num;
320
    $code_num = $info_menu->gm_code_num;
321
    $resultat->free();
321
    $resultat->free();
322
    
322
    
323
    return $code_num;
323
    return $code_num;
324
}
324
}
325
 
325
 
326
/** Fonction GEN_retournerMenuCodeAlpha() - Renvoie le code alphanumérique d'un menu en fonction du code numérique
326
/** Fonction GEN_retournerMenuCodeAlpha() - Renvoie le code alphanumérique d'un menu en fonction du code numérique
327
*
327
*
328
* Retourne le code alphanumérique d'un menu en fonction du code numérique.
328
* Retourne le code alphanumérique d'un menu en fonction du code numérique.
329
*
329
*
330
* @param  mixed  une instance de la classse Pear DB.
330
* @param  mixed  une instance de la classse Pear DB.
331
* @param  string le code numérique d'un menu.
331
* @param  string le code numérique d'un menu.
332
* @return mixed le code alphanumérique du menu sinon false.
332
* @return mixed le code alphanumérique du menu sinon false.
333
*/
333
*/
334
function GEN_retournerMenuCodeAlpha($db, $code_num)
334
function GEN_retournerMenuCodeAlpha(&$db, $code_num)
335
{
335
{
336
    //----------------------------------------------------------------------------
336
    //----------------------------------------------------------------------------
337
    // Recherche des informations sur le menu
337
    // Recherche des informations sur le menu
338
    $requete =  'SELECT gm_code_alpha '.
338
    $requete =  'SELECT gm_code_alpha '.
339
                'FROM gen_menu '.
339
                'FROM gen_menu '.
340
                'WHERE gm_code_num = '.$code_num;
340
                'WHERE gm_code_num = '.$code_num;
341
    
341
    
342
    $resultat = $db->query($requete);
342
    $resultat = $db->query($requete);
343
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
343
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
344
    
344
    
345
    if ($resultat->numRows() != 1) {
345
    if ($resultat->numRows() != 1) {
346
        return false;
346
        return false;
347
    }
347
    }
348
    
348
    
349
    //----------------------------------------------------------------------------
349
    //----------------------------------------------------------------------------
350
    // Récupération des infos
350
    // Récupération des infos
351
    $info_menu = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
351
    $info_menu = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
352
    $code_alphanum = $info_menu->gm_code_alpha;
352
    $code_alphanum = $info_menu->gm_code_alpha;
353
    $resultat->free();
353
    $resultat->free();
354
    
354
    
355
    return $code_alphanum;
355
    return $code_alphanum;
356
}
356
}
357
 
357
 
358
/** Fonction GEN_lireContenuMenu() - Renvoie un objet ou un tableau contenant une ligne de la table gen_menu_contenu
358
/** Fonction GEN_lireContenuMenu() - Renvoie un objet ou un tableau contenant une ligne de la table gen_menu_contenu
359
*
359
*
360
* Retourne la ligne de la table gen_menu_contenu concernant le menu ayant pour identifiant la valeur
360
* Retourne la ligne de la table gen_menu_contenu concernant le menu ayant pour identifiant la valeur
361
* passée en paramètre.
361
* passée en paramètre.
362
*
362
*
363
* @param  mixed     une instance de la classse Pear DB.
363
* @param  mixed     une instance de la classse Pear DB.
364
* @param  int       l'identifiant d'un menu.
364
* @param  int       l'identifiant d'un menu.
365
* @param  string    le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
365
* @param  string    le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
366
* @return  mixed    un objet ou tableau résultat de Pear DB contenant une ligne de la table gen_menu_contenu, ou false en cas d'erreur.
366
* @return  mixed    un objet ou tableau résultat de Pear DB contenant une ligne de la table gen_menu_contenu, ou false en cas d'erreur.
367
*/
367
*/
368
function GEN_lireContenuMenu($db, $id_menu, $mode = DB_FETCHMODE_OBJECT)
368
function GEN_lireContenuMenu(&$db, $id_menu, $mode = DB_FETCHMODE_OBJECT)
369
{
369
{
370
    //----------------------------------------------------------------------------
370
    //----------------------------------------------------------------------------
371
    // Gestion des erreurs
371
    // Gestion des erreurs
372
    
372
    
373
    //----------------------------------------------------------------------------
373
    //----------------------------------------------------------------------------
374
    // Recherche des informations sur le menu
374
    // Recherche des informations sur le menu
375
    $requete =  'SELECT * '.
375
    $requete =  'SELECT * '.
376
                'FROM gen_menu_contenu '.
376
                'FROM gen_menu_contenu '.
377
                'WHERE gmc_ce_menu = '.$id_menu;
377
                'WHERE gmc_ce_menu = '.$id_menu;
378
    
378
    
379
    $resultat = $db->query($requete);
379
    $resultat = $db->query($requete);
380
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
380
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
381
    
381
    
382
    if ($resultat->numRows() != 1) {
382
    if ($resultat->numRows() != 1) {
383
        return false;
383
        return false;
384
    }
384
    }
385
    
385
    
386
    //----------------------------------------------------------------------------
386
    //----------------------------------------------------------------------------
387
    // Récupération des infos
387
    // Récupération des infos
388
    $info_menu = $resultat->fetchRow($mode);
388
    $info_menu = $resultat->fetchRow($mode);
389
    $resultat->free();
389
    $resultat->free();
390
    
390
    
391
    return $info_menu;
391
    return $info_menu;
392
}
392
}
393
 
393
 
394
/** Fonction GEN_retournerMenus() - Renvoie un tableau contenant les id de l'ensemble des menus
394
/** Fonction GEN_retournerMenus() - Renvoie un tableau contenant les id de l'ensemble des menus
395
*
395
*
396
* Retourne un tableau contenant les id de l'ensemble des menus des différents sites de Papyrus.
396
* Retourne un tableau contenant les id de l'ensemble des menus des différents sites de Papyrus.
397
*
397
*
398
* @param  mixed     une instance de la classse Pear DB.
398
* @param  mixed     une instance de la classse Pear DB.
399
* @return array    tableau contenant les id de chaque menu.
399
* @return array    tableau contenant les id de chaque menu.
400
*/
400
*/
401
function GEN_retournerMenus($db)
401
function GEN_retournerMenus(&$db)
402
{
402
{
403
    //----------------------------------------------------------------------------
403
    //----------------------------------------------------------------------------
404
    // Gestion des erreurs
404
    // Gestion des erreurs
405
    
405
    
406
    //----------------------------------------------------------------------------
406
    //----------------------------------------------------------------------------
407
    // Recherche des informations sur le menu
407
    // Recherche des informations sur le menu
408
    $requete =  'SELECT gm_id_menu '.
408
    $requete =  'SELECT gm_id_menu '.
409
                'FROM gen_menu ';
409
                'FROM gen_menu ';
410
    
410
    
411
    $resultat = $db->query($requete);
411
    $resultat = $db->query($requete);
412
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
412
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
413
    
413
    
414
    //----------------------------------------------------------------------------
414
    //----------------------------------------------------------------------------
415
    // Récupération des infos
415
    // Récupération des infos
416
    $tab_retour = array();
416
    $tab_retour = array();
417
    while ($info_menu = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
417
    while ($info_menu = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
418
        array_push($tab_retour, $info_menu->gm_id_menu);
418
        array_push($tab_retour, $info_menu->gm_id_menu);
419
    }
419
    }
420
    $resultat->free();
420
    $resultat->free();
421
    
421
    
422
    return $tab_retour;
422
    return $tab_retour;
423
}
423
}
424
 
424
 
425
/** Fonction GEN_lireInfoMenuRelation() - Renvoie un objet ou un tableau contenant une ligne de la table gen_menu_relation
425
/** Fonction GEN_lireInfoMenuRelation() - Renvoie un objet ou un tableau contenant une ligne de la table gen_menu_relation
426
*
426
*
427
* Par défaut recherche une relation de type père.
427
* Par défaut recherche une relation de type père.
428
* Ancien nom : getMenuRelation().
428
* Ancien nom : getMenuRelation().
429
*
429
*
430
* @param  mixed   Une instance de la classse PEAR_DB
430
* @param  mixed   Une instance de la classse PEAR_DB
431
* @param  int  l'identifiant d'un menu.
431
* @param  int  l'identifiant d'un menu.
432
* @param  int  l'identifiant d'une valeur de relation.
432
* @param  int  l'identifiant d'une valeur de relation.
433
* @param  string  le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
433
* @param  string  le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
434
* @return  mixed  un objet ou tableau résultat Pear DB, ou false en cas d'erreur.
434
* @return  mixed  un objet ou tableau résultat Pear DB, ou false en cas d'erreur.
435
*/
435
*/
436
function GEN_lireInfoMenuRelation($db, $menuid, $id_valeur = 1, $mode = DB_FETCHMODE_OBJECT)
436
function GEN_lireInfoMenuRelation(&$db, $menuid, $id_valeur = 1, $mode = DB_FETCHMODE_OBJECT)
437
{
437
{
438
    //----------------------------------------------------------------------------
438
    //----------------------------------------------------------------------------
439
    // Recherche des informations sur la relation de menu
439
    // Recherche des informations sur la relation de menu
440
    $requete =  'SELECT * '.
440
    $requete =  'SELECT * '.
441
                'FROM gen_menu_relation '.
441
                'FROM gen_menu_relation '.
442
                'WHERE gmr_id_menu_01 = '.$menuid.' '.
442
                'WHERE gmr_id_menu_01 = '.$menuid.' '.
443
                'AND gmr_id_valeur = '.$id_valeur;
443
                'AND gmr_id_valeur = '.$id_valeur;
444
    
444
    
445
    $result = $db->query($requete);
445
    $result = $db->query($requete);
446
    (DB::isError($result)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $result->getMessage(), $requete)) : '';
446
    (DB::isError($result)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $result->getMessage(), $requete)) : '';
447
    
447
    
448
    if ($result->numRows() != 1) {
448
    if ($result->numRows() != 1) {
449
        return false;
449
        return false;
450
    }
450
    }
451
    
451
    
452
    //----------------------------------------------------------------------------
452
    //----------------------------------------------------------------------------
453
    // Récupération des infos
453
    // Récupération des infos
454
    $info_menu_relation = $result->fetchRow($mode);
454
    $info_menu_relation = $result->fetchRow($mode);
455
    $result->free();
455
    $result->free();
456
    
456
    
457
    return $info_menu_relation;
457
    return $info_menu_relation;
458
}
458
}
459
 
459
 
460
/** Fonction GEN_verifierPresenceCodeMenu() - Vérifie l'existence d'un code de menu
460
/** Fonction GEN_verifierPresenceCodeMenu() - Vérifie l'existence d'un code de menu
461
*
461
*
462
* Permet de vérifier dans la base de données si le code fournie (alphanumérique ou numérique) a déjà
462
* Permet de vérifier dans la base de données si le code fournie (alphanumérique ou numérique) a déjà
463
* été attribué à un menu ou pas!
463
* été attribué à un menu ou pas!
464
*
464
*
465
* @param  mixed   Une instance de la classse PEAR_DB
465
* @param  mixed   Une instance de la classse PEAR_DB
466
* @param  string  le type du code (int ou string).
466
* @param  string  le type du code (int ou string).
467
* @param  integer l'identifiant du menu courant.
467
* @param  integer l'identifiant du menu courant.
468
* @param  mixed   le code numérique ou alphanumérique.
468
* @param  mixed   le code numérique ou alphanumérique.
469
* @return mixed   retourne l'identifiant du menu possédant le code sinon false.
469
* @return mixed   retourne l'identifiant du menu possédant le code sinon false.
470
*/
470
*/
471
function GEN_verifierPresenceCodeMenu($db, $type, $id_menu, $code)
471
function GEN_verifierPresenceCodeMenu(&$db, $type, $id_menu, $code)
472
{
472
{
473
    // Gestion des erreurs
473
    // Gestion des erreurs
474
    if ($code == '') {
474
    if ($code == '') {
475
        return true;
475
        return true;
476
    }
476
    }
477
    
477
    
478
    // Requete pour vérifier l'abscence du code numérique et alphanumérique de la table gen_menu
478
    // Requete pour vérifier l'abscence du code numérique et alphanumérique de la table gen_menu
479
    $requete =  'SELECT gm_id_menu '.
479
    $requete =  'SELECT gm_id_menu '.
480
                'FROM gen_menu '.
480
                'FROM gen_menu '.
481
                'WHERE gm_id_menu <> '.$id_menu.' ';
481
                'WHERE gm_id_menu <> '.$id_menu.' ';
482
    
482
    
483
    // Complément de requête en fonction du type de code
483
    // Complément de requête en fonction du type de code
484
    if ($type == 'int') {
484
    if ($type == 'int') {
485
        $requete .= 'AND gm_code_num = '.$code;
485
        $requete .= 'AND gm_code_num = '.$code;
486
    } else {
486
    } else {
487
        $requete .= 'AND gm_code_alpha = "'.$code.'"';
487
        $requete .= 'AND gm_code_alpha = "'.$code.'"';
488
    }
488
    }
489
    $resultat = $db->query($requete);
489
    $resultat = $db->query($requete);
490
    if (DB::isError($resultat)) {
490
    if (DB::isError($resultat)) {
491
            die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
491
            die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
492
    }
492
    }
493
    $nombre_reponse = $resultat->numRows();
493
    $nombre_reponse = $resultat->numRows();
494
    if ($nombre_reponse >= 1) {
494
    if ($nombre_reponse >= 1) {
495
        return true;
495
        return true;
496
    } else {
496
    } else {
497
        return false;
497
        return false;
498
    }
498
    }
499
}
499
}
500
/** Fonction GEN_lireInfoMenuMotsCles() - Renvoie un objet ou un tableau contenant des lignes de la table gen_menu
500
/** Fonction GEN_lireInfoMenuMotsCles() - Renvoie un objet ou un tableau contenant des lignes de la table gen_menu
501
*
501
*
502
* Renvoie un objet ou un tableau contenant une ligne de la table gen_menu en fonction des mots clés présents dans 
502
* Renvoie un objet ou un tableau contenant une ligne de la table gen_menu en fonction des mots clés présents dans 
503
* la table gen_menu.
503
* la table gen_menu.
504
*
504
*
505
* @param  mixed   Une instance de la classse PEAR_DB
505
* @param  mixed   Une instance de la classse PEAR_DB
506
* @param  array  un tableau de mots clés.
506
* @param  array  un tableau de mots clés.
507
* @param  string  le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
507
* @param  string  le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
508
* @param  boolean  true pour grouper les résultats (voir Pear DB : getAssoc() ) sinon false.
508
* @param  boolean  true pour grouper les résultats (voir Pear DB : getAssoc() ) sinon false.
509
* @return  mixed   un objet ou tableau résultat Pear DB, ou false en cas d'erreur.
509
* @return  mixed   un objet ou tableau résultat Pear DB, ou false en cas d'erreur.
510
*/
510
*/
511
function GEN_lireInfoMenuMotsCles($db, $tab_mots, $mode = DB_FETCHMODE_OBJECT, $groupe = false)
511
function GEN_lireInfoMenuMotsCles(&$db, $tab_mots, $mode = DB_FETCHMODE_OBJECT, $groupe = false)
512
{
512
{
513
    //----------------------------------------------------------------------------
513
    //----------------------------------------------------------------------------
514
    // Recherche des informations sur les menus en fonctions des mots clés
514
    // Recherche des informations sur les menus en fonctions des mots clés
515
    $requete =  'SELECT DISTINCT * '.
515
    $requete =  'SELECT DISTINCT * '.
516
                'FROM gen_menu '.
516
                'FROM gen_menu '.
517
                'WHERE ';
517
                'WHERE ';
518
    for ($i = 0; $i < count($tab_mots); $i++) {
518
    for ($i = 0; $i < count($tab_mots); $i++) {
519
        if ($i == 0) {
519
        if ($i == 0) {
520
            $requete .= 'gm_mots_cles LIKE "%'.$tab_mots[$i].'%" ';
520
            $requete .= 'gm_mots_cles LIKE "%'.$tab_mots[$i].'%" ';
521
        } else {
521
        } else {
522
            $requete .= 'OR gm_mots_cles LIKE "%'.$tab_mots[$i].'%" ';
522
            $requete .= 'OR gm_mots_cles LIKE "%'.$tab_mots[$i].'%" ';
523
        }
523
        }
524
    }
524
    }
525
    $aso_info =& $db->getAssoc($requete, false, array(), $mode, $groupe);
525
    $aso_info =& $db->getAssoc($requete, false, array(), $mode, $groupe);
526
    (PEAR::isError($aso_info)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $aso_info->getMessage(), $requete)) : '';
526
    (PEAR::isError($aso_info)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $aso_info->getMessage(), $requete)) : '';
527
    
527
    
528
    return $aso_info;
528
    return $aso_info;
529
}
529
}
530
/** Fonction GEN_lireInfoMenuCategorie() - Renvoie un objet ou un tableau contenant des lignes de la table gen_menu
530
/** Fonction GEN_lireInfoMenuCategorie() - Renvoie un objet ou un tableau contenant des lignes de la table gen_menu
531
*
531
*
532
* Renvoie un objet ou un tableau contenant une ligne de la table gen_menu en fonction des catégories présentes dans 
532
* Renvoie un objet ou un tableau contenant une ligne de la table gen_menu en fonction des catégories présentes dans 
533
* la table gen_menu.
533
* la table gen_menu.
534
*
534
*
535
* @param  mixed   Une instance de la classse PEAR_DB
535
* @param  mixed   Une instance de la classse PEAR_DB
536
* @param  array  un tableau de catégorie(s).
536
* @param  array  un tableau de catégorie(s).
537
* @param  string  le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
537
* @param  string  le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
538
* @param  boolean  true pour grouper les résultats (voir Pear DB : getAssoc() ) sinon false.
538
* @param  boolean  true pour grouper les résultats (voir Pear DB : getAssoc() ) sinon false.
539
* @return  mixed   un objet ou tableau résultat Pear DB, ou false en cas d'erreur.
539
* @return  mixed   un objet ou tableau résultat Pear DB, ou false en cas d'erreur.
540
*/
540
*/
541
function GEN_lireInfoMenuCategorie($db, $tab_categories, $mode = DB_FETCHMODE_OBJECT, $groupe = false)
541
function GEN_lireInfoMenuCategorie(&$db, $tab_categories, $mode = DB_FETCHMODE_OBJECT, $groupe = false)
542
{
542
{
543
    //----------------------------------------------------------------------------
543
    //----------------------------------------------------------------------------
544
    // Recherche des informations sur les menus en fonctions des mots clés
544
    // Recherche des informations sur les menus en fonctions des mots clés
545
    $requete =  'SELECT DISTINCT * '.
545
    $requete =  'SELECT DISTINCT * '.
546
                'FROM gen_menu '.
546
                'FROM gen_menu '.
547
                'WHERE ';
547
                'WHERE ';
548
    for ($i = 0; $i < count($tab_categories); $i++) {
548
    for ($i = 0; $i < count($tab_categories); $i++) {
549
        if ($i == 0) {
549
        if ($i == 0) {
550
            $requete .= 'gm_categorie LIKE "%'.$tab_categories[$i].'%" ';
550
            $requete .= 'gm_categorie LIKE "%'.$tab_categories[$i].'%" ';
551
        } else {
551
        } else {
552
            $requete .= 'OR gm_categorie LIKE "%'.$tab_categories[$i].'%" ';
552
            $requete .= 'OR gm_categorie LIKE "%'.$tab_categories[$i].'%" ';
553
        }
553
        }
554
    }
554
    }
555
    $aso_info =& $db->getAssoc($requete, false, array(), $mode, $groupe);
555
    $aso_info =& $db->getAssoc($requete, false, array(), $mode, $groupe);
556
    (PEAR::isError($aso_info)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $aso_info->getMessage(), $requete)) : '';
556
    (PEAR::isError($aso_info)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $aso_info->getMessage(), $requete)) : '';
557
    
557
    
558
    return $aso_info;
558
    return $aso_info;
559
}
559
}
560
/** Fonction GEN_lireInfoMenuContenuDate() - Renvoie un objet ou un tableau contenant des lignes de la table gen_menu
560
/** Fonction GEN_lireInfoMenuContenuDate() - Renvoie un objet ou un tableau contenant des lignes de la table gen_menu
561
*
561
*
562
* Renvoie un objet ou un tableau contenant une ligne de la table gen_menu en fonction des catégories présentes dans 
562
* Renvoie un objet ou un tableau contenant une ligne de la table gen_menu en fonction des catégories présentes dans 
563
* la table gen_menu.
563
* la table gen_menu.
564
*
564
*
565
* @param  mixed   Une instance de la classse PEAR_DB
565
* @param  mixed   Une instance de la classse PEAR_DB
566
* @param  array  le type de modification.
566
* @param  array  le type de modification.
567
* @param  array  le code alphanumérique du site ou de plusieurs sites séparés par des virgules.
567
* @param  array  le code alphanumérique du site ou de plusieurs sites séparés par des virgules.
568
* @param  string  le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
568
* @param  string  le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
569
* @param  boolean  true pour grouper les résultats (voir Pear DB : getAssoc() ) sinon false.
569
* @param  boolean  true pour grouper les résultats (voir Pear DB : getAssoc() ) sinon false.
570
* @return  mixed   un objet ou tableau résultat Pear DB, ou false en cas d'erreur.
570
* @return  mixed   un objet ou tableau résultat Pear DB, ou false en cas d'erreur.
571
*/
571
*/
572
function GEN_lireInfoMenuContenuDate($db, $type_modif = '', $site = '', $mode = DB_FETCHMODE_OBJECT, $groupe = false)
572
function GEN_lireInfoMenuContenuDate(&$db, $type_modif = '', $site = '', $mode = DB_FETCHMODE_OBJECT, $groupe = false)
573
{
573
{
574
    $type_modif_sql = 'AND gmc_ce_type_modification IN (%s) ';
574
    $type_modif_sql = 'AND gmc_ce_type_modification IN (%s) ';
575
    if (!empty($type_modif)) {
575
    if (!empty($type_modif)) {
576
        $type_modif = sprintf($type_modif_sql, $type_modif);
576
        $type_modif = sprintf($type_modif_sql, $type_modif);
577
    } else {
577
    } else {
578
        $type_modif = sprintf($type_modif_sql, '1, 2');
578
        $type_modif = sprintf($type_modif_sql, '1, 2');
579
    }
579
    }
580
    $site_sql = 'AND gs_code_alpha IN (%s) ';
580
    $site_sql = 'AND gs_code_alpha IN (%s) ';
581
    if (!empty($site)) {
581
    if (!empty($site)) {
582
        $site = sprintf($site_sql, '"'.implode('", "', array_map('trim', explode(',', $site))).'"');
582
        $site = sprintf($site_sql, '"'.implode('", "', array_map('trim', explode(',', $site))).'"');
583
    } else {
583
    } else {
584
        $site = '';
584
        $site = '';
585
    }
585
    }
586
    // Recherche des informations sur les menus en fonctions des mots clés
586
    // Recherche des informations sur les menus en fonctions des mots clés
587
    $requete =  'SELECT DISTINCT gen_menu.*, gs_code_alpha, gmc_date_modification, gmc_resume_modification, gmc_ce_type_modification '.
587
    $requete =  'SELECT DISTINCT gen_menu.*, gs_code_alpha, gmc_date_modification, gmc_resume_modification, gmc_ce_type_modification '.
588
                'FROM gen_site, gen_menu, gen_menu_contenu '.
588
                'FROM gen_site, gen_menu, gen_menu_contenu '.
589
                'WHERE gmc_date_modification <= "'.date('Y-m-d H:i:s', time()).'" '.
589
                'WHERE gmc_date_modification <= "'.date('Y-m-d H:i:s', time()).'" '.
590
                'AND gm_ce_site = gs_id_site '.
590
                'AND gm_ce_site = gs_id_site '.
591
                'AND gm_id_menu = gmc_ce_menu '.
591
                'AND gm_id_menu = gmc_ce_menu '.
592
                'AND gmc_bool_dernier = 1 '.
592
                'AND gmc_bool_dernier = 1 '.
593
                $site.
593
                $site.
594
                $type_modif.
594
                $type_modif.
595
                'ORDER BY gmc_date_modification DESC';
595
                'ORDER BY gmc_date_modification DESC';
596
    
596
    
597
    $aso_info =& $db->getAssoc($requete, false, array(), $mode, $groupe);
597
    $aso_info =& $db->getAssoc($requete, false, array(), $mode, $groupe);
598
    (PEAR::isError($aso_info)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $aso_info->getMessage(), $requete)) : '';
598
    (PEAR::isError($aso_info)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $aso_info->getMessage(), $requete)) : '';
599
    
599
    
600
    return $aso_info;
600
    return $aso_info;
601
}
601
}
602
/** Fonction GEN_retournerTableauMenusSiteCodeAlpha() - Renvoie un tableau de tableau contenant des lignes de la table gen_menu
602
/** Fonction GEN_retournerTableauMenusSiteCodeAlpha() - Renvoie un tableau de tableau contenant des lignes de la table gen_menu
603
*
603
*
604
* Renvoie un tableau de tableau contenant les lignes de la table gen_menu pour un site donné. Les tableaux sont imbriquées 
604
* Renvoie un tableau de tableau contenant les lignes de la table gen_menu pour un site donné. Les tableaux sont imbriquées 
605
* pour reproduire l'arborescence des menus.
605
* pour reproduire l'arborescence des menus.
606
*
606
*
607
* @param  mixed  Une instance de la classse PEAR_DB
607
* @param  mixed  Une instance de la classse PEAR_DB
608
* @param  string le code alphanumérique du site.
608
* @param  string le code alphanumérique du site.
609
* @return  array   un tableau de tableau contenant des lignes de la table gen_menu.
609
* @return  array   un tableau de tableau contenant des lignes de la table gen_menu.
610
*/
610
*/
611
function GEN_retournerTableauMenusSiteCodeAlpha(&$db, $site, $id_pere = 0, $aso_site_menus = array())
611
function GEN_retournerTableauMenusSiteCodeAlpha(&$db, $site, $id_pere = 0, $aso_site_menus = array())
612
{
612
{
613
    
613
    
614
    $requete =  'SELECT gen_menu.* '.
614
    $requete =  'SELECT gen_menu.* '.
615
                'FROM gen_site, gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '.
615
                'FROM gen_site, gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '.
616
                'WHERE GMR01.gmr_id_menu_02 = '.$id_pere.' '.
616
                'WHERE GMR01.gmr_id_menu_02 = '.$id_pere.' '.
617
                'AND GMR01.gmr_id_menu_01 = gm_id_menu '.
617
                'AND GMR01.gmr_id_menu_01 = gm_id_menu '.
618
                'AND gs_code_alpha = "'.$site.'" '.
618
                'AND gs_code_alpha = "'.$site.'" '.
619
                'AND gm_ce_site = gs_id_site '.
619
                'AND gm_ce_site = gs_id_site '.
620
                'AND GMR01.gmr_id_valeur = 1 '.// 1 = avoir "père"
620
                'AND GMR01.gmr_id_valeur = 1 '.// 1 = avoir "père"
621
                'AND GMR02.gmr_id_menu_02 = gm_id_menu '.
621
                'AND GMR02.gmr_id_menu_02 = gm_id_menu '.
622
                'AND GMR02.gmr_id_menu_01 = GMR02.gmr_id_menu_02 '.
622
                'AND GMR02.gmr_id_menu_01 = GMR02.gmr_id_menu_02 '.
623
                'AND GMR02.gmr_id_valeur = 100 '.// 100 = type "menu classique"
623
                'AND GMR02.gmr_id_valeur = 100 '.// 100 = type "menu classique"
624
                'ORDER BY GMR01.gmr_ordre ASC';
624
                'ORDER BY GMR01.gmr_ordre ASC';
625
    $resultat = $db->query($requete);
625
    $resultat = $db->query($requete);
626
    if (DB::isError($resultat)) {
626
    if (DB::isError($resultat)) {
627
        die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
627
        die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
628
    }
628
    }
629
    
629
    
630
    if ($resultat->numRows() > 0) {
630
    if ($resultat->numRows() > 0) {
631
        while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { 
631
        while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { 
632
            $aso_site_menus[$ligne['gm_id_menu']] = $ligne;
632
            $aso_site_menus[$ligne['gm_id_menu']] = $ligne;
633
            $aso_site_menus[$ligne['gm_id_menu']]['sous_menus'] = GEN_retournerTableauMenusSiteCodeAlpha($db, $site, $ligne['gm_id_menu'], $aso_site_menus[$id_pere]);
633
            $aso_site_menus[$ligne['gm_id_menu']]['sous_menus'] = GEN_retournerTableauMenusSiteCodeAlpha($db, $site, $ligne['gm_id_menu'], $aso_site_menus[$id_pere]);
634
        }
634
        }
635
    }
635
    }
636
    return $aso_site_menus;
636
    return $aso_site_menus;
637
}
637
}
638
/* +--Fin du code ---------------------------------------------------------------------------------------+
638
/* +--Fin du code ---------------------------------------------------------------------------------------+
639
* $Log: not supported by cvs2svn $
639
* $Log: not supported by cvs2svn $
-
 
640
* Revision 1.17  2005/04/18 16:41:25  jpm
-
 
641
* Ajout d'une fonction pour récupérer tous les menus d'un site avec son code alphanumérique.
-
 
642
*
640
* Revision 1.16  2005/04/14 17:40:31  jpm
643
* Revision 1.16  2005/04/14 17:40:31  jpm
641
* Modification fonction pour les actions.
644
* Modification fonction pour les actions.
642
*
645
*
643
* Revision 1.15  2005/04/14 13:56:53  jpm
646
* Revision 1.15  2005/04/14 13:56:53  jpm
644
* Modification d'une ancienne fonction.
647
* Modification d'une ancienne fonction.
645
*
648
*
646
* Revision 1.14  2005/04/12 16:13:50  jpm
649
* Revision 1.14  2005/04/12 16:13:50  jpm
647
* Ajout de fonction renvoyant des infos sur un menu en fonction des mots clés, catégories ou date de modification du contenu.
650
* Ajout de fonction renvoyant des infos sur un menu en fonction des mots clés, catégories ou date de modification du contenu.
648
*
651
*
649
* Revision 1.13  2005/03/30 08:53:59  jpm
652
* Revision 1.13  2005/03/30 08:53:59  jpm
650
* Ajout de fonctions permettant de récupérer les codes alphanumériques ou numériques en fonction de l'un ou de l'autre.
653
* Ajout de fonctions permettant de récupérer les codes alphanumériques ou numériques en fonction de l'un ou de l'autre.
651
*
654
*
652
* Revision 1.12  2005/02/28 11:12:03  jpm
655
* Revision 1.12  2005/02/28 11:12:03  jpm
653
* Modification des auteurs.
656
* Modification des auteurs.
654
*
657
*
655
* Revision 1.11  2004/12/06 19:49:35  jpm
658
* Revision 1.11  2004/12/06 19:49:35  jpm
656
* Ajout d'une fonction permettant de récupérer le contenu d'un menu.
659
* Ajout d'une fonction permettant de récupérer le contenu d'un menu.
657
*
660
*
658
* Revision 1.10  2004/12/06 17:53:55  jpm
661
* Revision 1.10  2004/12/06 17:53:55  jpm
659
* Ajout fonction GEN_retournerMenus().
662
* Ajout fonction GEN_retournerMenus().
660
*
663
*
661
* Revision 1.9  2004/11/29 18:34:42  jpm
664
* Revision 1.9  2004/11/29 18:34:42  jpm
662
* Correction bogue.
665
* Correction bogue.
663
*
666
*
664
* Revision 1.8  2004/11/10 17:25:51  jpm
667
* Revision 1.8  2004/11/10 17:25:51  jpm
665
* Modification de fonction suite à des bogues.
668
* Modification de fonction suite à des bogues.
666
*
669
*
667
* Revision 1.7  2004/11/09 17:55:26  jpm
670
* Revision 1.7  2004/11/09 17:55:26  jpm
668
* Suppresion de fonctions inutiles et mise en conformité.
671
* Suppresion de fonctions inutiles et mise en conformité.
669
*
672
*
670
* Revision 1.6  2004/11/08 17:39:32  jpm
673
* Revision 1.6  2004/11/08 17:39:32  jpm
671
* Suppression d'une fonction inutile.
674
* Suppression d'une fonction inutile.
672
* GEN_etreFils() n'est pas utile. On peut utiliser GEN_etreAncetre() à la place.
675
* GEN_etreFils() n'est pas utile. On peut utiliser GEN_etreAncetre() à la place.
673
*
676
*
674
* Revision 1.5  2004/11/04 12:51:45  jpm
677
* Revision 1.5  2004/11/04 12:51:45  jpm
675
* Suppression de message de débogage.
678
* Suppression de message de débogage.
676
*
679
*
677
* Revision 1.4  2004/11/04 12:23:50  jpm
680
* Revision 1.4  2004/11/04 12:23:50  jpm
678
* Nouvelles fonctions sur les menus frères.
681
* Nouvelles fonctions sur les menus frères.
679
*
682
*
680
* Revision 1.3  2004/10/25 14:16:21  jpm
683
* Revision 1.3  2004/10/25 14:16:21  jpm
681
* Suppression de code commenté.
684
* Suppression de code commenté.
682
*
685
*
683
* Revision 1.2  2004/10/21 18:15:21  jpm
686
* Revision 1.2  2004/10/21 18:15:21  jpm
684
* Ajout de gestion d'erreur aux fonctions.
687
* Ajout de gestion d'erreur aux fonctions.
685
*
688
*
686
* Revision 1.1  2004/06/15 15:11:37  jpm
689
* Revision 1.1  2004/06/15 15:11:37  jpm
687
* Changement de nom et d'arborescence de Genesia en Papyrus.
690
* Changement de nom et d'arborescence de Genesia en Papyrus.
688
*
691
*
689
* Revision 1.43  2004/05/05 06:13:27  jpm
692
* Revision 1.43  2004/05/05 06:13:27  jpm
690
* Extraction de la fonction générant le "vous êtes ici", transformée en applette.
693
* Extraction de la fonction générant le "vous êtes ici", transformée en applette.
691
*
694
*
692
* Revision 1.42  2004/05/04 16:24:06  jpm
695
* Revision 1.42  2004/05/04 16:24:06  jpm
693
* Amélioration de la fonction générant le "vous êtes ici".
696
* Amélioration de la fonction générant le "vous êtes ici".
694
*
697
*
695
* Revision 1.41  2004/05/04 16:17:31  jpm
698
* Revision 1.41  2004/05/04 16:17:31  jpm
696
* Ajout de la fonction générant le "vous êtes ici".
699
* Ajout de la fonction générant le "vous êtes ici".
697
*
700
*
698
* Revision 1.40  2004/05/03 11:18:17  jpm
701
* Revision 1.40  2004/05/03 11:18:17  jpm
699
* Normalisation de deux fonctions issues du fichier fontctions.php.
702
* Normalisation de deux fonctions issues du fichier fontctions.php.
700
*
703
*
701
* Revision 1.39  2004/05/01 16:17:11  jpm
704
* Revision 1.39  2004/05/01 16:17:11  jpm
702
* Suppression des fonctions liées à la création des listes de menu. Elles ont été transformées en applette.
705
* Suppression des fonctions liées à la création des listes de menu. Elles ont été transformées en applette.
703
*
706
*
704
* Revision 1.38  2004/05/01 11:43:16  jpm
707
* Revision 1.38  2004/05/01 11:43:16  jpm
705
* Suppression des fonction GEN_afficherMenuCommun() et GEN_afficherSelecteurSites() transformées en applette.
708
* Suppression des fonction GEN_afficherMenuCommun() et GEN_afficherSelecteurSites() transformées en applette.
706
*
709
*
707
* Revision 1.37  2004/04/30 16:18:41  jpm
710
* Revision 1.37  2004/04/30 16:18:41  jpm
708
* Correction d'un bogue dans les fonctions de gestion des scripts.
711
* Correction d'un bogue dans les fonctions de gestion des scripts.
709
*
712
*
710
* Revision 1.36  2004/04/28 12:04:40  jpm
713
* Revision 1.36  2004/04/28 12:04:40  jpm
711
* Changement du modèle de la base de données.
714
* Changement du modèle de la base de données.
712
*
715
*
713
* Revision 1.35  2004/04/09 16:23:41  jpm
716
* Revision 1.35  2004/04/09 16:23:41  jpm
714
* Prise en compte des tables i18n.
717
* Prise en compte des tables i18n.
715
*
718
*
716
* Revision 1.34  2004/04/02 16:34:44  jpm
719
* Revision 1.34  2004/04/02 16:34:44  jpm
717
* Extraction de variable globale des fonction, remplacé par un passage en paramètre.
720
* Extraction de variable globale des fonction, remplacé par un passage en paramètre.
718
*
721
*
719
* Revision 1.33  2004/04/01 11:24:51  jpm
722
* Revision 1.33  2004/04/01 11:24:51  jpm
720
* Ajout et modification de commentaires pour PhpDocumentor.
723
* Ajout et modification de commentaires pour PhpDocumentor.
721
*
724
*
722
* Revision 1.32  2004/03/31 16:52:30  jpm
725
* Revision 1.32  2004/03/31 16:52:30  jpm
723
* Modification du code vis à vis du modèle revision 1.9 de Génésia.
726
* Modification du code vis à vis du modèle revision 1.9 de Génésia.
724
*
727
*
725
* Revision 1.31  2004/03/29 17:13:05  jpm
728
* Revision 1.31  2004/03/29 17:13:05  jpm
726
* Suppression de fonction, passer en code classique.
729
* Suppression de fonction, passer en code classique.
727
*
730
*
728
* Revision 1.30  2004/03/27 11:11:58  jpm
731
* Revision 1.30  2004/03/27 11:11:58  jpm
729
* Début changement nom de variable dans fonction creerInfoPageEtApplication().
732
* Début changement nom de variable dans fonction creerInfoPageEtApplication().
730
*
733
*
731
* Revision 1.29  2004/03/26 12:52:25  jpm
734
* Revision 1.29  2004/03/26 12:52:25  jpm
732
* Ajout des fonctions creerInfoPageEtApplication() et donnerIdPremiereApplicationLiee().
735
* Ajout des fonctions creerInfoPageEtApplication() et donnerIdPremiereApplicationLiee().
733
*
736
*
734
* +-- Fin du code ----------------------------------------------------------------------------------------+
737
* +-- Fin du code ----------------------------------------------------------------------------------------+
735
*/
738
*/
736
?>
739
?>