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