2006-04-26 12:28:53 +00:00
|
|
|
|
<?php
|
|
|
|
|
/*
|
|
|
|
|
$Id: m_err.php,v 1.4 2004/05/19 14:23:06 benjamin Exp $
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
LICENSE
|
|
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
|
|
|
modify it under the terms of the GNU General Public License (GPL)
|
|
|
|
|
as published by the Free Software Foundation; either version 2
|
|
|
|
|
of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
|
|
To read the license please visit http://www.gnu.org/copyleft/gpl.html
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
Original Author of file: Benjamin Sonntag, Franck Missoum
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
/**
|
|
|
|
|
* Classe de gestion des erreurs apparaissant lors d'appels API.
|
|
|
|
|
*
|
|
|
|
|
* <p>Cette classe g<EFBFBD>re les erreurs qui peuvent apparaitre lors d'appels
|
|
|
|
|
* <EFBFBD> l'API d'AlternC. Ces erreurs sont stock<EFBFBD>es sous la forme de 2 nombres
|
|
|
|
|
* (Classe ID et Num<EFBFBD>ro d'erreur) ainsi qu'un texte facultatif associ<EFBFBD>.
|
|
|
|
|
* Des textes d'erreurs localis<EFBFBD>s sont aussi disponibles.</p>
|
|
|
|
|
* <p>Cette classe se charge aussi d'ins<6E>rer les appels <20> l'API d'AlternC
|
|
|
|
|
* dans les logs du syst<EFBFBD>me dans /var/log/alternc/bureau.log
|
|
|
|
|
* </p>
|
|
|
|
|
* Copyleft {@link http://alternc.net/ AlternC Team}
|
|
|
|
|
*
|
|
|
|
|
* @copyright AlternC-Team 2002-11-01 http://alternc.net/
|
|
|
|
|
*/
|
|
|
|
|
class m_err {
|
|
|
|
|
|
|
|
|
|
/** Numero de classe d'erreur actuelle */
|
|
|
|
|
var $clsid=0;
|
|
|
|
|
|
|
|
|
|
/** Derni<6E>re erreur enregistr<74>e par la classe */
|
|
|
|
|
var $error=0;
|
|
|
|
|
|
|
|
|
|
/** Param<61>tre chaine eventuellement associ<63> <20> la derni<6E>re erreur */
|
|
|
|
|
var $param="";
|
|
|
|
|
|
|
|
|
|
/** Emplacement du fichier de logs d'AlternC */
|
|
|
|
|
var $logfile="/var/log/alternc/bureau.log";
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Leve une erreur, signale celle-ci dans les logs et stocke le code erreur
|
|
|
|
|
*
|
|
|
|
|
* Cette fonction lance une erreur, l'ajoute dans les logs d'AlternC,
|
|
|
|
|
* et la met <EFBFBD> disposition pour le bureau virtuel pour affichage ult<EFBFBD>rieur.
|
2008-04-24 17:56:04 +00:00
|
|
|
|
*
|
|
|
|
|
* @todo ne plus utiliser $error de fa<EFBFBD>on num<EFBFBD>rique, nulle part
|
|
|
|
|
*
|
2006-04-26 12:28:53 +00:00
|
|
|
|
* @param integer $clsid Classe qui l<EFBFBD>ve l'erreur
|
2008-04-24 17:56:04 +00:00
|
|
|
|
* @param mixed $error Num<EFBFBD>ro de l'erreur ou cha<68>ne d<>crivant l'erreur
|
2006-04-26 12:28:53 +00:00
|
|
|
|
* @param string $param Param<EFBFBD>tre chaine associ<EFBFBD> <EFBFBD> l'erreur (facultatif)
|
|
|
|
|
* @return boolean TRUE si l'erreur est connue, FALSE sinon.
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
function raise($clsid,$error,$param="") {
|
|
|
|
|
/* Leve une exception. Si elle existe, sinon, stocke un message d'erreur sur erreur ...*/
|
2008-01-22 02:17:01 +00:00
|
|
|
|
if (_("err_".$clsid."_".$error)!="err_".$clsid."_".$error || is_string($error)) {
|
2006-04-26 12:28:53 +00:00
|
|
|
|
$this->clsid=$clsid;
|
|
|
|
|
$this->error=$error;
|
2008-04-24 18:17:43 +00:00
|
|
|
|
$args = func_get_args();
|
|
|
|
|
$this->param=array_slice($args, 2);
|
2006-04-26 12:28:53 +00:00
|
|
|
|
$this->logerr();
|
|
|
|
|
return true;
|
|
|
|
|
} else {
|
|
|
|
|
$this->clsid="err";
|
|
|
|
|
$this->error=1;
|
|
|
|
|
$this->param="Num<EFBFBD>ro $error, Classe $clsid, Valeur $param";
|
|
|
|
|
$this->logerr();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Retourne la chaine d'erreur correspondant <EFBFBD> la derni<EFBFBD>re erreur rencontr<EFBFBD>e
|
|
|
|
|
*
|
|
|
|
|
* Si la derni<EFBFBD>re erreur rencontr<EFBFBD>e est connue, retourne l'erreur en toute lettre
|
|
|
|
|
* dans la langue actuellement s<EFBFBD>lectionn<EFBFBD>e, ou en anglais par d<EFBFBD>faut.
|
|
|
|
|
* Si l'erreur n'est pas connue, retourne son num<EFBFBD>ro de classe et d'ereur.
|
|
|
|
|
*
|
|
|
|
|
* @return string Chaine d'erreur.
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
function errstr() {
|
2008-01-22 04:11:00 +00:00
|
|
|
|
if (is_string($this->error)) {
|
2008-04-24 18:17:43 +00:00
|
|
|
|
$str = _("err_".$this->clsid."_generic: ")._($this->error)."\n";
|
2008-01-22 04:11:00 +00:00
|
|
|
|
} else {
|
2008-04-24 18:17:43 +00:00
|
|
|
|
$str = _("err_".$this->clsid."_".$this->error)."\n";
|
2008-01-22 04:11:00 +00:00
|
|
|
|
}
|
2008-04-24 18:23:55 +00:00
|
|
|
|
$args = $this->param;
|
2008-06-26 09:19:06 +00:00
|
|
|
|
if (is_array($args)) {
|
|
|
|
|
array_unshift($args, $str);
|
|
|
|
|
$msg = call_user_func_array("sprintf", $args);
|
|
|
|
|
return $msg;
|
2008-07-10 20:48:04 +00:00
|
|
|
|
} else {
|
|
|
|
|
return $args;
|
|
|
|
|
}
|
2006-04-26 12:28:53 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Envoi un log d'erreur dans /var/log/alternc/bureau.log
|
|
|
|
|
*
|
|
|
|
|
* Cette fonction Loggue la derni<EFBFBD>re erreur dans /var/log sur la machine,
|
|
|
|
|
* permettant ainsi aux admins de savoir ce qu'il se passe...
|
|
|
|
|
* Elle est appel<EFBFBD>e automatiquement par error
|
|
|
|
|
* @access private
|
|
|
|
|
*/
|
|
|
|
|
function logerr() {
|
|
|
|
|
global $mem;
|
|
|
|
|
$f=@fopen($this->logfile,"ab");
|
|
|
|
|
if ($f) {
|
|
|
|
|
fputs($f,date("d/m/Y H:i:s")." - ERROR - ");
|
|
|
|
|
fputs($f,$mem->user["login"]." - ");
|
2008-01-22 04:11:00 +00:00
|
|
|
|
fputs($f,$this->errstr());
|
2006-04-26 12:28:53 +00:00
|
|
|
|
fclose($f);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Envoi un log d'appel d'API dans /var/log/alternc/bureau.log
|
|
|
|
|
*
|
|
|
|
|
* Cette fonction loggue dans /var/log l'appel <20> la fonction de l'API
|
|
|
|
|
* d'AlternC.
|
|
|
|
|
*
|
|
|
|
|
* @param integer $clsid Num<EFBFBD>ro de la classe dont on a appel<EFBFBD> une fonction
|
|
|
|
|
* @param string $function Nom de la fonction appel<EFBFBD>e
|
|
|
|
|
* @param string $param Param<EFBFBD>tre (facultatif) pass<EFBFBD>s <EFBFBD> la fonction de l'API.
|
|
|
|
|
* @return boolean TRUE si le log a <EFBFBD>t<EFBFBD> ajout<EFBFBD>, FALSE sinon
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
function log($clsid,$function,$param="") {
|
|
|
|
|
global $mem,$cuid;
|
|
|
|
|
$f=@fopen($this->logfile,"ab");
|
|
|
|
|
if ($f) {
|
2011-06-04 09:39:15 +00:00
|
|
|
|
if (!isset($_SERVER['REMOTE_ADDR'])) $_SERVER['REMOTE_ADDR']="::1";
|
2008-08-18 08:17:37 +00:00
|
|
|
|
fputs($f,date("d/m/Y H:i:s")." - " . $_SERVER['REMOTE_ADDR'] . " - CALL - ");
|
2006-04-26 12:28:53 +00:00
|
|
|
|
fputs($f,$mem->user["login"]." - ");
|
|
|
|
|
fputs($f,$clsid." - ".$function." - ".$param."\n");
|
|
|
|
|
fclose($f);
|
|
|
|
|
return true;
|
|
|
|
|
} else {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}; /* Classe m_err */
|