| 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 | $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 */ |
|---|