egroupware/phpgwapi/inc/class.log.inc.php
2001-08-05 06:48:42 +00:00

176 lines
4.8 KiB
PHP

<?php
/**************************************************************************\
* phpGroupWare - log *
* http://www.phpgroupware.org *
* This application written by jerry westrick <jerry@westrick.com> *
* -------------------------------------------- *
* This program is free software; you can redistribute it and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; either version 2 of the License, or (at your *
* option) any later version. *
\**************************************************************************/
/* $Id$ */
class log
{
/***************************\
* Instance Variables... *
\***************************/
var $errorstack = array();
var $public_functions = array('message',
'error',
'iserror',
'severity',
'commit',
'clearstack',
'astable',
);
function message($etext,$p0='',$p1='',$p2='',$p3='',$p4='',$p5='',$p6='',$p7='',$p8='',$p9='')
{
$parms = array($p0,$p1,$p2,$p3,$p4,$p5,$p6,$p7,$p8,$p9);
CreateObject('phpgwapi.error',$etext,$parms,1);
}
function error($etext,$p0='',$p1='',$p2='',$p3='',$p4='',$p5='',$p6='',$p7='',$p8='',$p9='')
{
$parms = array($p0,$p1,$p2,$p3,$p4,$p5,$p6,$p7,$p8,$p9);
CreateObject('phpgwapi.error',$etext,$parms,false);
}
function iserror($ecode)
{
$errorstack = $this->errorstack;
reset($errorstack);
while(list(,$err)=each($errorstack))
{
if ($ecode == $err->code)
{
return true;
}
}
return false;
}
function severity()
{
$max = 'I';
$errorstack = $this->errorstack;
reset($errorstack);
while(list(,$err)=each($errorstack))
{
switch($err->severity)
{
case 'F': return 'F'; break;
case 'E': $max = 'E'; break;
case 'W': if ($max == 'I')
{
$max = 'W';
}
break;
}
}
return $max;
}
function commit()
{
global $phpgw, $phpgw_info;
$db = $phpgw->db;
$db->query ('insert into phpgw_log (log_date, log_user, log_app, log_severity) values '
.'('.time()
.','.$phpgw->session->account_id
.',"'.$phpgw_info['flags']['currentapp'].'"'
.',"'.$this->severity().'"'
.')'
,__LINE__,__FILE__);
$db->query ('select max(log_id) log_id from phpgw_log',__LINE__,__FILE__);
$db->next_record();
$log_id = $db->f('log_id');
$errorstack = $this->errorstack;
for ($i = 0; $i < count($errorstack); $i++)
{
$err = $errorstack[$i];
$db->query ("insert into phpgw_log_msg "
."(log_msg_log_id, log_msg_seq_no, log_msg_date, "
."log_msg_severity, log_msg_code, log_msg_msg, log_msg_parms) values "
."( " . $log_id
.", " . $i
.", " . $err->timestamp
.", '". $err->severity . "'"
.", '". $err->code . "'"
.", '". $err->msg . "'"
.", '". addslashes(implode('|',$err->parms)). "'"
.")"
,__LINE__,__FILE__);
};
unset ($errorstack);
unset ($this->errorstack);
$this->errorstack = array();
}
function clearstack()
{
$new = array();
reset($this->errorstack);
for ($i = 0; $i < count($this->errorstack); $i++)
{
$err = $this->errorstack[$i];
if ($err->ismsg)
{
$new[] = $err;
};
}
unset ($this->errorstack);
$this->errorstack = $new;
}
function astable()
{
global $phpgw;
$html = "<center>\n";
$html .= "<table width=\"98%\">\n";
$html .= "\t<tr bgcolor=\"D3DCFF\">\n";
$html .= "\t\t<td width=\"2%\">No</td>\n";
$html .= "\t\t<td width=\"16%\">Date</td>\n";
$html .= "\t\t<td width=\"15%\">App</td>\n";
$html .= "\t\t<td align=\"center\", width=\"2%\">S</td>\n";
$html .= "\t\t<td width=\"10%\">Error Code</td>\n";
$html .= "\t\t<td >Msg</td>\n";
$html .= "\t</tr>\n";
$errorstack = $this->errorstack;
for ($i = 0; $i < count($errorstack); $i++)
{
$err = $errorstack[$i];
switch ($err->severity)
{
case 'I': $color = 'C0FFC0'; break;
case 'W': $color = 'FFFFC0'; break;
case 'E': $color = 'FFC0C0'; break;
case 'F': $color = 'FF0909'; break;
}
$html .= "\t<tr bgcolor=".'"'.$color.'"'.">\n";
$html .= "\t\t<td align=center>".$i."</td>\n";
$html .= "\t\t<td>".date('Y.n.d:H.i.s',$err->timestamp)."</td>\n";
$html .= "\t\t<td>".$phpgw_info['flags']['currentapp']."&nbsp </td>\n";
$html .= "\t\t<td align=center>".$err->severity."</td>\n";
$html .= "\t\t<td>".$err->code."</td>\n";
$html .= "\t\t<td>".$err->langmsg()."</td>\n";
$html .= "\t</tr>\n";
};
$html .= "</table>\n";
$html .= "</center>\n";
return $html;
}
}