Subversion Repositories Applications.papyrus

Rev

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

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