diff --git a/phpgwapi/inc/class.errorlog.inc.php b/phpgwapi/inc/class.errorlog.inc.php new file mode 100644 index 0000000000..3405621b10 --- /dev/null +++ b/phpgwapi/inc/class.errorlog.inc.php @@ -0,0 +1,211 @@ + * + * -------------------------------------------- * + * 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' + ); + + 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']; + $errorstack = $this->errorstack; + reset($errorstack); + while(list(,$err)=each($errorstack)) + { + if ($ecode == $err->code) + { + return true; + } + } + return false; + } + + function severity() + { + $max = 'D'; + $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 != 'E') + { + $max = 'W'; + } + break; + case 'I': + if ($max == 'D') + { + $max = 'I'; + } + break; + default: + break; + } + } + return $max; + } + + function commit() + { + $db = $GLOBALS['phpgw']->db; +// $db->lock('phpgw_log'); + $db->query("insert into phpgw_log (log_date, log_user, log_app, log_severity) values " + ."('". $GLOBALS['phpgw']->db->to_timestamp(time()) + ."','".(int)$GLOBALS['phpgw']->session->account_id + ."','".$GLOBALS['phpgw_info']['flags']['currentapp']."'" + .",'".$this->severity()."'" + .")" + ,__LINE__,__FILE__ + ); + + $log_id = $db->get_last_insert_id('phpgw_log','log_id'); +// $db->query('select max(log_id) as lid from phpgw_log'); +// $db->next_record(); +// $log_id = $db->f('lid'); +// $db->unlock(); + + $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, log_msg_file, log_msg_line) values " + ."(" . $log_id + ."," . $i + .", '" . $GLOBALS['phpgw']->db->to_timestamp($err->timestamp) + ."', '". $err->severity . "'" + .", '". $err->code . "'" + .", '". $db->db_addslashes($err->msg) . "'" + .", '". $db->db_addslashes((count($err->parms) > 1?implode('|',$err->parms):$err->parms[1])). "'" + .", '". $err->fname . "'" + .", " . (int)$err->line + .")" + ,__LINE__,__FILE__ + ); + } + unset ($errorstack); + unset ($this->errorstack); + $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 = "
No | \n"; + $html .= "\t\tDate | \n"; + $html .= "\t\tApp | \n"; + $html .= "\t\tS | \n"; + $html .= "\t\tError Code | \n"; + $html .= "\t\tMsg | \n"; + $html .= "\t\tFile | \n"; + $html .= "\t\tLine | \n"; + $html .= "\t
".$i." | \n"; + $html .= "\t\t".$GLOBALS['phpgw']->common->show_date($err->timestamp)." | \n"; + $html .= "\t\t".$err->app."  | \n"; + $html .= "\t\t".$err->severity." | \n"; + $html .= "\t\t".$err->code." | \n"; + $html .= "\t\t".$err->langmsg()." | \n"; + $html .= "\t\t".$err->fname." | \n"; + $html .= "\t\t".$err->line." | \n"; + $html .= "\t