Rev 120 | Rev 262 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php
//vim: set expandtab tabstop=4 shiftwidth=4:
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2001 COUDOUNEAU Laurent (lc@gsite.org) |
// | Copyright (C) 2003 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | |
// | This library is free software; you can redistribute it and/or |
// | modify it under the terms of the GNU Lesser General Public |
// | License as published by the Free Software Foundation; either |
// | version 2.1 of the License, or (at your option) any later version. |
// | |
// | This library is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
// | Lesser General Public License for more details. |
// | |
// | You should have received a copy of the GNU Lesser General Public |
// | License along with this library; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// | |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: pap_initialise_info.inc.php,v 1.14 2004-11-15 17:14:09 jpm Exp $
/**
*Initialisation de Papyrus : vérification et récupération de paramètres généraux.
*
* La page contient le code initialisant l'éxecution du rendu d'une page par Papyrus.
* Nous y trouvons la recherche des informations disponibles sur :
* - le site présent sur le serveur demandé,
* - l'identification,
* - la langue,
* - le menu,
* - la page
* - l'application
*
*@package Papyrus
//Auteur original :
*@author Laurent COUDOUNEAU <laurent.coudouneau@ema.fr>
//Autres auteurs :
*@author Alexandre GRANIER <alex@tela-botanica.org>
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.14 $ $Date: 2004-11-15 17:14:09 $
// +------------------------------------------------------------------------------------------------------+
*/
// +------------------------------------------------------------------------------------------------------+
// | ENTÊTE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
/** <br> Inclusion de la bibliothèque de fonctions servant à l'initialisation des variables globales de Papyrus. */
require_once GEN_CHEMIN_BIBLIO.'pap_initialisation.fonct.php';
/** <br> Inclusion de l'objet PEAR servant à négocier le language avec le navigateur client. */
require_once 'HTTP.php';
/** <br> Inclusion de la classe PEAR gérant les URL.
* Utilisé pour l'url demandée par le client.
*/
require_once 'Net/URL.php';
// +------------------------------------------------------------------------------------------------------+
// | CORPS du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
// +------------------------------------------------------------------------------------------------------+
// Gestion des sites : disponiblent sur le serveur courant.
// Liste des catégories de site à prendre en compte :
$site_liste_id = '102, 103';// 102 = site "principal" et 103 = site "externe"
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])) ) {
$requete = 'SELECT gen_site.*, GSR02.* '.
'FROM gen_site, gen_site_relation AS GSR01, gen_site_relation AS GSR02 '.
'WHERE GSR01.gsr_id_site_01 = GSR01.gsr_id_site_02 '.
'AND GSR01.gsr_id_valeur = 101 '.// 101 = site défaut
'AND GSR01.gsr_id_site_01 = gs_id_site '.
'AND GSR02.gsr_id_site_01 = GSR02.gsr_id_site_02 '.
'AND GSR02.gsr_id_valeur IN ('.$site_liste_id.') '.
'AND GSR02.gsr_id_site_01 = gs_id_site';
$resultat = $db->query($requete);
if (DB::isError($resultat)) {
die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
}
// Aucun site trouvé
if ($resultat->numRows() == 0) {
// Appel à l'application Installateur si nécessaire
/** <br> Inclusion du programme Installateur de Papyrus.
* L'abscence de site oblige à relancer l'installation et le script sql qui regénèrera la base de données.*/
include_once GEN_CHEMIN_APPLICATION.'installateur/installateur.php';
$_GEN_commun['sortie'] = afficherContenuCorps();
include_once GEN_CHEMIN_PAP.'pap_envoi.inc.php';
// Fin du programme Papyrus.
exit(0);
}
// Nous avons trouvé un site.
$_GEN_commun['info_site'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$resultat->free();
if (GEN_URL_ID_TYPE_SITE == 'int') {
$_GEN_commun['url_site'] = $_GEN_commun['info_site']->gs_code_num;
} else {
$_GEN_commun['url_site'] = $_GEN_commun['info_site']->gs_code_alpha;
}
} 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])) ) {
// Le code du menu est présent dans l'url mais pas celui du site
// Nous récupérons les infos du menu et du sites dans la variable globale de Papyrus.
$_GEN_commun['url_menu'] = $_GET[GEN_URL_CLE_MENU];
// Récupération des informations sur le menu demandé
$requete = 'SELECT * '.
'FROM gen_menu '.
'WHERE ';
$requete .= (GEN_URL_ID_TYPE_MENU == 'int')
? 'gm_code_num = '.$_GEN_commun['url_menu']
: 'gm_code_alpha = "'.$_GEN_commun['url_menu'].'"';
$resultat = $db->query($requete);
(DB::isError($resultat))
? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete))
: '';
$_GEN_commun['info_menu'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$resultat->free();
if ($_GEN_commun['info_menu']->gm_ce_site != 0) {
// Récupération des infos du site
$requete = 'SELECT * '.
'FROM gen_site, gen_site_relation '.
'WHERE gsr_id_site_01 = gsr_id_site_02 '.
'AND gsr_id_valeur IN ('.$site_liste_id.') '.
'AND gsr_id_site_01 = gs_id_site '.
'AND gs_id_site = '. $_GEN_commun['info_menu']->gm_ce_site;
$resultat = $db->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
$_GEN_commun['info_site'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$_GEN_commun['url_site'] = (GEN_URL_ID_TYPE_SITE == 'int')
? $_GEN_commun['info_site']->gs_code_num
: $_GEN_commun['info_site']->gs_code_alpha;
$resultat->free();
} else {
// Récupération des infos du site
$requete = 'SELECT * '.
'FROM gen_site, gen_site_relation '.
'WHERE gsr_id_site_01 = gsr_id_site_02 '.
'AND gsr_id_valeur = 101 '.
'AND gsr_id_site_01 = gs_id_site ';
$resultat = $db->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
$_GEN_commun['info_site'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$_GEN_commun['url_site'] = (GEN_URL_ID_TYPE_SITE == 'int')
? $_GEN_commun['info_site']->gs_code_num
: $_GEN_commun['info_site']->gs_code_alpha;
$resultat->free();
}
} else {
// Récupération de la valeur identifiant le site depuis l'url
$_GEN_commun['url_site'] = $_GET[GEN_URL_CLE_SITE];
// Récupération des informations sur le site
$requete = 'SELECT * '.
'FROM gen_site, gen_site_relation '.
'WHERE gsr_id_site_01 = gsr_id_site_02 '.
'AND gsr_id_valeur IN ('.$site_liste_id.') '.
'AND gsr_id_site_01 = gs_id_site '.
'AND ';
$requete .= (GEN_URL_ID_TYPE_SITE == 'int')
? 'gs_code_num = '.$_GEN_commun['url_site']
: 'gs_code_alpha = "'.$_GEN_commun['url_site'].'"';
$resultat = $db->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
$_GEN_commun['info_site'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$resultat->free();
}
//Gestion de l'erreur aucun site trouvable.
if (! isset($_GEN_commun['info_site'])) {
// Appel à l'application Installateur si nécessaire
/** <br> Inclusion du programme Installateur de Papyrus.
* L'abscence de site oblige à relancer l'installation et le script sql qui regénèrera la base de données.*/
include_once GEN_CHEMIN_APPLICATION.'installateur/installateur.php';
$_GEN_commun['sortie'] .= afficherContenuCorps();
include_once GEN_CHEMIN_PAP.'pap_envoi.inc.php';
// Fin du programme Papyrus.
exit(0);
} else if ($_GEN_commun['info_site']->gsr_id_valeur == 103) {
// Gestion de la redirection pour les sites "externes"
header('Location:'.$_GEN_commun['info_site']->gs_url);
exit(0);
}
// +------------------------------------------------------------------------------------------------------+
// Récupération des informations d'identification pour le site
if ($_GEN_commun['info_site']->gs_ce_auth != 0) {
// Récupération des informations sur le site
$requete_auth = 'SELECT * '.
'FROM gen_site_auth '.
'WHERE gsa_id_auth = '.$_GEN_commun['info_site']->gs_ce_auth;
$resultat_auth = $db->query($requete_auth);
(DB::isError($resultat_auth))
? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_auth->getMessage(), $requete_auth))
: '';
$_GEN_commun['info_auth'] = $resultat_auth->fetchRow(DB_FETCHMODE_OBJECT);
$resultat_auth->free();
if ($_GEN_commun['info_auth']->gsa_ce_auth_bdd != 0) {
//Identification via une base de donnée :
$requete_auth_bdd = 'SELECT * '.
'FROM gen_site_auth_bdd '.
'WHERE gsab_id_auth_bdd = '.$_GEN_commun['info_auth']->gsa_ce_auth_bdd;
$resultat_auth_bdd = $db->query($requete_auth_bdd);
(DB::isError($resultat_auth_bdd))
? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_auth_bdd->getMessage(), $requete_auth_bdd))
: '';
$_GEN_commun['info_auth_bdd'] = $resultat_auth_bdd->fetchRow(DB_FETCHMODE_OBJECT);
$resultat_auth_bdd->free();
} else if ($_GEN_commun['info_auth']->gsa_ce_auth_ldap != 0) {
//Identification via LDAP :
$requete_auth_ldap = 'SELECT * '.
'FROM gen_site_auth_ldap '.
'WHERE gsal_id_auth_ldap = '.$_GEN_commun['info_auth']->gsa_ce_auth_ldap;
$resultat_auth_ldap = $db->query($requete_auth_ldap);
(DB::isError($resultat_auth_ldap))
? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_auth_ldap->getMessage(), $requete_auth_ldap))
: '';
$_GEN_commun['info_auth_ldap'] = $resultat_auth_ldap->fetchRow(DB_FETCHMODE_OBJECT);
$resultat_auth_ldap->free();
} else {
die('ERREUR Génésia : impossible de trouver les information authentification. <br />'.
'Identifiant auth : '.$_GEN_commun['info_site']->gs_ce_auth.'<br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier : '. __FILE__ );
}
}
// +------------------------------------------------------------------------------------------------------+
// Gestion de l'internationalisation du site
// Nous recherchons la valeur de l'internationalisation du site passée dans l'url ou présente
// dans le navigateur du client. Si nous trouvons pas la langue dans l'url, récupération depuis
// le navigateur et comparaison aux langues disponibles pour le site demandé.
// Initialisation de variable :
$i18n = '';
// Nous recherchons les internationalisations disponibles pour le site demandé.
// Si un site possède une traduction, il peut alors posséder des menus traduits.
$requete = 'SELECT gs_ce_i18n '.
'FROM gen_site, gen_site_relation '.
'WHERE gsr_id_site_01 = '.$_GEN_commun['info_site']->gs_id_site.' '.
'AND gsr_id_site_02 = gs_id_site '.
'AND gsr_id_valeur = 1 '.
'ORDER BY gsr_ordre';
$resultat = $db->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
// Récupération de la première valeur de langue d'un site.
$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
if (! $ligne) {
// Pas de traduction pour le site: nous regardons si le site possede une valeur d'i18n.
if (! empty($_GEN_commun['info_site']->gs_ce_i18n) ) {
$i18n_possible = array($_GEN_commun['info_site']->gs_ce_i18n => true);
} else {
// Sinon utilisation de la valeur par défaut définit dans le fichier de config.
$i18n_possible = array(GEN_I18N_ID_DEFAUT => true);
}
// Utilisation de la fonction statique de Pear HTTP pour négocier cette i18n.
$i18n = HTTP::negotiateLanguage($i18n_possible, GEN_I18N_ID_DEFAUT);
} else {
// La première traduction du site
// peut être utilisé comme valeur par défaut.
$i18n_site_url = $ligne->gs_ce_i18n;
// Stockage des valeurs de l'i18n dans un tableau
$aso_i18n_site = array();
$aso_i18n_site[$_GEN_commun['info_site']->gs_ce_i18n] = true;
$aso_i18n_site[$ligne->gs_ce_i18n] = true;
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
$aso_i18n_site[$ligne->gs_ce_i18n] = true;
}
$resultat->free();
// Utilisation de la fonction statique de Pear HTTP pour négocier cette i18n.
$i18n = HTTP::negotiateLanguage($aso_i18n_site, $i18n_site_url);
}
// Nous stockons la valeur trouvé pour l'url demandée dans la variable globale de Génésia.
$_GEN_commun['i18n'] = $i18n;
// Recherche de la présence de la valeur d'i18n dans l'url
if ( (! isset($_GET[GEN_URL_CLE_I18N])) || (empty($_GET[GEN_URL_CLE_I18N])) ) {
$_GEN_commun['url_i18n'] = '';
} else {
// L'i18n est trouvé dans l'url, nous écrasons donc la valeur i18n.
$_GEN_commun['url_i18n'] = $_GET[GEN_URL_CLE_I18N];
$_GEN_commun['i18n'] = $_GEN_commun['url_i18n'];
}
// Nous récupérons des informations sur l'internationalisation
$requete = 'SELECT * '.
'FROM gen_i18n '.
'WHERE gi_id_i18n = "'.$_GEN_commun['i18n'].'"';
$resultat = $db->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
$_GEN_commun['info_i18n'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$resultat->free();
//Gestion de l'erreur aucune internationalisation trouvable.
if (empty($_GEN_commun['i18n'])) {
die('ERREUR Génésia : valeur internationalisation introuvable. <br />'.
'Ligne n° : '. __LINE__ .'<br />'.
'Fichier : '. __FILE__ );
}
// Récupération des informations sur la langue
$requete = 'SELECT * '.
'FROM gen_i18n_langue '.
'WHERE gil_id_langue = "'.$_GEN_commun['info_i18n']->gi_ce_langue.'"';
$resultat = $db->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
$_GEN_commun['info_i18n_langue'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$resultat->free();
// Récupération des informations sur le pays
$requete = 'SELECT * '.
'FROM gen_i18n_pays '.
'WHERE gip_id_pays = "'.$_GEN_commun['info_i18n']->gi_ce_pays.'"';
$resultat = $db->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
$_GEN_commun['info_i18n_pays'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$resultat->free();
// +------------------------------------------------------------------------------------------------------+
// Gestion des menus
// Nous vérifions le cas où le code du menu est introuvable dans l'url.
if ( (! isset($_GET[GEN_URL_CLE_MENU])) || (empty($_GET[GEN_URL_CLE_MENU])) ) {
// Recherche du premier menu du site courant:
$requete = 'SELECT gen_menu.* '.
'FROM gen_menu, gen_menu_relation '.
'WHERE gm_ce_site = '.$_GEN_commun['info_site']->gs_id_site.' '.
'AND gmr_id_menu_01 = gm_id_menu '.
'AND gmr_id_menu_01 = gmr_id_menu_02 '.
'AND gmr_id_valeur = 101 ';// 101 = menu par "defaut"
$resultat = $db->query($requete);
(DB::isError($resultat))
? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete))
: '';
// Nous avons trouvé un menu "défaut" pour le site courant.
$_GEN_commun['info_menu'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$resultat->free();
// Stockage du code du menu demandée dans la variable globale de Papyrus.
if (GEN_URL_ID_TYPE_MENU == 'int') {
$_GEN_commun['url_menu'] = $_GEN_commun['info_menu']->gm_code_num;
} else {
$_GEN_commun['url_menu'] = $_GEN_commun['info_menu']->gm_code_alpha;
}
} else if (! isset($_GET['url_menu']) && empty($_GEN_commun['url_menu'])) {
// Le code du menu est présent dans l'url et il n'a pas encore été récupéré
// Nous le récupérons dans la variable globale de Papyrus.
$_GEN_commun['url_menu'] = $_GET[GEN_URL_CLE_MENU];
// Récupération des informations sur le menu demandé
$requete = 'SELECT * '.
'FROM gen_menu '.
'WHERE ';
$requete .= (GEN_URL_ID_TYPE_MENU == 'int')
? 'gm_code_num = '.$_GEN_commun['url_menu']
: 'gm_code_alpha = "'.$_GEN_commun['url_menu'].'"';
$resultat = $db->query($requete);
(DB::isError($resultat))
? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete))
: '';
$_GEN_commun['info_menu'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$resultat->free();
}
if (empty($_GEN_commun['url_menu'])) {
trigger_error ('identifiant de menu introuvable', E_USER_NOTICE);
}
// +------------------------------------------------------------------------------------------------------+
// Gestion des traductions
// Si le résultat de la négociation de l'internationalisation donne une langue différente
// de celle du site principal, nous récupérons les éventuelles valeurs traduite pour le site.
if ($_GEN_commun['i18n'] != $_GEN_commun['info_site']->gs_ce_i18n) {
// Récupération des informations sur la traduction du site
$requete = 'SELECT * '.
'FROM gen_site '.
'WHERE gs_ce_i18n = "'.$_GEN_commun['i18n'].'" '.
'AND gs_code_alpha = "'.$_GEN_commun['info_site']->gs_code_alpha.'"';
$resultat = $db->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
// Nous crééons l'entrée 'traduction_info_site' dans _GEN_commun que si nous avons bien trouvé une
// traduction pour le site. Il faut donc tester l'existence de cette entrée avant de l'utiliser.
if ($resultat->numRows() > 0) {
$_GEN_commun['traduction_info_site'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
}
$resultat->free();
}
// Si le résultat de la négociation de l'internationalisation donne une langue différente
// de celle du menu, nous récupérons les éventuelles valeurs traduite pour le menu.
if ($_GEN_commun['i18n'] != $_GEN_commun['info_menu']->gm_ce_i18n) {
// Récupération des informations sur la traduction du menu
$requete = 'SELECT * '.
'FROM gen_menu '.
'WHERE gm_ce_i18n = "'.$_GEN_commun['i18n'].'" '.
'AND gm_code_alpha = "'.$_GEN_commun['info_menu']->gm_code_alpha.'"';
$resultat = $db->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
// Nous crééons l'entrée 'traduction_info_menu' dans _GEN_commun que si nous avons bien trouvé une
// traduction pour le menu. Il faut donc tester l'existence de cette entrée avant de l'utiliser.
if ($resultat->numRows() > 0) {
$_GEN_commun['traduction_info_menu'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
}
$resultat->free();
}
// +------------------------------------------------------------------------------------------------------+
// Gestion de l'application du menu demandé.
// Recherche de la première application liée
if (isset($_GEN_commun['info_menu']->gm_id_menu)) {
$info_appli_menu = GEN_donnerIdPremiereApplicationLiee($_GEN_commun['info_menu']->gm_id_menu);
if (is_array($info_appli_menu)) {
$id_application = $info_appli_menu['gm_ce_application'];
$id_menu_actif = $info_appli_menu['gm_id_menu'];
// Si le menu n'a pas d'application lié, on recalcule l'objet $_GEN_commun['info_menu']
if ($id_menu_actif != $_GEN_commun['info_menu']->gm_id_menu) {
$requete = 'SELECT gen_menu.* '.
'FROM gen_menu '.
'WHERE gm_id_menu = '.$id_menu_actif;
$resultat = $db->query($requete);
(DB::isError($resultat))
? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete))
: '';
// Nous avons trouvé un menu "défaut" pour le site courant.
$_GEN_commun['info_menu'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$resultat->free();
}
// Recherche des informations sur l'application liée
$requete_applicaton = 'SELECT * '.
'FROM gen_application '.
'WHERE gap_id_application = '.$id_application;
$resultat_applicaton = $db->query($requete_applicaton);
(DB::isError($resultat_applicaton))
? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_applicaton->getMessage(), $requete_applicaton))
: '';
$_GEN_commun['info_application'] = $resultat_applicaton->fetchRow(DB_FETCHMODE_OBJECT) ;
$resultat_applicaton->free();
} else {
// Gestion des erreurs sur la recherche de l'application liée.
trigger_error('application du menu demandée introuvable', E_USER_NOTICE);
}
} else if ( empty($_GEN_commun['info_application']) ) {
// Gestion des erreurs sur la recherche de l'application liée.
trigger_error('application du menu demandée introuvable', E_USER_NOTICE);
}
// +------------------------------------------------------------------------------------------------------+
// Gestion des arguments de l'application
if (isset($_GEN_commun['info_menu']->gm_application_arguments)) {
$arguments = explode(' ', $_GEN_commun['info_menu']->gm_application_arguments);
// Initialisaton de la variable globale $GS_ARGUMENTS
$_GEN_commun['info_application']->cache = false;
$_GEN_commun['info_application']->cache_duree = 0;
for ($i = 0; $i < count($arguments); $i++) {
$attr = explode('=', $arguments[$i]);
if ($attr[0] == 'cache_duree') {
$_GEN_commun['info_application']->cache_duree = $attr[1];
if ($_GEN_commun['info_application']->cache_duree > 0) {
$_GEN_commun['info_application']->cache = true;
}
} else if ($attr[0] != '') {
$_GEN_commun['info_application']->$attr[0] = (isset($attr[1]) ? $attr[1] : '');
}
}
}
// +------------------------------------------------------------------------------------------------------+
// Gestion des applettes
$requete = 'SELECT * '.
'FROM gen_application '.
'WHERE gap_bool_applette = 1 ';
$resultat = $_GEN_commun['pear_db']->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
$_GEN_commun['info_applette'] = array();
$i = 0;
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
$_GEN_commun['info_applette'][$i] = $ligne;
$i++;
}
$resultat->free();
// +------------------------------------------------------------------------------------------------------+
// Gestion de l'objet URL
$_GEN_commun['url'] = & new Net_URL('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
if ( (isset($_GEN_commun['url_site'])) && (!empty($_GEN_commun['url_site'])) ) {
$_GEN_commun['url']->addQueryString(GEN_URL_CLE_SITE, $_GEN_commun['url_site']);
}
if ( (isset($_GEN_commun['url_menu'])) && (!empty($_GEN_commun['url_menu'])) ) {
$_GEN_commun['url']->addQueryString(GEN_URL_CLE_MENU, $_GEN_commun['url_menu']);
}
if ( (isset($_GEN_commun['url_i18n'])) && (!empty($_GEN_commun['url_i18n'])) ) {
$_GEN_commun['url']->addQueryString(GEN_URL_CLE_I18N, $_GEN_commun['url_i18n']);
}
if ( (isset($_GET[GEN_URL_CLE_DATE])) && (!empty($_GET[GEN_URL_CLE_DATE])) ) {
$_GEN_commun['url_date'] = $_GET[GEN_URL_CLE_DATE];
$_GEN_commun['url']->addQueryString(GEN_URL_CLE_DATE, $_GEN_commun['url_date']);
}
if ( (isset($_GET[GEN_URL_CLE_FORMAT])) && (!empty($_GET[GEN_URL_CLE_FORMAT])) ) {
$_GEN_commun['url_format'] = $_GET[GEN_URL_CLE_FORMAT];
$_GEN_commun['url']->addQueryString(GEN_URL_CLE_DATE, $_GEN_commun['url_format']);
}
/* +--Fin du code ---------------------------------------------------------------------------------------+
* $Log: not supported by cvs2svn $
* Revision 1.13 2004/11/03 17:14:38 jpm
* Gestion des sites externes.
*
* Revision 1.12 2004/10/26 18:42:21 jpm
* Gestion des sites externes.
*
* Revision 1.11 2004/10/25 16:28:47 jpm
* Ajout de nouvelles balises Papyrus, ajout vérification mise à jour de Papyrus, meilleure gestion des sessions...
*
* Revision 1.10 2004/10/22 17:23:59 jpm
* Début amélioration de la gestion des erreurs et de l'installation.
*
* Revision 1.9 2004/10/15 18:29:19 jpm
* Modif pour gérer l'appli installateur de Papyrus.
*
* Revision 1.8 2004/09/23 14:30:53 jpm
* Correction bogue sur les menus.
*
* Revision 1.7 2004/09/23 10:46:46 jpm
* Amélioration de la gestion du menu actif quand un menu n'a pas d'application liée.
*
* Revision 1.6 2004/09/10 16:38:34 jpm
* Ajout de l'initialisation d'une variable stockant les infos de débogage.
*
* Revision 1.5 2004/06/30 07:35:16 jpm
* Correction d'un bogue du à une mauvaise gestion de la résolution des conflits entre fichier CVS.
*
* Revision 1.4 2004/06/30 07:25:37 jpm
* Ajout d'un commentaire.
*
* Revision 1.3 2004/06/18 15:52:45 alex
* Actualisation de la variable $_GEN_commun['info_menu'] lorsque un menu n'a pas d'application lié
*
* Revision 1.2 2004/06/17 07:03:01 jpm
* Correction d'un bogue concernant l'internationalisation par défaut quand la langue du navigateur ne correspond pas à celle du site.
*
* Revision 1.1 2004/06/16 08:13:20 jpm
* Changement de nom de Génésia en Papyrus.
* Changement de l'arborescence.
*
* Revision 1.24 2004/05/05 14:33:37 jpm
* Gestion de l'indication de langue dans l'url.
* Utile que si on veut forcer la langue.
*
* Revision 1.23 2004/05/05 10:42:35 jpm
* Amélioration de la gestion de l'internationalisation.
*
* Revision 1.22 2004/05/04 16:17:05 jpm
* Légère amélioration du code (libération de ressource).
de ressource).
*
* Revision 1.21 2004/05/03 11:21:58 jpm
* Fin de la gestion des applettes et suppression de l'info_menu_hierarchie de _GEN_commun.
* Ajout de la récupération d'une info sur la hiérarchie.
* Surement à supprimer car inutile.
* Ajout de la récupération d'une info sur la hiérarchie.
* Surement à supprimer car inutile.
* Changement du modèle de la base de données.
* Revision 1.19 2004/04/28 12:04:31 jpm
* Changement du modèle de la base de données.
*
* Revision 1.18 2004/04/22 08:28:12 jpm
* Transformation de $GS_GLOBAL en $_GEN_commun.
*
* Revision 1.17 2004/04/09 16:43:32 jpm
* Suppression d'un blanc.
* Récupération de la création de l'objet URL.
* Revision 1.16 2004/04/09 16:20:11 jpm
* Récupération de la création de l'objet URL.
* Gestion des tables i18n.
* Utilisation de la classe Pear HTTP pour la négociation du langage à utiliser pour le site.
* Revision 1.15 2004/04/05 16:37:43 jpm
* Utilisation de la classe Pear HTTP pour la négociation du langage à utiliser pour le site.
* Déplacement dans le fichier gen_initialisation_pear.inc.php de la création des objets Pear Net_URL et Auth.
* Revision 1.14 2004/04/02 16:29:30 jpm
* Déplacement dans le fichier gen_initialisation_pear.inc.php de la création des objets Pear Net_URL et Auth.
*
* Revision 1.13 2004/04/01 11:27:13 jpm
* Ajout et modification de commentaires pour PhpDocumentor.
* Prise en compte du nouveau modèle de Génésia révision 1.9.
* Revision 1.12 2004/03/31 16:50:04 jpm
* Prise en compte du nouveau modèle de Papyrus révision 1.9.
* Déplacement des fonctions de gestion d'erreur dans la bibliotheque de l'application Installateur.
* Modification des commentaires vis à vis du nouveau modèle.
* Déplacement des fonctions de gestion d'erreur dans la bibliotheque de l'application Installateur.
* Suppression de l'attribution d'une configuration par défaut.
* Changement et simplification des noms des variables globales.
* Traduction en français de certaines variables et partie de code.
* Remplacement de variable par des constante provenant du fichier de configuration.
* Traduction en français de certaines variables et partie de code.
* Mise en forme requête sql.
* Revision 1.10 2004/03/24 07:20:03 jpm
* Mise en forme requête sql.
* Ajout de commentaire dans l'entête.
* Mise en conformité avec la convention de codage.
* Ajout de commentaire dans l'entête.
* Mise en conformité avec la convention de codage.
*
* Revision 1.8 2004/03/23 16:31:54 jpm
* Ajout du code provenant de gen_noyau.inc.php.
* Ajout, formatage et traduction des commentaires.
*
* Amélioration de la conformité avec la convention de codage.
* Changement requête sql pour le nouveau modèle de Génésia.
* Amélioration de la conformité avec la convention de codage.
* Changement requête sql pour le nouveau modèle de Papyrus.
*
* Correction des requêtes sql pour mise en conformité avec le nouveau modèle de Génésia et la convention de codage.
* Ajout de commentaires et mise en forme.
* Correction des requêtes sql pour mise en conformité avec le nouveau modèle de Papyrus et la convention de codage.
*
* Revision 1.5 2003/12/16 16:57:59 alex
* mise à jour pour compatibilité avec genesia
* Ajout de commentaires et début de mise en conformité
* Revision 1.4 2003/11/24 16:05:02 jpm
* Ajout de commentaires et début de mise en conformité
* avec la convention de codage.
*
*
* +--Fin du code ----------------------------------------------------------------------------------------+
*/
?>