Subversion Repositories Applications.gtt

Rev

Rev 62 | Rev 95 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 62 Rev 65
Line 19... Line 19...
19
// |                                                                                                      |
19
// |                                                                                                      |
20
// | You should have received a copy of the GNU General Public License                                    |
20
// | You should have received a copy of the GNU General Public License                                    |
21
// | along with Foobar; if not, write to the Free Software                                                |
21
// | along with Foobar; if not, write to the Free Software                                                |
22
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
22
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
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.6 2007-07-09 18:54:43 jp_milcent Exp $
25
/**
25
/**
26
* Classe de gestion des erreurs.
26
* Classe de gestion des erreurs.
27
*
27
*
28
*
28
* 
29
*
29
*
Line 32... Line 32...
32
//Auteur original :
32
//Auteur original :
33
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
33
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
34
//Autres auteurs :
34
//Autres auteurs :
35
*@author        aucun
35
*@author        aucun
36
*@copyright     Tela-Botanica 2000-2005
36
*@copyright     Tela-Botanica 2000-2005
37
*@version       $Revision: 1.1 $ $Date: 2005/11/15 17:33:49 $
37
*@version       $Revision: 1.6 $ $Date: 2007-07-09 18:54:43 $
38
// +------------------------------------------------------------------------------------------------------+
38
// +------------------------------------------------------------------------------------------------------+
39
*/
39
*/
Line 40... Line 40...
40
 
40
 
41
// +------------------------------------------------------------------------------------------------------+
41
// +------------------------------------------------------------------------------------------------------+
Line 51... Line 51...
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
 */
55
 */
56
class GestionnaireErreur {
56
class GestionnaireErreur
-
 
57
{
57
	/*** Attributes: ***/
58
	/*** Attributes: ***/
Line 58... Line 59...
58
 
59
 
-
 
60
	/**
-
 
61
	 * 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
-
 
63
	 */
-
 
64
	private $mode;
-
 
65
 
59
	/**
66
	/**
60
	* Contient la liste des erreurs.
67
	 * Contient la liste des erreurs.
61
	* @access private
68
	 * @access private
62
	*/
69
	 */
Line 68... Line 75...
68
	* @access private
75
	 * @access private
69
	*/
76
	 */
70
	private $contexte;
77
	private $contexte;
Line 71... Line 78...
71
 
78
	
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
-
 
81
	*/
-
 
82
	private $pear_chaine;
-
 
83
 
-
 
84
	/**
79
	/**
85
	* Contient le niveau d'erreur courrant. Celui que l'on donne à la fonction
80
	 * Contient le niveau d'erreur courrant. Celui que l'on donne à la fonction
86
	* error_reporting().
81
	 * error_reporting().
87
	* @access private
82
	 * @access private
88
	*/
83
	 */
Line 94... Line 89...
94
	* Construit le gestionnaire d'erreur.
89
	 * Construit le gestionnaire d'erreur.
95
	*
90
	 *
96
	* @return void
91
	 * @return void
97
	* @access public
92
	 * @access public
98
	*/
93
	 */
99
	public function __construct($bool_contexte = false, $int_niveau = 2048, $bool_pear = false, $str_pear = '')
94
	public function __construct( $contexte = false )
100
	{
95
	{
-
 
96
		$this->mode = php_sapi_name();
101
		$this->erreurs = array();
97
		$this->erreurs = array();
102
		$this->setContexte($bool_contexte);
98
		$this->setContexte($contexte);
103
		$this->setNiveauErreurCourrant($int_niveau);
-
 
104
		$this->setPear($bool_pear);
-
 
105
		$this->setPearChaine($str_pear);
-
 
106
		set_error_handler(array($this, 'gererErreur'));
99
		set_error_handler(array(&$this, 'gererErreur'));
107
	} // end of member function __construct
-
 
108
 
-
 
109
 
-
 
110
	/*** Destructeur: ***/
-
 
111
	public function __destruct()
-
 
112
	{
-
 
113
		echo $this->retournerErreur();
-
 
114
	}
100
	}
Line 115... Line 101...
115
 
101
	
116
	/*** Accesseurs: ***/
-
 
-
 
102
	/*** Accesseurs: ***/
117
 
103
	 // end of member function __construct
118
	/**
104
	/**
119
	* Récupère le tableau des erreurs.
105
	 * Récupère le tableau des erreurs.
120
	*
106
	 *
121
	* @return array
107
	 * @return array
122
	* @access public
108
	 * @access public
123
	*/
109
	 */
124
	public function getErreur()
-
 
125
	{
110
	public function getErreur( ) {
126
		return $this->erreurs;
111
		return $this->erreurs;
Line 127... Line 112...
127
	}
112
	}
128
 
113
 
129
	/**
114
	/**
130
	* Ajoute une erreur à la liste.
115
	 * Ajoute une erreur à la liste.
131
	*
116
	 *
132
	* @param array une_erreur
117
	 * @param array une_erreur 	 
133
	* @return void
118
	 * @return void
134
	* @access public
119
	 * @access public
135
	*/
-
 
136
	public function setErreur($une_erreur)
120
	 */
137
	{
121
	public function setErreur( $une_erreur ) {
Line 138... Line 122...
138
		$this->erreurs[] = $une_erreur;
122
		$this->erreurs[] = $une_erreur;
139
	}
123
	}
140
 
124
 
141
	/**
125
	/**
142
	* Récupère la valeur du contexte.
126
	 * Récupère la valeur du contexte.
143
	*
127
	 *
144
	* @return boolean
128
	 * @return boolean
145
	* @access public
-
 
146
	*/
129
	 * @access public
147
	public function getContexte()
130
	 */
Line 148... Line 131...
148
	{
131
	public function getContexte( ) {
149
		return $this->contexte;
132
		return $this->contexte;
150
	}
133
	}
151
 
134
 
152
	/**
135
	/**
153
	* Définit si oui ou non le contexte sera affiché.
136
	 * Définit si oui ou non le contexte sera affiché.
154
	*
137
	 *
155
	* @param boolean un_contexte
138
	 * @param boolean un_contexte
156
	* @return  void
-
 
157
	* @access public
139
	 * @return  void
158
	*/
140
	 * @access public
Line 159... Line 141...
159
	public function setContexte( $un_contexte )
141
	 */
160
	{
-
 
161
		$this->contexte = $un_contexte;
-
 
162
	}
-
 
163
 
-
 
164
	/**
-
 
165
	* Récupère la valeur de l'attribut Pear.
-
 
166
	*
-
 
167
	* @return boolean true pour afficher les erreurs Pear sinon false.
-
 
168
	* @access public
-
 
169
	*/
-
 
170
	public function getPear()
-
 
171
	{
-
 
172
		return $this->pear;
-
 
173
	}
-
 
174
 
-
 
175
	/**
-
 
176
	* Définit si oui ou non les erreurs Pear seront affichées.
-
 
177
	*
-
 
178
	* @param boolean true pour afficher les erreurs Pear sinon false.
-
 
179
	* @return  void
-
 
180
	* @access public
-
 
181
	*/
-
 
182
	public function setPear( $p )
-
 
183
	{
142
	public function setContexte( $un_contexte ) {
184
		$this->pear = $p;
143
		$this->contexte = $un_contexte;
185
	}
144
	}
186
 
145
	
187
	/**
146
	/**
188
	* Récupère la valeur de l'attribut pear_chaine.
147
	 * Récupère le niveau d'erreur courrant.
189
	*
-
 
190
	* @return string la chaine de caractère identifiant les erreurs Pear.
148
	 *
191
	* @access public
149
	 * @return int le niveau d'erreur courrant.
Line 192... Line 150...
192
	*/
150
	 * @access public
193
	public function getPearChaine()
151
	 */
194
	{
152
	public function getNiveauErreurCourrant( ) {
195
		return $this->pear_chaine;
153
		return (int)$this->niveau_erreur_courrant;
196
	}
154
	}
197
 
155
 
198
	/**
156
	/**
199
	* Définit la chaine de caractère identifiant les erreurs Pear.
-
 
200
	*
-
 
201
	* @param string la chaine de caractère identifiant les erreurs Pear.
-
 
202
	* @return  void
-
 
203
	* @access public
-
 
204
	*/
-
 
205
	public function setPearChaine( $pc )
-
 
206
	{
-
 
207
		$this->pear_chaine = $pc;
-
 
208
	}
-
 
209
 
-
 
210
 
-
 
211
	/**
157
	 * Définit le niveau d'erreur courrant.
212
	* Récupère le niveau d'erreur courrant.
-
 
213
	*
158
	 *
214
	* @return int le niveau d'erreur courrant.
159
	 * @param int un niveau d'erreur.
Line 215... Line 160...
215
	* @access public
160
	 * @return void
216
	*/
161
	 * @access public
217
	public function getNiveauErreurCourrant()
162
	 */
218
	{
163
	public function setNiveauErreurCourrant( $niveau = 2048 ) {
219
		return (int)$this->niveau_erreur_courrant;
164
		$this->niveau_erreur_courrant = $niveau;
220
	}
165
	}
221
 
166
	
222
	/**
167
	/**
223
	* Définit le niveau d'erreur courrant.
-
 
224
	*
168
	 * Définit le niveau d'erreur courrant (synonyme fonction precedente)
225
	* @param int un niveau d'erreur.
169
	 *
Line -... Line 170...
-
 
170
	 * @param int un niveau d'erreur.
226
	* @return void
171
	 * @return void
Line 227... Line 172...
227
	* @access public
172
	 * @access public
228
	*/
173
	 */
229
	public function setNiveauErreurCourrant($niveau)
174
	public function setActive ($niveau) {
Line 255... Line 200...
255
			if ($this->getContexte()) {
200
			if ($this->getContexte()) {
256
				$aso_erreur['contexte'] = $contexte;
201
				$aso_erreur['contexte'] = $contexte;
257
			}
202
			}
258
			$this->setErreur($aso_erreur);
203
			$this->setErreur($aso_erreur);
259
		}
204
		}
260
 
-
 
261
		// Si nous avons à faire à une erreur et non à un warning ou une notice, nous arrêtons l'exécution du script
205
		// Si nous avons à faire à une erreur et non à un warning ou une notice, nous arrêtons l'exécution du script
-
 
206
		switch ($niveau) {
-
 
207
			case E_ERROR :
262
		if ($niveau == E_USER_ERROR) {
208
			case E_USER_ERROR :
263
			echo 	$this->retournerErreur();
209
				die($this->retournerErreur());
264
			exit(1);
210
				break;
-
 
211
		}
265
		}
212
	}
266
	} // end of member function gererErreur
-
 
Line 267... Line 213...
267
 
213
 
268
	/**
214
	/**
269
	 * Retourne l'erreur PHP formatée en XHTML.
215
	 * Retourne l'erreur PHP formatée en XHTML.
270
	 *
216
	 *
Line 273... Line 219...
273
	 */
219
	 */
274
	public function retournerErreur()
220
	public function retournerErreur()
275
	{
221
	{
276
		$retour = '';
222
		$retour = '';
277
		$erreur_pear_nbre = 0;
223
		$erreur_pear_nbre = 0;
-
 
224
		$erreur_pear_fichier_nbre = 0;
-
 
225
		$erreur_pear_message_nbre = 0;
278
		foreach($this->getErreur() as $aso_erreur) {
226
		foreach($this->getErreur() as $aso_erreur) {
279
			if ('<!-- BEGIN sql -->' == substr($aso_erreur['message'], 0, 18)) {
227
			if ('<!-- BEGIN sql -->' == substr($aso_erreur['message'], 0, 18)) {
280
				$retour .= $aso_erreur['message'];
228
				$retour .= $aso_erreur['message'];
281
				continue;
229
				continue;
282
			}
230
			}
283
			// Nous testons les erreurs PEAR pour ne pas en tenir compte
231
			// Nous testons les erreurs PEAR pour ne pas en tenir compte
284
			if (!$this->getPear() && stristr($aso_erreur['fichier'], $this->getPearChaine())) {
232
			if (!GTT_DEBOGAGE_PEAR && stristr($aso_erreur['fichier'],GTT_DEBOGAGE_PEAR_CHAINE)) {
285
				$erreur_pear_nbre++;
233
				$erreur_pear_fichier_nbre++;
-
 
234
			} else if (!GTT_DEBOGAGE_PEAR && preg_match(GTT_DEBOGAGE_PEAR_REGEXP_MESSAGE, $aso_erreur['message'])) {
-
 
235
				$erreur_pear_message_nbre++;
-
 
236
			} else {
-
 
237
				switch ($this->mode) {
-
 
238
					case 'cli' :
-
 
239
						if ($aso_erreur['niveau'] == E_USER_NOTICE) {
-
 
240
							$retour .= $aso_erreur['message']."\n";
-
 
241
							$retour .= 'Fichier : '.$aso_erreur['fichier']."\n";
-
 
242
							$retour .= 'Ligne : '.$aso_erreur['ligne']."\n";						
-
 
243
						} else if ($aso_erreur['niveau'] <= 512) {
-
 
244
							$retour .= 'INFO : Niveau '.$aso_erreur['niveau']."\n";
-
 
245
						} else {
-
 
246
							$retour .= 'ERREUR : Niveau '.$aso_erreur['niveau']."\n";
-
 
247
						}
-
 
248
						$retour .= 'Niveau : '.$aso_erreur['niveau']."\n";
-
 
249
						$retour .= 'Message : '.$aso_erreur['message']."\n";
-
 
250
						$retour .= 'Fichier : '.$aso_erreur['fichier']."\n";
-
 
251
						$retour .= 'Ligne : '.$aso_erreur['ligne']."\n";
-
 
252
						if ($this->getContexte()) {
-
 
253
							$retour .= 'Contexte : '."\n".print_r($aso_erreur['contexte'], true)."\n";
-
 
254
						}
-
 
255
						break;
-
 
256
					default:
-
 
257
						if ($aso_erreur['niveau'] == E_USER_NOTICE) {
-
 
258
							$retour .= '<pre class="debogage">'."\n";
-
 
259
							$retour .= htmlentities($aso_erreur['message'])."\n";
-
 
260
							$retour .= '<span class="debogage_fichier">'.'Fichier : '.$aso_erreur['fichier'].'</span>'."\n";
-
 
261
							$retour .= '<span class="debogage_ligne">'.'Ligne : '.$aso_erreur['ligne'].'</span>'."\n";
-
 
262
							$retour .= '</pre>'."\n";
-
 
263
							continue;
-
 
264
						} else if ($aso_erreur['niveau'] <= 512) {
-
 
265
							$retour .= '<p class="information">'."\n";
-
 
266
							$retour .= '<strong>INFO : Niveau '.$aso_erreur['niveau'].'</strong><br />'."\n";
286
			} else {
267
						} else {
287
				$retour .= '<p class="attention">'."\n";
268
							$retour .= '<p class="attention">'."\n";
288
				$retour .= '<strong>ERREUR</strong><br />'."\n";
269
							$retour .= '<strong>ERREUR : Niveau '.$aso_erreur['niveau'].'</strong><br />'."\n";
-
 
270
						}
289
				$retour .= '<strong>Niveau : </strong>'.$aso_erreur['niveau'].'<br />'."\n";
271
						$retour .= '<strong>Niveau : </strong>'.$aso_erreur['niveau'].'<br />'."\n";
290
				$retour .= '<strong>Message : </strong>'.$aso_erreur['message'].'<br />'."\n";
272
						$retour .= '<strong>Message : </strong>'.$aso_erreur['message'].'<br />'."\n";
291
				$retour .= '<strong>Fichier : </strong>'.$aso_erreur['fichier'].'<br />'."\n";
273
						$retour .= '<strong>Fichier : </strong>'.$aso_erreur['fichier'].'<br />'."\n";
292
				$retour .= '<strong>Ligne : </strong>'.$aso_erreur['ligne'].'<br />'."\n";
274
						$retour .= '<strong>Ligne : </strong>'.$aso_erreur['ligne'].'<br />'."\n";
293
				if ($this->getContexte()) {
275
						if ($this->getContexte()) {
Line 296... Line 278...
296
					$retour .= '</pre>'."\n";
278
							$retour .= '</pre>'."\n";
297
				}
279
						}
298
				$retour .= '</p>'."\n";
280
						$retour .= '</p>'."\n";
299
			}
281
				} 
300
		}
282
			}
-
 
283
		}
-
 
284
		$erreur_pear_nbre = $erreur_pear_fichier_nbre + $erreur_pear_message_nbre;
301
		if ($erreur_pear_nbre != 0) {
285
		if ($erreur_pear_nbre != 0) {
-
 
286
			$retour .= 	'<p class="attention">'.
302
			$retour .= '<p class="attention"><strong>Nombre d\'erreurs PEAR : </strong>'.$erreur_pear_nbre.'</p>'."\n";
287
						'<strong>Nombre d\'erreurs PEAR totales : </strong>'.$erreur_pear_nbre.'<br />'."\n".
-
 
288
						'<strong> - éliminées car le "fichier" contené '.GTT_DEBOGAGE_PEAR_CHAINE.' : </strong>'.$erreur_pear_fichier_nbre.'<br />'."\n".
-
 
289
						'<strong> - éliminées car le "message" correspondé à '.GTT_DEBOGAGE_PEAR_REGEXP_MESSAGE.' : </strong>'.$erreur_pear_message_nbre.'<br />'."\n".
-
 
290
						'</p>'."\n";
303
		}
291
		}
304
		return $retour;
292
		return $retour;
305
	} // end of member function retournerErreur
-
 
-
 
293
	}
Line 306... Line 294...
306
 
294
 
307
	/**
295
	/**
308
	* Retourne l'erreur SQL formatée.
296
	* Retourne l'erreur SQL formatée en XHTML.
309
	*
297
	*
310
	* @param string fichier
298
	* @param string fichier
311
	* @param int ligne
299
	* @param int ligne
312
	* @param string message
300
	* @param string message
313
	* @param string requete
301
	* @param string requete
314
	* @param string autres
302
	* @param string autres
315
	* @return string
303
	* @return string
316
	* @static
304
	* @static
317
	* @access public
305
	* @access public
318
	*/
306
	*/
319
	public static function retournerErreurSql( $fichier,  $methode,  $message,  $requete = NULL,  $autres = NULL )
307
	public static function retournerErreurSql( $fichier,  $methode,  $message,  $requete = null,  $autres = null )
-
 
308
	{
-
 
309
		$retour = '';
-
 
310
		switch (php_sapi_name()) {
-
 
311
			case 'cli' :
-
 
312
				$retour .= 'ERREUR SQL '."\n";
-
 
313
				$retour .= 'Fichier : '.$fichier."\n";
-
 
314
				$retour .= 'Méthode : '.$methode."\n";
-
 
315
				$retour .= 'Message : '.$message."\n";
-
 
316
				if (!is_null($requete)) {
-
 
317
					$retour .= 'Requete : '."\n";
-
 
318
					$retour .= $requete."\n";
-
 
319
		    	}
-
 
320
		    	
-
 
321
				if (!is_null($autres)) {
-
 
322
					$retour .= 'Autres infos : '."\n";
-
 
323
					$retour .= $autres."\n";
-
 
324
				}
-
 
325
				break;
320
	{
326
			default:
321
		$retour = '<!-- BEGIN sql -->';
327
				$retour .= '<!-- BEGIN sql -->';
322
		$retour .= '<div id="zone_erreur">'."\n";
328
				$retour .= '<div id="zone_erreur">'."\n";
323
		$retour .= '<h1 > ERREUR SQL </h1><br />'."\n";
329
				$retour .= '<h1 > ERREUR SQL </h1><br />'."\n";
324
		$retour .= '<dl>'."\n";
330
				$retour .= '<dl>'."\n";
325
		$retour .= '<dt> Fichier : </dt> ';
331
				$retour .= '<dt> Fichier : </dt> ';
Line 341... Line 347...
341
			$retour .= '<dd> '.$autres.' </dd>'."\n";
347
					$retour .= '<dd> '.$autres.' </dd>'."\n";
342
		}
348
				}
343
		$retour .= '</dl>'."\n";
349
				$retour .= '</dl>'."\n";
344
		$retour .= '</div>'."\n";
350
				$retour .= '</div>'."\n";
345
		$retour .= '<!-- END sql -->'."\n";
351
				$retour .= '<!-- END sql -->'."\n";
346
 
-
 
347
		return $retour;
-
 
348
	} // end of member function retournerErreurSql
-
 
349
 
-
 
350
	/**
-
 
351
	* Retourne l'erreur SQL formatée selon le format demandé.
-
 
352
	*
-
 
353
	* @param string fichier
-
 
354
	* @param int ligne
-
 
355
	* @param string message
-
 
356
	* @param string format : txt.
-
 
357
	* @return string
-
 
358
	* @static
-
 
359
	* @access public
-
 
360
	*/
-
 
361
	public static function formaterMessageErreur( $message, $fichier = null,  $ligne = null,  $format = 'txt' )
-
 
362
	{
-
 
363
		$retour = '';
-
 
364
		if ($format == 'txt') {
-
 
365
			$retour .= "\n";
-
 
366
			if (!is_null($fichier)) {
-
 
367
				$retour .= "\t".'Fichier : '.$fichier."\n";
-
 
368
			}
-
 
369
			if (!is_null($ligne)) {
-
 
370
				$retour .= "\t".'Ligne : '.$ligne."\n";
-
 
371
			}
-
 
372
			$retour .= "\t".'Message : '.$message."\n";
-
 
373
		}
352
		}
374
		return $retour;
353
		return $retour;
375
	}
354
	}
376
}
355
}
Line 377... Line 356...
377
 
356
 
378
/* +--Fin du code ----------------------------------------------------------------------------------------+
357
/* +--Fin du code ----------------------------------------------------------------------------------------+
-
 
358
*
-
 
359
* $Log: GestionnaireErreur.class.php,v $
-
 
360
* Revision 1.6  2007-07-09 18:54:43  jp_milcent
-
 
361
* Remplacement des balises html par des entités pour le message des E_USER_NOTICE.
-
 
362
*
-
 
363
* Revision 1.5  2007-07-02 15:31:53  jp_milcent
-
 
364
* Initialisation d'une variable.
-
 
365
*
-
 
366
* Revision 1.4  2007-07-02 12:43:09  jp_milcent
-
 
367
* Gestion de php-cli ou cgi...
-
 
368
*
-
 
369
* Revision 1.3  2007-07-02 10:50:06  jp_milcent
-
 
370
* Ajout de la gestion du mode d'affichage (xhtml ou txt).
-
 
371
*
-
 
372
* Revision 1.2  2007-01-15 15:30:03  jp_milcent
-
 
373
* Amélioration du gestionnaire d'erreur pour qu'il prenne en compte les erreurs Pear des méthodes "non static"...
-
 
374
*
-
 
375
* Revision 1.1  2007/01/12 13:16:09  jp_milcent
-
 
376
* Déplacement des classes de débogage et d'optimisation dans le dossier noyau.
-
 
377
*
-
 
378
* Revision 1.9  2006/10/25 08:15:23  jp_milcent
-
 
379
* Fusion avec la livraison Decaisne.
-
 
380
*
-
 
381
* Revision 1.8.2.1  2006/08/29 09:22:37  jp_milcent
-
 
382
* Correction et amélioration du gestionnaire d'erreurs.
-
 
383
*
-
 
384
* Revision 1.8  2006/07/20 13:33:46  jp_milcent
-
 
385
* Légère modif affichage.
-
 
386
*
-
 
387
* Revision 1.7  2006/07/20 13:33:03  jp_milcent
-
 
388
* Amélioration du gestionnaire d'erreur.
-
 
389
*
-
 
390
* Revision 1.6  2006/07/20 13:27:07  jp_milcent
-
 
391
* Ajout du type information.
-
 
392
*
-
 
393
* Revision 1.5  2006/05/29 13:52:41  ddelon
-
 
394
* Integration wiki dans eflore
-
 
395
*
-
 
396
* Revision 1.4  2005/12/09 10:47:05  jp_milcent
-
 
397
* Amélioration du Gestionnaire de Bogues.
-
 
398
*
-
 
399
* Revision 1.3  2005/10/10 07:28:07  jp_milcent
-
 
400
* Utilisation du webservice Yahoo-Image.
-
 
401
*
-
 
402
* Revision 1.2  2005/10/04 16:34:03  jp_milcent
-
 
403
* Début gestion de la chorologie.
-
 
404
* Ajout de la bibliothèque de cartographie (à améliorer!).
-
 
405
*
-
 
406
* Revision 1.1  2005/08/04 15:51:45  jp_milcent
-
 
407
* Implémentation de la gestion via DAO.
-
 
408
* Fin page d'accueil.
-
 
409
* Fin formulaire recherche taxonomique.
-
 
410
*
-
 
411
* Revision 1.3  2005/08/02 16:19:33  jp_milcent
-
 
412
* Amélioration des requetes de recherche de noms.
-
 
413
*
-
 
414
* Revision 1.2  2005/08/01 16:18:39  jp_milcent
-
 
415
* Début gestion résultat de la recherche par nom.
-
 
416
*
-
 
417
* Revision 1.1  2005/07/28 15:37:56  jp_milcent
379
*
418
* Début gestion des squelettes et de l'API eFlore.
380
* $Log$
419
*
381
*
420
*
382
* +-- Fin du code ----------------------------------------------------------------------------------------+
421
* +-- Fin du code ----------------------------------------------------------------------------------------+
383
*/
422
*/
384
?>
423
?>