Alternc  3.2
Alternc logiel libre pour l'hébergement
 All Data Structures Namespaces Files Functions Variables Pages
m_err.php
Go to the documentation of this file.
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="Error # $error in Class $clsid, Value is $param. (sorry, no text for this error in your language at the moment)";
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  // new way of handling errors: message directly in the class
95  $str = $this->error."\n";
96  } else {
97  // old way: message in the locales files (ugly)
98  $str = _("err_".$this->clsid."_".$this->error)."\n";
99  }
100  $args = $this->param;
101  if (is_array($args)) {
102  array_unshift($args, $str);
103  $msg = call_user_func_array("sprintf", $args);
104  return $msg;
105  } else {
106  return $args;
107  }
108  }
109 
110  /**
111  * Envoi un log d'erreur dans /var/log/alternc/bureau.log
112  *
113  * Cette fonction Loggue la dernière erreur dans /var/log sur la machine,
114  * permettant ainsi aux admins de savoir ce qu'il se passe...
115  * Elle est appelée automatiquement par error
116  * @access private
117  */
118  function logerr() {
119  global $mem;
120  @file_put_contents($this->logfile, date("d/m/Y H:i:s")." - ERROR - ".$mem->user["login"]." - ".$this->errstr(), FILE_APPEND );
121  }
122 
123  /**
124  * Envoi un log d'appel d'API dans /var/log/alternc/bureau.log
125  *
126  * Cette fonction loggue dans /var/log l'appel à la fonction de l'API
127  * d'AlternC.
128  *
129  * @param integer $clsid Numéro de la classe dont on a appelé une fonction
130  * @param string $function Nom de la fonction appelée
131  * @param string $param Paramètre (facultatif) passés à la fonction de l'API.
132  * @return boolean TRUE si le log a été ajouté, FALSE sinon
133  *
134  */
135  function log($clsid,$function,$param="") {
136  global $mem,$cuid;
137  return @file_put_contents($this->logfile,date("d/m/Y H:i:s")." - " .get_remote_ip(). " - CALL - ".$mem->user["login"]." - $clsid - $function - $param\n", FILE_APPEND );
138  }
139 
140 }; /* Classe m_err */
141 
142 ?>