Subversion Repositories Applications.papyrus

Rev

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

Rev Author Line No. Line
5 jpm 1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
409 ddelon 3
// Copyright (C) 1999-2004 Tela Botanica (accueil@tela-botanica.org)
4
//
5
// Ce logiciel est un programme informatique servant à gérer du contenu et des
6
// applications web.
7
 
8
// Ce logiciel est régi par la licence CeCILL soumise au droit français et
9
// respectant les principes de diffusion des logiciels libres. Vous pouvez
10
// utiliser, modifier et/ou redistribuer ce programme sous les conditions
11
// de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
12
// sur le site "http://www.cecill.info".
13
 
14
// En contrepartie de l'accessibilité au code source et des droits de copie,
15
// de modification et de redistribution accordés par cette licence, il n'est
16
// offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons,
17
// seule une responsabilité restreinte pèse sur l'auteur du programme,  le
18
// titulaire des droits patrimoniaux et les concédants successifs.
19
 
20
// A cet égard  l'attention de l'utilisateur est attirée sur les risques
21
// associés au chargement,  à l'utilisation,  à la modification et/ou au
22
// développement et à la reproduction du logiciel par l'utilisateur étant
23
// donné sa spécificité de logiciel libre, qui peut le rendre complexe à
24
// manipuler et qui le réserve donc à des développeurs et des professionnels
25
// avertis possédant  des  connaissances  informatiques approfondies.  Les
26
// utilisateurs sont donc invités à charger  et  tester  l'adéquation  du
27
// logiciel à leurs besoins dans des conditions permettant d'assurer la
28
// sécurité de leurs systèmes et ou de leurs données et, plus généralement,
29
// à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
30
 
31
// Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
32
// pris connaissance de la licence CeCILL, et que vous en avez accepté les
33
// termes.
34
// ----
530 ddelon 35
// CVS : $Id: pap_rendu.inc.php,v 1.19 2005-10-12 17:20:33 ddelon Exp $
5 jpm 36
/**
37
* Rendu : programme traitant l'url demandée et retournant la page compressé au navigateur.
38
*
39
* Ce programme contient la partie collectant les informations sur la page demandée par le navigateur client.
40
* Elle vérifie que la page ne soit pas déjà présente en cache et la renvoie si elle est disponible.
41
* Elle recherche ensuite l'application liée à la page demandée. Elle exécute cette application et récupère le
42
* contenu XHTML à afficher, le stocke en cache, le compresse et le renvoi au navigateur client.
43
*
44
*@package Papyrus
45
//Auteur original :
286 jpm 46
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
5 jpm 47
//Autres auteurs :
414 alexandre_ 48
*@author        Alexandre GRANIER <alexandre@tela-botanica.org>
286 jpm 49
*@author        Laurent COUDOUNEAU <laurent.coudouneau@ema.fr>
5 jpm 50
*@copyright     Tela-Botanica 2000-2004
530 ddelon 51
*@version       $Revision: 1.19 $ $Date: 2005-10-12 17:20:33 $
5 jpm 52
// +------------------------------------------------------------------------------------------------------+
53
*/
54
 
448 ddelon 55
// TODO : revoir les initialisation en l'absence de menu par defaut
56
 
5 jpm 57
// +------------------------------------------------------------------------------------------------------+
58
// |                                            ENTÊTE du PROGRAMME                                       |
59
// +------------------------------------------------------------------------------------------------------+
60
 
352 jpm 61
/** Inclusion de la bibliothèque de fonctions servant à l'insertion de meta informations pour une page donnée.*/
14 jpm 62
include_once GEN_CHEMIN_BIBLIO.'pap_meta.fonct.php';
5 jpm 63
 
352 jpm 64
/** Inclusion de la bibliothèque de fonctions servant à l'insertion de styles pour une page donnée.*/
14 jpm 65
include_once GEN_CHEMIN_BIBLIO.'pap_style.fonct.php';
5 jpm 66
 
352 jpm 67
/** Inclusion de la bibliothèque de fonctions servant à l'insertion de scripts pour une page donnée.*/
14 jpm 68
include_once GEN_CHEMIN_BIBLIO.'pap_script.fonct.php';
5 jpm 69
 
352 jpm 70
/** Inclusion de la bibliothèque PEAR Text_Wiki.*/
71
include_once PAP_CHEMIN_API_PEAR.'Text/Wiki.php';
72
 
73
/** Inclusion de la bibliothèque Text_Wiki_Papyrus.*/
74
include_once GEN_CHEMIN_API.'text/wiki_papyrus/Papyrus.class.php';
75
 
5 jpm 76
// +------------------------------------------------------------------------------------------------------+
77
// |                                            CORPS du PROGRAMME                                        |
78
// +------------------------------------------------------------------------------------------------------+
79
 
80
// +------------------------------------------------------------------------------------------------------+
81
// Recherche du squelette de la page demandée.
82
 
83
// Ouverture du squelette
290 jpm 84
if (empty($GLOBALS['_GEN_commun']['info_menu']->gm_fichier_squelette)) {
85
    if (isset($GLOBALS['_GEN_commun']['traduction_info_site'])) {
86
        $GLOBALS['_PAPYRUS_']['general']['chemin_squelette'] = $GLOBALS['_GEN_commun']['traduction_info_site']->gs_fichier_squelette;
5 jpm 87
    } else {
290 jpm 88
        $GLOBALS['_PAPYRUS_']['general']['chemin_squelette'] = $GLOBALS['_GEN_commun']['info_site']->gs_fichier_squelette;
5 jpm 89
    }
90
} else {
290 jpm 91
    if (isset($GLOBALS['_GEN_commun']['traduction_info_menu'])) {
92
        $GLOBALS['_PAPYRUS_']['general']['chemin_squelette'] = $GLOBALS['_GEN_commun']['traduction_info_menu']->gs_fichier_squelette;
5 jpm 93
    } else {
290 jpm 94
        $GLOBALS['_PAPYRUS_']['general']['chemin_squelette'] = $GLOBALS['_GEN_commun']['info_menu']->gm_fichier_squelette;
5 jpm 95
    }
96
}
97
// Si l'information concernant le chemin est réellement un chemin
169 jpm 98
if (! file_exists($GLOBALS['_PAPYRUS_']['general']['chemin_squelette'])) {
5 jpm 99
    //Si ce n'est qu'un nom de fichier squelette
169 jpm 100
    $GLOBALS['_PAPYRUS_']['general']['chemin_test'] =  GEN_CHEMIN_SITES.
290 jpm 101
                    $GLOBALS['_GEN_commun']['info_site']->gs_code_alpha.'/'.
102
                    $GLOBALS['_GEN_commun']['i18n'].'/'.GEN_DOSSIER_SQUELETTE.'/'.$GLOBALS['_PAPYRUS_']['general']['chemin_squelette'];
169 jpm 103
    if (! file_exists($GLOBALS['_PAPYRUS_']['general']['chemin_test'])) {
104
        die('ERREUR Papyrus : Impossible de trouver de fichier de squelette. <br />'.
105
            'Chemin fichier squelette : '.$GLOBALS['_PAPYRUS_']['general']['chemin_squelette'].' <br />'.
5 jpm 106
            'Ligne n° : '. __LINE__ .'<br />'.
107
            'Fichier : '. __FILE__ );
108
    } else {
169 jpm 109
        $GLOBALS['_PAPYRUS_']['general']['chemin_squelette'] = $GLOBALS['_PAPYRUS_']['general']['chemin_test'];
5 jpm 110
    }
111
}
112
 
113
// +------------------------------------------------------------------------------------------------------+
114
// Récupération du contenu du fichier de squelette de la page demandée.
159 jpm 115
/*
5 jpm 116
// Lecture du fichier de squelette XHTML en PHP 4.1.2
117
$tab_fichier_squelette = file($chemin_squelette);
118
$contenu_squelette = '';
119
for ($i = 0; $i < count($tab_fichier_squelette); $i++) {
120
    $contenu_squelette .= $tab_fichier_squelette[$i];
121
}
159 jpm 122
*/
5 jpm 123
// Lecture du fichier de squelette XHTML en PHP 4.3
169 jpm 124
$GLOBALS['_PAPYRUS_']['general']['contenu_squelette'] = file_get_contents($GLOBALS['_PAPYRUS_']['general']['chemin_squelette']);
5 jpm 125
 
159 jpm 126
 
5 jpm 127
// +------------------------------------------------------------------------------------------------------+
128
// Recherche des informations pour la complétion de l'entête du squelette de la page demandée.
129
 
448 ddelon 130
if (isset($GLOBALS['_GEN_commun']['info_menu'])) {
131
	// Construction du titre.
132
	if (! empty($GLOBALS['_GEN_commun']['info_menu']->gm_titre)) {
133
	    $GLOBALS['_PAPYRUS_']['page']['titre'] = htmlentities($GLOBALS['_GEN_commun']['info_menu']->gm_titre);
134
	} else if (! empty($GLOBALS['_GEN_commun']['info_menu']->gm_titre_alternatif)) {
135
	    $GLOBALS['_PAPYRUS_']['page']['titre'] = htmlentities($GLOBALS['_GEN_commun']['info_menu']->gm_titre_alternatif);
136
	} else {
137
	    $GLOBALS['_PAPYRUS_']['page']['titre'] = htmlentities($GLOBALS['_GEN_commun']['info_menu']->gm_nom);
138
	}
139
 
5 jpm 140
}
448 ddelon 141
else {
142
	$GLOBALS['_PAPYRUS_']['page']['titre']='';
143
}
144
 
169 jpm 145
$GLOBALS['_PAPYRUS_']['rendu']['TITRE_PAGE'] = $GLOBALS['_PAPYRUS_']['page']['titre'];
5 jpm 146
 
112 jpm 147
// Construction des infos sur le site
290 jpm 148
$GLOBALS['_PAPYRUS_']['page']['nom_site'] = htmlentities($GLOBALS['_GEN_commun']['info_site']->gs_nom);
169 jpm 149
$GLOBALS['_PAPYRUS_']['rendu']['SITE_NOM'] = $GLOBALS['_PAPYRUS_']['page']['nom_site'];
290 jpm 150
$GLOBALS['_PAPYRUS_']['page']['langue_site'] = htmlentities($GLOBALS['_GEN_commun']['i18n']);
169 jpm 151
$GLOBALS['_PAPYRUS_']['rendu']['SITE_LANGUE'] = $GLOBALS['_PAPYRUS_']['page']['langue_site'];
290 jpm 152
$GLOBALS['_PAPYRUS_']['page']['code_alpha_site'] = htmlentities($GLOBALS['_GEN_commun']['info_site']->gs_code_alpha);
169 jpm 153
$GLOBALS['_PAPYRUS_']['rendu']['SITE_CODE_ALPHA'] = $GLOBALS['_PAPYRUS_']['page']['code_alpha_site'];
5 jpm 154
 
155
// Construction des Meta "http-equiv".
156
$_GEN_commun['meta_http_equiv'] = array();
169 jpm 157
$GLOBALS['_PAPYRUS_']['page']['jeu_de_caracteres'] = htmlentities($_GEN_commun['info_i18n']->gi_jeu_de_caracteres);
158
$GLOBALS['_PAPYRUS_']['rendu']['SITE_JEU_DE_CARACTERES'] = $GLOBALS['_PAPYRUS_']['page']['jeu_de_caracteres'];
159
$GLOBALS['_PAPYRUS_']['page']['langue'] = htmlentities($_GEN_commun['info_i18n_langue']->gil_id_langue);
160
$GLOBALS['_PAPYRUS_']['rendu']['SITE_LANGUE'] = $GLOBALS['_PAPYRUS_']['page']['langue'];
161
GEN_stockerMetaHttpEquiv('Content-Type', 'text/html; charset='.$GLOBALS['_PAPYRUS_']['page']['jeu_de_caracteres']);
5 jpm 162
GEN_stockerMetaHttpEquiv('Content-style-type', 'text/css');
163
GEN_stockerMetaHttpEquiv('Content-script-type', 'text/javascript');
169 jpm 164
GEN_stockerMetaHttpEquiv('Content-language', $GLOBALS['_PAPYRUS_']['page']['langue']);
5 jpm 165
 
166
// Construction des Meta "name".
167
$_GEN_commun['meta_name'] = array();
448 ddelon 168
if (isset($GLOBALS['_GEN_commun']['info_menu'])) {
169
	$GLOBALS['_PAPYRUS_']['page']['robot'] = htmlentities($_GEN_commun['info_menu']->gm_robot);
170
	$GLOBALS['_PAPYRUS_']['page']['auteur'] = htmlentities($_GEN_commun['info_menu']->gm_auteur);
171
}
172
else {
173
	$GLOBALS['_PAPYRUS_']['page']['robot'] = '';
174
	$GLOBALS['_PAPYRUS_']['page']['auteur'] = '';
175
}
176
 
252 jpm 177
if (empty($GLOBALS['_PAPYRUS_']['page']['auteur'])) {
169 jpm 178
    $GLOBALS['_PAPYRUS_']['page']['auteur'] = htmlentities($_GEN_commun['info_site']->gs_auteur);
5 jpm 179
}
448 ddelon 180
if (isset($GLOBALS['_GEN_commun']['info_menu'])) {
181
	$GLOBALS['_PAPYRUS_']['page']['mots_cles'] = htmlentities($_GEN_commun['info_menu']->gm_mots_cles);
182
}
169 jpm 183
if (empty($GLOBALS['_PAPYRUS_']['page']['mots_cles'])) {
252 jpm 184
    $GLOBALS['_PAPYRUS_']['page']['mots_cles'] = htmlentities($_GEN_commun['info_site']->gs_mots_cles);
5 jpm 185
}
448 ddelon 186
if (isset($GLOBALS['_GEN_commun']['info_menu'])) {
187
	$GLOBALS['_PAPYRUS_']['page']['description_libre'] = htmlentities($_GEN_commun['info_menu']->gm_description_libre);
188
}
252 jpm 189
if (empty($GLOBALS['_PAPYRUS_']['page']['description_libre'])) {
169 jpm 190
    $GLOBALS['_PAPYRUS_']['page']['description_libre'] = htmlentities($_GEN_commun['info_site']->gs_description);
5 jpm 191
}
448 ddelon 192
 
193
 
5 jpm 194
GEN_stockerMetaName('revisit-after', '15 days');
169 jpm 195
GEN_stockerMetaName('robots', $GLOBALS['_PAPYRUS_']['page']['robot']);
196
GEN_stockerMetaName('author', $GLOBALS['_PAPYRUS_']['page']['auteur']);
197
GEN_stockerMetaName('keywords', $GLOBALS['_PAPYRUS_']['page']['mots_cles']);
198
GEN_stockerMetaName('description', $GLOBALS['_PAPYRUS_']['page']['description_libre']);
5 jpm 199
 
200
// Construction des Meta Meta "name" du Dublin Core.
443 ddelon 201
 
448 ddelon 202
if (isset($GLOBALS['_GEN_commun']['info_menu'])) {
203
	$GLOBALS['_PAPYRUS_']['page']['titre_alternatif'] = htmlentities($_GEN_commun['info_menu']->gm_titre_alternatif);
204
	$GLOBALS['_PAPYRUS_']['page']['auteur'] = htmlentities($_GEN_commun['info_menu']->gm_auteur);
205
	$GLOBALS['_PAPYRUS_']['page']['description_resume'] = htmlentities($_GEN_commun['info_menu']->gm_description_resume);
206
	$GLOBALS['_PAPYRUS_']['page']['description_table_matieres'] = htmlentities($_GEN_commun['info_menu']->gm_description_table_matieres);
207
	$GLOBALS['_PAPYRUS_']['page']['publieur'] = htmlentities($_GEN_commun['info_menu']->gm_editeur);
208
	$GLOBALS['_PAPYRUS_']['page']['contributeur'] = htmlentities($_GEN_commun['info_menu']->gm_contributeur);
209
	$GLOBALS['_PAPYRUS_']['page']['date_creation'] = htmlentities($_GEN_commun['info_menu']->gm_date_creation);
210
	$GLOBALS['_PAPYRUS_']['page']['date_soumission'] = htmlentities($_GEN_commun['info_menu']->gm_date_soumission);
211
	$GLOBALS['_PAPYRUS_']['page']['date_acceptation'] = htmlentities($_GEN_commun['info_menu']->gm_date_acceptation);
212
	$GLOBALS['_PAPYRUS_']['page']['periode_validite'] = htmlentities($_GEN_commun['info_menu']->gm_date_debut_validite);
213
	$GLOBALS['_PAPYRUS_']['page']['date_copyright'] = htmlentities($_GEN_commun['info_menu']->gm_date_copyright);
214
	$GLOBALS['_PAPYRUS_']['page']['source'] = htmlentities($_GEN_commun['info_menu']->gm_source);
215
}
216
else {
217
	$GLOBALS['_PAPYRUS_']['page']['titre_alternatif'] = '';
218
	$GLOBALS['_PAPYRUS_']['page']['auteur'] = '';
219
	$GLOBALS['_PAPYRUS_']['page']['description_resume'] = '';
220
	$GLOBALS['_PAPYRUS_']['page']['description_table_matieres'] = '';
221
	$GLOBALS['_PAPYRUS_']['page']['publieur'] = '';
222
	$GLOBALS['_PAPYRUS_']['page']['contributeur'] = '';
223
	$GLOBALS['_PAPYRUS_']['page']['date_creation'] = '';
224
	$GLOBALS['_PAPYRUS_']['page']['date_soumission'] = '';
225
	$GLOBALS['_PAPYRUS_']['page']['date_acceptation'] = '';
226
	$GLOBALS['_PAPYRUS_']['page']['periode_validite'] = '';
227
	$GLOBALS['_PAPYRUS_']['page']['date_copyright'] = '';
228
	$GLOBALS['_PAPYRUS_']['page']['source'] = '';
229
}
230
 
213 jpm 231
if ($_GEN_commun['info_i18n_pays']->gip_id_pays != '') {
232
    $GLOBALS['_PAPYRUS_']['page']['langue_rfc_3066'] = $GLOBALS['_PAPYRUS_']['page']['langue'].'-'.htmlentities($_GEN_commun['info_i18n_pays']->gip_id_pays);
233
} else {
234
    $GLOBALS['_PAPYRUS_']['page']['langue_rfc_3066'] = $GLOBALS['_PAPYRUS_']['page']['langue'];
235
}
448 ddelon 236
if (isset($GLOBALS['_GEN_commun']['info_menu'])) {
237
	$GLOBALS['_PAPYRUS_']['page']['type_portee_spatiale'] = htmlentities($_GEN_commun['info_menu']->gm_ce_type_portee_spatiale);
238
	$GLOBALS['_PAPYRUS_']['page']['portee_spatiale'] = htmlentities($_GEN_commun['info_menu']->gm_portee_spatiale);
239
	$GLOBALS['_PAPYRUS_']['page']['type_portee_temporelle'] = htmlentities($_GEN_commun['info_menu']->gm_ce_type_portee_temporelle);
240
	$GLOBALS['_PAPYRUS_']['page']['portee_temporelle'] = htmlentities($_GEN_commun['info_menu']->gm_portee_temporelle);
241
	$GLOBALS['_PAPYRUS_']['page']['licence'] = htmlentities($_GEN_commun['info_menu']->gm_licence);
242
	$GLOBALS['_PAPYRUS_']['page']['public'] = htmlentities($_GEN_commun['info_menu']->gm_public);
243
	$GLOBALS['_PAPYRUS_']['page']['public_niveau'] = htmlentities($_GEN_commun['info_menu']->gm_public_niveau);
244
}
245
else {
246
	$GLOBALS['_PAPYRUS_']['page']['type_portee_spatiale'] = '';
247
	$GLOBALS['_PAPYRUS_']['page']['portee_spatiale'] = '';
248
	$GLOBALS['_PAPYRUS_']['page']['type_portee_temporelle'] = '';
249
	$GLOBALS['_PAPYRUS_']['page']['portee_temporelle'] = '';
250
	$GLOBALS['_PAPYRUS_']['page']['licence'] = '';
251
	$GLOBALS['_PAPYRUS_']['page']['public'] = '';
252
	$GLOBALS['_PAPYRUS_']['page']['public_niveau'] = '';
253
 
254
}
255
 
169 jpm 256
GEN_stockerMetaNameDC('DC.Title', $GLOBALS['_PAPYRUS_']['page']['titre'], $GLOBALS['_PAPYRUS_']['page']['langue']);
257
GEN_stockerMetaNameDC('DC.Title.alternative', $GLOBALS['_PAPYRUS_']['page']['titre_alternatif'], $GLOBALS['_PAPYRUS_']['page']['langue']);
258
GEN_stockerMetaNameDC('DC.Creator', $GLOBALS['_PAPYRUS_']['page']['auteur']);
259
GEN_stockerMetaNameDC('DC.Subject', $GLOBALS['_PAPYRUS_']['page']['mots_cles'], $GLOBALS['_PAPYRUS_']['page']['langue']);
260
GEN_stockerMetaNameDC('DC.Description', $GLOBALS['_PAPYRUS_']['page']['description_libre'], $GLOBALS['_PAPYRUS_']['page']['langue']);
261
GEN_stockerMetaNameDC('DC.Description.abstract', $GLOBALS['_PAPYRUS_']['page']['description_resume'], $GLOBALS['_PAPYRUS_']['page']['langue']);
262
GEN_stockerMetaNameDC('DC.Description.tableOfContents', $GLOBALS['_PAPYRUS_']['page']['description_table_matieres'], $GLOBALS['_PAPYRUS_']['page']['langue']);
263
GEN_stockerMetaNameDC('DC.Publisher', $GLOBALS['_PAPYRUS_']['page']['publieur']);
264
GEN_stockerMetaNameDC('DC.Contributor', $GLOBALS['_PAPYRUS_']['page']['contributeur']);
265
GEN_stockerMetaNameDC('DC.Date.created', $GLOBALS['_PAPYRUS_']['page']['date_creation'], '', 'W3CDTF');
266
GEN_stockerMetaNameDC('DC.Date.valid', $GLOBALS['_PAPYRUS_']['page']['periode_validite'], '', 'W3CDTF');
5 jpm 267
//Ajouter la gestion des dates valid et available en utilisant les dates de la table gen_page_contenu.
169 jpm 268
GEN_stockerMetaNameDC('DC.Date.dateSubmitted', $GLOBALS['_PAPYRUS_']['page']['date_soumission'], '', 'W3CDTF');
269
GEN_stockerMetaNameDC('DC.Date.dateCopyrighted', $GLOBALS['_PAPYRUS_']['page']['date_copyright'], '', 'W3CDTF');
270
GEN_stockerMetaNameDC('DC.Date.dateAccepted', $GLOBALS['_PAPYRUS_']['page']['date_acceptation'], '', 'W3CDTF');
271
GEN_stockerMetaNameDC('DC.Source', $GLOBALS['_PAPYRUS_']['page']['source'], '', 'URI');
272
GEN_stockerMetaNameDC('DC.Language', $GLOBALS['_PAPYRUS_']['page']['langue_rfc_3066'], '', 'RFC3066');
273
GEN_stockerMetaNameDC('DC.Coverage.spatial', $GLOBALS['_PAPYRUS_']['page']['portee_spatiale'], '', $GLOBALS['_PAPYRUS_']['page']['type_portee_spatiale']);
274
GEN_stockerMetaNameDC('DC.Coverage.temporal', $GLOBALS['_PAPYRUS_']['page']['portee_temporelle'], '', $GLOBALS['_PAPYRUS_']['page']['type_portee_temporelle']);
275
GEN_stockerMetaNameDC('DC.Rights', $GLOBALS['_PAPYRUS_']['page']['licence'], '', 'URI');
276
GEN_stockerMetaNameDC('DC.Audience', $GLOBALS['_PAPYRUS_']['page']['public']);
277
GEN_stockerMetaNameDC('DC.Audience.educationLevel', $GLOBALS['_PAPYRUS_']['page']['public_niveau']);
5 jpm 278
 
279
// Construction des CSS
280
// Déclaration des constantes contenant les CSS à afficher sur la page.
290 jpm 281
$GLOBALS['_GEN_commun']['style_type']  = 'text/css';
282
$GLOBALS['_GEN_commun']['style_integree']  = '';
283
$GLOBALS['_GEN_commun']['style_externe']   = array();
5 jpm 284
if (GEN_DEBOGAGE) {
285
    GEN_stockerStyleExterne('Débogage', GEN_CHEMIN_PAP.'presentations/css/debogage.css');
286
}
287
 
288
// Construction du Javascript
289
// Déclaration des constantes contenant le Javascript à afficher sur la page.
290 jpm 290
$GLOBALS['_GEN_commun']['script_type']    = 'text/javascript';
291
$GLOBALS['_GEN_commun']['script_code']     = '';
292
$GLOBALS['_GEN_commun']['script_fonction'] = array();
293
$GLOBALS['_GEN_commun']['script_fichier']  = array();
5 jpm 294
 
295
// +------------------------------------------------------------------------------------------------------+
296
// Gestion des inclusions des fichiers d'applettes
297
 
298
for ($i = 0; $i < count($_GEN_commun['info_applette']); $i++) {
299
    // Nous vérifions que le chemin vers l'applette existe.
300
    if (file_exists($_GEN_commun['info_applette'][$i]->gap_chemin)) {
301
        include_once($_GEN_commun['info_applette'][$i]->gap_chemin);
302
        // Nous récupérons l'expression régulière de la balise pour l'utiliser lors de l'appel
303
        // de la fonction de l'applette. L'appel des fonctions des applettes à lieu aprés l'appel
304
        // de l'application pour permettre à l'appli de modifier certains paramêtres (identification, ordre des menus).
290 jpm 305
        $GLOBALS['_GEN_commun']['info_applette'][$i]->applette_balise = $GLOBALS['_GEN_commun']['info_applette_balise'];
306
        $GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction = $GLOBALS['_GEN_commun']['info_applette_nom_fonction'];
5 jpm 307
    } else {
308
        // Ne devrait pas arréter le programme! Mais instancier le gestionnaire de déboguage.
530 ddelon 309
        echo('ERREUR Papyrus : Impossible de trouver le fichier de l\'applette. <br />'.
290 jpm 310
            'Nom applette : '.$GLOBALS['_GEN_commun']['info_applette'][$i]->gap_nom.' <br />'.
311
            'Chemin fichier applette : '.$GLOBALS['_GEN_commun']['info_applette'][$i]->gap_chemin.' <br />'.
5 jpm 312
            'Ligne n° : '. __LINE__ .'<br />'.
313
            'Fichier : '. __FILE__ );
314
    }
315
}
316
 
317
// +------------------------------------------------------------------------------------------------------+
318
// Gestion de l'intégration de l'application liée au menu
319
 
320
// Une fois les applettes appelées est executées nous appelons l'application qui peut avoir
321
// besoins des infos des applettes (c'est le cas, pour l'applette IDENTIFICATION).
169 jpm 322
$GLOBALS['_PAPYRUS_']['general']['application_chemin'] = '';
290 jpm 323
if (isset($GLOBALS['_GEN_commun']['info_application']->gap_chemin)) {
324
    $GLOBALS['_PAPYRUS_']['general']['application_chemin'] = $GLOBALS['_GEN_commun']['info_application']->gap_chemin;
92 jpm 325
}
5 jpm 326
 
327
// $application_chemin contient le chemin de l'application
328
// Si $application_chemin est vide, on défini putFrame comme ne retournant rien.
329
 
169 jpm 330
if (empty($GLOBALS['_PAPYRUS_']['general']['application_chemin']) ) {
5 jpm 331
    function afficherContenuCorps()
332
    {
92 jpm 333
        return '<p class="pap_erreur">'.'Pas d\'application.'.'</p>';
5 jpm 334
    }
335
} else {
169 jpm 336
    if (file_exists($GLOBALS['_PAPYRUS_']['general']['application_chemin'])) {
337
        include_once($GLOBALS['_PAPYRUS_']['general']['application_chemin']);
5 jpm 338
    } else {
169 jpm 339
        die('ERREUR Papyrus : application impossible à charger. <br />'.
340
            'Chemin application : '.$GLOBALS['_PAPYRUS_']['general']['application_chemin'].' <br />'.
5 jpm 341
            'Ligne n° : '. __LINE__ .'<br />'.
342
            'Fichier : '. __FILE__ );
343
    }
344
}
345
 
346
// +------------------------------------------------------------------------------------------------------+
347
// Recherche des informations provenant de l'application pour la complétion du squelette
348
 
118 jpm 349
// Contenu navigation
350
// Appel de la fonction afficherContenuNavigation() si elle existe.
169 jpm 351
$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_NAVIGATION'] = (function_exists('afficherContenuNavigation') ? afficherContenuNavigation() : '<!-- '.'Aucune navigation'.' -->');
118 jpm 352
 
5 jpm 353
// Contenu tête
354
// Appel de la fonction afficherContenuTete() si elle existe.
169 jpm 355
$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_TETE'] = (function_exists('afficherContenuTete') ? afficherContenuTete() : '<!-- '.'Aucun contenu tête'.' -->');
5 jpm 356
 
357
// Contenu corps
358
// Appel de la fonction afficherContenuCorps().
359
if (function_exists('afficherContenuCorps') ) {
169 jpm 360
    $GLOBALS['_PAPYRUS_']['rendu']['CONTENU_CORPS'] = afficherContenuCorps();
5 jpm 361
} else {
169 jpm 362
    $GLOBALS['_PAPYRUS_']['rendu']['CONTENU_CORPS'] =
363
        'ERREUR Papyrus : fonction afficherContenuCorps() introuvable dans l\'application demandée. <br />'.
5 jpm 364
        'Ligne n° : '. __LINE__ .'<br />'.
365
        'Fichier : '. __FILE__;
366
}
414 alexandre_ 367
 
368
// Appel de la fonction afficherContenuMenu() si elle existe.
369
$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_MENU'] = (function_exists('afficherContenuMenu') ? afficherContenuMenu() : '<!-- '.'Aucun menu pour cette application'.' -->');
370
 
5 jpm 371
// Contenu pied
372
// Appel de la fonction afficherContenuPied() si elle existe.
169 jpm 373
$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_PIED'] = (function_exists('afficherContenuPied') ? afficherContenuPied() : '<!-- '.'Aucun contenu pied'.' -->');
5 jpm 374
 
375
// +------------------------------------------------------------------------------------------------------+
159 jpm 376
// Gestion de l'espace de nom pour les balise Papyrus
290 jpm 377
$GLOBALS['_GEN_commun']['balise_prefixe'] = 'PAPYRUS_';
159 jpm 378
 
379
// +------------------------------------------------------------------------------------------------------+
530 ddelon 380
// Gestion des appels des fonctions d'applettes de papyrus
5 jpm 381
 
290 jpm 382
for ($i = 0; $i < count($GLOBALS['_GEN_commun']['info_applette']); $i++) {
5 jpm 383
    // Recherche du nombre de balise d'une applette donnée présentes dans le squelette
290 jpm 384
    $GLOBALS['_PAPYRUS_']['applette']['nbr_balise'] = preg_match_all(
385
        '/<!-- '.$GLOBALS['_GEN_commun']['balise_prefixe'].'('.$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_balise.') -->/',
386
        $GLOBALS['_PAPYRUS_']['general']['contenu_squelette'],
387
        $GLOBALS['_PAPYRUS_']['applette']['applet_arguments'],
388
        PREG_SET_ORDER);
5 jpm 389
    // Si on trouve au moins une balise, on lance la boucle pour les remplacer
169 jpm 390
    for ($j = 0; $j <= ($GLOBALS['_PAPYRUS_']['applette']['nbr_balise'] - 1); $j++) {
5 jpm 391
        // Nous vérifions que le nom de la fonction principale de l'applette existe.
290 jpm 392
        if (function_exists($GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction)) {
184 jpm 393
            // Nous comptabilisons le nombre d'utilisation des applettes dans un squelette:
290 jpm 394
            if (!isset($GLOBALS['_PAPYRUS_']['applette']['comptage'][$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction])) {
395
                $GLOBALS['_PAPYRUS_']['applette']['comptage'][$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction] = 1;
184 jpm 396
            } else {
290 jpm 397
                $GLOBALS['_PAPYRUS_']['applette']['comptage'][$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction]++;
184 jpm 398
            }
169 jpm 399
            $GLOBALS['_PAPYRUS_']['applette']['contenu_applette'] =
290 jpm 400
                call_user_func( $GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction,
184 jpm 401
                                    $GLOBALS['_PAPYRUS_']['applette']['applet_arguments'][$j],
290 jpm 402
                                    $GLOBALS['_GEN_commun']);
5 jpm 403
        } else {
169 jpm 404
            $GLOBALS['_PAPYRUS_']['applette']['contenu_applette'] =
290 jpm 405
                '<!-- '."\n".
406
                $GLOBALS['_PAPYRUS_']['applette']['applet_arguments'][$j][1].' : '.
407
                'fonction de l\'applette "'.$GLOBALS['_GEN_commun']['info_applette'][$i]->gap_nom.'" introuvable! '."\n".
408
                'Fonction : '.$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction."\n".
409
                ' -->';
5 jpm 410
        }
411
        // Remplacement des balises d'applette de Génésia dans le squelette
169 jpm 412
        $GLOBALS['_PAPYRUS_']['general']['contenu_squelette'] =
290 jpm 413
            str_replace(   '<!-- '.$GLOBALS['_GEN_commun']['balise_prefixe'].$GLOBALS['_PAPYRUS_']['applette']['applet_arguments'][$j][1].' -->',
414
                $GLOBALS['_PAPYRUS_']['applette']['contenu_applette'],
415
                $GLOBALS['_PAPYRUS_']['general']['contenu_squelette']);
5 jpm 416
    }
417
}
418
 
530 ddelon 419
 
420
 
5 jpm 421
// +------------------------------------------------------------------------------------------------------+
530 ddelon 422
// Gestion des appels des fonctions d'applettes des applications clientes de papyrus
423
 
424
$GLOBALS['_GEN_commun']['balise_prefixe_client'] = 'CLIENT_';
425
 
426
for ($i = 0; $i < count($GLOBALS['_GEN_commun']['info_applette']); $i++) {
427
    // Recherche du nombre de balise d'une applette donnée présentes dans le squelette
428
    $GLOBALS['_PAPYRUS_']['applette']['nbr_balise'] = preg_match_all(
429
        '/<!-- '.$GLOBALS['_GEN_commun']['balise_prefixe_client'].'('.$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_balise.') -->/',
430
        $GLOBALS['_PAPYRUS_']['general']['contenu_squelette'],
431
        $GLOBALS['_PAPYRUS_']['applette']['applet_arguments'],
432
        PREG_SET_ORDER);
433
    // Si on trouve au moins une balise, on lance la boucle pour les remplacer
434
    for ($j = 0; $j <= ($GLOBALS['_PAPYRUS_']['applette']['nbr_balise'] - 1); $j++) {
435
        // Nous vérifions que le nom de la fonction principale de l'applette existe.
436
        if (function_exists($GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction)) {
437
            // Nous comptabilisons le nombre d'utilisation des applettes dans un squelette:
438
            if (!isset($GLOBALS['_PAPYRUS_']['applette']['comptage'][$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction])) {
439
                $GLOBALS['_PAPYRUS_']['applette']['comptage'][$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction] = 1;
440
            } else {
441
                $GLOBALS['_PAPYRUS_']['applette']['comptage'][$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction]++;
442
            }
443
            $GLOBALS['_PAPYRUS_']['applette']['contenu_applette'] =
444
                call_user_func( $GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction,
445
                                    $GLOBALS['_PAPYRUS_']['applette']['applet_arguments'][$j],
446
                                    $GLOBALS['_GEN_commun']);
447
        } else {
448
            $GLOBALS['_PAPYRUS_']['applette']['contenu_applette'] =
449
                '<!-- '."\n".
450
                $GLOBALS['_PAPYRUS_']['applette']['applet_arguments'][$j][1].' : '.
451
                'fonction de l\'applette "'.$GLOBALS['_GEN_commun']['info_applette'][$i]->gap_nom.'" introuvable! '."\n".
452
                'Fonction : '.$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction."\n".
453
                ' -->';
454
        }
455
        // Remplacement des balises d'applette de Génésia dans le squelette
456
        $GLOBALS['_PAPYRUS_']['general']['contenu_squelette'] =
457
            str_replace(   '<!-- '.$GLOBALS['_GEN_commun']['balise_prefixe_client'].$GLOBALS['_PAPYRUS_']['applette']['applet_arguments'][$j][1].' -->',
458
                $GLOBALS['_PAPYRUS_']['applette']['contenu_applette'],
459
                $GLOBALS['_PAPYRUS_']['general']['contenu_squelette']);
460
    }
461
}
462
 
463
// +------------------------------------------------------------------------------------------------------+
159 jpm 464
// Continuation recherche d'info provenant de Papyrus pour la complétion du squelette
5 jpm 465
 
466
// Une fois l'application appelé est executé nous affichons le contenu de l'entête qui a pu
467
// être modifié par l'application.
169 jpm 468
$GLOBALS['_PAPYRUS_']['rendu']['META_HTTP_EQUIV'] = GEN_afficherMeta('http-equiv');
469
$GLOBALS['_PAPYRUS_']['rendu']['META_NAME'] = GEN_afficherMeta('name');
470
$GLOBALS['_PAPYRUS_']['rendu']['META_NAME_DC'] = GEN_afficherMeta('dc');
5 jpm 471
// Nous récupérons tout les styles CSS pour l'afficher dans l'entête de la page.
169 jpm 472
$GLOBALS['_PAPYRUS_']['rendu']['STYLES'] = GEN_afficherStyle();
5 jpm 473
// Nous récupérons tout le Javascript pour l'afficher dans l'entête de la page.
169 jpm 474
$GLOBALS['_PAPYRUS_']['rendu']['SCRIPTS'] = GEN_afficherScript();
5 jpm 475
 
476
// +------------------------------------------------------------------------------------------------------+
159 jpm 477
// Remplacement des balises Papyrus dans le squelette
169 jpm 478
foreach ($GLOBALS['_PAPYRUS_']['rendu'] as $GLOBALS['_PAPYRUS_']['tmp']['cle'] => $GLOBALS['_PAPYRUS_']['tmp']['val']) {
479
    $GLOBALS['_PAPYRUS_']['general']['contenu_squelette'] =
480
                    str_replace(   '<!-- '.$_GEN_commun['balise_prefixe'].$GLOBALS['_PAPYRUS_']['tmp']['cle'].' -->',
481
                                    $GLOBALS['_PAPYRUS_']['tmp']['val'],
482
                                    $GLOBALS['_PAPYRUS_']['general']['contenu_squelette']);
483
}
352 jpm 484
// +------------------------------------------------------------------------------------------------------+
485
// Remplacement des actions Papyrus dans le squelette
486
// Création d'un objet Text_Papyrus :
487
$papyrus =& new Text_Papyrus();
488
// Pour éviter de remplacer les caractères spéciaux du XHTML:
489
$papyrus->setFormatConf('Xhtml', 'translate', false);
490
// Pour indiquer le jeu de caractères (encodage) de la page courante :
491
$papyrus->setRenderConf('Xhtml', 'inclure', 'encodage', $GLOBALS['_PAPYRUS_']['page']['jeu_de_caracteres']);
492
// Pour indiquer les infos sur les pages des sites à intégrer :
493
$papyrus->setRenderConf('Xhtml', 'inclure', 'sites', $GLOBALS['_PAPYRUS_']['inclure_sites']);
494
// Application des règles de Papyrus :
495
$GLOBALS['_PAPYRUS_']['general']['contenu_squelette'] = $papyrus->transform($GLOBALS['_PAPYRUS_']['general']['contenu_squelette'], 'Xhtml');
5 jpm 496
 
497
// +------------------------------------------------------------------------------------------------------+
498
// Stokage du squelette dans un variable globale aprés avoir remplacer les balises Papyrus.
352 jpm 499
$GLOBALS['_GEN_commun']['sortie'] = $GLOBALS['_PAPYRUS_']['general']['contenu_squelette'];
5 jpm 500
 
501
/* +--Fin du code ---------------------------------------------------------------------------------------+
502
*
503
* $Log: not supported by cvs2svn $
530 ddelon 504
* Revision 1.18  2005/09/22 14:02:49  ddelon
505
* nettoyage annuaire et php5
506
*
448 ddelon 507
* Revision 1.17  2005/09/20 17:01:22  ddelon
508
* php5 et bugs divers
509
*
443 ddelon 510
* Revision 1.16  2005/07/12 09:13:15  alexandre_tb
511
* déplacement de l'appel de la fonction afficherContenuMenu APRES l'appel de afficherContenuCorps.
512
* Le menu d'une application étant calculé après les opérations de l'application.
513
*
414 alexandre_ 514
* Revision 1.15  2005/07/08 21:13:15  ddelon
515
* Gestion indentation menu
516
*
409 ddelon 517
* Revision 1.14  2005/05/11 14:31:45  jpm
518
* Ajout de la fonction afficherContenuMenu() pour les applications.
519
*
365 jpm 520
* Revision 1.13  2005/04/21 16:46:39  jpm
521
* Gestion via Papyrus du XHTML de Text_Wiki_Papyrus.
522
*
352 jpm 523
* Revision 1.12  2005/03/02 11:04:36  jpm
524
* Modification de l'utilisation d'une variable globale.
525
*
290 jpm 526
* Revision 1.11  2005/02/28 11:20:42  jpm
527
* Modification des auteurs.
528
*
286 jpm 529
* Revision 1.10  2005/01/26 16:20:46  jpm
530
* Correction bogue meta : auteurs et mots-clés mélangés.
531
*
252 jpm 532
* Revision 1.9  2004/12/06 19:39:40  jpm
533
* Correction langue DC.
534
*
213 jpm 535
* Revision 1.8  2004/11/26 19:02:07  jpm
536
* Comptabilisation du nombre d'appel de chaque applette dans le squelette.
537
*
184 jpm 538
* Revision 1.7  2004/11/24 18:33:29  jpm
539
* Encapsulation des variables dans le tableau global _PAPYRUS_.
540
*
169 jpm 541
* Revision 1.6  2004/11/15 17:40:21  jpm
542
* Gestion d'un espace de nom pour les balises Papyrus.
543
*
159 jpm 544
* Revision 1.5  2004/10/26 18:42:54  jpm
545
* Gestion de la fonction de navigation pour les appli Papyrus.
546
*
118 jpm 547
* Revision 1.4  2004/10/25 16:28:47  jpm
548
* Ajout de nouvelles balises Papyrus, ajout vérification mise à jour de Papyrus, meilleure gestion des sessions...
549
*
112 jpm 550
* Revision 1.3  2004/10/22 17:23:35  jpm
551
* Amélioration de la gestion de l'erreur si pas d'appli.
552
*
92 jpm 553
* Revision 1.2  2004/06/17 08:04:44  jpm
554
* Changement de constante pour les chemin d'accès à la biblio de code de Papyrus.
555
*
14 jpm 556
* Revision 1.1  2004/06/16 08:13:58  jpm
557
* Changement de nom de Génésia en Papyrus.
558
* Changement de l'arborescence.
559
*
5 jpm 560
* Revision 1.32  2004/05/10 12:24:55  jpm
561
* Amélioration de la recherche des fichiers de squelette.
562
*
563
* Revision 1.31  2004/05/05 10:42:35  jpm
564
* Amélioration de la gestion de l'internationalisation.
565
*
566
* Revision 1.30  2004/05/05 08:25:37  jpm
567
* Modification de la façon d'ajouter la feuille de style de débogage pour qu'elle soit prise en compte par défaut.
568
*
569
* Revision 1.29  2004/05/03 14:12:04  jpm
570
* Suppression du fichier bibliothèquie de fonctions sur gen_menu.
571
*
572
* Revision 1.28  2004/05/03 11:21:58  jpm
573
* Fin de la gestion des applettes et suppression de l'info_menu_hierarchie de _GEN_commun.
574
*
575
* Revision 1.27  2004/05/01 17:22:55  jpm
576
* Appel de la bibliothèque de fonctions concernant les menus.
577
*
578
* Revision 1.26  2004/05/01 16:19:36  jpm
579
* Suppression du code ayant pu être transformé en applettes (menu multi-niveaux, menu unique, menu commun, identification, sélecteur de sites).
580
*
581
* Revision 1.25  2004/05/01 11:39:38  jpm
582
* Déplacement du code gérant les applettes et du code de récupération du contenu du fichier squelette.
583
*
584
* Revision 1.24  2004/04/28 12:04:31  jpm
585
* Changement du modèle de la base de données.
586
*
587
* Revision 1.23  2004/04/22 08:30:47  jpm
588
* Transformation de $GS_GLOBAL en $_GEN_commun.
589
*
590
* Revision 1.22  2004/04/21 07:55:02  jpm
591
* Ajout de la feuille de style de débogage si le débogage de Génésia est activé.
592
*
593
* Revision 1.19  2004/04/09 16:20:54  jpm
594
* Extraction de la gestion du cache et de l'envoi.
595
* Gestion des tables i18n.
596
*
597
* Revision 1.18  2004/04/08 12:29:48  jpm
598
* Début amélioration de la gestion du cache et de la compression des pages de Génésia.
599
*
600
* Revision 1.17  2004/04/05 16:38:04  jpm
601
* Utilisation des nouvelles fonctions gérant l'insertion du Javascript.
602
*
603
* Revision 1.16  2004/04/02 16:30:56  jpm
604
* Gestion de la balise Génésia IDENTIFICATION permettant l'envoie d'un formulaire de login.
605
*
606
* Revision 1.15  2004/04/01 11:27:13  jpm
607
* Ajout et modification de commentaires pour PhpDocumentor.
608
*
609
* Revision 1.14  2004/03/31 16:50:10  jpm
610
* Prise en compte du nouveau modèle de Génésia révision 1.9.
611
*
612
* Revision 1.13  2004/03/27 11:07:45  jpm
613
* Modification des commentaires vis à vis du nouveau modèle.
614
* Mise en conformité avec la convention de codage.
615
* Amélioration du code.
616
*
617
* Revision 1.12  2004/03/23 17:06:44  jpm
618
* Ajout de commentaire dans l'entête.
619
* Mise en conformité avec la convention de codage.
620
*
621
* +-- Fin du code ----------------------------------------------------------------------------------------+
622
*/
623
?>