Subversion Repositories Applications.papyrus

Rev

Rev 2038 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */ 
// Copyright (C) 1999-2004 Tela Botanica (accueil@tela-botanica.org)
//
// Ce logiciel est un programme informatique servant à gérer du contenu et des
// applications web.
                                                                                                      
// Ce logiciel est régi par la licence CeCILL soumise au droit français et
// respectant les principes de diffusion des logiciels libres. Vous pouvez
// utiliser, modifier et/ou redistribuer ce programme sous les conditions
// de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA 
// sur le site "http://www.cecill.info".

// En contrepartie de l'accessibilité au code source et des droits de copie,
// de modification et de redistribution accordés par cette licence, il n'est
// offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons,
// seule une responsabilité restreinte pèse sur l'auteur du programme,  le
// titulaire des droits patrimoniaux et les concédants successifs.

// A cet égard  l'attention de l'utilisateur est attirée sur les risques
// associés au chargement,  à l'utilisation,  à la modification et/ou au
// développement et à la reproduction du logiciel par l'utilisateur étant 
// donné sa spécificité de logiciel libre, qui peut le rendre complexe à 
// manipuler et qui le réserve donc à des développeurs et des professionnels
// avertis possédant  des  connaissances  informatiques approfondies.  Les
// utilisateurs sont donc invités à charger  et  tester  l'adéquation  du
// logiciel à leurs besoins dans des conditions permettant d'assurer la
// sécurité de leurs systèmes et ou de leurs données et, plus généralement, 
// à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. 

// Le fait que vous puissiez accéder à cet en-tête signifie que vous avez 
// pris connaissance de la licence CeCILL, et que vous en avez accepté les
// termes.
// ----
// CVS : $Id: pap_rendu.inc.php,v 1.44 2008-11-14 23:47:37 ddelon Exp $
/**
* Rendu : programme traitant l'url demandée et retournant la page compressé au navigateur.
*
* Ce programme contient la partie collectant les informations sur la page demandée par le navigateur client.
* Elle vérifie que la page ne soit pas déjà présente en cache et la renvoie si elle est disponible.
* Elle recherche ensuite l'application liée à la page demandée. Elle exécute cette application et récupère le
* contenu XHTML à afficher, le stocke en cache, le compresse et le renvoi au navigateur client.
*
*@package Papyrus
//Auteur original :
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
//Autres auteurs :
*@author        Alexandre GRANIER <alexandre@tela-botanica.org>
*@author        Laurent COUDOUNEAU <laurent.coudouneau@ema.fr>
*@copyright     Tela-Botanica 2000-2004
*@version       $Revision: 1.44 $ $Date: 2008-11-14 23:47:37 $
// +------------------------------------------------------------------------------------------------------+
*/

// TODO : revoir les initialisation en l'absence de menu par defaut

// +------------------------------------------------------------------------------------------------------+
// |                                            ENTÊTE du PROGRAMME                                       |
// +------------------------------------------------------------------------------------------------------+

/** Inclusion de la bibliothèque de fonctions servant à l'insertion de meta informations pour une page donnée.*/
include_once GEN_CHEMIN_BIBLIO.'pap_meta.fonct.php';

/** Inclusion de la bibliothèque de fonctions servant à l'insertion de styles pour une page donnée.*/
include_once GEN_CHEMIN_BIBLIO.'pap_style.fonct.php';

/** Inclusion de la bibliothèque de fonctions servant à l'insertion de scripts pour une page donnée.*/
include_once GEN_CHEMIN_BIBLIO.'pap_script.fonct.php';

/** Inclusion de la classe servant au rendu de Papyrus.*/
include_once GEN_CHEMIN_BIBLIO_CLASSE.'pap_rendu.class.php';

// +------------------------------------------------------------------------------------------------------+
// |                                            CORPS du PROGRAMME                                        |
// +------------------------------------------------------------------------------------------------------+

// Recherche du squelette de la page demandée.


// Ouverture du squelette
if (empty($GLOBALS['_GEN_commun']['info_menu']->gm_fichier_squelette)) {
    if (isset($GLOBALS['_GEN_commun']['traduction_info_site'])) {
        $GLOBALS['_PAPYRUS_']['general']['chemin_squelette'] = $GLOBALS['_GEN_commun']['traduction_info_site']->gs_fichier_squelette;
    } else {
        $GLOBALS['_PAPYRUS_']['general']['chemin_squelette'] = $GLOBALS['_GEN_commun']['info_site']->gs_fichier_squelette;
    }
} else {
    if (isset($GLOBALS['_GEN_commun']['traduction_info_menu'])) {
        $GLOBALS['_PAPYRUS_']['general']['chemin_squelette'] = $GLOBALS['_GEN_commun']['traduction_info_menu']->gm_fichier_squelette;
    } else {
        $GLOBALS['_PAPYRUS_']['general']['chemin_squelette'] = $GLOBALS['_GEN_commun']['info_menu']->gm_fichier_squelette;
    }
}

// Si l'information concernant le chemin est réellement un chemin
/*
 * Test du chemin du squelette - modifié
 * Teste à présent la présence du squelette dans la lanque par défaut si il n'est pas trouvé dans la langue en cours.
 * */
if (! file_exists($GLOBALS['_PAPYRUS_']['general']['chemin_squelette'])) {
    
        if (file_exists(GEN_CHEMIN_SITES.$GLOBALS['_GEN_commun']['info_site']->gs_code_alpha.'/'.
                                                $GLOBALS['_GEN_commun']['i18n'].'/'.GEN_DOSSIER_SQUELETTE.
                                                '/'.$GLOBALS['_PAPYRUS_']['general']['chemin_squelette']))      {
                                                
                // Le fichier de la locale courante existe
                                $GLOBALS['_PAPYRUS_']['general']['chemin_test'] = GEN_CHEMIN_SITES.$GLOBALS['_GEN_commun']['info_site']->gs_code_alpha.'/'.
                                                                                                                                        $GLOBALS['_GEN_commun']['i18n'].'/'.GEN_DOSSIER_SQUELETTE.
                                                                                                                                '/'.$GLOBALS['_PAPYRUS_']['general']['chemin_squelette'];
                                                                                                                                                        
    } elseif (file_exists(GEN_CHEMIN_SITES.
                    $GLOBALS['_GEN_commun']['info_site']->gs_code_alpha.'/'.GEN_I18N_ID_DEFAUT.
                    '/'.GEN_DOSSIER_SQUELETTE.'/'.$GLOBALS['_PAPYRUS_']['general']['chemin_squelette']))        {
                // Le fichier par défaut existe
                $GLOBALS['_PAPYRUS_']['general']['chemin_test'] = GEN_CHEMIN_SITES.$GLOBALS['_GEN_commun']['info_site']->gs_code_alpha.'/'.
                                                                                                                                        GEN_I18N_ID_DEFAUT.'/'.GEN_DOSSIER_SQUELETTE.
                                                                                                                                '/'.$GLOBALS['_PAPYRUS_']['general']['chemin_squelette'];
    } else      {
        //Aucun des deux fichiers n'existe.
        die('ERREUR Papyrus : Impossible de trouver de fichier de squelette. <br />'.
            'Chemin fichier squelette : '.$GLOBALS['_PAPYRUS_']['general']['chemin_squelette'].' <br />'.
            'Ligne n° : '. __LINE__ .'<br />'.
            'Fichier : '. __FILE__ );
    }
}

$GLOBALS['_PAPYRUS_']['general']['chemin_squelette'] = $GLOBALS['_PAPYRUS_']['general']['chemin_test'];

// Lecture du fichier de squelette XHTML en PHP 4.3




// +------------------------------------------------------------------------------------------------------+
// Gestion des traductions

// Si le r<E9>sultat de la n<E9>gociation de l'internationalisation donne une langue diff<E9>rente
//  de celle du site principal, nous r<E9>cup<E9>rons les <E9>ventuelles valeurs traduite pour le site.


$id_langue = $GLOBALS['_GEN_commun']['i18n'];

if (isset($id_langue) && ($id_langue!='')) {
       $langue_test=$id_langue;
} else {
       $langue_test=GEN_I18N_ID_DEFAUT;
}

    $requete =  'SELECT * '.
                'FROM gen_site '.
                'WHERE gs_ce_i18n = "'.$langue_test.'" '.
//                'WHERE gs_ce_i18n = "'.$_GEN_commun['i18n'].'" '.
                'AND gs_code_num = "'.$GLOBALS['_GEN_commun']['info_site']->gs_code_num.'"';
    $resultat = $db->query($requete);
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';

    // Nous cr<E9><E9>ons l'entr<E9>e 'traduction_info_site' dans _GEN_commun que si nous avons bien trouv<E9> une
    // traduction pour le site. Il faut donc tester l'existence de cette entr<E9>e avant de l'utiliser.


    if ($resultat->numRows() > 0) {
        $GLOBALS['_GEN_commun']['traduction_info_site'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
    }
    $resultat->free();

// Si le r<E9>sultat de la n<E9>gociation de l'internationalisation donne une langue diff<E9>rente
//  de celle du menu, nous r<E9>cup<E9>rons les <E9>ventuelles valeurs traduite pour le menu.

   // si pas d'application, $GLOBALS['_GEN_commun']['info_menu'] => NULL
   // donc on test pour prévenir d'une erreur en bas de page :
   // trying to get property of non-object element.
   // --julien
   if(isset($GLOBALS['_GEN_commun']['info_menu']))
   {
    
            // R<E9>cup<E9>ration des informations sur la traduction du menu
            $requete =  'SELECT * '.
                        'FROM gen_menu '.
                        'WHERE gm_ce_i18n = "'.$langue_test.'" '.
        //                'WHERE gm_ce_i18n = "'.$_GEN_commun['i18n'].'" '.
                        'AND gm_code_num = "'.$GLOBALS['_GEN_commun']['info_menu']->gm_code_num.'"';
        
            $resultat = $db->query($requete);
            (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
        
            // Nous cr<E9><E9>ons l'entr<E9>e 'traduction_info_menu' dans _GEN_commun que si nous avons bien trouv<E9> une
            // traduction pour le menu. Il faut donc tester l'existence de cette entr<E9>e avant de l'utiliser.
            if ($resultat->numRows() > 0) {
                $_GEN_commun['traduction_info_menu'] = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
            }
            $resultat->free();
   }


if (isset($GLOBALS['_GEN_commun']['traduction_info_site'])) {
       $type_site='traduction_info_site';
}
else {
       $type_site='info_site';
}

if (isset($GLOBALS['_GEN_commun']['traduction_info_menu'])) {
       $type_menu='traduction_info_menu';
}
else {
       $type_menu='info_menu';
}


$GLOBALS['_PAPYRUS_']['general']['contenu_squelette'] = file_get_contents($GLOBALS['_PAPYRUS_']['general']['chemin_squelette']);

// +------------------------------------------------------------------------------------------------------+
// Recherche des informations pour la complétion de l'entête du squelette de la page demandée.

if (isset($GLOBALS['_GEN_commun'][$type_menu])) {
        // Construction du titre.
        if (! empty($GLOBALS['_GEN_commun'][$type_menu]->gm_titre)) {
            $GLOBALS['_PAPYRUS_']['page']['titre'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_titre);
        } else if (! empty($GLOBALS['_GEN_commun']['info_menu']->gm_titre_alternatif)) {
            $GLOBALS['_PAPYRUS_']['page']['titre'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_titre_alternatif);
        } else {
            $GLOBALS['_PAPYRUS_']['page']['titre'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_nom);
        }
}
else {
        $GLOBALS['_PAPYRUS_']['page']['titre']='';
}       
$GLOBALS['_PAPYRUS_']['rendu']['TITRE_PAGE'] = $GLOBALS['_PAPYRUS_']['page']['titre'];

// Construction des infos sur le site
$GLOBALS['_PAPYRUS_']['page']['nom_site'] = htmlentities($GLOBALS['_GEN_commun'][$type_site]->gs_nom);
$GLOBALS['_PAPYRUS_']['rendu']['SITE_NOM'] = $GLOBALS['_PAPYRUS_']['page']['nom_site'];
$GLOBALS['_PAPYRUS_']['page']['langue_site'] = htmlentities($GLOBALS['_GEN_commun']['i18n']);
$GLOBALS['_PAPYRUS_']['rendu']['SITE_LANGUE'] = $GLOBALS['_PAPYRUS_']['page']['langue_site'];
$GLOBALS['_PAPYRUS_']['page']['code_alpha_site'] = htmlentities($GLOBALS['_GEN_commun'][$type_site]->gs_code_alpha);
$GLOBALS['_PAPYRUS_']['rendu']['SITE_CODE_ALPHA'] = $GLOBALS['_PAPYRUS_']['page']['code_alpha_site'];

// Construction des infos sur le menu pour générer les balises
$GLOBALS['_PAPYRUS_']['rendu']['INFO_MENU_ID'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_id_menu);
$GLOBALS['_PAPYRUS_']['rendu']['INFO_MENU_CODE_ALPHA'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_code_alpha);
$GLOBALS['_PAPYRUS_']['rendu']['INFO_MENU_CODE_NUM'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_code_num);


// Tag special PAPYRUS_PAGE_URL  utilise dans le multilinguisme 
$une_url =new Pap_URL(PAP_URL);
$une_url->setId($GLOBALS['_GEN_commun']['info_menu']->gm_code_num);
$GLOBALS['_PAPYRUS_']['rendu']['PAGE_URL'] = $une_url->getUrl();
// Suppression langue si presente 
$GLOBALS['_PAPYRUS_']['rendu']['PAGE_URL'] = preg_replace("/\?langue=[a-z][a-z]/","",$GLOBALS['_PAPYRUS_']['rendu']['PAGE_URL']);
 



// Construction des Meta "http-equiv".
$_GEN_commun['meta_http_equiv'] = array();
$GLOBALS['_PAPYRUS_']['page']['jeu_de_caracteres'] = htmlentities(strtoupper($_GEN_commun['info_i18n']->gi_jeu_de_caracteres));
$GLOBALS['_PAPYRUS_']['rendu']['SITE_JEU_DE_CARACTERES'] = $GLOBALS['_PAPYRUS_']['page']['jeu_de_caracteres'];
$GLOBALS['_PAPYRUS_']['page']['langue'] = htmlentities($GLOBALS['_GEN_commun']['info_i18n_langue']->gil_id_langue);
$GLOBALS['_PAPYRUS_']['rendu']['SITE_LANGUE'] = $GLOBALS['_PAPYRUS_']['page']['langue'];
GEN_stockerMetaHttpEquiv('Content-Type', 'text/html; charset='.$GLOBALS['_PAPYRUS_']['page']['jeu_de_caracteres']);
GEN_stockerMetaHttpEquiv('Content-style-type', 'text/css');
GEN_stockerMetaHttpEquiv('Content-script-type', 'text/javascript');
GEN_stockerMetaHttpEquiv('Content-language', $GLOBALS['_PAPYRUS_']['page']['langue']);

// Construction des Meta "name".
$GLOBALS['_GEN_commun']['meta_name'] = array();
if (isset($GLOBALS['_GEN_commun'][$type_menu])) {
        $GLOBALS['_PAPYRUS_']['page']['robot'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_robot);
        $GLOBALS['_PAPYRUS_']['page']['auteur'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_auteur);
}
else {
        $GLOBALS['_PAPYRUS_']['page']['robot'] = '';
        $GLOBALS['_PAPYRUS_']['page']['auteur'] = '';
}
                
if (empty($GLOBALS['_PAPYRUS_']['page']['auteur'])) {
    $GLOBALS['_PAPYRUS_']['page']['auteur'] = htmlentities($GLOBALS['_GEN_commun'][$type_site]->gs_auteur);
}
if (isset($GLOBALS['_GEN_commun']['info_menu'])) {
        $GLOBALS['_PAPYRUS_']['page']['mots_cles'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_mots_cles);
}
if (empty($GLOBALS['_PAPYRUS_']['page']['mots_cles'])) {
    $GLOBALS['_PAPYRUS_']['page']['mots_cles'] = htmlentities($GLOBALS['_GEN_commun'][$type_site]->gs_mots_cles);
}
if (isset($GLOBALS['_GEN_commun']['info_menu'])) {
        $GLOBALS['_PAPYRUS_']['page']['description_libre'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_description_libre);
}
if (empty($GLOBALS['_PAPYRUS_']['page']['description_libre'])) {
    $GLOBALS['_PAPYRUS_']['page']['description_libre'] = htmlentities($GLOBALS['_GEN_commun'][$type_site]->gs_description);
}


GEN_stockerMetaName('revisit-after', '15 days');
GEN_stockerMetaName('robots', $GLOBALS['_PAPYRUS_']['page']['robot']);
GEN_stockerMetaName('author', $GLOBALS['_PAPYRUS_']['page']['auteur']);
GEN_stockerMetaName('keywords', $GLOBALS['_PAPYRUS_']['page']['mots_cles']);
GEN_stockerMetaName('description', $GLOBALS['_PAPYRUS_']['page']['description_libre']);

// Construction des Meta Meta "name" du Dublin Core.

if (isset($GLOBALS['_GEN_commun']['info_menu'])) { 
        $GLOBALS['_PAPYRUS_']['page']['titre_alternatif'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_titre_alternatif);
        $GLOBALS['_PAPYRUS_']['page']['auteur'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_auteur);
        $GLOBALS['_PAPYRUS_']['page']['description_resume'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_description_resume);
        $GLOBALS['_PAPYRUS_']['page']['description_table_matieres'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_description_table_matieres);
        $GLOBALS['_PAPYRUS_']['page']['publieur'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_editeur);
        $GLOBALS['_PAPYRUS_']['page']['contributeur'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_contributeur);
        $GLOBALS['_PAPYRUS_']['page']['date_creation'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_date_creation);
        $GLOBALS['_PAPYRUS_']['page']['date_soumission'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_date_soumission);
        $GLOBALS['_PAPYRUS_']['page']['date_acceptation'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_date_acceptation);
        $GLOBALS['_PAPYRUS_']['page']['periode_validite'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_date_debut_validite);
        $GLOBALS['_PAPYRUS_']['page']['date_copyright'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_date_copyright);
        $GLOBALS['_PAPYRUS_']['page']['source'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_source);
}
else {
        $GLOBALS['_PAPYRUS_']['page']['titre_alternatif'] = '';
        $GLOBALS['_PAPYRUS_']['page']['auteur'] = '';
        $GLOBALS['_PAPYRUS_']['page']['description_resume'] = '';
        $GLOBALS['_PAPYRUS_']['page']['description_table_matieres'] = '';
        $GLOBALS['_PAPYRUS_']['page']['publieur'] = '';
        $GLOBALS['_PAPYRUS_']['page']['contributeur'] = '';
        $GLOBALS['_PAPYRUS_']['page']['date_creation'] = '';
        $GLOBALS['_PAPYRUS_']['page']['date_soumission'] = '';
        $GLOBALS['_PAPYRUS_']['page']['date_acceptation'] = '';
        $GLOBALS['_PAPYRUS_']['page']['periode_validite'] = '';
        $GLOBALS['_PAPYRUS_']['page']['date_copyright'] = '';
        $GLOBALS['_PAPYRUS_']['page']['source'] = '';
}

if ((isset($GLOBALS['_GEN_commun']['info_i18n_pays'])) && ($GLOBALS['_GEN_commun']['info_i18n_pays']->gip_id_pays != '')) {
    $GLOBALS['_PAPYRUS_']['page']['langue_rfc_3066'] = $GLOBALS['_PAPYRUS_']['page']['langue'].'-'.htmlentities($GLOBALS['_GEN_commun']['info_i18n_pays']->gip_id_pays);
} else {
    $GLOBALS['_PAPYRUS_']['page']['langue_rfc_3066'] = $GLOBALS['_PAPYRUS_']['page']['langue'];
}
if (isset($GLOBALS['_GEN_commun']['info_menu'])) {
        $GLOBALS['_PAPYRUS_']['page']['type_portee_spatiale'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_ce_type_portee_spatiale);
        $GLOBALS['_PAPYRUS_']['page']['portee_spatiale'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_portee_spatiale);
        $GLOBALS['_PAPYRUS_']['page']['type_portee_temporelle'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_ce_type_portee_temporelle);
        $GLOBALS['_PAPYRUS_']['page']['portee_temporelle'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_portee_temporelle);
        $GLOBALS['_PAPYRUS_']['page']['licence'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_licence);
        $GLOBALS['_PAPYRUS_']['page']['public'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_public);
        $GLOBALS['_PAPYRUS_']['page']['public_niveau'] = htmlentities($GLOBALS['_GEN_commun'][$type_menu]->gm_public_niveau);
}
else {
        $GLOBALS['_PAPYRUS_']['page']['type_portee_spatiale'] = '';
        $GLOBALS['_PAPYRUS_']['page']['portee_spatiale'] = '';
        $GLOBALS['_PAPYRUS_']['page']['type_portee_temporelle'] = '';
        $GLOBALS['_PAPYRUS_']['page']['portee_temporelle'] = '';
        $GLOBALS['_PAPYRUS_']['page']['licence'] = '';
        $GLOBALS['_PAPYRUS_']['page']['public'] = '';
        $GLOBALS['_PAPYRUS_']['page']['public_niveau'] = '';
        
}

GEN_stockerMetaNameDC('DC.Title', $GLOBALS['_PAPYRUS_']['page']['titre'], $GLOBALS['_PAPYRUS_']['page']['langue']);
GEN_stockerMetaNameDC('DC.Title.alternative', $GLOBALS['_PAPYRUS_']['page']['titre_alternatif'], $GLOBALS['_PAPYRUS_']['page']['langue']);
GEN_stockerMetaNameDC('DC.Creator', $GLOBALS['_PAPYRUS_']['page']['auteur']);
GEN_stockerMetaNameDC('DC.Subject', $GLOBALS['_PAPYRUS_']['page']['mots_cles'], $GLOBALS['_PAPYRUS_']['page']['langue']);
GEN_stockerMetaNameDC('DC.Description', $GLOBALS['_PAPYRUS_']['page']['description_libre'], $GLOBALS['_PAPYRUS_']['page']['langue']);
GEN_stockerMetaNameDC('DC.Description.abstract', $GLOBALS['_PAPYRUS_']['page']['description_resume'], $GLOBALS['_PAPYRUS_']['page']['langue']);
GEN_stockerMetaNameDC('DC.Description.tableOfContents', $GLOBALS['_PAPYRUS_']['page']['description_table_matieres'], $GLOBALS['_PAPYRUS_']['page']['langue']);
GEN_stockerMetaNameDC('DC.Publisher', $GLOBALS['_PAPYRUS_']['page']['publieur']);
GEN_stockerMetaNameDC('DC.Contributor', $GLOBALS['_PAPYRUS_']['page']['contributeur']);
GEN_stockerMetaNameDC('DC.Date.created', $GLOBALS['_PAPYRUS_']['page']['date_creation'], '', 'W3CDTF');
GEN_stockerMetaNameDC('DC.Date.valid', $GLOBALS['_PAPYRUS_']['page']['periode_validite'], '', 'W3CDTF');
//Ajouter la gestion des dates valid et available en utilisant les dates de la table gen_page_contenu.
GEN_stockerMetaNameDC('DC.Date.dateSubmitted', $GLOBALS['_PAPYRUS_']['page']['date_soumission'], '', 'W3CDTF');
GEN_stockerMetaNameDC('DC.Date.dateCopyrighted', $GLOBALS['_PAPYRUS_']['page']['date_copyright'], '', 'W3CDTF');
GEN_stockerMetaNameDC('DC.Date.dateAccepted', $GLOBALS['_PAPYRUS_']['page']['date_acceptation'], '', 'W3CDTF');
GEN_stockerMetaNameDC('DC.Source', $GLOBALS['_PAPYRUS_']['page']['source'], '', 'URI');
GEN_stockerMetaNameDC('DC.Language', $GLOBALS['_PAPYRUS_']['page']['langue_rfc_3066'], '', 'RFC3066');
GEN_stockerMetaNameDC('DC.Coverage.spatial', $GLOBALS['_PAPYRUS_']['page']['portee_spatiale'], '', $GLOBALS['_PAPYRUS_']['page']['type_portee_spatiale']);
GEN_stockerMetaNameDC('DC.Coverage.temporal', $GLOBALS['_PAPYRUS_']['page']['portee_temporelle'], '', $GLOBALS['_PAPYRUS_']['page']['type_portee_temporelle']);
GEN_stockerMetaNameDC('DC.Rights', $GLOBALS['_PAPYRUS_']['page']['licence'], '', 'URI');
GEN_stockerMetaNameDC('DC.Audience', $GLOBALS['_PAPYRUS_']['page']['public']);
GEN_stockerMetaNameDC('DC.Audience.educationLevel', $GLOBALS['_PAPYRUS_']['page']['public_niveau']);

// Construction des CSS
// Déclaration des constantes contenant les CSS à afficher sur la page.
$GLOBALS['_GEN_commun']['style_type']  = 'text/css';
$GLOBALS['_GEN_commun']['style_integree']  = '';
$GLOBALS['_GEN_commun']['style_externe']   = array();

// Construction du Javascript
// Déclaration des constantes contenant le Javascript à afficher sur la page.
$GLOBALS['_GEN_commun']['script_type']    = 'text/javascript';
$GLOBALS['_GEN_commun']['script_code']     = '';
$GLOBALS['_GEN_commun']['script_fonction'] = array();
$GLOBALS['_GEN_commun']['script_fichier']  = array();

// +------------------------------------------------------------------------------------------------------+
// Gestion de l'espace de nom pour les balise Papyrus
$GLOBALS['_GEN_commun']['balise_prefixe'] = 'PAPYRUS_';
$GLOBALS['_GEN_commun']['balise_prefixe_client'] = 'CLIENT_';

// +------------------------------------------------------------------------------------------------------+
// Gestion des inclusions des fichiers d'applettes présentes dans le squelette
// TODO : Supprimer des fichiers du coeur de Papyrus, précédent ce fichier, la variable : $_GEN_commun['info_applette']
$GLOBALS['_PAPYRUS_']['info_applette'] = array();
$PapRendu = new Pap_Rendu();
$PapRendu->parserBaliseApplette($GLOBALS['_PAPYRUS_']['general']['contenu_squelette']);

// +------------------------------------------------------------------------------------------------------+
// Gestion de l'intégration de l'application liée au menu

// Une fois les applettes appelées et exécutées nous appelons l'application qui peut avoir
// besoins des infos des applettes (c'est le cas, pour l'applette IDENTIFICATION).
$GLOBALS['_PAPYRUS_']['general']['application_chemin'] = '';
if (isset($GLOBALS['_GEN_commun']['info_application']->gap_chemin)) {
    $GLOBALS['_PAPYRUS_']['general']['application_chemin'] = $GLOBALS['_GEN_commun']['info_application']->gap_chemin;
}

// Affichage contenu si identifié (parametre : lecture = + )

$lecture = 0;
if ((isset($GLOBALS['_GEN_commun']['info_application']->lecture)) && ($GLOBALS['_GEN_commun']['info_application']->lecture=="+")) {
        if ($GLOBALS['_GEN_commun']['pear_auth']->getAuth()) {
                $lecture=1;
        }
}
// Emplacement pour traiter les futurs cas :
else {
        $lecture=1;
}

if (!$lecture) {
        function afficherContenuCorps()
    {
        return '<p class="pap_erreur">'.'Pas autorisé, veuillez vous identifier.'.'</p>';
    }
}

// $application_chemin contient le chemin de l'application
// Si $application_chemin est vide, on défini putFrame comme ne retournant rien.

if (empty($GLOBALS['_PAPYRUS_']['general']['application_chemin']) ) {
    function afficherContenuCorps()
    {
        return '<p class="pap_erreur">'.'Pas d\'application.'.'</p>';
    }
} else {
    if (file_exists($GLOBALS['_PAPYRUS_']['general']['application_chemin'])) {
        if (!function_exists('afficherContenuCorps')) {
                include_once($GLOBALS['_PAPYRUS_']['general']['application_chemin']);
        } 
    } else {
        die('ERREUR Papyrus : application impossible à charger. <br />'.
            'Chemin application : '.$GLOBALS['_PAPYRUS_']['general']['application_chemin'].' <br />'.
            'Ligne n° : '. __LINE__ .'<br />'.
            'Fichier : '. __FILE__ );
    }
}


        
// +------------------------------------------------------------------------------------------------------+
// Recherche des informations provenant de l'application pour la complétion du squelette

// Contenu navigation
// Appel de la fonction afficherContenuNavigation() si elle existe.
$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_NAVIGATION'] = (function_exists('afficherContenuNavigation') ? afficherContenuNavigation() : '<!-- '.'Aucune navigation'.' -->');

// Contenu tête
// Appel de la fonction afficherContenuTete() si elle existe.
$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_TETE'] = (function_exists('afficherContenuTete') ? afficherContenuTete() : '<!-- '.'Aucun contenu tête'.' -->');

// Contenu corps
// Appel de la fonction afficherContenuCorps().
if (function_exists('afficherContenuCorps') ) {
    $GLOBALS['_PAPYRUS_']['rendu']['CONTENU_CORPS'] = afficherContenuCorps();
} else {
    $GLOBALS['_PAPYRUS_']['rendu']['CONTENU_CORPS'] = 
        'ERREUR Papyrus : fonction afficherContenuCorps() introuvable dans l\'application demandée. <br />'.
        'Ligne n° : '. __LINE__ .'<br />'.
        'Fichier : '. __FILE__;
}

// Appel de la fonction afficherContenuMenu() si elle existe.
if (isset($GLOBALS['_PAPYRUS_']['rendu']['CONTENU_MENU'])) {
        $GLOBALS['_PAPYRUS_']['rendu']['CONTENU_MENU'] .= (function_exists('afficherContenuMenu') ? afficherContenuMenu() : '<!-- '.'Aucun menu pour cette application'.' -->');
}
else {
        $GLOBALS['_PAPYRUS_']['rendu']['CONTENU_MENU'] = (function_exists('afficherContenuMenu') ? afficherContenuMenu() : '<!-- '.'Aucun menu pour cette application'.' -->');
}

// Contenu pied
// Appel de la fonction afficherContenuPied() si elle existe.
$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_PIED'] = (function_exists('afficherContenuPied') ? afficherContenuPied() : '<!-- '.'Aucun contenu pied'.' -->');

// Compilation du contenu de l'application
$GLOBALS['_PAPYRUS_']['general']['contenu_application'] =       $GLOBALS['_PAPYRUS_']['rendu']['CONTENU_NAVIGATION'].
                                                                                                                        $GLOBALS['_PAPYRUS_']['rendu']['CONTENU_TETE'].
                                                                                                                        $GLOBALS['_PAPYRUS_']['rendu']['CONTENU_CORPS'].
                                                                                                                        $GLOBALS['_PAPYRUS_']['rendu']['CONTENU_MENU'].
                                                                                                                        $GLOBALS['_PAPYRUS_']['rendu']['CONTENU_PIED'];

// +------------------------------------------------------------------------------------------------------+
// Continuation recherche d'info provenant de Papyrus pour la complétion du squelette

// Une fois l'application appelé est exécuté nous affichons le contenu de l'entête qui a pu 
// être modifié par l'application.
$GLOBALS['_PAPYRUS_']['rendu']['META_HTTP_EQUIV'] = GEN_afficherMeta('http-equiv');
$GLOBALS['_PAPYRUS_']['rendu']['META_PROPERTY'] = GEN_afficherMeta('property');
$GLOBALS['_PAPYRUS_']['rendu']['META_NAME'] = GEN_afficherMeta('name');
$GLOBALS['_PAPYRUS_']['rendu']['META_NAME_DC'] = GEN_afficherMeta('dc');
// Nous récupérons tout les styles CSS pour l'afficher dans l'entête de la page.
$GLOBALS['_PAPYRUS_']['rendu']['STYLES'] = GEN_afficherStyle();
// Nous récupérons tout le Javascript pour l'afficher dans l'entête de la page.
$GLOBALS['_PAPYRUS_']['rendu']['SCRIPTS'] = GEN_afficherScript();
$GLOBALS['_PAPYRUS_']['rendu']['VERSION'] = PAP_VERSION;

// +------------------------------------------------------------------------------------------------------+
// Remplacement des balises des applettes de Papyrus et des Clients dans le squelette avant les appli
$PapRendu->remplacerBaliseApplette();

// +------------------------------------------------------------------------------------------------------+
// Gestion des inclusions des fichiers d'applettes présentes dans le contenu généré par l'application
if (!isset($GLOBALS['_PAPYRUS_']['applette']['analyse']) || $GLOBALS['_PAPYRUS_']['applette']['analyse'] == true) {
        // Puisque l'application autorise l'analyse, nous l'effectuons:
        $PapRendu->parserBaliseApplette($GLOBALS['_PAPYRUS_']['general']['contenu_application'], true);
}

// +------------------------------------------------------------------------------------------------------+
// Remplacement des balises Papyrus dans le squelette, le contenu généré par l'appli est remplacé.
foreach ($GLOBALS['_PAPYRUS_']['rendu'] as $GLOBALS['_PAPYRUS_']['tmp']['cle'] => $GLOBALS['_PAPYRUS_']['tmp']['val']) {
    $GLOBALS['_PAPYRUS_']['general']['contenu_squelette'] = 
                    str_replace(   '<!-- '.$_GEN_commun['balise_prefixe'].$GLOBALS['_PAPYRUS_']['tmp']['cle'].' -->',
                                    $GLOBALS['_PAPYRUS_']['tmp']['val'], 
                                    $GLOBALS['_PAPYRUS_']['general']['contenu_squelette']);
}

// +------------------------------------------------------------------------------------------------------+
// Remplacement des balises des applettes de Papyrus et des Clients dans le contenu de l'application si nécessaire
if ($PapRendu->getBoolBaliseAppli()) {
        $PapRendu->remplacerBaliseApplette();
}

// +------------------------------------------------------------------------------------------------------+
// Stokage du squelette dans un variable globale après avoir remplacer les balises Papyrus.
$GLOBALS['_GEN_commun']['sortie'] = $GLOBALS['_PAPYRUS_']['general']['contenu_squelette'];

/* +--Fin du code ---------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.42  2007-11-29 10:53:48  jp_milcent
* Correction du bogue nom de balise identique à une applette.
*
* Revision 1.41  2007-11-27 14:02:55  alexandre_tb
* Fusion avec la livraison AHA : 27 novembre 2007
*
* Revision 1.40.4.1  2007-11-27 14:01:10  alexandre_tb
* Ajout de balise Papyrus concernant le menu.
*
* Revision 1.40  2007/04/20 14:08:24  neiluj
* correction bug
*
* Revision 1.39  2007/04/19 16:54:52  ddelon
* backport mulitlinguisme
*
* Revision 1.38  2007/04/19 15:34:35  neiluj
* préparration release (livraison) "Narmer" - v0.25
*
* Revision 1.37  2007/04/13 09:41:09  neiluj
* réparration cvs
*
* Revision 1.36  2006/12/13 17:17:41  jp_milcent
* Suppression de l'analyse par Text_Wiki.
*
* Revision 1.35  2006/12/12 17:15:57  jp_milcent
* Correction bogue : mauvais ordre pour parser les balises.
*
* Revision 1.34  2006/12/12 13:56:33  jp_milcent
* Modification de l'ordre de remplacement des balises pour permettre aux apllettes d'interagir sur le contenu de l'application.
*
* Revision 1.33  2006/12/08 15:59:17  jp_milcent
* Suppression de code inutile.
*
* Revision 1.32  2006/12/01 17:05:34  florian
* Correction bogue d'opérateur.
*
* Revision 1.31  2006/12/01 16:59:45  florian
* Ajout d'une variable parametrant la recherche de balise d'applette dans le contenu généré par l'appli.
*
* Revision 1.30  2006/12/01 16:41:04  florian
* Début gestion de l'appel des applettes dans le squelette comme dans le contenu généré par l'application.
*
* Revision 1.29  2006/04/20 09:45:30  alexandre_tb
* ligne 92, remplacement de gs_fichier_squelette par gm_fichier_squelette, car on appelle le squelette du menu (s'il existe) et non du site.
* Posait un pb lors de l'affichage de squelettes (de menu) des traductions de menu
*
* Revision 1.28  2006/03/13 21:00:20  ddelon
* Suppression messages d'erreur multilinguisme
*
* Revision 1.27  2006/03/02 13:45:27  ddelon
* Balise url page
*
* Revision 1.26  2006/03/02 10:49:49  ddelon
* Fusion branche multilinguisme dans branche principale
*
* Revision 1.25  2005/12/09 15:07:07  florian
* suppression de debogage.css, pour optimiser les performances (c'est intégré dans la feuille de style par défaut dorénavant)
*
* Revision 1.24.2.6  2006/03/01 22:28:15  ddelon
* Balise url page
*
* Revision 1.24.2.5  2006/03/01 22:09:49  ddelon
* Balise url page
*
* Revision 1.24.2.4  2006/02/28 15:54:07  ddelon
* Integration branche principale
*
* Revision 1.24.2.3  2006/02/28 14:02:09  ddelon
* Finition multilinguisme
*
* Revision 1.24.2.2  2006/01/19 21:26:20  ddelon
* Multilinguisme site + bug ftp
*
* Revision 1.24.2.1  2005/12/20 14:40:24  ddelon
* Fusion Head vers Livraison
*
* Revision 1.25  2005/12/09 15:07:07  florian
* suppression de debogage.css, pour optimiser les performances (c'est intégré dans la feuille de style par défaut dorénavant)
*
* Revision 1.24  2005/10/21 22:22:16  ddelon
* projet wikini : fiche synthese
*
* Revision 1.23  2005/10/20 13:12:18  ddelon
* Gestion protection menu
*
* Revision 1.22  2005/10/20 10:28:25  ddelon
* Wikini complet dans l'intégrateur Wikini
*
* Revision 1.21  2005/10/17 13:41:34  ddelon
* Projet Wikini
*
* Revision 1.20  2005/10/17 10:52:00  jp_milcent
* Mise en majuscule du jeu de caractère, conformément à la recommandation.
*
* Revision 1.19  2005/10/12 17:20:33  ddelon
* Reorganisation calendrier + applette
*
* Revision 1.18  2005/09/22 14:02:49  ddelon
* nettoyage annuaire et php5
*
* Revision 1.17  2005/09/20 17:01:22  ddelon
* php5 et bugs divers
*
* Revision 1.16  2005/07/12 09:13:15  alexandre_tb
* Déplacement de l'appel de la fonction afficherContenuMenu APRES l'appel de afficherContenuCorps.
* Le menu d'une application étant calculé après les opérations de l'application.
*
* Revision 1.15  2005/07/08 21:13:15  ddelon
* Gestion indentation menu
*
* Revision 1.14  2005/05/11 14:31:45  jpm
* Ajout de la fonction afficherContenuMenu() pour les applications.
*
* Revision 1.13  2005/04/21 16:46:39  jpm
* Gestion via Papyrus du XHTML de Text_Wiki_Papyrus.
*
* Revision 1.12  2005/03/02 11:04:36  jpm
* Modification de l'utilisation d'une variable globale.
*
* Revision 1.11  2005/02/28 11:20:42  jpm
* Modification des auteurs.
*
* Revision 1.10  2005/01/26 16:20:46  jpm
* Correction bogue meta : auteurs et mots-clés mélangés.
*
* Revision 1.9  2004/12/06 19:39:40  jpm
* Correction langue DC.
*
* Revision 1.8  2004/11/26 19:02:07  jpm
* Comptabilisation du nombre d'appel de chaque applette dans le squelette.
*
* Revision 1.7  2004/11/24 18:33:29  jpm
* Encapsulation des variables dans le tableau global _PAPYRUS_.
*
* Revision 1.6  2004/11/15 17:40:21  jpm
* Gestion d'un espace de nom pour les balises Papyrus.
*
* Revision 1.5  2004/10/26 18:42:54  jpm
* Gestion de la fonction de navigation pour les appli Papyrus.
*
* Revision 1.4  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.3  2004/10/22 17:23:35  jpm
* Amélioration de la gestion de l'erreur si pas d'appli.
*
* Revision 1.2  2004/06/17 08:04:44  jpm
* Changement de constante pour les chemin d'accès à la biblio de code de Papyrus.
*
* Revision 1.1  2004/06/16 08:13:58  jpm
* Changement de nom de Papyrus en Papyrus.
* Changement de l'arborescence.
*
* Revision 1.32  2004/05/10 12:24:55  jpm
* Amélioration de la recherche des fichiers de squelette.
*
* Revision 1.31  2004/05/05 10:42:35  jpm
* Amélioration de la gestion de l'internationalisation.
*
* Revision 1.30  2004/05/05 08:25:37  jpm
* Modification de la façon d'ajouter la feuille de style de débogage pour qu'elle soit prise en compte par défaut.
*
* Revision 1.29  2004/05/03 14:12:04  jpm
* Suppression du fichier bibliothèque de fonctions sur gen_menu.
*
* Revision 1.28  2004/05/03 11:21:58  jpm
* Fin de la gestion des applettes et suppression de l'info_menu_hierarchie de _GEN_commun.
*
* Revision 1.27  2004/05/01 17:22:55  jpm
* Appel de la bibliothèque de fonctions concernant les menus.
*
* Revision 1.26  2004/05/01 16:19:36  jpm
* Suppression du code ayant pu être transformé en applettes (menu multi-niveaux, menu unique, menu commun, identification, sélecteur de sites).
*
* Revision 1.25  2004/05/01 11:39:38  jpm
* Déplacement du code gérant les applettes et du code de récupération du contenu du fichier squelette.
*
* Revision 1.24  2004/04/28 12:04:31  jpm
* Changement du modèle de la base de données.
*
* Revision 1.23  2004/04/22 08:30:47  jpm
* Transformation de $GS_GLOBAL en $_GEN_commun.
*
* Revision 1.22  2004/04/21 07:55:02  jpm
* Ajout de la feuille de style de débogage si le débogage de Papyrus est activé.
*
* Revision 1.19  2004/04/09 16:20:54  jpm
* Extraction de la gestion du cache et de l'envoi.
* Gestion des tables i18n.
*
* Revision 1.18  2004/04/08 12:29:48  jpm
* Début amélioration de la gestion du cache et de la compression des pages de Papyrus.
*
* Revision 1.17  2004/04/05 16:38:04  jpm
* Utilisation des nouvelles fonctions gérant l'insertion du Javascript.
*
* Revision 1.16  2004/04/02 16:30:56  jpm
* Gestion de la balise Papyrus IDENTIFICATION permettant l'envoie d'un formulaire de login.
*
* Revision 1.15  2004/04/01 11:27:13  jpm
* Ajout et modification de commentaires pour PhpDocumentor.
*
* Revision 1.14  2004/03/31 16:50:10  jpm
* Prise en compte du nouveau modèle de Papyrus révision 1.9.
*
* Revision 1.13  2004/03/27 11:07:45  jpm
* Modification des commentaires vis à vis du nouveau modèle.
* Mise en conformité avec la convention de codage.
* Amélioration du code.
*
* Revision 1.12  2004/03/23 17:06:44  jpm
* Ajout de commentaire dans l'entête.
* Mise en conformité avec la convention de codage.
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>