root/alternc/trunk/bureau/class/m_err.php

Revision 2270, 5.1 kB (checked in by nahuel, 2 months ago)

Rajout de l'ip du client dans les logs du bureau pour savoir qui a fait quoi lorsqu'il y a un problÚme.

Line 
1 <?php
2 /*
3  $Id: m_err.php,v 1.4 2004/05/19 14:23:06 benjamin Exp $
4  ----------------------------------------------------------------------
5  LICENSE
6
7  This program is free software; you can redistribute it and/or
8  modify it under the terms of the GNU General Public License (GPL)
9  as published by the Free Software Foundation; either version 2
10  of the License, or (at your option) any later version.
11
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  GNU General Public License for more details.
16
17  To read the license please visit http://www.gnu.org/copyleft/gpl.html
18  ----------------------------------------------------------------------
19  Original Author of file: Benjamin Sonntag, Franck Missoum
20  ----------------------------------------------------------------------
21 */
22 /**
23 * Classe de gestion des erreurs apparaissant lors d'appels API.
24 *
25 * <p>Cette classe gère les erreurs qui peuvent apparaitre lors d'appels
26 * à l'API d'AlternC. Ces erreurs sont stockées sous la forme de 2 nombres
27 * (Classe ID et Numéro d'erreur) ainsi qu'un texte facultatif associé.
28 * Des textes d'erreurs localisés sont aussi disponibles.</p>
29 * <p>Cette classe se charge aussi d'insérer les appels à l'API d'AlternC
30 * dans les logs du système dans /var/log/alternc/bureau.log
31 * </p>
32 * Copyleft {@link http://alternc.net/ AlternC Team}
33 *
34 * @copyright    AlternC-Team 2002-11-01 http://alternc.net/
35 */
36 class m_err {
37
38   /** Numero de classe d'erreur actuelle */
39   var $clsid=0;
40
41   /** Dernière erreur enregistrée par la classe */
42   var $error=0;
43
44   /** Paramètre chaine eventuellement associé à la dernière erreur */
45   var $param="";
46
47   /** Emplacement du fichier de logs d'AlternC */
48   var $logfile="/var/log/alternc/bureau.log";
49
50   /**
51    * Leve une erreur, signale celle-ci dans les logs et stocke le code erreur
52    *
53    * Cette fonction lance une erreur, l'ajoute dans les logs d'AlternC,
54    * et la met à disposition pour le bureau virtuel pour affichage ultérieur.
55    *
56    * @todo ne plus utiliser $error de façon numérique, nulle part
57    *
58    * @param integer $clsid Classe qui lève l'erreur
59    * @param mixed $error Numéro de l'erreur ou chaîne décrivant l'erreur
60    * @param string $param Paramètre chaine associé à l'erreur (facultatif)
61    * @return boolean TRUE si l'erreur est connue, FALSE sinon.
62    *
63    */
64   function raise($clsid,$error,$param="") {
65     /* Leve une exception. Si elle existe, sinon, stocke un message d'erreur sur erreur ...*/
66     if (_("err_".$clsid."_".$error)!="err_".$clsid."_".$error || is_string($error)) {
67       $this->clsid=$clsid;
68       $this->error=$error;
69       $args = func_get_args();
70       $this->param=array_slice($args, 2);
71       $this->logerr();
72       return true;
73     } else {
74       $this->clsid="err";
75       $this->error=1;
76       $this->param="Numéro $error, Classe $clsid, Valeur $param";
77       $this->logerr();
78       return false;
79     }
80   }
81
82   /**
83    * Retourne la chaine d'erreur correspondant à la dernière erreur rencontrée
84    *
85    * Si la dernière erreur rencontrée est connue, retourne l'erreur en toute lettre
86    * dans la langue actuellement sélectionnée, ou en anglais par défaut.
87    * Si l'erreur n'est pas connue, retourne son numéro de classe et d'ereur.
88    *
89    * @return string Chaine d'erreur.
90    *
91    */
92   function errstr() {
93     if (is_string($this->error)) {
94       $str = _("err_".$this->clsid."_generic: ")._($this->error)."\n";
95     } else {
96       $str = _("err_".$this->clsid."_".$this->error)."\n";
97     }
98     $args = $this->param;
99     if (is_array($args)) {
100       array_unshift($args, $str);
101       $msg = call_user_func_array("sprintf", $args);
102       return $msg;
103     } else {
104       return $args;
105     }
106   }
107
108   /**
109    * Envoi un log d'erreur dans /var/log/alternc/bureau.log
110    *
111    * Cette fonction Loggue la dernière erreur dans /var/log sur la machine,
112    * permettant ainsi aux admins de savoir ce qu'il se passe...
113    * Elle est appelée automatiquement par error
114    * @access private
115    */
116   function logerr() {
117     global $mem;
118     $f=@fopen($this->logfile,"ab");
119     if ($f) {
120       fputs($f,date("d/m/Y H:i:s")." - ERROR - ");
121       fputs($f,$mem->user["login"]." - ");
122       fputs($f,$this->errstr());
123       fclose($f);
124     }
125   }
126
127   /**
128    * Envoi un log d'appel d'API dans /var/log/alternc/bureau.log
129    *
130    * Cette fonction loggue dans /var/log l'appel à la fonction de l'API
131    * d'AlternC.
132    *
133    * @param integer $clsid Numéro de la classe dont on a appelé une fonction
134    * @param string $function Nom de la fonction appelée
135    * @param string $param Paramètre (facultatif) passés à la fonction de l'API.
136    * @return boolean TRUE si le log a été ajouté, FALSE sinon
137    *
138    */
139   function log($clsid,$function,$param="") {
140     global $mem,$cuid;
141     $f=@fopen($this->logfile,"ab");
142     if ($f) {
143       fputs($f,date("d/m/Y H:i:s")." - " . $_SERVER['REMOTE_ADDR'] . " - CALL - ");
144       fputs($f,$mem->user["login"]." - ");
145       fputs($f,$clsid." - ".$function." - ".$param."\n");
146       fclose($f);
147       return true;
148     } else {
149       return false;
150     }
151   }
152
153 }; /* Classe m_err */
154
Note: See TracBrowser for help on using the browser.