Subversion Repositories Applications.gtt

Rev

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

Rev 10 Rev 48
Line 1... Line 1...
1
<?php
1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */ 
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
3
// +------------------------------------------------------------------------------------------------------+
3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 5.0.4                                                                                    |
4
// | PHP version 5.0.4                                                                                    |
5
// +------------------------------------------------------------------------------------------------------+
5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 2005 Tela Botanica (accueil@tela-botanica.org)                                         |
6
// | Copyright (C) 2005 Tela Botanica (accueil@tela-botanica.org)                                         |
7
// +------------------------------------------------------------------------------------------------------+
7
// +------------------------------------------------------------------------------------------------------+
Line 23... Line 23...
23
// +------------------------------------------------------------------------------------------------------+
23
// +------------------------------------------------------------------------------------------------------+
24
// CVS : $Id: GestionnaireErreur.class.php,v 1.1 2005/11/15 17:33:49 jp_milcent Exp $
24
// CVS : $Id: GestionnaireErreur.class.php,v 1.1 2005/11/15 17:33:49 jp_milcent Exp $
25
/**
25
/**
26
* Classe de gestion des erreurs.
26
* Classe de gestion des erreurs.
27
*
27
*
28
* 
28
*
29
*
29
*
30
*@package eFlore
30
*@package eFlore
31
*@subpackage Debogage
31
*@subpackage Debogage
32
//Auteur original :
32
//Auteur original :
33
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
33
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
Line 48... Line 48...
48
// +------------------------------------------------------------------------------------------------------+
48
// +------------------------------------------------------------------------------------------------------+
Line 49... Line 49...
49
 
49
 
50
 
50
 
51
/**
51
/**
52
 * Classe GestionnaireErreur
52
 * Classe GestionnaireErreur
53
 * 
53
 *
54
 * Gérer les erreurs PHP et SQL.
54
 * Gérer les erreurs PHP et SQL.
55
 */
-
 
56
class GestionnaireErreur
55
 */
Line 57... Line 56...
57
{
56
class GestionnaireErreur {
58
	/*** Attributes: ***/
57
	/*** Attributes: ***/
59
 
58
 
60
	/**
59
	/**
61
	 * Contient la liste des erreurs.
60
	* Contient la liste des erreurs.
Line 62... Line 61...
62
	 * @access private
61
	* @access private
63
	 */
62
	*/
64
	private $erreurs;
63
	private $erreurs;
65
 
64
 
66
	/**
65
	/**
67
	 * Permet de savoir si on veut faire apparaître ou pas le contexte de l'erreur,
66
	* Permet de savoir si on veut faire apparaître ou pas le contexte de l'erreur,
68
	 * c'est à dire le contenu des variables.
67
	* c'est à dire le contenu des variables.
69
	 * @access private
68
	* @access private
-
 
69
	*/
-
 
70
	private $contexte;
-
 
71
 
-
 
72
	/**
-
 
73
	* Permet de savoir si on veut faire apparaître ou pas les erreurs Pear.
-
 
74
	* @access private
-
 
75
	*/
-
 
76
	private $pear;
-
 
77
 
-
 
78
	/**
-
 
79
	* Chaine de caractères permettant d'identifier les erreurs de la bibliothèque Pear.
-
 
80
	* @access private
70
	 */
81
	*/
71
	private $contexte;
82
	private $pear_chaine;
72
	
83
 
73
	/**
84
	/**
74
	 * Contient le niveau d'erreur courrant. Celui que l'on donne à la fonction
85
	* Contient le niveau d'erreur courrant. Celui que l'on donne à la fonction
75
	 * error_reporting().
86
	* error_reporting().
76
	 * @access private
87
	* @access private
77
	 */
88
	*/
78
	private $niveau_erreur_courrant;
89
	private $niveau_erreur_courrant;
79
	
90
 
80
	/*** Constructeur: ***/
91
	/*** Constructeur: ***/
81
	
92
 
82
	/**
93
	/**
83
	 * Construit le gestionnaire d'erreur.
94
	* Construit le gestionnaire d'erreur.
84
	 *
95
	*
-
 
96
	* @return void
85
	 * @return void
97
	* @access public
86
	 * @access public
98
	*/
-
 
99
	public function __construct($bool_contexte = false, $int_niveau = 2048, $bool_pear = false, $str_pear = '')
-
 
100
	{
-
 
101
		$this->erreurs = array();
87
	 */
102
		$this->setContexte($bool_contexte);
88
	public function __construct( $contexte = FALSE ) {
103
		$this->setNiveauErreurCourrant($int_niveau);
89
		$this->erreurs = array();
104
		$this->setPear($bool_pear);
90
		$this->setContexte($contexte);
105
		$this->setPearChaine($str_pear);
91
		set_error_handler(array($this, 'gererErreur'));
106
		set_error_handler(array($this, 'gererErreur'));
92
	} // end of member function __construct
107
	} // end of member function __construct
93
	
108
 
94
	
109
 
95
	/*** Destructeur: ***/
110
	/*** Destructeur: ***/
96
	public function __destruct()
111
	public function __destruct()
97
	{
112
	{
98
		echo $this->retournerErreur();
113
		echo $this->retournerErreur();
99
	}
114
	}
100
		
115
 
101
	/*** Accesseurs: ***/
116
	/*** Accesseurs: ***/
102
	
117
 
103
	/**
118
	/**
104
	 * Récupère le tableau des erreurs.
119
	* Récupère le tableau des erreurs.
105
	 *
120
	*
-
 
121
	* @return array
106
	 * @return array
122
	* @access public
107
	 * @access public
123
	*/
Line 108... Line 124...
108
	 */
124
	public function getErreur()
109
	public function getErreur( ) {
125
	{
110
		return $this->erreurs;
126
		return $this->erreurs;
111
	}
127
	}
112
 
128
 
113
	/**
129
	/**
114
	 * Ajoute une erreur à la liste.
130
	* Ajoute une erreur à la liste.
115
	 *
131
	*
-
 
132
	* @param array une_erreur
116
	 * @param array une_erreur 	 
133
	* @return void
117
	 * @return void
134
	* @access public
118
	 * @access public
135
	*/
Line 119... Line 136...
119
	 */
136
	public function setErreur($une_erreur)
120
	public function setErreur( $une_erreur ) {
137
	{
121
		$tab_erreurs =& $this->getErreur();
138
		$tab_erreurs =& $this->getErreur();
122
		array_push($tab_erreurs, $une_erreur);
139
		array_push($tab_erreurs, $une_erreur);
123
	}
140
	}
124
 
141
 
125
	/**
142
	/**
-
 
143
	* Récupère la valeur du contexte.
126
	 * Récupère la valeur du contexte.
144
	*
127
	 *
145
	* @return boolean
Line 128... Line 146...
128
	 * @return boolean
146
	* @access public
129
	 * @access public
147
	*/
130
	 */
148
	public function getContexte()
131
	public function getContexte( ) {
149
	{
132
		return $this->contexte;
150
		return $this->contexte;
133
	}
151
	}
134
 
152
 
135
	/**
153
	/**
-
 
154
	* Définit si oui ou non le contexte sera affiché.
136
	 * Définit si oui ou non le contexte sera affiché.
155
	*
137
	 *
156
	* @param boolean un_contexte
138
	 * @param boolean un_contexte
157
	* @return  void
139
	 * @return  void
158
	* @access public
-
 
159
	*/
-
 
160
	public function setContexte( $un_contexte )
-
 
161
	{
-
 
162
		$this->contexte = $un_contexte;
-
 
163
	}
-
 
164
 
-
 
165
	/**
-
 
166
	* Récupère la valeur de l'attribut Pear.
-
 
167
	*
-
 
168
	* @return boolean true pour afficher les erreurs Pear sinon false.
-
 
169
	* @access public
-
 
170
	*/
-
 
171
	public function getPear()
-
 
172
	{
-
 
173
		return $this->pear;
-
 
174
	}
-
 
175
 
-
 
176
	/**
-
 
177
	* Définit si oui ou non les erreurs Pear seront affichées.
-
 
178
	*
-
 
179
	* @param boolean true pour afficher les erreurs Pear sinon false.
-
 
180
	* @return  void
-
 
181
	* @access public
-
 
182
	*/
-
 
183
	public function setPear( $p )
-
 
184
	{
-
 
185
		$this->pear = $p;
-
 
186
	}
-
 
187
 
-
 
188
	/**
-
 
189
	* Récupère la valeur de l'attribut pear_chaine.
-
 
190
	*
-
 
191
	* @return string la chaine de caractère identifiant les erreurs Pear.
-
 
192
	* @access public
-
 
193
	*/
-
 
194
	public function getPearChaine()
-
 
195
	{
-
 
196
		return $this->pear_chaine;
-
 
197
	}
-
 
198
 
-
 
199
	/**
-
 
200
	* Définit la chaine de caractère identifiant les erreurs Pear.
-
 
201
	*
-
 
202
	* @param string la chaine de caractère identifiant les erreurs Pear.
-
 
203
	* @return  void
-
 
204
	* @access public
-
 
205
	*/
140
	 * @access public
206
	public function setPearChaine( $pc )
141
	 */
207
	{
142
	public function setContexte( $un_contexte ) {
208
		$this->pear_chaine = $pc;
143
		$this->contexte = $un_contexte;
209
	}
144
	}
210
 
145
	
211
 
-
 
212
	/**
146
	/**
213
	* Récupère le niveau d'erreur courrant.
147
	 * Récupère le niveau d'erreur courrant.
214
	*
Line 148... Line 215...
148
	 *
215
	* @return int le niveau d'erreur courrant.
149
	 * @return int le niveau d'erreur courrant.
216
	* @access public
150
	 * @access public
217
	*/
151
	 */
218
	public function getNiveauErreurCourrant()
152
	public function getNiveauErreurCourrant( ) {
219
	{
153
		return (int)$this->niveau_erreur_courrant;
220
		return (int)$this->niveau_erreur_courrant;
154
	}
221
	}
155
 
222
 
-
 
223
	/**
156
	/**
224
	* Définit le niveau d'erreur courrant.
157
	 * Définit le niveau d'erreur courrant.
225
	*
158
	 *
226
	* @param int un niveau d'erreur.
159
	 * @param int un niveau d'erreur.
227
	* @return void
160
	 * @return void
228
	* @access public
161
	 * @access public
229
	*/
162
	 */
230
	public function setNiveauErreurCourrant($niveau)
163
	public function setNiveauErreurCourrant( $niveau ) {
231
	{
164
		$this->niveau_erreur_courrant = $niveau;
232
		$this->niveau_erreur_courrant = $niveau;
165
	}
233
	}
166
	
234
 
167
	/*** Méthodes : ***/
235
	/*** Méthodes : ***/
168
	
236
 
169
	/**
237
	/**
170
	 *
238
	*
171
	 * @param int niveau
239
	* @param int niveau
-
 
240
	* @param string message
172
	 * @param string message
241
	* @param string fichier
173
	 * @param string fichier
242
	* @param int ligne
174
	 * @param int ligne
243
	* @param boolean contexte
175
	 * @param boolean contexte
244
	* @return void
176
	 * @return void
245
	* @access public
Line 187... Line 256...
187
			if ($this->getContexte()) {
256
			if ($this->getContexte()) {
188
				$aso_erreur['contexte'] = $contexte;
257
				$aso_erreur['contexte'] = $contexte;
189
			}
258
			}
190
			$this->setErreur($aso_erreur);
259
			$this->setErreur($aso_erreur);
191
		}
260
		}
192
		
261
 
193
		// Si nous avons à faire à une erreur et non à un warning ou une notice, nous arrêtons l'exécution du script
262
		// Si nous avons à faire à une erreur et non à un warning ou une notice, nous arrêtons l'exécution du script
194
		if ($niveau == E_USER_ERROR) {
263
		if ($niveau == E_USER_ERROR) {
195
			echo 	$this->retournerErreur();
264
			echo 	$this->retournerErreur();
196
			exit(1);
265
			exit(1);
197
		}
266
		}
Line 201... Line 270...
201
	 * Retourne l'erreur PHP formatée en XHTML.
270
	 * Retourne l'erreur PHP formatée en XHTML.
202
	 *
271
	 *
203
	 * @return string
272
	 * @return string
204
	 * @access public
273
	 * @access public
205
	 */
274
	 */
206
	public function retournerErreur() {
275
	public function retournerErreur()
-
 
276
	{
207
		$retour = '';
277
		$retour = '';
-
 
278
		$erreur_pear_nbre = 0;
208
		foreach($this->getErreur() as $aso_erreur) {
279
		foreach($this->getErreur() as $aso_erreur) {
209
			if ('<!-- BEGIN sql -->' == substr($aso_erreur['message'], 0, 18)) {
280
			if ('<!-- BEGIN sql -->' == substr($aso_erreur['message'], 0, 18)) {
210
				$retour .= $aso_erreur['message'];
281
				$retour .= $aso_erreur['message'];
211
				continue;
282
				continue;
212
			}
283
			}
-
 
284
			// Nous testons les erreurs PEAR pour ne pas en tenir compte
-
 
285
			if (!$this->getPear() && stristr($aso_erreur['fichier'], $this->getPearChaine())) {
-
 
286
				$erreur_pear_nbre++;
-
 
287
			} else {
213
			$retour .= '<p class="erreur">'."\n";
288
				$retour .= '<p class="attention">'."\n";
214
			$retour .= '<strong>ERREUR</strong><br />'."\n";
289
				$retour .= '<strong>ERREUR</strong><br />'."\n";
215
			$retour .= '<strong>Niveau : </strong>'.$aso_erreur['niveau'].'<br />'."\n";
290
				$retour .= '<strong>Niveau : </strong>'.$aso_erreur['niveau'].'<br />'."\n";
216
			$retour .= '<strong>Message : </strong>'.$aso_erreur['message'].'<br />'."\n";
291
				$retour .= '<strong>Message : </strong>'.$aso_erreur['message'].'<br />'."\n";
217
			$retour .= '<strong>Fichier : </strong>'.$aso_erreur['fichier'].'<br />'."\n";
292
				$retour .= '<strong>Fichier : </strong>'.$aso_erreur['fichier'].'<br />'."\n";
218
			$retour .= '<strong>Ligne : </strong>'.$aso_erreur['ligne'].'<br />'."\n";
293
				$retour .= '<strong>Ligne : </strong>'.$aso_erreur['ligne'].'<br />'."\n";
219
			if ($this->getContexte()) {
294
				if ($this->getContexte()) {
220
                $retour .= '<pre>'."\n";
295
					$retour .= '<pre>'."\n";
221
                $retour .= '<stong>Contexte : </stong>'."\n".print_r($aso_erreur['contexte'], true)."\n";
296
					$retour .= '<stong>Contexte : </stong>'."\n".print_r($aso_erreur['contexte'], true)."\n";
222
                $retour .= '</pre>'."\n";
297
					$retour .= '</pre>'."\n";
223
            }
298
				}
224
            $retour .= '</p>'."\n";
299
				$retour .= '</p>'."\n";
-
 
300
			}
-
 
301
		}
-
 
302
		if ($erreur_pear_nbre != 0) {
-
 
303
			$retour .= '<p class="attention"><strong>Nombre d\'erreurs PEAR : </strong>'.$erreur_pear_nbre.'</p>'."\n";
225
		}
304
		}
226
		return $retour;
305
		return $retour;
227
	} // end of member function retournerErreur
306
	} // end of member function retournerErreur
Line 228... Line 307...
228
 
307
 
229
	/**
308
	/**
230
	 * Retourne l'erreur SQL formatée.
309
	* Retourne l'erreur SQL formatée.
231
	 *
310
	*
232
	 * @param string fichier
311
	* @param string fichier
233
	 * @param int ligne
312
	* @param int ligne
234
	 * @param string message
313
	* @param string message
235
	 * @param string requete
314
	* @param string requete
236
	 * @param string autres
315
	* @param string autres
237
	 * @return string
316
	* @return string
238
	 * @static
317
	* @static
239
	 * @access public
318
	* @access public
240
	 */
319
	*/
-
 
320
	public static function retournerErreurSql( $fichier,  $methode,  $message,  $requete = NULL,  $autres = NULL )
241
	public static function retournerErreurSql( $fichier,  $methode,  $message,  $requete = NULL,  $autres = NULL ) {
321
	{
242
		$retour = '<!-- BEGIN sql -->';
322
		$retour = '<!-- BEGIN sql -->';
243
		$retour .= '<div id="zone_erreur">'."\n";
323
		$retour .= '<div id="zone_erreur">'."\n";
244
		$retour .= '<h1 > ERREUR SQL </h1><br />'."\n";
324
		$retour .= '<h1 > ERREUR SQL </h1><br />'."\n";
245
		$retour .= '<dl>'."\n";
325
		$retour .= '<dl>'."\n";
246
		$retour .= '<dt> Fichier : </dt> ';
326
		$retour .= '<dt> Fichier : </dt> ';
247
		$retour .= '<dd> '.$fichier.'</dd>'."\n";
327
		$retour .= '<dd> '.$fichier.'</dd>'."\n";
248
		
328
 
249
		$retour .= '<dt> Méthode : </dt> ';
329
		$retour .= '<dt> Méthode : </dt> ';
250
		$retour .= '<dd> '.$methode.'</dd>'."\n";
330
		$retour .= '<dd> '.$methode.'</dd>'."\n";
251
		
331
 
252
		$retour .= '<dt> Message erreur : </dt> ';
332
		$retour .= '<dt> Message erreur : </dt> ';
253
		$retour .= '<dd> '.$message.'</dd>'."\n";
333
		$retour .= '<dd> '.$message.'</dd>'."\n";
254
		
334
 
255
		if (!is_null($requete)) {
335
		if (!is_null($requete)) {
256
			$retour .= '<dt> Requete : </dt> ';
336
			$retour .= '<dt> Requete : </dt> ';
257
			$retour .= '<dd> '.$requete.' </dd>'."\n";
337
			$retour .= '<dd> '.$requete.' </dd>'."\n";
258
    	}
338
    	}
259
    	
339
 
260
		if (!is_null($autres)) {
340
		if (!is_null($autres)) {
261
			$retour .= '<dt> Autres infos : </dt> ';
341
			$retour .= '<dt> Autres infos : </dt> ';
262
			$retour .= '<dd> '.$autres.' </dd>'."\n";
342
			$retour .= '<dd> '.$autres.' </dd>'."\n";
263
		}
343
		}
264
		$retour .= '</dl>'."\n";
344
		$retour .= '</dl>'."\n";
265
		$retour .= '</div>'."\n";
345
		$retour .= '</div>'."\n";
266
		$retour .= '<!-- END sql -->'."\n";
346
		$retour .= '<!-- END sql -->'."\n";
267
		
347
 
268
		return $retour;
348
		return $retour;
269
	} // end of member function retournerErreurSql
349
	} // end of member function retournerErreurSql
270
	
350
 
271
	/**
351
	/**
272
	 * Retourne l'erreur SQL formatée selon le format demandé.
352
	* Retourne l'erreur SQL formatée selon le format demandé.
273
	 *
353
	*
274
	 * @param string fichier
354
	* @param string fichier
275
	 * @param int ligne
355
	* @param int ligne
276
	 * @param string message
356
	* @param string message
277
	 * @param string format : txt.
357
	* @param string format : txt.
278
	 * @return string
358
	* @return string
279
	 * @static
359
	* @static
280
	 * @access public
360
	* @access public
281
	 */
361
	*/
282
	public static function formaterMessageErreur( $message, $fichier = null,  $ligne = null,  $format = 'txt' )
362
	public static function formaterMessageErreur( $message, $fichier = null,  $ligne = null,  $format = 'txt' )
283
	{
363
	{
284
		$retour = '';
364
		$retour = '';
285
		if ($format == 'txt') {
365
		if ($format == 'txt') {
Line 292... Line 372...
292
			}
372
			}
293
			$retour .= "\t".'Message : '.$message."\n";
373
			$retour .= "\t".'Message : '.$message."\n";
294
		}
374
		}
295
		return $retour;
375
		return $retour;
296
	}
376
	}
297
} // end of GestionnaireErreur
-
 
-
 
377
}
Line 298... Line 378...
298
 
378
 
299
/* +--Fin du code ----------------------------------------------------------------------------------------+
379
/* +--Fin du code ----------------------------------------------------------------------------------------+
300
*
-
 
301
* $Log: GestionnaireErreur.class.php,v $
-
 
302
* Revision 1.1  2005/11/15 17:33:49  jp_milcent
-
 
303
* Ajout de classe Système pour le débogage.
-
 
304
* Ces classes sont à améliorer!
-
 
305
*
-
 
306
* Revision 1.3  2005/10/10 07:28:07  jp_milcent
-
 
307
* Utilisation du webservice Yahoo-Image.
380
*
308
*
-
 
309
* Revision 1.2  2005/10/04 16:34:03  jp_milcent
-
 
310
* Début gestion de la chorologie.
-
 
311
* Ajout de la bibliothèque de cartographie (à améliorer!).
-
 
312
*
-
 
313
* Revision 1.1  2005/08/04 15:51:45  jp_milcent
-
 
314
* Implémentation de la gestion via DAO.
-
 
315
* Fin page d'accueil.
-
 
316
* Fin formulaire recherche taxonomique.
-
 
317
*
-
 
318
* Revision 1.3  2005/08/02 16:19:33  jp_milcent
-
 
319
* Amélioration des requetes de recherche de noms.
-
 
320
*
-
 
321
* Revision 1.2  2005/08/01 16:18:39  jp_milcent
-
 
322
* Début gestion résultat de la recherche par nom.
-
 
323
*
-
 
324
* Revision 1.1  2005/07/28 15:37:56  jp_milcent
-
 
325
* Début gestion des squelettes et de l'API eFlore.
-
 
326
*
381
* $Log$
327
*
382
*
328
* +-- Fin du code ----------------------------------------------------------------------------------------+
383
* +-- Fin du code ----------------------------------------------------------------------------------------+
329
*/
384
*/
330
?>
385
?>