Subversion Repositories Applications.framework

Rev

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

Rev 80 Rev 105
Line 1... Line 1...
1
<?php
1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */ 
2
// declare(encoding='UTF-8');
3
// +------------------------------------------------------------------------------------------------------+
-
 
4
// | PHP version 5.0.4                                                                                    |
-
 
5
// +------------------------------------------------------------------------------------------------------+
-
 
6
// | Copyright (C) 2005 Tela Botanica (accueil@tela-botanica.org)                                         |
-
 
7
// +------------------------------------------------------------------------------------------------------+
-
 
8
// | This file is part of eFlore-Debogage.                                                                |
-
 
9
// |                                                                                                      |
-
 
10
// | Foobar is free software; you can redistribute it and/or modify                                       |
-
 
11
// | it under the terms of the GNU General Public License as published by                                 |
-
 
12
// | the Free Software Foundation; either version 2 of the License, or                                    |
-
 
13
// | (at your option) any later version.                                                                  |
-
 
14
// |                                                                                                      |
-
 
15
// | Foobar is distributed in the hope that it will be useful,                                            |
-
 
16
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
-
 
17
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                        |
-
 
18
// | GNU General Public License for more details.                                                         |
-
 
19
// |                                                                                                      |
-
 
20
// | You should have received a copy of the GNU General Public License                                    |
-
 
21
// | along with Foobar; if not, write to the Free Software                                                |
-
 
22
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
-
 
23
// +------------------------------------------------------------------------------------------------------+
-
 
24
// CVS : $Id: GestionnaireErreur.php 80 2009-08-27 07:30:42Z jpm $
-
 
25
/**
3
/**
26
* Classe de gestion des erreurs.
4
* classe de gestion des erreurs.
-
 
5
* 
-
 
6
* PHP Version 5 
27
*
7
* 
-
 
8
* @category  Class
-
 
9
* @package   Framework
-
 
10
* @author    Jean-Pascal Milcent <jpm@tela-botanica.org>
-
 
11
* @copyright 2009 Tela-Botanica
-
 
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  
-
 
14
* @version   SVN: $$Id: GestionnaireErreur.php 105 2009-08-31 15:25:05Z aurelien $$ 
-
 
15
* @link      /doc/framework/ 
28
* 
16
* 
29
*
-
 
30
*@package eFlore
-
 
31
*@subpackage Debogage
-
 
32
//Auteur original :
-
 
33
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
-
 
34
//Autres auteurs :
-
 
35
*@author        aucun
-
 
36
*@copyright     Tela-Botanica 2000-2005
-
 
37
*@version       $Revision: 80 $ $Date: 2009-08-27 09:30:42 +0200 (Thu, 27 Aug 2009) $
-
 
38
// +------------------------------------------------------------------------------------------------------+
-
 
39
*/
17
*/
40
 
-
 
41
// +------------------------------------------------------------------------------------------------------+
-
 
42
// |                                            ENTETE du PROGRAMME                                       |
-
 
43
// +------------------------------------------------------------------------------------------------------+
-
 
44
 
-
 
45
 
-
 
46
// +------------------------------------------------------------------------------------------------------+
-
 
47
// |                                            CORPS du PROGRAMME                                        |
-
 
48
// +------------------------------------------------------------------------------------------------------+
-
 
49
 
-
 
50
 
-
 
51
/**
-
 
52
 * Classe GestionnaireErreur
-
 
53
 * 
-
 
54
 * Gérer les erreurs PHP et SQL.
-
 
55
 */
-
 
56
class GestionnaireErreur
18
class GestionnaireErreur
57
{
19
{
58
	/*** Attributes: ***/
20
	/*** Attributs: ***/
Line 59... Line 21...
59
 
21
 
60
	/**
22
	/**
61
	 * Permet de savoir si on utilise PHP en ligne de commande dans une console (PHP-CLI) ou en mode module de serveur.
23
	 * Permet de savoir si on utilise PHP en ligne de commande dans une console (PHP-CLI) ou en mode module de serveur.
62
	 * @access private
24
	 * @access private
Line 68... Line 30...
68
	 * @access private
30
	 * @access private
69
	 */
31
	 */
70
	private $erreurs;
32
	private $erreurs;
Line 71... Line 33...
71
 
33
 
72
	/**
34
	/**
73
	 * Permet de savoir si on veut faire apparaître ou pas le contexte de l'erreur,
35
	 * Permet de savoir si on veut faire apparaître ou pas le contexte de l'erreur,
74
	 * c'est à dire le contenu des variables.
36
	 * c'est à dire le contenu des variables.
75
	 * @access private
37
	 * @access private
76
	 */
38
	 */
Line 77... Line 39...
77
	private $contexte;
39
	private $contexte;
78
	
40
	
79
	/**
41
	/**
80
	 * Contient le niveau d'erreur courant. Celui que l'on donne à la fonction
42
	 * Contient le niveau d'erreur courant. Celui que l'on donne à la fonction
81
	 * error_reporting().
43
	 * error_reporting().
82
	 * @access private
44
	 * @access private
Line 104... Line 66...
104
		$this->niveau_erreur_courant = 2048 ;
66
		$this->niveau_erreur_courant = 2048 ;
105
		set_error_handler(array(&$this, 'gererErreur'));
67
		set_error_handler(array(&$this, 'gererErreur'));
106
	}
68
	}
Line 107... Line 69...
107
	
69
	
108
	/**
70
	/**
109
	 * Fonction d'accès au singleton
71
	 * Fonction d'accès au singleton
110
	 * @return GestionnaireErreur le gestionnaire d'erreurs courant
72
	 * @return GestionnaireErreur le gestionnaire d'erreurs courant
111
	 */
73
	 */
112
	public static function getInstance()
74
	public static function getInstance()
113
	{
75
	{
Line 118... Line 80...
118
	    return self::$gestionnaire_erreurs;
80
	    return self::$gestionnaire_erreurs;
119
	}
81
	}
Line 120... Line 82...
120
	
82
	
121
	/*** Accesseurs: ***/
83
	/*** Accesseurs: ***/
122
	/**
84
	/**
123
	 * Récupère le tableau des erreurs.
85
	 * Récupère le tableau des erreurs.
124
	 *
86
	 *
125
	 * @return array
87
	 * @return array
126
	 * @access public
88
	 * @access public
127
	 */
89
	 */
128
	public function getErreur( ) {
90
	public function getErreur( ) {
129
		return $this->erreurs;
91
		return $this->erreurs;
Line 130... Line 92...
130
	}
92
	}
131
 
93
 
132
	/**
94
	/**
133
	 * Ajoute une erreur à la liste.
95
	 * Ajoute une erreur à la liste.
134
	 *
96
	 *
135
	 * @param array une_erreur 	 
97
	 * @param array une_erreur 	 
136
	 * @return void
98
	 * @return void
137
	 * @access public
99
	 * @access public
138
	 */
100
	 */
139
	public function setErreur( $une_erreur ) {
101
	public function setErreur( $une_erreur ) {
Line 140... Line 102...
140
		$this->erreurs[] = $une_erreur;
102
		$this->erreurs[] = $une_erreur;
141
	}
103
	}
142
 
104
 
143
	/**
105
	/**
144
	 * Récupère la valeur du contexte.
106
	 * Récupère la valeur du contexte.
145
	 *
107
	 *
146
	 * @return boolean
108
	 * @return boolean
147
	 * @access public
109
	 * @access public
148
	 */
110
	 */
Line 149... Line 111...
149
	public function getContexte( ) {
111
	public function getContexte( ) {
150
		return $this->contexte;
112
		return $this->contexte;
151
	}
113
	}
152
 
114
 
153
	/**
115
	/**
154
	 * Définit si oui ou non le contexte sera affiché.
116
	 * Définit si oui ou non le contexte sera affiché.
155
	 *
117
	 *
156
	 * @param boolean un_contexte
118
	 * @param boolean un_contexte
157
	 * @return  void
119
	 * @return  void
158
	 * @access public
120
	 * @access public
Line 159... Line 121...
159
	 */
121
	 */
160
	public function setContexte( $un_contexte ) {
122
	public function setContexte( $un_contexte ) {
161
		$this->contexte = $un_contexte;
123
		$this->contexte = $un_contexte;
162
	}
124
	}
163
	
125
	
164
	/**
126
	/**
165
	 * Récupère le niveau d'erreur courrant.
127
	 * Récupère le niveau d'erreur courrant.
166
	 *
128
	 *
167
	 * @return int le niveau d'erreur courrant.
129
	 * @return int le niveau d'erreur courrant.
Line 168... Line 130...
168
	 * @access public
130
	 * @access public
169
	 */
131
	 */
170
	public function getNiveauErreurCourant( ) {
132
	public function getNiveauErreurCourant( ) {
171
		return (int)$this->niveau_erreur_courant;
133
		return (int)$this->niveau_erreur_courant;
172
	}
134
	}
173
 
135
 
174
	/**
136
	/**
175
	 * Définit le niveau d'erreur courrant.
137
	 * Définit le niveau d'erreur courrant.
176
	 *
138
	 *
177
	 * @param int un niveau d'erreur.
139
	 * @param int un niveau d'erreur.
Line 178... Line 140...
178
	 * @return void
140
	 * @return void
179
	 * @access public
141
	 * @access public
180
	 */
142
	 */
181
	public function setNiveauErreurCourant( $niveau = 2048 ) {
143
	public function setNiveauErreurCourant( $niveau = 2048 ) {
182
		$this->niveau_erreur_courant = $niveau;
144
		$this->niveau_erreur_courant = $niveau;
183
	}
145
	}
184
	
146
	
185
	/**
147
	/**
186
	 * Définit le niveau d'erreur courrant (synonyme fonction precedente)
148
	 * Définit le niveau d'erreur courrant (synonyme fonction precedente)
187
	 *
149
	 *
Line 188... Line 150...
188
	 * @param int un niveau d'erreur.
150
	 * @param int un niveau d'erreur.
Line 189... Line 151...
189
	 * @return void
151
	 * @return void
190
	 * @access public
152
	 * @access public
191
	 */
153
	 */
192
	public function setActive ($niveau) {
154
	public function setActive ($niveau) {
Line 207... Line 169...
207
	 * @access public
169
	 * @access public
208
	 */
170
	 */
209
	public function gererErreur($niveau,  $message,  $fichier,  $ligne,  $contexte)
171
	public function gererErreur($niveau,  $message,  $fichier,  $ligne,  $contexte)
210
	{
172
	{
211
		$aso_erreur = array();
173
		$aso_erreur = array();
212
		// Nous vérifions si nous affichons ou pas l'erreur en fonction du niveau demandé
174
		// Nous vérifions si nous affichons ou pas l'erreur en fonction du niveau demandé
213
		if ( $niveau <= $this->getNiveauErreurCourant() ) {
175
		if ( $niveau <= $this->getNiveauErreurCourant() ) {
214
			$aso_erreur['niveau'] = $niveau;
176
			$aso_erreur['niveau'] = $niveau;
215
			switch ($niveau) {
177
			switch ($niveau) {
216
				case E_USER_NOTICE :
178
				case E_USER_NOTICE :
217
					if (is_array($message) || is_object($message)) {
179
					if (is_array($message) || is_object($message)) {
Line 232... Line 194...
232
			$this->setErreur($aso_erreur);
194
			$this->setErreur($aso_erreur);
233
		}
195
		}
Line 234... Line 196...
234
		
196
		
235
		echo print_r($this->erreurs,true) ;
197
		echo print_r($this->erreurs,true) ;
236
		exit() ;
198
		exit() ;
237
		// Si nous avons à faire à une erreur et non à un warning ou une notice, nous arrêtons l'exécution du script
199
		// Si nous avons affaire à une erreur et non à un warning ou une notice, nous arrêtons l'exécution du script
238
		switch ($niveau) {
200
		switch ($niveau) {
239
			case E_ERROR :
201
			case E_ERROR :
240
			case E_USER_ERROR :
202
			case E_USER_ERROR :
241
				die($this->retournerErreur());
203
				die($this->retournerErreur());
242
				break;
204
				break;
243
		}
205
		}
Line 244... Line 206...
244
	}
206
	}
245
 
207
 
246
	/**
208
	/**
247
	 * Retourne l'erreur PHP formatée en XHTML.
209
	 * Retourne l'erreur PHP formatée en XHTML.
248
	 *
210
	 *
249
	 * @return string
211
	 * @return string
250
	 * @access public
212
	 * @access public
Line 307... Line 269...
307
				
269
				
308
		return $retour;
270
		return $retour;
Line 309... Line 271...
309
	}
271
	}
310
 
272
 
311
	/**
273
	/**
312
	* Retourne l'erreur SQL formatée en XHTML.
274
	* Retourne l'erreur SQL formatée en XHTML.
313
	*
275
	*
314
	* @param string fichier
276
	* @param string fichier
315
	* @param int ligne
277
	* @param int ligne
Line 325... Line 287...
325
		$retour = '';
287
		$retour = '';
326
		switch (php_sapi_name()) {
288
		switch (php_sapi_name()) {
327
			case 'cli' :
289
			case 'cli' :
328
				$retour .= 'ERREUR SQL '."\n";
290
				$retour .= 'ERREUR SQL '."\n";
329
				$retour .= 'Fichier : '.$fichier."\n";
291
				$retour .= 'Fichier : '.$fichier."\n";
330
				$retour .= 'Méthode : '.$methode."\n";
292
				$retour .= 'Méthode : '.$methode."\n";
331
				$retour .= 'Message : '.$message."\n";
293
				$retour .= 'Message : '.$message."\n";
332
				if (!is_null($requete)) {
294
				if (!is_null($requete)) {
333
					$retour .= 'Requete : '."\n";
295
					$retour .= 'Requete : '."\n";
334
					$retour .= $requete."\n";
296
					$retour .= $requete."\n";
335
		    	}
297
		    	}
Line 345... Line 307...
345
				$retour .= '<h1 > ERREUR SQL </h1><br />'."\n";
307
				$retour .= '<h1 > ERREUR SQL </h1><br />'."\n";
346
				$retour .= '<dl>'."\n";
308
				$retour .= '<dl>'."\n";
347
				$retour .= '<dt> Fichier : </dt> ';
309
				$retour .= '<dt> Fichier : </dt> ';
348
				$retour .= '<dd> '.$fichier.'</dd>'."\n";
310
				$retour .= '<dd> '.$fichier.'</dd>'."\n";
Line 349... Line 311...
349
				
311
				
350
				$retour .= '<dt> Méthode : </dt> ';
312
				$retour .= '<dt> Méthode : </dt> ';
Line 351... Line 313...
351
				$retour .= '<dd> '.$methode.'</dd>'."\n";
313
				$retour .= '<dd> '.$methode.'</dd>'."\n";
352
				
314