Subversion Repositories Applications.framework

Rev

Rev 232 | Rev 241 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 232 Rev 237
Line 9... Line 9...
9
 * @package	Framework
9
 * @package	Framework
10
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
10
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
11
 * @copyright	Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
11
 * @copyright	Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
12
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
12
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
13
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2 
13
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2 
14
 * @version	$Id: Debug.php 232 2010-11-19 17:12:58Z jpm $
14
 * @version	$Id: Debug.php 237 2010-11-23 18:00:15Z jpm $
15
 * @link		/doc/framework/
15
 * @link		/doc/framework/
16
 */
16
 */
17
class Debug {
17
class Debug {
18
 
18
	   
-
 
19
	/** Paramètrer le fichier de config avec "php:Debug::MODE_ECHO" : les messages sont affichés en utilisant echo au moment 
-
 
20
	 * où ils sont déclenchés dans le code.*/
19
	const MODE_ECHO = 'echo';
21
	const MODE_ECHO = 'echo';
-
 
22
	
-
 
23
	/** Paramètrer le fichier de config avec "php:Debug::MODE_NOTICE" : les message sont stockés par le gestionnaire 
-
 
24
	* d'exception sous forme d'erreur de type E_USER_NOTICE et sont renvoyés sur la sortie standard à la fin de l'execution 
-
 
25
	* du programme (via echo).*/
20
	const MODE_NOTICE = 'e_user_notice';
26
	const MODE_NOTICE = 'e_user_notice';
Line -... Line 27...
-
 
27
	
-
 
28
	/** Paramètrer le fichier de config avec "php:Debug::MODE_ENTETE_HTTP" : les message sont stockés par le gestionnaire 
-
 
29
	 * d'exception sous forme d'erreur de type E_USER_NOTICE et sont renvoyés dans un entête HTTP (X_REST_DEBOGAGE_MESSAGES) 
-
 
30
	 * à la fin de l'execution du programme.
-
 
31
	 * Surtout utile pour le Serveur REST. */
21
	
32
	const MODE_ENTETE_HTTP = 'entete_http';
22
	/**
33
	
23
	 * mode de php (cli ou sapi)
-
 
24
	 */
34
	/** Mode de php (cli ou sapi) */
25
	protected static $mode = null;
35
	protected static $mode = null;
-
 
36
	
-
 
37
	/** Tableau des noms des paramètres à définir dans le fichier de config car obligatoirement nécessaire à cette classe.*/
-
 
38
	private static $parametres_obligatoires = array('fw_debogage', 'fw_debogage_mode');
26
 
39
	
27
	/**
40
	/**
28
	 * Accesseur pour le mode
41
	 * Accesseur pour le mode
29
	 * @return string le mode de php
42
	 * @return string le mode de php
30
	 */
43
	 */
Line 122... Line 135...
122
	 * @param string  $sortie le chaine de debogage
135
	 * @param string  $sortie le chaine de debogage
123
	 * @param boolean $echo faire un echo du resultat ou non
136
	 * @param boolean $echo faire un echo du resultat ou non
124
	 * @return string la chaine de debogage formatée ou bien null si echo
137
	 * @return string la chaine de debogage formatée ou bien null si echo
125
	 */
138
	 */
126
	private static function traiterDebogage($mot_cle, $sortie, $echo) {
139
	private static function traiterDebogage($mot_cle, $sortie, $echo) {
-
 
140
		self::verifierParametresConfig(self::$parametres_obligatoires);
-
 
141
		$debogage = Config::get('fw_debogage');
127
		// Formate le mot-clé
142
		$mode = Config::get('fw_debogage_mode');
-
 
143
		
128
		$mot_cle = self::formaterMotCle($mot_cle);
144
		$mot_cle = self::formaterMotCle($mot_cle);
129
 
-
 
130
		// Traitement de la sortie
-
 
131
		$sortie = self::traiterSortieSuivantMode($mot_cle, $sortie);
145
		$sortie = self::traiterSortieSuivantMode($mot_cle, $sortie);
Line 132... Line 146...
132
 
146
 
133
		// Affichage et/ou retour
-
 
134
		self::verifierParametresConfig();
147
		// Affichage et/ou retour
135
		if (Config::get('fw_debogage') == true) {
148
		if ($debogage == true) {
136
			if ($echo === true || Config::get('fw_debogage_mode') == self::MODE_ECHO) {
149
			if ($echo === true || $mode == self::MODE_ECHO) {
137
				echo $sortie;
150
				echo $sortie;
138
				return null;
151
				return null;
139
			} else if (Config::get('fw_debogage_mode') == self::MODE_NOTICE) {
152
			} else if ($mode == self::MODE_NOTICE || $mode == self::MODE_ENTETE_HTTP) {
140
				trigger_error($sortie, E_USER_NOTICE);
153
				trigger_error($sortie, E_USER_NOTICE);
141
				return null; 
154
				return null; 
142
			} else {
155
			} else {
143
				return $sortie;
156
				return $sortie;
Line 171... Line 184...
171
	}
184
	}
Line 172... Line 185...
172
	
185
	
173
	/**
186
	/**
174
	 * Vérifie que tous les paramêtres de config nécessaires au fonctionnement de cette classe existe dans les fichiers
187
	 * Vérifie que tous les paramêtres de config nécessaires au fonctionnement de cette classe existe dans les fichiers
-
 
188
	 * de configurations.
-
 
189
	 * 
-
 
190
	 * @param array $parametres talbeau des noms des paramètres de la config à verifier.
175
	 * de configurations.
191
	 * @return boolean true si tous les paramétres sont présents sinon false.
176
	 */
192
	 */
177
	private static function verifierParametresConfig() {
193
	public static function verifierParametresConfig(Array $parametres) {
178
		$ok = true;
-
 
179
		$parametres = array('fw_debogage', 'fw_debogage_mode');
194
		$ok = true;
180
		foreach ($parametres as $param) {
195
		foreach ($parametres as $param) {
181
			if (is_null(Config::get($param))) {
196
			if (is_null(Config::get($param))) {
182
				$classe = get_class();
197
				$classe = get_class();
183
				$m = "L'utilisation de la classe $classe nécessite de définir '$param' dans un fichier de configuration.";
198
				$m = "L'utilisation de la classe $classe nécessite de définir '$param' dans un fichier de configuration.";
184
				trigger_error($m, E_USER_WARNING);
199
				trigger_error($m, E_USER_ERROR);
185
				$ok = false;
200
				$ok = false;
186
			}
201
			}
187
		}
202
		}
188
		return $ok;
203
		return $ok;