source: alternc/trunk/bureau/class/m_err.php @ 2198

Revision 2198, 4.9 KB checked in by anarcat, 5 years ago (diff)

use strtr instead of printf to expand variables in translated strings

this means that the error arguments are now passed as an associative
array.

exemple:

$err->raise("foo", "error message: %error", array('%error' => "blah"));

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*/
36class 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      $this->param=$param;
70      $this->logerr();
71      return true;
72    } else {
73      $this->clsid="err";
74      $this->error=1;
75      $this->param="Numéro $error, Classe $clsid, Valeur $param";
76      $this->logerr();
77      return false;
78    }
79  }
80
81  /**
82   * Retourne la chaine d'erreur correspondant à la dernière erreur rencontrée
83   *
84   * Si la dernière erreur rencontrée est connue, retourne l'erreur en toute lettre
85   * dans la langue actuellement sélectionnée, ou en anglais par défaut.
86   * Si l'erreur n'est pas connue, retourne son numéro de classe et d'ereur.
87   *
88   * @return string Chaine d'erreur.
89   *
90   */
91  function errstr() {
92    if (is_string($this->error)) {
93      $msg = strtr(_("err_".$this->clsid."_generic: ")._($this->error)."\n",$this->param);
94    } else {
95      $msg = strtr(_("err_".$this->clsid."_".$this->error)."\n",$this->param);
96    }
97    return $msg;
98  }
99
100  /**
101   * Envoi un log d'erreur dans /var/log/alternc/bureau.log
102   *
103   * Cette fonction Loggue la dernière erreur dans /var/log sur la machine,
104   * permettant ainsi aux admins de savoir ce qu'il se passe...
105   * Elle est appelée automatiquement par error
106   * @access private
107   */
108  function logerr() {
109    global $mem;
110    $f=@fopen($this->logfile,"ab");
111    if ($f) {
112      fputs($f,date("d/m/Y H:i:s")." - ERROR - ");
113      fputs($f,$mem->user["login"]." - ");
114      fputs($f,$this->errstr());
115      fclose($f);
116    }
117  }
118
119  /**
120   * Envoi un log d'appel d'API dans /var/log/alternc/bureau.log
121   *
122   * Cette fonction loggue dans /var/log l'appel à la fonction de l'API
123   * d'AlternC.
124   *
125   * @param integer $clsid Numéro de la classe dont on a appelé une fonction
126   * @param string $function Nom de la fonction appelée
127   * @param string $param Paramètre (facultatif) passés à la fonction de l'API.
128   * @return boolean TRUE si le log a été ajouté, FALSE sinon
129   *
130   */
131  function log($clsid,$function,$param="") {
132    global $mem,$cuid;
133    $f=@fopen($this->logfile,"ab");
134    if ($f) {
135      fputs($f,date("d/m/Y H:i:s")." - CALL - ");
136      fputs($f,$mem->user["login"]." - ");
137      fputs($f,$clsid." - ".$function." - ".$param."\n");
138      fclose($f);
139      return true;
140    } else {
141      return false;
142    }
143  }
144
145}; /* Classe m_err */
Note: See TracBrowser for help on using the repository browser.