Subversion Repositories Applications.framework

Rev

Rev 317 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
311 jpm 1
<?php
2
// declare(encoding='UTF-8');
3
/**
4
 * AppControleur est le controlleur principal de l'application.
5
 * Elle repartie les demandes utilisateurs dans les différents modules, executent les actions et redistribue le code
6
 * html dans les différentes fonctions d'affichage.
7
 * C'est une Singleton.
8
 *
9
 * @category	PHP 5.2
10
 * @package		exemple
11
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
12
 * @copyright	2010 Tela-Botanica
13
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
14
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
15
 * @version		$Id$
16
 */
17
 
18
class AppControleur extends Controleur {
325 jpm 19
 
20
	/**
21
 	* Instance de la classe pointant sur elle même (pour le pattern singleton)
22
 	*/
23
	private static $instance = null;
24
 
25
	/**
26
 	* Paramètres pour les collections
27
 	*/
28
	private static $parametres = array();
29
 
30
	/**
31
 	* Constructeur vide
32
 	*/
33
	public function __construct() {
34
		$sortie = array('titre' => '', 'description' => '', 'tags' => '',
35
			'corps' => '', 'tete' => '', 'pied' => '', 'navigation' => '');
36
		$url = new Url(Config::get('url_base_index'));
37
		self::$parametres = array(
38
			'module' => Config::get('module_defaut'),
39
			'action' => Config::get('action_defaut'),
40
			'sortie' => $sortie,
41
			'url' => $url);
42
		parent::__construct();
43
	}
44
 
45
	/**
46
 	* Initialisation du controleur principal en fonction des paramêtres de l'url.
47
 	*/
48
	public static function initialiser() {
49
		self::verifierCreationInstance();
50
		self::gererSession();
51
 
52
		if (isset($_GET['module'])) {
53
			self::$parametres['module'] = $_GET['module'];
54
		}
55
		if (isset($_GET['action'])) {
56
			self::$parametres['action'] = $_GET['action'];
57
		}
58
		self::$parametres['url']->setRequete(array('action' => self::$parametres['action'], 'module' => self::$parametres['module']));
59
 
60
		Registre::set('parametres', &self::$parametres);
61
 
62
		$ClasseModule = self::$parametres['module'];
63
		$action = self::$parametres['action'];
64
		$module = new $ClasseModule();
65
		$module->$action();
66
		self::fusionnerSortie($module->getSortie());
67
	}
68
 
69
	private static function gererSession() {
70
		if (Config::get('session_demarrage')) {
71
			// Attribution d'un nom à la session
72
			session_name(Config::get('session_nom'));
73
			// Démarrage de la session
74
			session_start();
75
		}
76
	}
77
 
78
	/**
79
 	* Fusionne un tableau de sortie par défaut avec le tableau renvoyé par l'action du module.
80
 	* @param array le tableau à fusionner
81
 	*/
82
	private static function fusionnerSortie($sortie) {
83
		self::$parametres['sortie'] = array_merge(self::$parametres['sortie'], $sortie);
84
	}
85
 
86
 
87
	/**
88
 	* Vérifie si l'instance de classe à été crée, si non la crée.
89
 	*/
90
	private static function verifierCreationInstance() {
91
		if (empty(self::$instance)) {
92
			self::$instance = new AppControleur();
93
		}
94
	}
95
 
96
	/**
97
 	* Retourne le titre du contenu de l'application.
98
 	*/
99
	public static function getMetaTitre() {
100
		$contenu = self::$parametres['sortie']['titre'];
101
		$sortie = self::convertirEncodage($contenu);
102
		return $sortie;
103
	}
104
 
105
	/**
106
 	* Retourne la description du contenu de l'application.
107
 	*/
108
	public static function getMetaDescription() {
109
		$contenu = self::$parametres['sortie']['description'];
110
		$sortie = self::convertirEncodage($contenu);
111
		return $sortie;
112
	}
113
 
114
	/**
115
 	* Retourne les mots-clés (tags) du contenu de l'application.
116
 	*/
117
	public static function getMetaTags() {
118
		$contenu = self::$parametres['sortie']['tags'];
119
		$sortie = self::convertirEncodage($contenu);
120
		return $sortie;
121
	}
122
 
123
	/**
124
 	* Retourne le contenu du corps de l'application.
125
 	*/
126
	public static function getContenuCorps() {
127
		$contenu = self::$parametres['sortie']['corps'];
128
		$sortie = self::convertirEncodage($contenu);
129
		return $sortie;
130
	}
131
 
132
	/**
133
 	* Retourne le contenu de la tête de l'application.
134
 	*/
135
	public static function getContenuTete() {
136
		$contenu = self::$parametres['sortie']['tete'];
137
		$sortie = self::convertirEncodage($contenu);
138
		return $sortie;
139
	}
140
 
141
	/**
142
 	* Retourne le contenu du pied de l'application.
143
 	*/
144
	public static function getContenuPied() {
145
		$contenu = self::$parametres['sortie']['pied'];
146
		$sortie = self::convertirEncodage($contenu);
147
		return $sortie;
148
	}
149
 
150
	/**
151
 	* Retourne les éléments de navigation de l'application.
152
 	*/
153
	public static function getContenuNavigation() {
154
		$contenu = self::$parametres['sortie']['navigation'];
155
		$sortie = self::convertirEncodage($contenu);
156
		return $sortie;
157
	}
158
 
159
	/**
160
 	* Retourne les chronos pris dans l'appli
161
 	*/
162
	public static function getChrono() {
163
		$sortie = '';
164
		if (Config::get('benchmark_chrono')) {
165
			$chrono = Chronometre::afficherChrono();
166
			$sortie = self::convertirEncodage($chrono);
167
		}
168
		return $sortie;
169
	}
170
 
171
	/**
172
	 * Retourne les messages d'exceptions et d'erreurs.
173
	 */
174
	public static function getExceptions() {
175
		$contenu = (Config::get('debogage')) ? GestionnaireException::getExceptions() : '';
176
		$sortie = self::convertirEncodage($contenu);
177
		return $sortie;
178
	}
179
 
180
	/**
181
	 * Convertion du contenu de l'application (voir fichier config.ini : appli_encodage),
182
	 * dans le format de sortie désiré (voir fichier config.ini : sortie_encodage).
183
	 * Cette convertion a lieu seulement si les formats sont différents.
184
	 */
185
	private static function convertirEncodage($contenu) {
186
		if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
187
			$contenu = mb_convert_encoding($contenu, Config::get('sortie_encodage'), Config::get('appli_encodage'));
188
		}
189
		return $contenu;
190
	}
311 jpm 191
}
192
?>