Subversion Repositories Applications.papyrus

Rev

Rev 2077 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2150 mathias 1
<?php
2
//vim: set expandtab tabstop=4 shiftwidth=4:
3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 4.1                                                                                      |
5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 2003 Tela Botanica (accueil@tela-botanica.org)                                         |
7
// +------------------------------------------------------------------------------------------------------+
8
// |                                                                                                      |
9
// | This library is free software; you can redistribute it and/or                                        |
10
// | modify it under the terms of the GNU Lesser General Public                                           |
11
// | License as published by the Free Software Foundation; either                                         |
12
// | version 2.1 of the License, or (at your option) any later version.                                   |
13
// |                                                                                                      |
14
// | This library is distributed in the hope that it will be useful,                                      |
15
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
16
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
17
// | Lesser General Public License for more details.                                                      |
18
// |                                                                                                      |
19
// | You should have received a copy of the GNU Lesser General Public                                     |
20
// | License along with this library; if not, write to the Free Software                                  |
21
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
22
// |                                                                                                      |
23
// +------------------------------------------------------------------------------------------------------+
24
// CVS : $Id: pap_initialise_info.inc.php,v 1.32 2007-10-23 13:45:33 ddelon Exp $
25
/**
26
*Initialisation de Papyrus : vérification et récupération de paramètres généraux.
27
*
28
* La page contient le code initialisant l'exécution du rendu d'une page par Papyrus.
29
* Nous y trouvons la recherche des informations disponibles sur :
30
* - le site présent sur le serveur demandé,
31
* - l'identification,
32
* - la langue,
33
* - le menu,
34
* - la page
35
* - l'application
36
*
37
*@package Papyrus
38
//Auteur original :
39
*@author            Jean-Pascal MILCENT <jpm@tela-botanica.org>
40
//Autres auteurs :
41
*@author            Alexandre GRANIER <alex@tela-botanica.org>
42
*@author            Laurent COUDOUNEAU <laurent.coudouneau@ema.fr>
43
*@copyright         Tela-Botanica 2000-2004
44
*@version           $Revision: 1.32 $ $Date: 2007-10-23 13:45:33 $
45
// +------------------------------------------------------------------------------------------------------+
46
*/
47
 
48
// +------------------------------------------------------------------------------------------------------+
49
// |                                            ENTÊTE du PROGRAMME                                       |
50
// +------------------------------------------------------------------------------------------------------+
51
/** Inclusion de l'objet PEAR servant à négocier le language avec le navigateur client. */
52
require_once PAP_CHEMIN_API_PEAR.'HTTP.php';
53
/** Inclusion de la classe PEAR gérant les URL : Utilisé pour l'url demandée par le client.*/
54
require_once PAP_CHEMIN_API_PEAR.'Net/URL.php';
55
/** Inclusion de la bibliothèque de fonctions servant à l'initialisation des variables globales de Papyrus. */
56
require_once GEN_CHEMIN_BIBLIO.'pap_initialisation.fonct.php';
57
/** Inclusion de la classe Papyrus gérant les URL : Utilisé pour l'url demandée par le client.*/
58
require_once GEN_CHEMIN_BIBLIO_CLASSE.'pap_url.class.php';
59
/** Inclusion de la bibliothèque de fonctions servant au menu pour la réecriture d'url. */
60
require_once GEN_CHEMIN_BIBLIO.'pap_menu.fonct.php';
61
 
62
// +------------------------------------------------------------------------------------------------------+
63
// |                                            CORPS du PROGRAMME                                        |
64
// +------------------------------------------------------------------------------------------------------+
65
 
66
// Recherche de la présence de la valeur d'i18n dans l'url
67
if ( (isset($_GET[GEN_URL_CLE_I18N])) && (!empty($_GET[GEN_URL_CLE_I18N])) ) {
68
    $_GEN_commun['i18n'] = $_GET[GEN_URL_CLE_I18N];
69
} else {
70
  $_GEN_commun['i18n'] = GEN_I18N_ID_DEFAUT;
71
}
72
 
73
// +------------------------------------------------------------------------------------------------------+
74
// Gestion de la réecriture d'url et des url erreur 404
75
if ((defined('PAP_URL_REECRITURE') AND PAP_URL_REECRITURE == '1' && (! isset($_GET[GEN_URL_CLE_SITE]) || empty($_GET[GEN_URL_CLE_SITE])) && (! isset($_GET[GEN_URL_CLE_MENU]) || empty($_GET[GEN_URL_CLE_MENU]))) ) {
76
	$tab_type_reecriture = array('MENU', 'SITE');
77
	foreach ($tab_type_reecriture as $reecriture) {
78
		if (PAP_URL_REECRITURE_SEP == '/') {
79
			$masque_reecriture = '/^(\/.*?)'.constant('PAP_URL_REECRITURE_'.$reecriture).'\\'.PAP_URL_REECRITURE_SEP.'([^?]+?)(?:\?(.*)|)$/';
80
		} else {
81
			$masque_reecriture = '/^(\/.*?)'.constant('PAP_URL_REECRITURE_'.$reecriture).PAP_URL_REECRITURE_SEP.'([^?]+?)(?:\?(.*)|)$/';
82
		}
83
		if (preg_match($masque_reecriture, rawurldecode($_SERVER['REQUEST_URI']), $tab_raccourci)) {
84
			$chemin_vers_papyrus = $tab_raccourci[1];
85
			$raccourci = $tab_raccourci[2];
86
			$parametres = '';
87
			if (isset($tab_raccourci[3])) {
88
				$parametres = $tab_raccourci[3];
89
			}
90
			if ($reecriture == 'SITE') {
91
				/** Inclusion de la bibliothèque de fonctions servant au site pour la réecriture d'url. */
92
				require_once GEN_CHEMIN_BIBLIO.'pap_site.fonct.php';
93
			}
94
			// Nous cherchons à savoir si le raccourci est entièrement numérique ou pas.
95
			if (preg_match('/^[0-9]+$/', $raccourci)) {
96
				// Nous vérifions si nous utilisons les codes numériques ou alphanumérique dans les url
97
				if (constant('GEN_URL_ID_TYPE_'.$reecriture) != 'int') {
98
					if ($reecriture == 'SITE') {
99
						$_GET[constant('GEN_URL_CLE_'.$reecriture)] = call_user_func('GEN_retourner'.$reecriture.'CodeAlpha', $db, $raccourci, $_GEN_commun['i18n']);
100
					} else {
101
						$_GET[constant('GEN_URL_CLE_'.$reecriture)] = call_user_func('GEN_retourner'.$reecriture.'CodeAlpha', $db, $raccourci);
102
					}
103
				} else {
104
					$_GET[constant('GEN_URL_CLE_'.$reecriture)] = $raccourci;
105
				}
106
			} else {
107
				// Nous vérifions si nous utilisons les codes numériques ou alphanumérique dans les url
108
				if (constant('GEN_URL_ID_TYPE_'.$reecriture) != 'int') {
109
					$_GET[constant('GEN_URL_CLE_'.$reecriture)] = $raccourci;
110
				} else {
111
					if ($reecriture == 'SITE') {
112
						$_GET[constant('GEN_URL_CLE_'.$reecriture)] = call_user_func('GEN_retourner'.$reecriture.'CodeNum', $db, $raccourci, $_GEN_commun['i18n']);
113
					} else {
114
						$_GET[constant('GEN_URL_CLE_'.$reecriture)] = call_user_func('GEN_retourner'.$reecriture.'CodeNum', $db, $raccourci);
115
					}
116
				}
117
			}
118
		}
119
	}
120
}
121
 
122
// +------------------------------------------------------------------------------------------------------+
123
// Gestion des sites : disponibles sur le serveur courant.
124
// Liste des catégories de site à prendre en compte :
125
// Pas de site, ni de menu dans l'URL, recherche du site par défaut
126
$site_liste_id = '102, 103';// 102 = site "principal" et 103 = site "externe"
127
if ( (! isset($_GET[GEN_URL_CLE_SITE]) || empty($_GET[GEN_URL_CLE_SITE])) && (! isset($_GET[GEN_URL_CLE_MENU]) || empty($_GET[GEN_URL_CLE_MENU])) ) {
128
    $requete =  'SELECT gen_site.*, GSR02.* '.
129
                'FROM gen_site, gen_site_relation AS GSR01, gen_site_relation AS GSR02 '.
130
                'WHERE GSR01.gsr_id_site_01 = GSR01.gsr_id_site_02 '.
131
                'AND GSR01.gsr_id_valeur = 101 '.// 101 = site défaut
132
                'AND GSR01.gsr_id_site_01 = gs_id_site '.
133
                'AND GSR02.gsr_id_site_01 = GSR02.gsr_id_site_02 '.
134
                'AND GSR02.gsr_id_valeur IN ('.$site_liste_id.') '.
135
                'AND GSR02.gsr_id_site_01 = gs_id_site';
136
 
137
    $resultat = $db->query($requete);
138
    if (DB::isError($resultat)) {
139
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
140
    }
141
 
142
    // Aucun site trouvé
143
    if ($resultat->numRows() == 0) {
144
        // Appel à l'application Installateur si nécessaire
145
        /** <br> Inclusion du programme Installateur de Papyrus.
146
        * L'abscence de site oblige à relancer l'installation et le script sql qui régénérera la base de données.*/
147
        include_once GEN_CHEMIN_APPLICATION.'installateur/installateur.php';
148
        $_GEN_commun['sortie'] = afficherContenuCorps();
149
        include_once GEN_CHEMIN_PAP.'pap_envoi.inc.php';
150
        // Fin du programme Papyrus.
151
        exit(0);
152
    }
153
    // Nous avons trouvé un site.
154
    $_GEN_commun['info_site'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
155
    $resultat->free();
156
    if (GEN_URL_ID_TYPE_SITE == 'int') {
157
        $_GEN_commun['url_site'] = $_GEN_commun['info_site']->gs_code_num;
158
    } else {
159
        $_GEN_commun['url_site'] = $_GEN_commun['info_site']->gs_code_alpha;
160
    }
161
 // Le code du menu est présent dans l'url mais pas celui du site
162
} else if ( (! isset($_GET[GEN_URL_CLE_SITE]) || empty($_GET[GEN_URL_CLE_SITE])) && (isset($_GET[GEN_URL_CLE_MENU]) || !empty($_GET[GEN_URL_CLE_MENU])) ) {
163
    // Nous récupérons les infos du menu et du sites dans la variable globale de Papyrus.
164
    $_GEN_commun['url_menu'] = $_GET[GEN_URL_CLE_MENU];
165
    // Récupération des informations sur le menu demandé
166
    $requete =  'SELECT * '.
167
                'FROM gen_menu '.
168
                'WHERE ';
169
    $requete .= (GEN_URL_ID_TYPE_MENU == 'int')
170
        ? 'gm_code_num = '.$_GEN_commun['url_menu']
171
        : 'gm_code_alpha = "'.$_GEN_commun['url_menu'].'"';
172
 
173
    $resultat = $db->query($requete);
174
    (DB::isError($resultat))
175
        ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete))
176
       : '';
177
 
178
    $_GEN_commun['info_menu'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
179
    $resultat->free();
180
    if ($_GEN_commun['info_menu']->gm_ce_site != 0) {
181
        // Récupération des infos du site
182
        $requete =  'SELECT * '.
183
                    'FROM gen_site, gen_site_relation '.
184
                    'WHERE gsr_id_site_01 = gsr_id_site_02 '.
185
                    'AND gsr_id_valeur IN ('.$site_liste_id.') '.
186
                    'AND gsr_id_site_01 = gs_id_site '.
187
                    'AND gs_id_site = '. $_GEN_commun['info_menu']->gm_ce_site;
188
 
189
        $resultat = $db->query($requete);
190
        (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
191
 
192
        $_GEN_commun['info_site'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
193
        $_GEN_commun['url_site'] = (GEN_URL_ID_TYPE_SITE == 'int')
194
            ? $_GEN_commun['info_site']->gs_code_num
195
            : $_GEN_commun['info_site']->gs_code_alpha;
196
        $resultat->free();
197
 
198
    } else {
199
        // Récupération des infos du site
200
        $requete =  'SELECT * '.
201
                    'FROM gen_site, gen_site_relation '.
202
                    'WHERE gsr_id_site_01 = gsr_id_site_02 '.
203
                    'AND gsr_id_valeur = 101 '.
204
                    'AND gsr_id_site_01 = gs_id_site ';
205
 
206
        $resultat = $db->query($requete);
207
        (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
208
 
209
        $_GEN_commun['info_site'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
210
        $_GEN_commun['url_site'] = (GEN_URL_ID_TYPE_SITE == 'int')
211
            ? $_GEN_commun['info_site']->gs_code_num
212
            : $_GEN_commun['info_site']->gs_code_alpha;
213
        $resultat->free();
214
    }
215
} else {
216
	// Récupération de la valeur identifiant le site depuis l'url
217
    $_GEN_commun['url_site'] = $_GET[GEN_URL_CLE_SITE];
218
 
219
    // Récupération des informations sur le site
220
    // ATTENTION : pour fonctionner le site par dans la langue par défaut doit avoir une relation : id_site id_site id_valeur=1
221
    $requete =  'SELECT * '.
222
                'FROM gen_site, gen_site_relation '.
223
                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
224
                'AND gsr_id_valeur IN ('.$site_liste_id.') '.
225
                'AND gsr_id_site_01 = gs_id_site '.
226
    			'AND gs_ce_i18n = "'.GEN_I18N_ID_DEFAUT.'" '.
227
                'AND ';
228
    $requete .= (GEN_URL_ID_TYPE_SITE == 'int')
229
        ? 'gs_code_num = "'.$_GEN_commun['url_site'].'" '
230
        : 'gs_code_alpha = "'.$_GEN_commun['url_site'].'" ';
231
 
232
    $resultat = $db->query($requete);
233
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
234
    $_GEN_commun['info_site'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
235
    $resultat->free();
236
}
237
 
238
//Gestion de l'erreur aucun site trouvable.
239
if (! isset($_GEN_commun['info_site'])) {
240
    // Appel à l'application Installateur si nécessaire
241
    /** <br> Inclusion du programme Installateur de Papyrus.
242
    * L'abscence de site oblige à relancer l'installation et le script sql qui régénérera la base de données.*/
243
    include_once GEN_CHEMIN_APPLICATION.'installateur/installateur.php';
244
    $_GEN_commun['sortie'] .= afficherContenuCorps();
245
    include_once GEN_CHEMIN_PAP.'pap_envoi.inc.php';
246
    // Fin du programme Papyrus.
247
    exit(0);
248
} else if ($_GEN_commun['info_site']->gsr_id_valeur == 103) {
249
    // Gestion de la redirection pour les sites "externes"
250
    header('Location:'.$_GEN_commun['info_site']->gs_url);
251
    exit(0);
252
}
253
 
254
// Nous récupérons des informations sur l'internationalisation
255
$requete =  'SELECT * '.
256
            'FROM gen_i18n '.
257
            'WHERE gi_id_i18n = "'.$_GEN_commun['i18n'].'"';
258
 
259
$resultat = $db->query($requete);
260
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
261
 
262
$_GEN_commun['info_i18n'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
263
$resultat->free();
264
 
265
 
266
// Récupération des informations sur la langue
267
$requete =  'SELECT * '.
268
            'FROM gen_i18n_langue '.
269
            'WHERE gil_id_langue = "'.$_GEN_commun['info_i18n']->gi_ce_langue.'"';
270
$resultat = $db->query($requete);
271
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
272
 
273
$_GEN_commun['info_i18n_langue'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
274
$resultat->free();
275
 
276
// Récupération des informations sur le pays
277
$requete =  'SELECT * '.
278
            'FROM gen_i18n_pays '.
279
            'WHERE gip_id_pays = "'.$_GEN_commun['info_i18n']->gi_ce_pays.'"';
280
$resultat = $db->query($requete);
281
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
282
 
283
$_GEN_commun['info_i18n_pays'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
284
$resultat->free();
285
 
286
// +------------------------------------------------------------------------------------------------------+
287
// Gestion des menus
288
//
289
// Nous vérifions le cas où le code du menu est introuvable dans l'url.
290
if ( (! isset($_GET[GEN_URL_CLE_MENU])) || (empty($_GET[GEN_URL_CLE_MENU])) ) {
291
    // Recherche du premier menu du site courant:
292
    $requete =  'SELECT gen_menu.* '.
293
                'FROM gen_menu, gen_menu_relation '.
294
                'WHERE gm_ce_site = '.$_GEN_commun['info_site']->gs_id_site.' '.
295
                'AND gmr_id_menu_01 = gm_id_menu '.
296
                'AND gmr_id_menu_01 = gmr_id_menu_02 '.
297
                'AND gmr_id_valeur = 101 ';// 101 = menu par "defaut"
298
 
299
    $resultat = $db->query($requete);
300
    (DB::isError($resultat))
301
        ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete))
302
        : '';
303
    // Nous avons trouvé un menu "défaut" pour le site courant.
304
    $_GEN_commun['info_menu'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
305
    $resultat->free();
306
 
307
    if (isset($_GEN_commun['url_menu'])) {
308
	    // Stockage du code du menu demandée dans la variable globale de Papyrus.
309
	    if (GEN_URL_ID_TYPE_MENU == 'int') {
310
	        $_GEN_commun['url_menu'] = $_GEN_commun['info_menu']->gm_code_num;
311
	    } else {
312
	        $_GEN_commun['url_menu'] = $_GEN_commun['info_menu']->gm_code_alpha;
313
	    }
314
    }
315
} else if (! isset($_GET['url_menu']) && empty($_GEN_commun['url_menu'])) {
316
    // Le code du menu est présent dans l'url et il n'a pas encore été récupéré
317
    // Nous le récupérons dans la variable globale de Papyrus.
318
    $_GEN_commun['url_menu'] = $_GET[GEN_URL_CLE_MENU];
319
 
320
    // Récupération des informations sur le menu demandé
321
    $requete = 'SELECT * '.
322
                'FROM gen_menu '.
323
                'WHERE ';
324
    $requete .= (GEN_URL_ID_TYPE_MENU == 'int')
325
        ? 'gm_code_num = '.$_GEN_commun['url_menu']
326
        : 'gm_code_alpha = "'.$_GEN_commun['url_menu'].'"';
327
 
328
    $resultat = $db->query($requete);
329
    (DB::isError($resultat))
330
        ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete))
331
        : '';
332
 
333
    $_GEN_commun['info_menu'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
334
    $resultat->free();
335
}
336
 
337
// +------------------------------------------------------------------------------------------------------+
338
// Gestion des traductions
339
 
340
// Si le résultat de la négociation de l'internationalisation donne une langue différente
341
//  de celle du site principal, nous récupérons les éventuelles valeurs traduite pour le site.
342
 
343
$id_langue = $GLOBALS['_GEN_commun']['i18n'];
344
 
345
if (isset($id_langue) && ($id_langue!='')) {
346
       $langue_test=$id_langue;
347
} else {
348
       $langue_test=GEN_I18N_ID_DEFAUT;
349
}
350
 
351
if ($langue_test!=GEN_I18N_ID_DEFAUT) {
352
    // Récupération des informations sur la traduction du site
353
    $requete =  'SELECT * '.
354
                'FROM gen_site '.
355
                'WHERE gs_ce_i18n = "'.$langue_test.'" '.
356
                'AND gs_code_num = "'.$_GEN_commun['info_site']->gs_code_num.'"';
357
 
358
//                'WHERE gs_ce_i18n = "'.$_GEN_commun['i18n'].'" '.
359
//                'AND gs_code_alpha = "'.$_GEN_commun['info_site']->gs_code_alpha.'"';
360
 
361
    $resultat = $db->query($requete);
362
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
363
 
364
    // Nous créons l'entrée 'traduction_info_site' dans _GEN_commun que si nous avons bien trouvé une
365
    // traduction pour le site. Il faut donc tester l'existence de cette entrée avant de l'utiliser.
366
    if ($resultat->numRows() > 0) {
367
        $_GEN_commun['traduction_info_site'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
368
    }
369
    $resultat->free();
370
}
371
 
372
// Si le résultat de la négociation de l'internationalisation donne une langue différente
373
//  de celle du menu, nous récupérons les éventuelles valeurs traduite pour le menu.
374
 
375
//print_r($_GEN_commun);
376
 
377
if (isset($_GEN_commun['info_menu']))  { // Evite les warning si pas encore de menu cree pour ce site
378
 
379
    if ($langue_test!=GEN_I18N_ID_DEFAUT) {
380
        // Récupération des informations sur la traduction du menu
381
        $requete =  'SELECT * '.
382
                    'FROM gen_menu '.
383
                    'WHERE gm_ce_i18n = "'.$langue_test.'" '.
384
                    'AND gm_code_num = "'.$_GEN_commun['info_menu']->gm_code_num.'"';
385
    //                'WHERE gm_ce_i18n = "'.$_GEN_commun['i18n'].'" '.
386
    //                'AND gm_code_alpha = "'.$_GEN_commun['info_menu']->gm_code_alpha.'"';
387
 
388
        $resultat = $db->query($requete);
389
        (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
390
 
391
        // Nous créons l'entrée 'traduction_info_menu' dans _GEN_commun que si nous avons bien trouvé une
392
        // traduction pour le menu. Il faut donc tester l'existence de cette entrée avant de l'utiliser.
393
        if ($resultat->numRows() > 0) {
394
            $_GEN_commun['traduction_info_menu'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
395
        }
396
        $resultat->free();
397
    }
398
 
399
}
400
 
401
// +------------------------------------------------------------------------------------------------------+
402
// Gestion de l'application du menu demandé.
403
 
404
// Recherche de la première application liée
405
if (isset($_GEN_commun['info_menu']->gm_id_menu)) {
406
 
407
    $info_appli_menu = GEN_donnerIdPremiereApplicationLiee($_GEN_commun['info_menu']->gm_id_menu);
408
    if (is_array($info_appli_menu)) {
409
        $id_application = $info_appli_menu['gm_ce_application'];
410
        $id_menu_actif = $info_appli_menu['gm_id_menu'];
411
 
412
        // Si le menu n'a pas d'application lié, on recalcule l'objet $_GEN_commun['info_menu']
413
        if ($id_menu_actif != $_GEN_commun['info_menu']->gm_id_menu) {
414
            $requete =  'SELECT gen_menu.* '.
415
                        'FROM gen_menu '.
416
                        'WHERE gm_id_menu = '.$id_menu_actif;
417
 
418
            $resultat = $db->query($requete);
419
            (DB::isError($resultat))
420
                ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete))
421
                : '';
422
            // Nous avons trouvé un menu "défaut" pour le site courant.
423
            $_GEN_commun['info_menu'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
424
            $resultat->free();
425
        }
426
 
427
 
428
        // Recherche des informations sur l'application liée
429
        $requete_applicaton =   'SELECT * '.
430
                                'FROM gen_application '.
431
                                'WHERE gap_id_application = '.$id_application;
432
 
433
        $resultat_applicaton = $db->query($requete_applicaton);
434
        (DB::isError($resultat_applicaton))
435
            ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_applicaton->getMessage(), $requete_applicaton))
436
            : '';
437
 
438
        $_GEN_commun['info_application'] = $resultat_applicaton->fetchRow(DB_FETCHMODE_OBJECT) ;
439
        $resultat_applicaton->free();
440
    } else {
441
        // Gestion des erreurs sur la recherche de l'application liée.
442
        // Finalement il a été décidé de ne pas afficher cette information sous la forme d'erreur.
443
        //trigger_error('application du menu demandée introuvable', E_USER_NOTICE);
444
    }
445
 
446
}
447
 
448
// +------------------------------------------------------------------------------------------------------+
449
// Gestion des arguments de l'application
450
 
451
if (isset($_GEN_commun['info_menu']->gm_application_arguments)) {
452
    $arguments = explode(' ', $_GEN_commun['info_menu']->gm_application_arguments);
453
 
454
    // Initialisaton de la variable globale $GS_ARGUMENTS
455
    $_GEN_commun['info_application']->cache = false;
456
    $_GEN_commun['info_application']->cache_duree = 0;
457
 
458
    for ($i = 0; $i < count($arguments); $i++) {
459
        $attr = explode('=', $arguments[$i]);
460
 
461
        if ($attr[0] == 'cache_duree') {
462
            $_GEN_commun['info_application']->cache_duree = $attr[1];
463
            if ($_GEN_commun['info_application']->cache_duree > 0) {
464
                $_GEN_commun['info_application']->cache = true;
465
            }
466
        } else if ($attr[0] != '') {
467
            $_GEN_commun['info_application']->$attr[0] = (isset($attr[1]) ? $attr[1] : '');
468
        }
469
    }
470
}
471
 
472
// +------------------------------------------------------------------------------------------------------+
473
// Gestion des applettes
474
 
475
$requete =  'SELECT * '.
476
            'FROM gen_application '.
477
            'WHERE gap_bool_applette = 1 ';
478
$resultat = $_GEN_commun['pear_db']->query($requete);
479
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
480
 
481
$_GEN_commun['info_applette'] = array();
482
$i = 0;
483
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
484
    $_GEN_commun['info_applette'][$i] = $ligne;
485
    $i++;
486
}
487
$resultat->free();
488
 
489
// +------------------------------------------------------------------------------------------------------+
490
// Gestion de l'objet URL
491
 
492
$_GEN_commun['url'] = & new Pap_URL(PAP_URL);
493
if (isset($_GEN_commun['info_menu'])) {
494
	$_GEN_commun['url']->setId($_GEN_commun['info_menu']->gm_id_menu);
495
}
496
 
497
if ( (isset($_GEN_commun['url_site'])) && (!empty($_GEN_commun['url_site'])) ) {
498
    $_GEN_commun['url']->addQueryString(GEN_URL_CLE_SITE, $_GEN_commun['url_site']);
499
}
500
 
501
if ( (isset($_GEN_commun['url_menu'])) && (!empty($_GEN_commun['url_menu'])) ) {
502
    $_GEN_commun['url']->addQueryString(GEN_URL_CLE_MENU, $_GEN_commun['url_menu']);
503
}
504
 
505
if ( (isset($_GET[GEN_URL_CLE_DATE])) && (!empty($_GET[GEN_URL_CLE_DATE])) ) {
506
    $_GEN_commun['url_date'] = $_GET[GEN_URL_CLE_DATE];
507
    $_GEN_commun['url']->addQueryString(GEN_URL_CLE_DATE, $_GEN_commun['url_date']);
508
}
509
 
510
if ( (isset($_GET[GEN_URL_CLE_FORMAT])) && (!empty($_GET[GEN_URL_CLE_FORMAT])) ) {
511
    $_GEN_commun['url_format'] = $_GET[GEN_URL_CLE_FORMAT];
512
    $_GEN_commun['url']->addQueryString(GEN_URL_CLE_FORMAT, $_GEN_commun['url_format']);
513
}
514
 
515
/* +--Fin du code ---------------------------------------------------------------------------------------+
516
* $Log: not supported by cvs2svn $
517
* Revision 1.31  2007-04-19 16:54:52  ddelon
518
* backport mulitlinguisme
519
*
520
* Revision 1.30  2007/04/19 15:34:35  neiluj
521
* préparration release (livraison) "Narmer" - v0.25
522
*
523
* Revision 1.29  2007/04/13 09:41:09  neiluj
524
* réparration cvs
525
*
526
* Revision 1.28  2006/12/01 15:41:21  ddelon
527
* erreur affichage
528
*
529
* Revision 1.27  2006/11/07 18:43:54  jp_milcent
530
* Modification des expressions régulières des permaliens.
531
*
532
* Revision 1.26  2006/10/18 10:18:05  jp_milcent
533
* Gestion des erreurs HTTP par Papyrus.
534
*
535
* Revision 1.25  2006/10/11 18:04:11  jp_milcent
536
* Gestion avancée de la réecriture d'URL.
537
*
538
* Revision 1.24  2006/03/02 10:49:49  ddelon
539
* Fusion branche multilinguisme dans branche principale
540
*
541
* Revision 1.23.2.2  2005/12/20 14:40:24  ddelon
542
* Fusion Head vers Livraison
543
*
544
* Revision 1.23.2.1  2005/12/01 23:31:57  ddelon
545
* Merge Head vers multilinguisme
546
*
547
* Revision 1.23  2005/09/22 14:02:49  ddelon
548
* nettoyage annuaire et php5
549
*
550
* Revision 1.22  2005/09/20 17:01:22  ddelon
551
* php5 et bugs divers
552
*
553
* Revision 1.21  2005/08/31 17:34:52  ddelon
554
* Integrateur Wikini et administration des Wikini
555
*
556
* Revision 1.20  2005/06/24 10:48:35  jpm
557
* Modification des chemins des fichiers pour fonctionnement avec API Pear locale.
558
*
559
* Revision 1.19  2005/04/14 13:52:37  jpm
560
* Utilisation de la classe Pap_URL.
561
*
562
* Revision 1.18  2005/02/28 11:20:42  jpm
563
* Modification des auteurs.
564
*
565
* Revision 1.17  2005/02/23 15:35:04  jpm
566
* L'erreur "pas d'application" a été supprimé une message dans le corps du texte fourni déjà cette information.
567
*
568
* Revision 1.16  2005/02/17 17:51:40  florian
569
* Correction bug monde sans menu ni appli
570
*
571
* Revision 1.15  2004/12/06 12:12:28  jpm
572
* Début de gestion des auth multiples.
573
*
574
* Revision 1.14  2004/11/15 17:14:09  jpm
575
* Gestion des url avec seulement le code d'un menu.
576
*
577
* Revision 1.13  2004/11/03 17:14:38  jpm
578
* Gestion des sites externes.
579
*
580
* Revision 1.12  2004/10/26 18:42:21  jpm
581
* Gestion des sites externes.
582
*
583
* Revision 1.11  2004/10/25 16:28:47  jpm
584
* Ajout de nouvelles balises Papyrus, ajout vérification mise à jour de Papyrus, meilleure gestion des sessions...
585
*
586
* Revision 1.10  2004/10/22 17:23:59  jpm
587
* Début amélioration de la gestion des erreurs et de l'installation.
588
*
589
* Revision 1.9  2004/10/15 18:29:19  jpm
590
* Modif pour gérer l'appli installateur de Papyrus.
591
*
592
* Revision 1.8  2004/09/23 14:30:53  jpm
593
* Correction bogue sur les menus.
594
*
595
* Revision 1.7  2004/09/23 10:46:46  jpm
596
* Amélioration de la gestion du menu actif quand un menu n'a pas d'application liée.
597
*
598
* Revision 1.6  2004/09/10 16:38:34  jpm
599
* Ajout de l'initialisation d'une variable stockant les infos de débogage.
600
*
601
* Revision 1.5  2004/06/30 07:35:16  jpm
602
* Correction d'un bogue du à une mauvaise gestion de la résolution des conflits entre fichier CVS.
603
*
604
* Revision 1.4  2004/06/30 07:25:37  jpm
605
* Ajout d'un commentaire.
606
*
607
* Revision 1.3  2004/06/18 15:52:45  alex
608
* Actualisation de la variable $_GEN_commun['info_menu'] lorsque un menu n'a pas d'application lié
609
*
610
* Revision 1.2  2004/06/17 07:03:01  jpm
611
* Correction d'un bogue concernant l'internationalisation par défaut quand la langue du navigateur ne correspond pas à celle du site.
612
*
613
* Revision 1.1  2004/06/16 08:13:20  jpm
614
* Changement de nom de Papyrus en Papyrus.
615
* Changement de l'arborescence.
616
*
617
* Revision 1.24  2004/05/05 14:33:37  jpm
618
* Gestion de l'indication de langue dans l'url.
619
* Utile que si on veut forcer la langue.
620
*
621
* Revision 1.23  2004/05/05 10:42:35  jpm
622
* Amélioration de la gestion de l'internationalisation.
623
*
624
* Revision 1.22  2004/05/04 16:17:05  jpm
625
* Légère amélioration du code (libération
626
 
627
 de ressource).
628
*
629
* Revision 1.21  2004/05/03 11:21:58  jpm
630
* Fin de la gestion des applettes et suppression de l'info_menu_hierarchie de _GEN_commun.
631
*
632
* Revision 1.20  2004/04/30 16:17:27  jpm
633
* Ajout de la récupération d'une info sur la hiérarchie.
634
* Surement à supprimer car inutile.
635
*
636
* Revision 1.19  2004/04/28 12:04:31  jpm
637
* Changement du modèle de la base de données.
638
*
639
* Revision 1.18  2004/04/22 08:28:12  jpm
640
* Transformation de $GS_GLOBAL en $_GEN_commun.
641
*
642
* Revision 1.17  2004/04/09 16:43:32  jpm
643
* Suppression d'un blanc.
644
*
645
* Revision 1.16  2004/04/09 16:20:11  jpm
646
* Récupération de la création de l'objet URL.
647
* Gestion des tables i18n.
648
*
649
* Revision 1.15  2004/04/05 16:37:43  jpm
650
* Utilisation de la classe Pear HTTP pour la négociation du langage à utiliser pour le site.
651
*
652
* Revision 1.14  2004/04/02 16:29:30  jpm
653
* Déplacement dans le fichier gen_initialisation_pear.inc.php de la création des objets Pear Net_URL et Auth.
654
*
655
* Revision 1.13  2004/04/01 11:27:13  jpm
656
* Ajout et modification de commentaires pour PhpDocumentor.
657
*
658
* Revision 1.12  2004/03/31 16:50:04  jpm
659
* Prise en compte du nouveau modèle de Papyrus révision 1.9.
660
*
661
* Revision 1.11  2004/03/27 11:04:14  jpm
662
* Déplacement des fonctions de gestion d'erreur dans la bibliotheque de l'application Installateur.
663
* Modification des commentaires vis à vis du nouveau modèle.
664
* Changement et simplification des noms des variables globales.
665
* Suppression de l'attribution d'une configuration par défaut.
666
* Remplacement de variable par des constante provenant du fichier de configuration.
667
* Traduction en français de certaines variables et partie de code.
668
*
669
* Revision 1.10  2004/03/24 07:20:03  jpm
670
* Mise en forme requête sql.
671
*
672
* Revision 1.9  2004/03/23 17:06:56  jpm
673
* Ajout de commentaire dans l'entête.
674
* Mise en conformité avec la convention de codage.
675
*
676
* Revision 1.8  2004/03/23 16:31:54  jpm
677
* Ajout du code provenant de gen_noyau.inc.php.
678
* Ajout, formatage et traduction des commentaires.
679
*
680
* Revision 1.7  2004/03/22 18:35:32  jpm
681
* Traduction et ajout de commentaires.
682
* Amélioration de la conformité avec la convention de codage.
683
* Changement requête sql pour le nouveau modèle de Papyrus.
684
*
685
* Revision 1.6  2004/03/22 11:14:30  jpm
686
* Ajout de commentaires et mise en forme.
687
* Correction des requêtes sql pour mise en conformité avec le nouveau modèle de Papyrus et la convention de codage.
688
*
689
* Revision 1.5  2003/12/16 16:57:59  alex
690
* mise à jour pour compatibilité avec genesia
691
*
692
* Revision 1.4  2003/11/24 16:05:02  jpm
693
* Ajout de commentaires et début de mise en conformité
694
* avec la convention de codage.
695
*
696
*
697
* +--Fin du code ----------------------------------------------------------------------------------------+
698
*/
699
?>