Subversion Repositories Applications.papyrus

Rev

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

Rev Author Line No. Line
4 jpm 1
<?php
597 ddelon 2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
4 jpm 3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 4.1                                                                                      |
5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
7
// +------------------------------------------------------------------------------------------------------+
8
// | This library is free software; you can redistribute it and/or                                        |
9
// | modify it under the terms of the GNU Lesser General Public                                           |
10
// | License as published by the Free Software Foundation; either                                         |
11
// | version 2.1 of the License, or (at your option) any later version.                                   |
12
// |                                                                                                      |
13
// | This library is distributed in the hope that it will be useful,                                      |
14
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
15
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
16
// | Lesser General Public License for more details.                                                      |
17
// |                                                                                                      |
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                                  |
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
21
// +------------------------------------------------------------------------------------------------------+
1499 jp_milcent 22
// CVS : $Id: pap_menu.fonct.php,v 1.31 2007-06-26 15:39:46 jp_milcent Exp $
4 jpm 23
/**
24
* Bibliothèque de fonction sur le rendu.
25
*
26
* Cette bibliothèque contient des fonctions utilisé par le rendu des pages de Papyrus.
27
*
28
*@package Papyrus
29
*@subpackage Fonctions
30
//Auteur original :
285 jpm 31
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
4 jpm 32
//Autres auteurs :
33
*@author        Alexandre GRANIER <alexadandre@tela-botanica.org>
34
*@copyright     Tela-Botanica 2000-2004
1499 jp_milcent 35
*@version       $Revision: 1.31 $ $Date: 2007-06-26 15:39:46 $
4 jpm 36
// +------------------------------------------------------------------------------------------------------+
37
*/
38
 
39
// +------------------------------------------------------------------------------------------------------+
40
// |                                            LISTE des FONCTIONS                                       |
41
// +------------------------------------------------------------------------------------------------------+
42
 
43
/** Fonction GEN_donnerProfondeurMax() - Renvoie le nombre de niveau de menu.
44
*
597 ddelon 45
* Cette fonction calcule, pour un menu donné, le nombre de niveau de menu fils complétant
4 jpm 46
* l'arbre des menus jusqu'au feuilles.
47
* Ici on l'utilise en passant l'argument égal à zéro c'est à dire
48
* en partant du menu racine d'un site gmr_id_menu_02 = 0.
49
* C'est une fonction récursive.
50
* Noter que la variable $prof est statique.
51
*
52
* @param integer identifiant du site sur lequel la profondeur est calculé.
53
* @param integer identifiant du menu à partir delaquelle on souhaite calculer la profondeur.
54
* @return integer le nombre de niveau de menu.
55
*/
56
function GEN_donnerProfondeurMax($id_site, $id_menu)
57
{
58
    global $db;
59
    static $prof = 0;
597 ddelon 60
 
4 jpm 61
    // Requête sur les relations de type "avoir père" entre menus
62
    $requete =  'SELECT gmr_id_menu_01 '.
63
                'FROM gen_menu, gen_menu_relation '.
64
                'WHERE gmr_id_menu_02 = '.$id_menu.' '.
65
                'AND gmr_id_menu_01 = gm_id_menu '.
66
                'AND gm_ce_site = '.$id_site.' '.
67
                'AND gmr_id_valeur = 1 '.
68
                'ORDER BY gmr_ordre ASC';
597 ddelon 69
 
4 jpm 70
    $resultat = $db->query($requete);
71
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
597 ddelon 72
 
4 jpm 73
    if ($resultat->numRows() == 0) {
74
        return $prof;
75
    }
76
    $prof++;
77
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
78
        $prof = GEN_donnerProfondeurMax($id_site, $ligne->gmr_id_menu_01);
79
    }
80
    return $prof;
81
}
82
 
124 jpm 83
/** Fonction GEN_donnerDernierFreres() - Renvoie l'id du dernier menu frère.
84
*
85
* Cette fonction regarde si un menu donné possède au moins un frère dans l'arbre
86
* des menus. Elle retourne l'id du dernier menu frére en utilisant gmr_ordre.
87
* Cette fonction fait appel à la fonction : GEN_lireIdentifiantMenuPere().
88
*
89
* @param integer identifiant du menu.
90
* @return boolean renvoi l'id du dernier menu frère sinon faux.
91
*/
92
function GEN_donnerDernierFreres($id_menu)
93
{
94
    // Initialisation des variables.
95
    global $db;
597 ddelon 96
 
124 jpm 97
    $requete =  'SELECT gmr_id_menu_01 '.
98
                'FROM gen_menu_relation '.
99
                'WHERE gmr_id_menu_02 = '.GEN_lireIdentifiantMenuPere($id_menu).' '.
100
                'AND gmr_id_valeur = 1 '.
101
                'AND gmr_id_menu_01 <> '.$id_menu.' '.
102
                'ORDER BY gmr_ordre DESC';
597 ddelon 103
 
124 jpm 104
    $resultat = $db->query($requete);
105
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
597 ddelon 106
 
124 jpm 107
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
108
    if ($resultat->numRows() > 0) {
109
        return $ligne->gmr_id_menu_01;
110
    } else {
111
        return false;
112
    }
113
}
114
 
4 jpm 115
/** Fonction GEN_etreFreres() - Renvoie vrai si les menus ont le même père.
116
*
117
* Cette fonction regarde si deux menus donnés sont frères dans l'arbre
118
* des menus. Nous regardons si les menus ont le même identifiant comme père.
119
*
120
* @param integer identifiant du premier menu.
121
* @param integer identifiant du seconde menu.
122
* @return boolean renvoi vrai si les deux menus sont frères sinon faux.
123
*/
124
function GEN_etreFreres($id_menu_1, $id_menu_2)
125
{
126
    // Initialisation des variables.
127
    global $db;
597 ddelon 128
 
4 jpm 129
    $requete =  'SELECT gmr_id_menu_02 '.
130
                'FROM gen_menu_relation '.
131
                'WHERE gmr_id_menu_01 = '.$id_menu_1.' '.
132
                'AND gmr_id_valeur = 1 ';
597 ddelon 133
 
4 jpm 134
    $resultat = $db->query($requete);
135
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
597 ddelon 136
 
4 jpm 137
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
138
    $id_pere_1 = $ligne->gmr_id_menu_02;
139
    $resultat->free();
140
 
141
    $requete =  'SELECT gmr_id_menu_02 '.
142
                'FROM gen_menu_relation '.
143
                'WHERE gmr_id_menu_01 = '.$id_menu_2.' '.
144
                'AND gmr_id_valeur = 1 ';
597 ddelon 145
 
4 jpm 146
    $resultat = $db->query($requete);
147
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
597 ddelon 148
 
4 jpm 149
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
150
    $id_pere_2 = $ligne->gmr_id_menu_02;
151
    $resultat->free();
597 ddelon 152
 
4 jpm 153
    return ($id_pere_1 == $id_pere_2);
154
}
155
 
156
/** Fonction GEN_etreAncetre() - Renvoie vrai si le premier argument (identifiant de menu) est un ancètre du second.
157
*
158
* Nous récupérons l'identifiant du père du menu passé en argument numéro 2. Puis,
159
* nous le comparons à l'argument 1. Si c'est les même on retourne faux. Sinon on rapelle
160
* la fonction avec l'identifiant du père trouvé pour l'argument 2. Ainsi de suite jusqu'a
161
* renvoyé vrai où tomber sur un menu racine (idetifiant du père = 0).
84 jpm 162
* Si les variable sont null nous retournons false.
4 jpm 163
* C'est une fonction récursive.
164
*
165
* @param integer identifiant d'un menu numéro 1.
166
* @param integer identifiant d'un menu numéro 2.
167
* @return boolean vrai si le menu numéro 1 est ancètre du second.
168
*/
169
function GEN_etreAncetre($id_menu_1, $id_menu_2)
170
{
84 jpm 171
    //Test erreur
172
    if (is_null($id_menu_1) || is_null($id_menu_2)) {
173
        return false;
174
    }
597 ddelon 175
 
4 jpm 176
    // Initialisation des variables.
177
    global $db;
597 ddelon 178
 
4 jpm 179
    $requete =  'SELECT gmr_id_menu_02 '.
180
                'FROM gen_menu_relation '.
181
                'WHERE gmr_id_menu_01 = '.$id_menu_2.' '.
182
                'AND gmr_id_valeur = 1 ';
597 ddelon 183
 
4 jpm 184
    $resultat = $db->query($requete);
185
    (DB::isError($resultat)) ? die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
597 ddelon 186
 
4 jpm 187
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
188
    $resultat->free();
443 ddelon 189
    if (isset($ligne)) {
190
	    if  ($ligne->gmr_id_menu_02 == 0) {
191
	        return false;
192
	    } else if ($ligne->gmr_id_menu_02 == $id_menu_1) {
193
	        return true;
194
	    } else {
195
	        return GEN_etreAncetre($id_menu_1, $ligne->gmr_id_menu_02);
196
	    }
4 jpm 197
    }
198
}
199
 
200
/** Fonction GEN_lireIdentifiantMenuAncetre() - Renvoie l'identifiant du menu ancètre du menu passé en paramètre.
201
*
202
*   Cette fonction parcours la table gen_menu_relation et retourne l'identifiant du
203
*   menu dont le père est le menu racine (identifiant = 0) pour le menu passé en paramètre.
204
*
205
*   @global mixed   objet Pear DB de connexion à la base de données..
206
*   @param  int     identifiant du menu dont il faut rechercher le père.
207
*   @return int     identifiant du menu ancètre du menu passé en paramètre.
208
*/
209
function GEN_lireIdentifiantMenuAncetre($id_menu)
210
{
211
    global $db;
212
    // On teste si on est au niveau d'un menu racine i.e GM_ID_PERE=0
213
    $requete =  'SELECT gmr_id_menu_02 '.
214
                'FROM gen_menu_relation '.
215
                'WHERE gmr_id_menu_01 = '.$id_menu.' '.
216
                'AND gmr_id_valeur = 1 ';// 1 = avoir "père"
597 ddelon 217
 
4 jpm 218
    $resultat = $db->query($requete);
219
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
597 ddelon 220
 
4 jpm 221
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
222
    $resultat->free();
597 ddelon 223
 
4 jpm 224
    // Dans le cas où le menu en paramètre est un menu racine
225
    if ($ligne->gmr_id_menu_02 == 0) {
226
        return $id_menu;
227
    }
597 ddelon 228
 
4 jpm 229
    return GEN_lireIdentifiantMenuAncetre($ligne->gmr_id_menu_02);
230
}
231
 
232
/** Fonction GEN_lireIdentifiantMenuPere() - Renvoie l'identifiant du père du menu passé en paramètre.
233
*
334 jpm 234
* Cette fonction parcours la table gen_menu_relation et retourne l'identifiant du
235
* menu père du menu passé en paramètre.
4 jpm 236
*
334 jpm 237
* @global mixed   objet Pear DB de connexion à la base de données..
238
* @param  int     l'identifiant du fils
239
* @param  mixed     une instance de la classse Pear DB.
240
* @return mixed   l'identifiant du père,ou false en cas d'erreur.
4 jpm 241
*/
334 jpm 242
function GEN_lireIdentifiantMenuPere($id_menu, $db = null)
4 jpm 243
{
334 jpm 244
    if (is_null($db)) {
245
        $db =& $GLOBALS['_GEN_commun']['pear_db'];
246
    }
597 ddelon 247
 
4 jpm 248
    $requete =  'SELECT gmr_id_menu_02 '.
249
                'FROM gen_menu_relation '.
250
                'WHERE gmr_id_menu_01 = '.$id_menu.' '.
251
                'AND gmr_id_valeur = 1 ';// 1 = avoir "père"
597 ddelon 252
 
103 jpm 253
    $resultat = $db->getOne($requete) ;
4 jpm 254
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
597 ddelon 255
 
103 jpm 256
    return $resultat;
4 jpm 257
}
258
 
259
/** Fonction GEN_lireInfoMenu() - Renvoie un objet ou un tableau contenant une ligne de la table gen_menu
260
*
261
* Retourne la ligne de la table gen_menu concernant le menu ayant pour identifiant la valeur
262
* passée en paramètre.
263
* Ancien nom : getLevel()
264
*
265
* @param  mixed     une instance de la classse Pear DB.
266
* @param  int       l'identifiant d'un menu.
267
* @param  string    le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
268
* @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.
269
*/
350 jpm 270
function GEN_lireInfoMenu(&$db, $id_menu, $mode = DB_FETCHMODE_OBJECT)
4 jpm 271
{
407 alexandre_ 272
 
4 jpm 273
    //----------------------------------------------------------------------------
274
    // Recherche des informations sur le menu
275
    $requete =  'SELECT * '.
276
                'FROM gen_menu '.
146 jpm 277
                'WHERE gm_id_menu = '.$id_menu;
597 ddelon 278
 
4 jpm 279
    $resultat = $db->query($requete);
280
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
597 ddelon 281
 
4 jpm 282
    if ($resultat->numRows() != 1) {
283
        return false;
284
    }
597 ddelon 285
 
4 jpm 286
    //----------------------------------------------------------------------------
287
    // Récupération des infos
288
    $info_menu = $resultat->fetchRow($mode);
289
    $resultat->free();
597 ddelon 290
 
4 jpm 291
    return $info_menu;
292
}
322 jpm 293
/** Fonction GEN_retournerMenuCodeNum() - Renvoie le code num d'un menu en fonction du code Alphanumérique
294
*
295
* Retourne le code numérique d'un menu en fonction du code alphanumérique.
296
*
297
* @param  mixed  une instance de la classse Pear DB.
298
* @param  string le code alphanumérique d'un menu.
299
* @return mixed le code numérique du menu sinon false.
300
*/
350 jpm 301
function GEN_retournerMenuCodeNum(&$db, $code_alphanum)
322 jpm 302
{
303
    //----------------------------------------------------------------------------
304
    // Recherche des informations sur le menu
305
    $requete =  'SELECT gm_code_num '.
306
                'FROM gen_menu '.
307
                'WHERE gm_code_alpha = "'.$code_alphanum.'"';
597 ddelon 308
 
322 jpm 309
    $resultat = $db->query($requete);
310
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
597 ddelon 311
 
322 jpm 312
    if ($resultat->numRows() != 1) {
313
        return false;
314
    }
597 ddelon 315
 
322 jpm 316
    //----------------------------------------------------------------------------
317
    // Récupération des infos
318
    $info_menu = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
319
    $code_num = $info_menu->gm_code_num;
320
    $resultat->free();
597 ddelon 321
 
322 jpm 322
    return $code_num;
323
}
4 jpm 324
 
322 jpm 325
/** Fonction GEN_retournerMenuCodeAlpha() - Renvoie le code alphanumérique d'un menu en fonction du code numérique
326
*
327
* Retourne le code alphanumérique d'un menu en fonction du code numérique.
328
*
329
* @param  mixed  une instance de la classse Pear DB.
330
* @param  string le code numérique d'un menu.
331
* @return mixed le code alphanumérique du menu sinon false.
332
*/
350 jpm 333
function GEN_retournerMenuCodeAlpha(&$db, $code_num)
322 jpm 334
{
335
    //----------------------------------------------------------------------------
336
    // Recherche des informations sur le menu
337
    $requete =  'SELECT gm_code_alpha '.
338
                'FROM gen_menu '.
339
                'WHERE gm_code_num = '.$code_num;
597 ddelon 340
 
322 jpm 341
    $resultat = $db->query($requete);
342
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
597 ddelon 343
 
322 jpm 344
    if ($resultat->numRows() != 1) {
345
        return false;
346
    }
597 ddelon 347
 
322 jpm 348
    //----------------------------------------------------------------------------
349
    // Récupération des infos
350
    $info_menu = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
351
    $code_alphanum = $info_menu->gm_code_alpha;
352
    $resultat->free();
597 ddelon 353
 
322 jpm 354
    return $code_alphanum;
355
}
356
 
216 jpm 357
/** Fonction GEN_lireContenuMenu() - Renvoie un objet ou un tableau contenant une ligne de la table gen_menu_contenu
358
*
359
* Retourne la ligne de la table gen_menu_contenu concernant le menu ayant pour identifiant la valeur
372 jpm 360
* passée en paramètre. Seul la dernière version du contenu du menu est retourné.
216 jpm 361
*
362
* @param  mixed     une instance de la classse Pear DB.
363
* @param  int       l'identifiant d'un menu.
364
* @param  string    le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
365
* @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
*/
350 jpm 367
function GEN_lireContenuMenu(&$db, $id_menu, $mode = DB_FETCHMODE_OBJECT)
216 jpm 368
{
369
    //----------------------------------------------------------------------------
370
    // Gestion des erreurs
597 ddelon 371
 
216 jpm 372
    //----------------------------------------------------------------------------
373
    // Recherche des informations sur le menu
374
    $requete =  'SELECT * '.
375
                'FROM gen_menu_contenu '.
372 jpm 376
                'WHERE gmc_ce_menu = '.$id_menu.' '.
377
                'AND gmc_bool_dernier = 1';
597 ddelon 378
 
216 jpm 379
    $resultat = $db->query($requete);
380
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
597 ddelon 381
 
216 jpm 382
    if ($resultat->numRows() != 1) {
383
        return false;
384
    }
597 ddelon 385
 
216 jpm 386
    //----------------------------------------------------------------------------
387
    // Récupération des infos
388
    $info_menu = $resultat->fetchRow($mode);
389
    $resultat->free();
597 ddelon 390
 
216 jpm 391
    return $info_menu;
392
}
393
 
1499 jp_milcent 394
/** Fonction GEN_lireContenuMenuHistorique() - Renvoie un objet ou un tableau contenant une ligne de la table gen_menu_contenu
395
*
396
* Retourne la ligne de la table gen_menu_contenu concernant le menu ayant pour identifiant la valeur
397
* passée en paramètre. Toutes les versions archivées du contenu du menu sont retournées.
398
*
399
* @param  mixed     une instance de la classse Pear DB.
400
* @param  int       l'identifiant d'un menu.
401
* @param  string    le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
402
* @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.
403
*/
404
function GEN_lireContenuMenuHistorique(&$db, $id_menu, $mode = DB_FETCHMODE_OBJECT)
405
{
406
    //----------------------------------------------------------------------------
407
    // Gestion des erreurs
408
 
409
    //----------------------------------------------------------------------------
410
    // Recherche des informations sur le menu
411
    $requete =  'SELECT * '.
412
                'FROM gen_menu_contenu '.
413
                'WHERE gmc_ce_menu = '.$id_menu;
414
 
415
    $resultat = $db->query($requete);
416
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
417
 
418
    if ($resultat->numRows() < 1) {
419
        return false;
420
    }
421
 
422
	$resultat =& $db->query($requete);
423
    (PEAR::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
424
	while ($menu_contenu = $resultat->fetchRow($mode)) {
425
		$aso_info[] = $menu_contenu;
426
	}
427
    return $aso_info;
428
}
429
 
211 jpm 430
/** Fonction GEN_retournerMenus() - Renvoie un tableau contenant les id de l'ensemble des menus
431
*
432
* Retourne un tableau contenant les id de l'ensemble des menus des différents sites de Papyrus.
433
*
434
* @param  mixed     une instance de la classse Pear DB.
435
* @return array    tableau contenant les id de chaque menu.
436
*/
350 jpm 437
function GEN_retournerMenus(&$db)
211 jpm 438
{
439
    //----------------------------------------------------------------------------
440
    // Gestion des erreurs
597 ddelon 441
 
211 jpm 442
    //----------------------------------------------------------------------------
443
    // Recherche des informations sur le menu
444
    $requete =  'SELECT gm_id_menu '.
445
                'FROM gen_menu ';
597 ddelon 446
 
211 jpm 447
    $resultat = $db->query($requete);
448
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
597 ddelon 449
 
211 jpm 450
    //----------------------------------------------------------------------------
451
    // Récupération des infos
452
    $tab_retour = array();
453
    while ($info_menu = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
454
        array_push($tab_retour, $info_menu->gm_id_menu);
455
    }
456
    $resultat->free();
597 ddelon 457
 
211 jpm 458
    return $tab_retour;
459
}
460
 
4 jpm 461
/** Fonction GEN_lireInfoMenuRelation() - Renvoie un objet ou un tableau contenant une ligne de la table gen_menu_relation
462
*
124 jpm 463
* Par défaut recherche une relation de type père.
4 jpm 464
* Ancien nom : getMenuRelation().
465
*
466
* @param  mixed   Une instance de la classse PEAR_DB
467
* @param  int  l'identifiant d'un menu.
468
* @param  int  l'identifiant d'une valeur de relation.
469
* @param  string  le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
330 jpm 470
* @return  mixed  un objet ou tableau résultat Pear DB, ou false en cas d'erreur.
4 jpm 471
*/
350 jpm 472
function GEN_lireInfoMenuRelation(&$db, $menuid, $id_valeur = 1, $mode = DB_FETCHMODE_OBJECT)
4 jpm 473
{
474
    //----------------------------------------------------------------------------
475
    // Recherche des informations sur la relation de menu
476
    $requete =  'SELECT * '.
477
                'FROM gen_menu_relation '.
478
                'WHERE gmr_id_menu_01 = '.$menuid.' '.
479
                'AND gmr_id_valeur = '.$id_valeur;
597 ddelon 480
 
4 jpm 481
    $result = $db->query($requete);
482
    (DB::isError($result)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $result->getMessage(), $requete)) : '';
597 ddelon 483
 
4 jpm 484
    if ($result->numRows() != 1) {
485
        return false;
486
    }
597 ddelon 487
 
4 jpm 488
    //----------------------------------------------------------------------------
489
    // Récupération des infos
490
    $info_menu_relation = $result->fetchRow($mode);
491
    $result->free();
597 ddelon 492
 
4 jpm 493
    return $info_menu_relation;
494
}
495
 
124 jpm 496
/** Fonction GEN_verifierPresenceCodeMenu() - Vérifie l'existence d'un code de menu
497
*
498
* Permet de vérifier dans la base de données si le code fournie (alphanumérique ou numérique) a déjà
499
* été attribué à un menu ou pas!
500
*
501
* @param  mixed   Une instance de la classse PEAR_DB
502
* @param  string  le type du code (int ou string).
149 jpm 503
* @param  integer l'identifiant du menu courant.
124 jpm 504
* @param  mixed   le code numérique ou alphanumérique.
505
* @return mixed   retourne l'identifiant du menu possédant le code sinon false.
506
*/
350 jpm 507
function GEN_verifierPresenceCodeMenu(&$db, $type, $id_menu, $code)
124 jpm 508
{
149 jpm 509
    // Gestion des erreurs
510
    if ($code == '') {
511
        return true;
512
    }
597 ddelon 513
 
124 jpm 514
    // Requete pour vérifier l'abscence du code numérique et alphanumérique de la table gen_menu
515
    $requete =  'SELECT gm_id_menu '.
149 jpm 516
                'FROM gen_menu '.
517
                'WHERE gm_id_menu <> '.$id_menu.' ';
597 ddelon 518
 
124 jpm 519
    // Complément de requête en fonction du type de code
520
    if ($type == 'int') {
149 jpm 521
        $requete .= 'AND gm_code_num = '.$code;
124 jpm 522
    } else {
149 jpm 523
        $requete .= 'AND gm_code_alpha = "'.$code.'"';
124 jpm 524
    }
149 jpm 525
    $resultat = $db->query($requete);
526
    if (DB::isError($resultat)) {
527
            die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
124 jpm 528
    }
149 jpm 529
    $nombre_reponse = $resultat->numRows();
530
    if ($nombre_reponse >= 1) {
531
        return true;
124 jpm 532
    } else {
533
        return false;
534
    }
535
}
330 jpm 536
/** Fonction GEN_lireInfoMenuMotsCles() - Renvoie un objet ou un tableau contenant des lignes de la table gen_menu
537
*
597 ddelon 538
* Renvoie un objet ou un tableau contenant une ligne de la table gen_menu en fonction des mots clés présents dans
330 jpm 539
* la table gen_menu.
540
*
541
* @param  mixed   Une instance de la classse PEAR_DB
542
* @param  array  un tableau de mots clés.
396 jpm 543
* @param  string  la condition séparant chaque rechercher de mots-clés (AND ou OR).
544
* @param  string  l'ordre d'affichage des Menus (ASC ou DESC).
330 jpm 545
* @param  string  le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
546
* @param  boolean  true pour grouper les résultats (voir Pear DB : getAssoc() ) sinon false.
547
* @return  mixed   un objet ou tableau résultat Pear DB, ou false en cas d'erreur.
548
*/
396 jpm 549
function GEN_lireInfoMenuMotsCles(&$db, $tab_mots, $condition = 'OR', $ordre = 'ASC', $mode = DB_FETCHMODE_OBJECT, $groupe = false)
330 jpm 550
{
551
    //----------------------------------------------------------------------------
552
    // Recherche des informations sur les menus en fonctions des mots clés
553
    $requete =  'SELECT DISTINCT * '.
554
                'FROM gen_menu '.
555
                'WHERE ';
556
    for ($i = 0; $i < count($tab_mots); $i++) {
557
        if ($i == 0) {
558
            $requete .= 'gm_mots_cles LIKE "%'.$tab_mots[$i].'%" ';
559
        } else {
396 jpm 560
            $requete .= $condition.' gm_mots_cles LIKE "%'.$tab_mots[$i].'%" ';
330 jpm 561
        }
562
    }
396 jpm 563
    $requete .= 'ORDER BY gm_date_creation '.$ordre;
330 jpm 564
    $aso_info =& $db->getAssoc($requete, false, array(), $mode, $groupe);
565
    (PEAR::isError($aso_info)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $aso_info->getMessage(), $requete)) : '';
597 ddelon 566
 
330 jpm 567
    return $aso_info;
568
}
407 alexandre_ 569
 
570
/** Fonction GEN_lireInfoMenuMeta() - Renvoie un objet ou un tableau contenant des lignes de la table gen_menu
571
*
597 ddelon 572
* Renvoie un objet ou un tableau contenant une ligne de la table gen_menu en fonction des mots clés,
573
* catégories, id_menu,
407 alexandre_ 574
* la table gen_menu.
575
*
576
* @param  mixed   Une instance de la classse PEAR_DB
577
* @param  array  un tableau de mots clés.
578
* @param  string  la condition séparant chaque rechercher de mots-clés (AND ou OR).
579
* @param  string  l'ordre d'affichage des Menus (ASC ou DESC).
580
* @param  string  le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
581
* @param  boolean  true pour grouper les résultats (voir Pear DB : getAssoc() ) sinon false.
582
* @return  mixed   un objet ou tableau résultat Pear DB, ou false en cas d'erreur.
583
*/
1143 jp_milcent 584
function GEN_lireInfoMenuMeta(&$db, $tab_mots, $tab_cat, $condition = 'OR', $condition2 = 'OR', $ordre = 'ASC', $mode = DB_FETCHMODE_OBJECT, $groupe = false)
407 alexandre_ 585
{
586
    //----------------------------------------------------------------------------
587
    // Recherche des informations sur les menus en fonctions des mots clés
588
    $requete =  'SELECT DISTINCT * '.
589
                'FROM gen_menu '.
590
                'WHERE ';
591
    for ($i = 0; $i < count($tab_mots); $i++) {
1153 jp_milcent 592
        if ($tab_mots[$i] != '') {
593
	        if ($i == 0) {
594
	            $requete .= 'gm_mots_cles LIKE "%'.$tab_mots[$i].'%" ';
595
	        } else {
596
	            $requete .= $condition.' gm_mots_cles LIKE "%'.$tab_mots[$i].'%" ';
597
	        }
407 alexandre_ 598
        }
599
    }
1153 jp_milcent 600
    if (count($tab_mots) != 0 && $tab_cat[0] != '') {
601
    	$requete .= 'AND ' ;
602
    }
407 alexandre_ 603
    for ($i = 0; $i < count($tab_cat); $i++) {
1153 jp_milcent 604
        if ($tab_cat[$i] != '') {
605
	        if ($i == 0) {
606
	            $requete .= 'gm_categorie LIKE "%'.$tab_cat[$i].'%" ';
607
	        } else {
608
	            $requete .= $condition2.' gm_categorie LIKE "%'.$tab_cat[$i].'%" ';
609
	        }
407 alexandre_ 610
        }
611
    }
612
    $requete .= 'ORDER BY gm_date_creation '.$ordre;
613
    $aso_info =& $db->getAssoc($requete, false, array(), $mode, $groupe);
614
    (PEAR::isError($aso_info)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $aso_info->getMessage(), $requete)) : '';
597 ddelon 615
 
407 alexandre_ 616
    return $aso_info;
617
}
330 jpm 618
/** Fonction GEN_lireInfoMenuCategorie() - Renvoie un objet ou un tableau contenant des lignes de la table gen_menu
619
*
597 ddelon 620
* Renvoie un objet ou un tableau contenant une ligne de la table gen_menu en fonction des catégories présentes dans
330 jpm 621
* la table gen_menu.
622
*
623
* @param  mixed   Une instance de la classse PEAR_DB
624
* @param  array  un tableau de catégorie(s).
625
* @param  string  le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
626
* @param  boolean  true pour grouper les résultats (voir Pear DB : getAssoc() ) sinon false.
627
* @return  mixed   un objet ou tableau résultat Pear DB, ou false en cas d'erreur.
628
*/
350 jpm 629
function GEN_lireInfoMenuCategorie(&$db, $tab_categories, $mode = DB_FETCHMODE_OBJECT, $groupe = false)
330 jpm 630
{
631
    //----------------------------------------------------------------------------
632
    // Recherche des informations sur les menus en fonctions des mots clés
633
    $requete =  'SELECT DISTINCT * '.
634
                'FROM gen_menu '.
635
                'WHERE ';
636
    for ($i = 0; $i < count($tab_categories); $i++) {
637
        if ($i == 0) {
638
            $requete .= 'gm_categorie LIKE "%'.$tab_categories[$i].'%" ';
639
        } else {
640
            $requete .= 'OR gm_categorie LIKE "%'.$tab_categories[$i].'%" ';
641
        }
642
    }
643
    $aso_info =& $db->getAssoc($requete, false, array(), $mode, $groupe);
644
    (PEAR::isError($aso_info)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $aso_info->getMessage(), $requete)) : '';
597 ddelon 645
 
330 jpm 646
    return $aso_info;
647
}
648
/** Fonction GEN_lireInfoMenuContenuDate() - Renvoie un objet ou un tableau contenant des lignes de la table gen_menu
649
*
597 ddelon 650
* Renvoie un objet ou un tableau contenant une ligne de la table gen_menu en fonction des catégories présentes dans
330 jpm 651
* la table gen_menu.
652
*
653
* @param  mixed   Une instance de la classse PEAR_DB
340 jpm 654
* @param  array  le type de modification.
655
* @param  array  le code alphanumérique du site ou de plusieurs sites séparés par des virgules.
330 jpm 656
* @param  string  le mode dans Pear DB dans lequel on veut recevoir les infos du menu.
657
* @param  boolean  true pour grouper les résultats (voir Pear DB : getAssoc() ) sinon false.
658
* @return  mixed   un objet ou tableau résultat Pear DB, ou false en cas d'erreur.
659
*/
407 alexandre_ 660
function GEN_lireInfoMenuContenuDate(&$db, $type_modif = '', $site = '', $categorie='', $mode = DB_FETCHMODE_OBJECT, $groupe = false)
330 jpm 661
{
340 jpm 662
    $type_modif_sql = 'AND gmc_ce_type_modification IN (%s) ';
663
    if (!empty($type_modif)) {
664
        $type_modif = sprintf($type_modif_sql, $type_modif);
665
    } else {
666
        $type_modif = sprintf($type_modif_sql, '1, 2');
667
    }
668
    $site_sql = 'AND gs_code_alpha IN (%s) ';
669
    if (!empty($site)) {
670
        $site = sprintf($site_sql, '"'.implode('", "', array_map('trim', explode(',', $site))).'"');
671
    } else {
672
        $site = '';
673
    }
597 ddelon 674
 
407 alexandre_ 675
    if (!empty($categorie)) {
676
        $categorie = 'AND gm_categorie like "%'.$categorie.'%"' ;
677
    } else {
678
        $categorie = '';
679
    }
330 jpm 680
    // Recherche des informations sur les menus en fonctions des mots clés
340 jpm 681
    $requete =  'SELECT DISTINCT gen_menu.*, gs_code_alpha, gmc_date_modification, gmc_resume_modification, gmc_ce_type_modification '.
682
                'FROM gen_site, gen_menu, gen_menu_contenu '.
683
                'WHERE gmc_date_modification <= "'.date('Y-m-d H:i:s', time()).'" '.
597 ddelon 684
                'AND (gm_ce_site = gs_id_site OR gm_ce_site = 0) '.
330 jpm 685
                'AND gm_id_menu = gmc_ce_menu '.
686
                'AND gmc_bool_dernier = 1 '.
340 jpm 687
                $site.
688
                $type_modif.
407 alexandre_ 689
                $categorie.
330 jpm 690
                'ORDER BY gmc_date_modification DESC';
1153 jp_milcent 691
 
435 ddelon 692
    $aso_info =& $db->getAssoc($requete, false, array(), $mode, $groupe);
330 jpm 693
    (PEAR::isError($aso_info)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $aso_info->getMessage(), $requete)) : '';
597 ddelon 694
 
330 jpm 695
    return $aso_info;
696
}
344 jpm 697
/** Fonction GEN_retournerTableauMenusSiteCodeAlpha() - Renvoie un tableau de tableau contenant des lignes de la table gen_menu
698
*
597 ddelon 699
* Renvoie un tableau de tableau contenant les lignes de la table gen_menu pour un site donné. Les tableaux sont imbriquées
344 jpm 700
* pour reproduire l'arborescence des menus.
701
*
702
* @param  mixed  Une instance de la classse PEAR_DB
703
* @param  string le code alphanumérique du site.
704
* @return  array   un tableau de tableau contenant des lignes de la table gen_menu.
705
*/
706
function GEN_retournerTableauMenusSiteCodeAlpha(&$db, $site, $id_pere = 0, $aso_site_menus = array())
707
{
597 ddelon 708
 
344 jpm 709
    $requete =  'SELECT gen_menu.* '.
710
                'FROM gen_site, gen_menu, gen_menu_relation AS GMR01, gen_menu_relation AS GMR02 '.
711
                'WHERE GMR01.gmr_id_menu_02 = '.$id_pere.' '.
712
                'AND GMR01.gmr_id_menu_01 = gm_id_menu '.
713
                'AND gs_code_alpha = "'.$site.'" '.
714
                'AND gm_ce_site = gs_id_site '.
715
                'AND GMR01.gmr_id_valeur = 1 '.// 1 = avoir "père"
716
                'AND GMR02.gmr_id_menu_02 = gm_id_menu '.
717
                'AND GMR02.gmr_id_menu_01 = GMR02.gmr_id_menu_02 '.
718
                'AND GMR02.gmr_id_valeur = 100 '.// 100 = type "menu classique"
719
                'ORDER BY GMR01.gmr_ordre ASC';
720
    $resultat = $db->query($requete);
721
    if (DB::isError($resultat)) {
722
        die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
723
    }
597 ddelon 724
 
344 jpm 725
    if ($resultat->numRows() > 0) {
376 jpm 726
        while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
344 jpm 727
            $aso_site_menus[$ligne['gm_id_menu']] = $ligne;
376 jpm 728
            $aso_site_menus[$ligne['gm_id_menu']]['sous_menus'] = GEN_retournerTableauMenusSiteCodeAlpha($db, $site, $ligne['gm_id_menu']);
344 jpm 729
        }
730
    }
731
    return $aso_site_menus;
732
}
1033 ddelon 733
 
734
 
735
// Code menu --> Identifiant
736
// Identifiant menu --> Identifiant version originale
737
// Identifiant menu --> Identifiant version par défaut
738
// Identifiant menu --> Contenu
739
// Identifiant menu --> Contenu version originale
740
// Identifiant menu --> Contenu version par défaut
741
 
742
// Identifiant menu --> Identifiant version originale
743
 
744
/** Fonction GEN_rechercheMenuIdentifiant() - Recherche code menu à partir de l'identifiant d'un site
745
*
746
*
747
* @param  object objet Pear de connection à la base de données.
748
*/
749
 
1499 jp_milcent 750
function GEN_rechercheMenuIdentifiant($db, $id_menu)
751
{
1033 ddelon 752
		$requete =  'SELECT  gm_code_num   '.
753
        	        'FROM gen_menu  '.
754
            	    'WHERE gm_id_menu =  '.$id_menu.' ';
755
		$resultat = $db->query($requete);
756
 
757
		(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
758
 
759
 
760
		$ligne = $resultat->fetchrow(DB_FETCHMODE_OBJECT);
761
 
762
		return $ligne->gm_code_num;
763
 
764
}
765
 
1131 jp_milcent 766
/** Fonction GEN_retournerIdMenuParCodeNum()
767
*
768
* Recherche les info d'une menu à partir du code numérique du menu d'un site et en fonction de la langue.
1033 ddelon 769
*
770
* @param  object objet Pear de connection à la base de données.
1131 jp_milcent 771
* @param  integer code numérique du menu
1033 ddelon 772
* @return identifiant menu
773
*/
1499 jp_milcent 774
function GEN_retournerIdMenuParCodeNum($db, $code_menu)
775
{
1131 jp_milcent 776
	// Si identifiant existe pour la langue choisie : retour identifiant
777
	// Si identifiant n'existe pas : retour identifiant de la langue par defaut :
778
	// Recherche de l'identifiant par defaut
779
	// Recherche de l'identifiant de la langue du site
780
	// Recherche de l'identifiant par defaut
781
	$id_langue = $GLOBALS['_GEN_commun']['i18n'];
782
	if (isset($id_langue) && ($id_langue!='')) {
783
		$langue_test=$id_langue;
784
	} else {
785
		$langue_test=GEN_I18N_ID_DEFAUT;
786
	}
1033 ddelon 787
 
1131 jp_milcent 788
	$requete =  'SELECT gm_id_menu, gm_code_num   '.
789
				'FROM gen_menu  '.
790
				'WHERE gm_code_num =  '.$code_menu.' '.
791
				'AND gm_ce_i18n = "'.$langue_test.'" ';
792
	$resultat = $db->query($requete);
1033 ddelon 793
 
1131 jp_milcent 794
	(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
1033 ddelon 795
 
1131 jp_milcent 796
	if ( $resultat->numRows() > 0 ) {
797
		$ligne = $resultat->fetchrow(DB_FETCHMODE_OBJECT);
798
		return $ligne->gm_id_menu;
799
	} else {
800
		// Recherche defaut :
1033 ddelon 801
		$requete =  'SELECT gm_id_menu, gm_code_num   '.
1131 jp_milcent 802
           'FROM gen_menu  '.
803
           'WHERE gm_code_num =  '.$code_menu.' ';
804
           'AND gm_ce_i18n = "'.GEN_I18N_ID_DEFAUT.'" ';
805
 
1033 ddelon 806
		$resultat = $db->query($requete);
807
 
808
		(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
809
 
810
		if ( $resultat->numRows() > 0 ) {
1131 jp_milcent 811
			$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
812
			if ($langue_test!=GEN_I18N_ID_DEFAUT) {
813
				return GEN_rechercheMenuIdentifiantVersionParDefaut($db,$ligne->gm_id_menu);
1033 ddelon 814
 
1131 jp_milcent 815
			} else {
816
				return $ligne->gm_id_menu;
817
			}
1033 ddelon 818
		}
1131 jp_milcent 819
	}
820
}
1033 ddelon 821
 
1131 jp_milcent 822
/** Fonction GEN_rechercheMenuCode()
823
*
824
* Allias de GEN_retournerIdMenuAvecCodeNum().
825
*
826
* @param  object objet Pear de connection à la base de données.
827
* @param  integer code numérique du menu
828
* @return identifiant menu
829
*/
830
function GEN_rechercheMenuCode($db, $code_menu) {
831
	return GEN_retournerIdMenuParCodeNum($db, $code_menu);
1033 ddelon 832
}
833
 
834
/* Fonction GEN_rechercheContenu
1131 jp_milcent 835
*
836
*/
1499 jp_milcent 837
function GEN_rechercheContenu($db, $id_menu, $type_fetch = DB_FETCHMODE_OBJECT) {
1033 ddelon 838
 
1499 jp_milcent 839
	$requete  =	'SELECT gmc_contenu , gmc_ce_type_contenu, gmc_ce_menu '.
840
				'FROM gen_menu_contenu  '.
841
				'WHERE gmc_ce_menu = '.$id_menu.' '.
842
				'AND gmc_ce_type_contenu in (1,2) '.
843
				'AND gmc_bool_dernier = 1';
1033 ddelon 844
 
845
	$resultat = $db->query($requete);
846
	(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
1499 jp_milcent 847
 
1033 ddelon 848
	// Rien trouvé ? : Pas encore de contenu
849
	// Recherche identifiant par défaut
850
	if ( $resultat->numRows() == 0 ) {
1499 jp_milcent 851
		$id_menu_defaut = GEN_rechercheMenuIdentifiantVersionParDefaut($db,$id_menu);
852
		$requete  =	'SELECT gmc_contenu , gmc_ce_type_contenu, gmc_ce_menu '.
853
					'FROM gen_menu_contenu  '.
854
					'WHERE gmc_ce_menu = '.$id_menu_defaut.' '.
855
					'AND gmc_ce_type_contenu in (1,2) '.
856
					'AND gmc_bool_dernier = 1';
1033 ddelon 857
 
858
		$resultat = $db->query($requete);
859
		(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
860
 
861
		if ( $resultat->numRows() == 0 ) {
862
			// Toujours rien ?
863
			// Tentative recherche dans la langue du site par defaut
1499 jp_milcent 864
			$id_menu_origine = GEN_rechercheMenuIdentifiantVersionOriginale($db, $id_menu);
1033 ddelon 865
 
866
			$requete  =  'SELECT gmc_contenu , gmc_ce_type_contenu, gmc_ce_menu '.
867
	               			'FROM gen_menu_contenu  '.
868
			                'WHERE gmc_ce_menu = '.$id_menu_origine.' '.
869
	    		            'AND gmc_ce_type_contenu in (1,2) '.
870
	            		    'AND gmc_bool_dernier = 1';
871
 
872
			$resultat = $db->query($requete);
873
			(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
874
 
875
		}
876
	}
877
 
878
	$ligne_contenu = $resultat->fetchRow($type_fetch);
1499 jp_milcent 879
	return $ligne_contenu;
880
}
1033 ddelon 881
 
1499 jp_milcent 882
function GEN_rechercheContenuIdentifiant($db, $id_contenu, $mode = DB_FETCHMODE_OBJECT) {
883
 
884
	$requete  =	'SELECT gmc_contenu , gmc_ce_type_contenu, gmc_ce_menu, gmc_date_modification '.
885
				'FROM gen_menu_contenu  '.
886
				'WHERE gmc_id_contenu = '.$id_contenu.' ';
887
 
888
	$resultat = $db->query($requete);
889
	(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
1033 ddelon 890
 
1499 jp_milcent 891
	if ($resultat->numRows() != 1) {
892
		return false;
893
	}
1033 ddelon 894
 
1499 jp_milcent 895
	$ligne_contenu = $resultat->fetchRow($mode);
896
	return $ligne_contenu;
897
}
898
 
1033 ddelon 899
/** Fonction GEN_rechercheMenuIdentifiantVersionOriginale() - Recherche identifiant de la version orginale d'un menu
900
*
901
*
902
* @param  object objet Pear de connection à la base de données.
903
* @param  identifiant menu
904
* @return identifiant menu
905
*/
906
function GEN_rechercheMenuIdentifiantVersionOriginale($db, $id_menu) {
907
 
908
	$requete  = 'SELECT gmr_id_menu_01 '.
909
				'FROM gen_menu_relation '.
910
				'WHERE gmr_id_menu_02  = ' . $id_menu .' '.
911
				'AND gmr_id_valeur = 2  '; // 2 = "avoir traduction"
912
 
913
 
914
	$resultat = $db->query($requete) ;
915
 
916
	if (DB::isError($resultat)) {
917
	    die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
918
	}
919
 
920
 
921
	if ($resultat->numRows() > 0) {
922
		$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
923
		return $ligne->gmr_id_menu_01;
924
	}
925
	else {
926
		return $id_menu;
927
	}
928
 
929
}
930
 
931
 
932
/** Fonction GEN_rechercheMenuIdentifiantVersionParDefaut() - Recherche identifiant par defaut d'un menu
933
*
934
*
935
* @param  object objet Pear de connection à la base de données.
936
* @param  identifiant menu
937
* @return identifiant menu
938
*/
939
function GEN_rechercheMenuIdentifiantVersionParDefaut($db, $id_menu) {
940
 
941
	$identifiantVersionOrginale=GEN_rechercheMenuIdentifiantVersionOriginale($db, $id_menu);
942
 
943
	$requete  = 'SELECT gmr_id_menu_02 '.
944
				'FROM gen_menu_relation '.
945
				'WHERE gmr_id_menu_01  = ' . $identifiantVersionOrginale .' '.
946
				'AND gmr_id_valeur = 105  '; // 105
947
 
948
	$resultat = $db->query($requete) ;
949
 
950
	if (DB::isError($resultat)) {
951
	    die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
952
	}
953
 
954
	if ($resultat->numRows() > 0) {
955
		$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
956
		return $ligne->gmr_id_menu_02;
957
	}
958
	else {
959
		return $identifiantVersionOrginale;
960
	}
961
}
962
 
963
 
964
 
965
 
4 jpm 966
/* +--Fin du code ---------------------------------------------------------------------------------------+
967
* $Log: not supported by cvs2svn $
1499 jp_milcent 968
* Revision 1.30  2006-12-12 17:19:58  jp_milcent
969
* Ajout de test supplémentaire pour éviter les erreurs.
970
*
1153 jp_milcent 971
* Revision 1.29  2006/12/12 13:32:58  jp_milcent
972
* Mise en forme.
973
*
1143 jp_milcent 974
* Revision 1.28  2006/12/08 20:13:57  jp_milcent
975
* Mise en allias de GEN_rechercherMenuCode(), remplacée par GEN_retournerIdMenuParCodeNum().
976
*
1131 jp_milcent 977
* Revision 1.27  2006/10/16 15:50:10  ddelon
978
* Refactorisation code mulitlinguisme et gestion menu invisibles
979
*
1033 ddelon 980
* Revision 1.26  2006/03/02 10:49:49  ddelon
981
* Fusion branche multilinguisme dans branche principale
982
*
754 ddelon 983
* Revision 1.25.2.1  2005/12/20 14:40:24  ddelon
984
* Fusion Head vers Livraison
985
*
986
* Revision 1.25  2005/11/08 17:43:46  ddelon
987
* Bug Nouveaute ne s'affichant pas pour les menu communs
988
*
597 ddelon 989
* Revision 1.24  2005/09/20 17:01:22  ddelon
990
* php5 et bugs divers
991
*
443 ddelon 992
* Revision 1.23  2005/08/29 09:05:12  ddelon
993
* Suppression message debug
994
*
435 ddelon 995
* Revision 1.22  2005/07/08 15:16:37  alexandre_tb
996
* ajout de la fonction GEN_lireInfoMenuMeta() qui permet de sélectionner des menus en fonction de leur mot clé et leur catégorie
997
*
407 alexandre_ 998
* Revision 1.21  2005/06/08 19:11:43  jpm
999
* Ajout de ordre et condition pour la fonction de lecture des infos sur les menus.
1000
*
396 jpm 1001
* Revision 1.20  2005/05/26 08:00:51  jpm
1002
* Correction dans la fonction GEN_retournerTableauMenusSiteCodeAlpha().
1003
*
376 jpm 1004
* Revision 1.19  2005/05/25 13:46:58  jpm
1005
* Changement du sql de la fonction GEN_lireContenuMenu().
1006
*
372 jpm 1007
* Revision 1.18  2005/04/19 17:21:19  jpm
1008
* Utilisation des références d'objets.
1009
*
350 jpm 1010
* Revision 1.17  2005/04/18 16:41:25  jpm
1011
* Ajout d'une fonction pour récupérer tous les menus d'un site avec son code alphanumérique.
1012
*
344 jpm 1013
* Revision 1.16  2005/04/14 17:40:31  jpm
1014
* Modification fonction pour les actions.
1015
*
340 jpm 1016
* Revision 1.15  2005/04/14 13:56:53  jpm
1017
* Modification d'une ancienne fonction.
1018
*
334 jpm 1019
* Revision 1.14  2005/04/12 16:13:50  jpm
1020
* Ajout de fonction renvoyant des infos sur un menu en fonction des mots clés, catégories ou date de modification du contenu.
1021
*
330 jpm 1022
* Revision 1.13  2005/03/30 08:53:59  jpm
1023
* Ajout de fonctions permettant de récupérer les codes alphanumériques ou numériques en fonction de l'un ou de l'autre.
1024
*
322 jpm 1025
* Revision 1.12  2005/02/28 11:12:03  jpm
1026
* Modification des auteurs.
1027
*
285 jpm 1028
* Revision 1.11  2004/12/06 19:49:35  jpm
1029
* Ajout d'une fonction permettant de récupérer le contenu d'un menu.
1030
*
216 jpm 1031
* Revision 1.10  2004/12/06 17:53:55  jpm
1032
* Ajout fonction GEN_retournerMenus().
1033
*
211 jpm 1034
* Revision 1.9  2004/11/29 18:34:42  jpm
1035
* Correction bogue.
1036
*
193 jpm 1037
* Revision 1.8  2004/11/10 17:25:51  jpm
1038
* Modification de fonction suite à des bogues.
1039
*
149 jpm 1040
* Revision 1.7  2004/11/09 17:55:26  jpm
1041
* Suppresion de fonctions inutiles et mise en conformité.
1042
*
146 jpm 1043
* Revision 1.6  2004/11/08 17:39:32  jpm
1044
* Suppression d'une fonction inutile.
1045
* GEN_etreFils() n'est pas utile. On peut utiliser GEN_etreAncetre() à la place.
1046
*
129 jpm 1047
* Revision 1.5  2004/11/04 12:51:45  jpm
1048
* Suppression de message de débogage.
1049
*
127 jpm 1050
* Revision 1.4  2004/11/04 12:23:50  jpm
1051
* Nouvelles fonctions sur les menus frères.
1052
*
124 jpm 1053
* Revision 1.3  2004/10/25 14:16:21  jpm
1054
* Suppression de code commenté.
1055
*
103 jpm 1056
* Revision 1.2  2004/10/21 18:15:21  jpm
1057
* Ajout de gestion d'erreur aux fonctions.
1058
*
84 jpm 1059
* Revision 1.1  2004/06/15 15:11:37  jpm
1060
* Changement de nom et d'arborescence de Genesia en Papyrus.
1061
*
4 jpm 1062
* Revision 1.43  2004/05/05 06:13:27  jpm
1063
* Extraction de la fonction générant le "vous êtes ici", transformée en applette.
1064
*
1065
* Revision 1.42  2004/05/04 16:24:06  jpm
1066
* Amélioration de la fonction générant le "vous êtes ici".
1067
*
1068
* Revision 1.41  2004/05/04 16:17:31  jpm
1069
* Ajout de la fonction générant le "vous êtes ici".
1070
*
1071
* Revision 1.40  2004/05/03 11:18:17  jpm
1072
* Normalisation de deux fonctions issues du fichier fontctions.php.
1073
*
1074
* Revision 1.39  2004/05/01 16:17:11  jpm
1075
* Suppression des fonctions liées à la création des listes de menu. Elles ont été transformées en applette.
1076
*
1077
* Revision 1.38  2004/05/01 11:43:16  jpm
1078
* Suppression des fonction GEN_afficherMenuCommun() et GEN_afficherSelecteurSites() transformées en applette.
1079
*
1080
* Revision 1.37  2004/04/30 16:18:41  jpm
1081
* Correction d'un bogue dans les fonctions de gestion des scripts.
1082
*
1083
* Revision 1.36  2004/04/28 12:04:40  jpm
1084
* Changement du modèle de la base de données.
1085
*
1086
* Revision 1.35  2004/04/09 16:23:41  jpm
1087
* Prise en compte des tables i18n.
1088
*
1089
* Revision 1.34  2004/04/02 16:34:44  jpm
1090
* Extraction de variable globale des fonction, remplacé par un passage en paramètre.
1091
*
1092
* Revision 1.33  2004/04/01 11:24:51  jpm
1093
* Ajout et modification de commentaires pour PhpDocumentor.
1094
*
1095
* Revision 1.32  2004/03/31 16:52:30  jpm
1096
* Modification du code vis à vis du modèle revision 1.9 de Génésia.
1097
*
1098
* Revision 1.31  2004/03/29 17:13:05  jpm
1099
* Suppression de fonction, passer en code classique.
1100
*
1101
* Revision 1.30  2004/03/27 11:11:58  jpm
1102
* Début changement nom de variable dans fonction creerInfoPageEtApplication().
1103
*
1104
* Revision 1.29  2004/03/26 12:52:25  jpm
1105
* Ajout des fonctions creerInfoPageEtApplication() et donnerIdPremiereApplicationLiee().
1106
*
1107
* +-- Fin du code ----------------------------------------------------------------------------------------+
1108
*/
1109
?>