Subversion Repositories Applications.papyrus

Rev

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