Subversion Repositories Applications.papyrus

Compare Revisions

Ignore whitespace Rev 753 → Rev 754

/trunk/papyrus/pap_initialise_info.inc.php
21,7 → 21,7
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// | |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: pap_initialise_info.inc.php,v 1.23 2005-09-22 14:02:49 ddelon Exp $
// CVS : $Id: pap_initialise_info.inc.php,v 1.24 2006-03-02 10:49:49 ddelon Exp $
/**
*Initialisation de Papyrus : vérification et récupération de paramètres généraux.
*
41,7 → 41,7
*@author Alexandre GRANIER <alex@tela-botanica.org>
*@author Laurent COUDOUNEAU <laurent.coudouneau@ema.fr>
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.23 $ $Date: 2005-09-22 14:02:49 $
*@version $Revision: 1.24 $ $Date: 2006-03-02 10:49:49 $
// +------------------------------------------------------------------------------------------------------+
*/
 
62,8 → 62,9
// +------------------------------------------------------------------------------------------------------+
 
// +------------------------------------------------------------------------------------------------------+
// Gestion des sites : disponiblent sur le serveur courant.
// Gestion des sites : disponibles sur le serveur courant.
// Liste des catégories de site à prendre en compte :
// Pas de site, ni de menu dans l'URL, recherche du site par défaut
$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.* '.
74,12 → 75,12
'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
99,9 → 100,9
} else {
$_GEN_commun['url_site'] = $_GEN_commun['info_site']->gs_code_alpha;
}
// Le code du menu est présent dans l'url mais pas celui du site
} 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
// Nou$s récupérons les infos du menu et du sites dans la variable globale de Papyrus.
// 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 * '.
115,7 → 116,7
(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) {
126,10 → 127,10
'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
142,10 → 143,10
'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
155,7 → 156,7
} 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 '.
166,7 → 167,7
$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);
189,66 → 190,17
exit(0);
}
 
// +------------------------------------------------------------------------------------------------------+
// 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'] = '';
if ( (isset($_GET[GEN_URL_CLE_I18N])) && (!empty($_GET[GEN_URL_CLE_I18N])) ) {
$_GEN_commun['i18n'] = $_GET[GEN_URL_CLE_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'];
$_GEN_commun['i18n'] = GEN_I18N_ID_DEFAUT;
}
 
//print "hola";
//print $_GEN_commun['i18n'];
//print "hola";
 
// Nous récupérons des informations sur l'internationalisation
$requete = 'SELECT * '.
'FROM gen_i18n '.
261,13 → 213,6
$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 '.
300,7 → 245,7
'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))
308,7 → 253,7
// Nous avons trouvé un menu "défaut" pour le site courant.
$_GEN_commun['info_menu'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
$resultat->free();
 
if (isset($_GEN_commun['url_menu'])) {
// Stockage du code du menu demandée dans la variable globale de Papyrus.
if (GEN_URL_ID_TYPE_MENU == 'int') {
324,7 → 269,7
// 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 '.
332,12 → 277,12
$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();
}
347,6 → 292,7
 
// 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 * '.
353,11 → 299,11
'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
 
// 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);
367,6 → 313,7
 
// 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 ((isset($_GEN_commun['info_menu'])) && ($_GEN_commun['i18n'] != $_GEN_commun['info_menu']->gm_ce_i18n)) {
// Récupération des informations sur la traduction du menu
$requete = 'SELECT * '.
373,11 → 320,11
'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
 
// 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);
394,13 → 341,13
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))
409,18 → 356,18
$_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 {
435,14 → 382,14
 
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) {
484,10 → 431,6
$_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']);
500,6 → 443,15
 
/* +--Fin du code ---------------------------------------------------------------------------------------+
* $Log: not supported by cvs2svn $
* Revision 1.23.2.2 2005/12/20 14:40:24 ddelon
* Fusion Head vers Livraison
*
* Revision 1.23.2.1 2005/12/01 23:31:57 ddelon
* Merge Head vers multilinguisme
*
* Revision 1.23 2005/09/22 14:02:49 ddelon
* nettoyage annuaire et php5
*
* Revision 1.22 2005/09/20 17:01:22 ddelon
* php5 et bugs divers
*