Subversion Repositories Applications.papyrus

Rev

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

Rev Author Line No. Line
1092 florian 1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 5.1                                                                                      |
5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 2006 Tela Botanica (accueil@tela-botanica.org)                                         |
7
// +------------------------------------------------------------------------------------------------------+
8
// | Ce logiciel est un programme informatique servant à gérer du contenu et des applications web.        |                                                                           |
9
// |                                                                                                      |
10
// | Ce logiciel est régi par la licence CeCILL soumise au droit français et respectant les principes de  |
11
// | diffusion des logiciels libres. Vous pouvez utiliser, modifier et/ou redistribuer ce programme sous  |
12
// | les conditions de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA sur le site    |
13
// | "http://www.cecill.info".                                                                            |
14
// |                                                                                                      |
15
// | En contrepartie de l'accessibilité au code source et des droits de copie, de modification et de      |
16
// | redistribution accordés par cette licence, il n'est offert aux utilisateurs qu'une garantie limitée. |
17
// | Pour les mêmes raisons, 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 associés au chargement, à       |
21
// | l'utilisation,  à la modification et/ou au développement et à la reproduction du logiciel par        |
22
// | l'utilisateur étant donné sa spécificité de logiciel libre, qui peut le rendre complexe à manipuler  |
23
// | et qui le réserve donc à des développeurs et des professionnels avertis possédant des connaissances  |
24
// | informatiques approfondies. Les utilisateurs sont donc invités à charger  et  tester  l'adéquation   |
25
// | du logiciel à leurs besoins dans des conditions permettant d'assurer la sécurité de leurs systèmes   |
26
// | et ou de leurs données et, plus généralement, à l'utiliser et l'exploiter dans les mêmes conditions  |
27
// | de sécurité.                                                                                         |
28
// |                                                                                                      |
29
// | Le fait que vous puissiez accéder à cet en-tête signifie que vous avez pris connaissance de la       |
30
// | licence CeCILL, et que vous en avez accepté les termes.                                              |
31
// +------------------------------------------------------------------------------------------------------+
1134 jp_milcent 32
// CVS : $Id: pap_rendu.class.php,v 1.5 2006-12-11 10:58:41 jp_milcent Exp $
1092 florian 33
/**
34
* Classe : pap_rendu
35
*
36
* Fournit des méthodes pour le rendu.
37
*
38
*@package Papyrus
39
*@subpackage Classes
40
//Auteur original :
41
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
42
//Autres auteurs :
43
*@author        Aucun
44
*@copyright     Tela-Botanica 2000-2006
1134 jp_milcent 45
*@version       $Revision: 1.5 $ $Date: 2006-12-11 10:58:41 $
1092 florian 46
// +------------------------------------------------------------------------------------------------------+
47
*/
48
 
49
// +------------------------------------------------------------------------------------------------------+
50
// |                                            ENTÊTE du PROGRAMME                                       |
51
// +------------------------------------------------------------------------------------------------------+
52
 
53
class Pap_Rendu {
54
 
55
    function pap_rendu()
56
    {
57
 
58
    }
59
 
60
	function parserBaliseApplette($contenu)
61
	{
62
		$noms_applettes = 'IDENTIFICATION|MENU|MOTEUR_RECHERCHE|SELECTEUR_SITES|VOUS_ETES_ICI';// Compatibilité ancienne syntaxe
63
		$GLOBALS['_PAPYRUS_']['applette']['nbr_balise'] = preg_match_all(
1119 jp_milcent 64
				'/\{\{(\w+) ?[^}]*\}\}|<!-- (?:'.$GLOBALS['_GEN_commun']['balise_prefixe'].'|'.$GLOBALS['_GEN_commun']['balise_prefixe_client'].')('.$noms_applettes.')[^ ]* -->/',
1092 florian 65
				$contenu,
66
				$tab_decoupage,
67
				PREG_SET_ORDER);
68
		for ($i = 0; $i < $GLOBALS['_PAPYRUS_']['applette']['nbr_balise']; $i++) {
69
			// Création du nom de l'applette.
70
			$applette_nom = '';
71
			if (!empty($tab_decoupage[$i][1])) {
1134 jp_milcent 72
				$applette_nom = $tab_decoupage[$i][1];
1092 florian 73
			} else if (!empty($tab_decoupage[$i][2])) {
1134 jp_milcent 74
				$applette_nom = $tab_decoupage[$i][2];
1092 florian 75
			}
1134 jp_milcent 76
			// Ajout d'underscore devant les majuscules composant un nom d'applette puis mise en minuscule.
77
			// Ex : MotCles devient mot_cles
78
			$applette_nom = strtolower(preg_replace('/([a-z0-9])([A-Z])/', '$1_$2', $applette_nom));
1092 florian 79
			if (!isset($GLOBALS['_PAPYRUS_']['info_applette'][$applette_nom])) {
80
				$GLOBALS['_PAPYRUS_']['info_applette'][$applette_nom]['nom'] = $applette_nom;
81
 
82
				// Recherche du fichier de l'applette
83
				if (file_exists(GEN_CHEMIN_APPLETTE.$applette_nom.GEN_SEP.$applette_nom.'.php')) {
84
					$GLOBALS['_PAPYRUS_']['info_applette'][$applette_nom]['chemin'] = GEN_CHEMIN_APPLETTE.$applette_nom.GEN_SEP.$applette_nom.'.php';
85
				} else if (file_exists(GEN_CHEMIN_CLIENT.$applette_nom.GEN_SEP.$applette_nom.'.php')) {
86
					$GLOBALS['_PAPYRUS_']['info_applette'][$applette_nom]['chemin'] = GEN_CHEMIN_CLIENT.$applette_nom.GEN_SEP.$applette_nom.'.php';
87
				} else {
88
					// On supprime l'applette de la liste
89
					unset($GLOBALS['_PAPYRUS_']['info_applette'][$applette_nom]);
90
			        // Ne devrait pas arréter le programme! Mais instancier le gestionnaire de déboguage.
1119 jp_milcent 91
			        $message = 	'ERREUR Papyrus : Impossible de trouver le fichier de l\'applette. <br />'.
92
			            		'Nom applette : '.$GLOBALS['_PAPYRUS_']['info_applette'][$applette_nom]['nom'].' <br />'.
93
			            		'Chemin fichier applette : '.$GLOBALS['_PAPYRUS_']['info_applette'][$applette_nom]['chemin'].' <br />'.
94
			            		'Ligne n° : '. __LINE__ .'<br />'.
95
			            		'Fichier : '. __FILE__ ;
1126 jp_milcent 96
					trigger_error($message, E_USER_ERROR);
1092 florian 97
			    }
98
 
99
				// Nous incluons l'applette
100
			    if (file_exists($GLOBALS['_PAPYRUS_']['info_applette'][$applette_nom]['chemin'])) {
101
			        include_once($GLOBALS['_PAPYRUS_']['info_applette'][$applette_nom]['chemin']);
102
			        // Nous récupérons l'expression régulière de la balise pour l'utiliser lors de l'appel
103
			        // de la fonction de l'applette. L'appel des fonctions des applettes à lieu aprés l'appel
104
			        // de l'application pour permettre à l'appli de modifier certains paramêtres (identification, ordre des menus).
105
			        $GLOBALS['_PAPYRUS_']['info_applette'][$applette_nom]['applette_balise'] = $GLOBALS['_GEN_commun']['info_applette_balise'];
106
			        $GLOBALS['_PAPYRUS_']['info_applette'][$applette_nom]['applette_fonction'] = $GLOBALS['_GEN_commun']['info_applette_nom_fonction'];
107
			    }
108
			}
109
			// Récupération des infos sur la balise courrante.
110
			if (preg_match(	'/'.$GLOBALS['_PAPYRUS_']['info_applette'][$applette_nom]['applette_balise'].'/', $tab_decoupage[$i][0], $applet_arguments)) {
111
				$GLOBALS['_PAPYRUS_']['info_applette'][$applette_nom]['balises'][] = $applet_arguments;
112
			} else {
113
				$GLOBALS['_PAPYRUS_']['info_applette'][$applette_nom]['balises'][] = array();
1119 jp_milcent 114
				$message = 	'ERREUR Papyrus : Impossible de récupérer les arguments de l\'applette. <br />'.
115
							'Nom applette : '.$GLOBALS['_PAPYRUS_']['info_applette'][$applette_nom]['nom'].' <br />'.
116
							'Chemin fichier applette : '.$GLOBALS['_PAPYRUS_']['info_applette'][$applette_nom]['chemin'].' <br />'.
117
							'Ligne n° : '. __LINE__ .'<br />'.
118
							'Fichier : '. __FILE__ .'<br />'.
119
							'<pre>'.print_r($tab_decoupage[$i][0], true).'</pre>'.
120
							'<pre>'.print_r('/'.$GLOBALS['_PAPYRUS_']['info_applette'][$applette_nom]['applette_balise'].'/', true).'</pre>';
1126 jp_milcent 121
				trigger_error($message, E_USER_ERROR);
1092 florian 122
			}
123
		}
124
	}
125
}
126
?>