* * -------------------------------------------- * * 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 errorlog { /***************************\ * Instance Variables... * \***************************/ var $errorstack = array(); var $public_functions = array( 'message', 'error', 'iserror', 'severity', 'commit', 'clearstack', 'astable' ); var $log_table = 'egw_log'; var $msg_table = 'egw_log_msg'; function message($parms) { $parms['ismsg']=1; CreateObject('phpgwapi.error',$parms); return true; } function error($parms) { $parms['ismsg']=0; CreateObject('phpgwapi.error',$parms); return true; } function write($parms) { $parms['ismsg']=0; $save = $this->errorstack; $this->errorstack = array(); CreateObject('phpgwapi.error',$parms); $this->commit(); $this->errorstack = $save; return true; } function iserror($parms) { $ecode = $parms['code']; foreach($this->errorstack as $err) { if ($ecode == $err->code) { return true; } } return false; } function severity() { $max = 'D'; foreach($this->errorstack as $err) { switch($err->severity) { case 'F': return 'F'; break; case 'E': $max = 'E'; break; case 'W': if ($max != 'E') { $max = 'W'; } break; case 'I': if ($max == 'D') { $max = 'I'; } break; default: break; } } return $max; } function commit() { $db = clone($GLOBALS['egw']->db); $db->insert($this->log_table,array( 'log_date' => $GLOBALS['egw']->db->to_timestamp(time()), 'log_user' => $GLOBALS['egw_info']['user']['account_id'], 'log_app' => $GLOBALS['egw_info']['flags']['currentapp'], 'log_severity' => $this->severity(), ),false,__LINE__,__FILE__); $log_id = $db->get_last_insert_id($this->log_table,'log_id'); foreach($this->errorstack as $i => $err) { $db->insert($this->msg_table,array( 'log_msg_log_id' => $log_id, 'log_msg_seq_no' => $i, 'log_msg_date' => $GLOBALS['egw']->db->to_timestamp($err->timestamp), 'log_msg_severity' => $err->severity, 'log_msg_code' => $err->code, 'log_msg_msg' => $err->msg, 'log_msg_parms' => implode('|',(array)$err->parms), 'log_msg_file' => $err->fname, 'log_msg_line' => $err->line, ),false,__LINE__,__FILE__); } $this->errorstack = array(); return true; } 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; return true; } function astable() { $html = "
\n"; $html .= "\n"; $html .= "\t\n"; $html .= "\t\t\n"; $html .= "\t\t\n"; $html .= "\t\t\n"; $html .= "\t\t\n"; $html .= "\t\t\n"; $html .= "\t\t\n"; $html .= "\t\t\n"; $html .= "\t\t\n"; $html .= "\t\n"; $errorstack = $this->errorstack; for ($i = 0; $i < count($errorstack); $i++) { $err = $errorstack[$i]; switch ($err->severity) { case 'D': $color = 'D3DCFF'; break; case 'I': $color = 'C0FFC0'; break; case 'W': $color = 'FFFFC0'; break; case 'E': $color = 'FFC0C0'; break; case 'F': $color = 'FF0909'; break; } $html .= "\t\n"; $html .= "\t\t\n"; $html .= "\t\t\n"; $html .= "\t\t\n"; $html .= "\t\t\n"; $html .= "\t\t\n"; $html .= "\t\t\n"; $html .= "\t\t\n"; $html .= "\t\t\n"; $html .= "\t\n"; } $html .= "
NoDateAppSError CodeMsgFileLine
".$i."".$GLOBALS['egw']->common->show_date($err->timestamp)."".$err->app."  ".$err->severity."".$err->code."".$err->langmsg()."".$err->fname."".$err->line."
\n"; $html .= "
\n"; return $html; } }