Subversion Repositories Applications.gtt

Rev

Rev 48 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
10 jpm 1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
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.class.php,v 1.1 2005/11/15 17:33:49 jp_milcent Exp $
25
/**
26
* Classe de gestion des erreurs.
27
*
28
*
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: 1.1 $ $Date: 2005/11/15 17:33:49 $
38
// +------------------------------------------------------------------------------------------------------+
39
*/
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
57
{
58
	/*** Attributes: ***/
59
 
60
	/**
61
	 * Contient la liste des erreurs.
62
	 * @access private
63
	 */
64
	private $erreurs;
65
 
66
	/**
67
	 * Permet de savoir si on veut faire apparaître ou pas le contexte de l'erreur,
68
	 * c'est à dire le contenu des variables.
69
	 * @access private
70
	 */
71
	private $contexte;
72
 
73
	/**
74
	 * Contient le niveau d'erreur courrant. Celui que l'on donne à la fonction
75
	 * error_reporting().
76
	 * @access private
77
	 */
78
	private $niveau_erreur_courrant;
79
 
80
	/*** Constructeur: ***/
81
 
82
	/**
83
	 * Construit le gestionnaire d'erreur.
84
	 *
85
	 * @return void
86
	 * @access public
87
	 */
88
	public function __construct( $contexte = FALSE ) {
89
		$this->erreurs = array();
90
		$this->setContexte($contexte);
91
		set_error_handler(array($this, 'gererErreur'));
92
	} // end of member function __construct
93
 
94
 
95
	/*** Destructeur: ***/
96
	public function __destruct()
97
	{
98
		echo $this->retournerErreur();
99
	}
100
 
101
	/*** Accesseurs: ***/
102
 
103
	/**
104
	 * Récupère le tableau des erreurs.
105
	 *
106
	 * @return array
107
	 * @access public
108
	 */
109
	public function getErreur( ) {
110
		return $this->erreurs;
111
	}
112
 
113
	/**
114
	 * Ajoute une erreur à la liste.
115
	 *
116
	 * @param array une_erreur
117
	 * @return void
118
	 * @access public
119
	 */
120
	public function setErreur( $une_erreur ) {
121
		$tab_erreurs =& $this->getErreur();
122
		array_push($tab_erreurs, $une_erreur);
123
	}
124
 
125
	/**
126
	 * Récupère la valeur du contexte.
127
	 *
128
	 * @return boolean
129
	 * @access public
130
	 */
131
	public function getContexte( ) {
132
		return $this->contexte;
133
	}
134
 
135
	/**
136
	 * Définit si oui ou non le contexte sera affiché.
137
	 *
138
	 * @param boolean un_contexte
139
	 * @return  void
140
	 * @access public
141
	 */
142
	public function setContexte( $un_contexte ) {
143
		$this->contexte = $un_contexte;
144
	}
145
 
146
	/**
147
	 * Récupère le niveau d'erreur courrant.
148
	 *
149
	 * @return int le niveau d'erreur courrant.
150
	 * @access public
151
	 */
152
	public function getNiveauErreurCourrant( ) {
153
		return (int)$this->niveau_erreur_courrant;
154
	}
155
 
156
	/**
157
	 * Définit le niveau d'erreur courrant.
158
	 *
159
	 * @param int un niveau d'erreur.
160
	 * @return void
161
	 * @access public
162
	 */
163
	public function setNiveauErreurCourrant( $niveau ) {
164
		$this->niveau_erreur_courrant = $niveau;
165
	}
166
 
167
	/*** Méthodes : ***/
168
 
169
	/**
170
	 *
171
	 * @param int niveau
172
	 * @param string message
173
	 * @param string fichier
174
	 * @param int ligne
175
	 * @param boolean contexte
176
	 * @return void
177
	 * @access public
178
	 */
179
	public function gererErreur( $niveau,  $message,  $fichier,  $ligne,  $contexte ) {
180
		$aso_erreur = array();
181
		// Nous vérifions si nous affichons ou pas l'erreur en fonction du niveau demandé
182
		if ( $niveau <= $this->getNiveauErreurCourrant() ) {
183
			$aso_erreur['niveau'] = $niveau;
184
			$aso_erreur['message'] = $message;
185
			$aso_erreur['fichier'] = $fichier;
186
			$aso_erreur['ligne'] = $ligne;
187
			if ($this->getContexte()) {
188
				$aso_erreur['contexte'] = $contexte;
189
			}
190
			$this->setErreur($aso_erreur);
191
		}
192
 
193
		// 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) {
195
			echo 	$this->retournerErreur();
196
			exit(1);
197
		}
198
	} // end of member function gererErreur
199
 
200
	/**
201
	 * Retourne l'erreur PHP formatée en XHTML.
202
	 *
203
	 * @return string
204
	 * @access public
205
	 */
206
	public function retournerErreur() {
207
		$retour = '';
208
		foreach($this->getErreur() as $aso_erreur) {
209
			if ('<!-- BEGIN sql -->' == substr($aso_erreur['message'], 0, 18)) {
210
				$retour .= $aso_erreur['message'];
211
				continue;
212
			}
213
			$retour .= '<p class="erreur">'."\n";
214
			$retour .= '<strong>ERREUR</strong><br />'."\n";
215
			$retour .= '<strong>Niveau : </strong>'.$aso_erreur['niveau'].'<br />'."\n";
216
			$retour .= '<strong>Message : </strong>'.$aso_erreur['message'].'<br />'."\n";
217
			$retour .= '<strong>Fichier : </strong>'.$aso_erreur['fichier'].'<br />'."\n";
218
			$retour .= '<strong>Ligne : </strong>'.$aso_erreur['ligne'].'<br />'."\n";
219
			if ($this->getContexte()) {
220
                $retour .= '<pre>'."\n";
221
                $retour .= '<stong>Contexte : </stong>'."\n".print_r($aso_erreur['contexte'], true)."\n";
222
                $retour .= '</pre>'."\n";
223
            }
224
            $retour .= '</p>'."\n";
225
		}
226
		return $retour;
227
	} // end of member function retournerErreur
228
 
229
	/**
230
	 * Retourne l'erreur SQL formatée.
231
	 *
232
	 * @param string fichier
233
	 * @param int ligne
234
	 * @param string message
235
	 * @param string requete
236
	 * @param string autres
237
	 * @return string
238
	 * @static
239
	 * @access public
240
	 */
241
	public static function retournerErreurSql( $fichier,  $methode,  $message,  $requete = NULL,  $autres = NULL ) {
242
		$retour = '<!-- BEGIN sql -->';
243
		$retour .= '<div id="zone_erreur">'."\n";
244
		$retour .= '<h1 > ERREUR SQL </h1><br />'."\n";
245
		$retour .= '<dl>'."\n";
246
		$retour .= '<dt> Fichier : </dt> ';
247
		$retour .= '<dd> '.$fichier.'</dd>'."\n";
248
 
249
		$retour .= '<dt> Méthode : </dt> ';
250
		$retour .= '<dd> '.$methode.'</dd>'."\n";
251
 
252
		$retour .= '<dt> Message erreur : </dt> ';
253
		$retour .= '<dd> '.$message.'</dd>'."\n";
254
 
255
		if (!is_null($requete)) {
256
			$retour .= '<dt> Requete : </dt> ';
257
			$retour .= '<dd> '.$requete.' </dd>'."\n";
258
    	}
259
 
260
		if (!is_null($autres)) {
261
			$retour .= '<dt> Autres infos : </dt> ';
262
			$retour .= '<dd> '.$autres.' </dd>'."\n";
263
		}
264
		$retour .= '</dl>'."\n";
265
		$retour .= '</div>'."\n";
266
		$retour .= '<!-- END sql -->'."\n";
267
 
268
		return $retour;
269
	} // end of member function retournerErreurSql
270
 
271
	/**
272
	 * Retourne l'erreur SQL formatée selon le format demandé.
273
	 *
274
	 * @param string fichier
275
	 * @param int ligne
276
	 * @param string message
277
	 * @param string format : txt.
278
	 * @return string
279
	 * @static
280
	 * @access public
281
	 */
282
	public static function formaterMessageErreur( $message, $fichier = null,  $ligne = null,  $format = 'txt' )
283
	{
284
		$retour = '';
285
		if ($format == 'txt') {
286
			$retour .= "\n";
287
			if (!is_null($fichier)) {
288
				$retour .= "\t".'Fichier : '.$fichier."\n";
289
			}
290
			if (!is_null($ligne)) {
291
				$retour .= "\t".'Ligne : '.$ligne."\n";
292
			}
293
			$retour .= "\t".'Message : '.$message."\n";
294
		}
295
		return $retour;
296
	}
297
} // end of GestionnaireErreur
298
 
299
/* +--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.
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
*
327
*
328
* +-- Fin du code ----------------------------------------------------------------------------------------+
329
*/
330
?>