Subversion Repositories Applications.framework

Rev

Rev 367 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 367 Rev 498
Line 9... Line 9...
9
 * @author		Aurélien PERONNET <aurelien@tela-botanica.org>
9
 * @author		Aurélien PERONNET <aurelien@tela-botanica.org>
10
 * @author		Jean-Pascal MILCENT <jmp@tela-botanica.org>
10
 * @author		Jean-Pascal MILCENT <jmp@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.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
12
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
13
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
13
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
14
 * @version	$Id: GestionnaireException.php 367 2011-10-03 12:40:48Z jpm $$
14
 * @version	$Id: GestionnaireException.php 498 2019-11-15 09:15:41Z killian $$
15
 * @link		/doc/framework/
15
 * @link		/doc/framework/
16
 *
16
 *
17
 */
17
 */
18
class GestionnaireException {
18
class GestionnaireException {
Line 43... Line 43...
43
		// Désactivation des balises HTML dans les messages d'erreur de PHP en mode ligne de commande
43
		// Désactivation des balises HTML dans les messages d'erreur de PHP en mode ligne de commande
44
		if (self::$mode == self::MODE_CLI) {
44
		if (self::$mode == self::MODE_CLI) {
45
			ini_set('html_errors', 0);
45
			ini_set('html_errors', 0);
46
		} 
46
		} 
Line 47... Line 47...
47
		
47
		
48
		set_exception_handler(array(get_class(),'gererException'));
48
		//set_exception_handler(array(get_class(),'gererException'));
49
		set_error_handler(array(get_class(),'gererErreur'));
49
		//set_error_handler(array(get_class(),'gererErreur'));
Line 50... Line 50...
50
	}
50
	}
51
	
51
	
52
	/** Configure le Gestionnaire d'exceptions et d'erreur à partir des paramêtres de config. */
52
	/** Configure le Gestionnaire d'exceptions et d'erreur à partir des paramêtres de config. */
Line 86... Line 86...
86
	/**
86
	/**
87
	 * Fonction de gestion des exceptions, remplace le handler par défaut.
87
	 * Fonction de gestion des exceptions, remplace le handler par défaut.
88
	 * Si une boucle génère de multiple exception (ou erreur) identique une seule sera stockée.
88
	 * Si une boucle génère de multiple exception (ou erreur) identique une seule sera stockée.
89
	 * @param Exception $e l'exception à traiter
89
	 * @param Exception $e l'exception à traiter
90
	 */
90
	 */
91
	public static function gererException(Exception $e) {
91
	public static function gererException(Throwable $e) {
92
		$cle = hash('md5', $e->getMessage().'-'.$e->getFile().'-'.$e->getLine());
92
		$cle = hash('md5', $e->getMessage().'-'.$e->getFile().'-'.$e->getLine());
93
		if (!isset(self::$exceptions[$cle])) {
93
		if (!isset(self::$exceptions[$cle])) {
94
			self::$exceptions[$cle] = $e;
94
			self::$exceptions[$cle] = $e;
95
			self::loggerException($e);
95
			self::loggerException($e);
96
		}
96
		}
Line 171... Line 171...
171
 
171
 
172
	/**
172
	/**
173
	 * Logue une exception donnée sous une forme lisible si self::logger vaut true.
173
	 * Logue une exception donnée sous une forme lisible si self::logger vaut true.
174
	 * @param Exception	$e l'exception à logger
174
	 * @param Exception	$e l'exception à logger
175
	 */
175
	 */
176
	private static function loggerException(Exception $e) {
176
	private static function loggerException(Throwable $e) {
177
		if (self::$logger) {
177
		if (self::$logger) {
178
			$message = self::formaterExceptionTxt($e);
178
			$message = self::formaterExceptionTxt($e);
179
			Log::ajouterEntree('erreurs', $message);
179
			Log::ajouterEntree('erreurs', $message);
180
		}
180
		}
Line 183... Line 183...
183
	/**
183
	/**
184
	 * Formate en texte une exception passée en paramètre.
184
	 * Formate en texte une exception passée en paramètre.
185
	 * @since 0.3
185
	 * @since 0.3
186
	 * @param Exception l'exception à formater.
186
	 * @param Exception l'exception à formater.
187
	 */
187
	 */
188
	public static function formaterExceptionDebug(Exception $e) {
188
	public static function formaterExceptionDebug(Throwable $e) {
189
		$txt = '';
189
		$txt = '';
190
		if ($e->getSeverity() == E_USER_NOTICE) {
190
		if ($e->getSeverity() == E_USER_NOTICE) {
191
			$txt = $e->getMessage();
191
			$txt = $e->getMessage();
192
		} else {
192
		} else {
193
			$txt = self::formaterExceptionTxt($e);
193
			$txt = self::formaterExceptionTxt($e);
Line 198... Line 198...
198
	/**
198
	/**
199
	 * Formate en texte une exception passée en paramètre.
199
	 * Formate en texte une exception passée en paramètre.
200
	 * @since 0.3
200
	 * @since 0.3
201
	 * @param Exception l'exception à formater.
201
	 * @param Exception l'exception à formater.
202
	 */
202
	 */
203
	public static function formaterExceptionTxt(Exception $e) {
203
	public static function formaterExceptionTxt(Throwable $e) {
204
		$message = '';
204
		$message = '';
205
		$message .= $e->getMessage()."\n";
205
		$message .= $e->getMessage()."\n";
206
		$message .= 'Fichier : '.$e->getFile()."\n";
206
		$message .= 'Fichier : '.$e->getFile()."\n";
207
		$message .= 'Ligne : '.$e->getLine()."\n";
207
		$message .= 'Ligne : '.$e->getLine()."\n";
208
		if (self::getContexte()) {
208
		if (self::getContexte()) {
Line 215... Line 215...
215
	/**
215
	/**
216
	 * Formate en (X)HTML une exception passée en paramètre.
216
	 * Formate en (X)HTML une exception passée en paramètre.
217
	 * @since 0.3
217
	 * @since 0.3
218
	 * @param Exception l'exception à formater.
218
	 * @param Exception l'exception à formater.
219
	 */
219
	 */
220
	public static function formaterExceptionXhtml(Exception $e) {
220
	public static function formaterExceptionXhtml(Throwable $e) {
221
		$message = '';
221
		$message = '';
222
		$message .= '<div class="debogage">'."\n";
222
		$message .= '<div class="debogage">'."\n";
223
		$message .= $e->getMessage()."\n";
223
		$message .= $e->getMessage()."\n";
224
		$message .= '<span class="debogage_fichier">'.'Fichier : '.$e->getFile().'</span>'."\n";
224
		$message .= '<span class="debogage_fichier">'.'Fichier : '.$e->getFile().'</span>'."\n";
225
		$message .= '<span class="debogage_ligne">'.'Ligne : '.$e->getLine().'</span>'."\n";
225
		$message .= '<span class="debogage_ligne">'.'Ligne : '.$e->getLine().'</span>'."\n";
Line 242... Line 242...
242
			echo self::getExceptionsFormatees();
242
			echo self::getExceptionsFormatees();
243
		}
243
		}
244
	}
244
	}
Line 245... Line 245...
245
 
245
 
246
}
-
 
247
?>
246
}
-
 
247
?>