| +-----------------------------------------------------------------------+ $Id$ */ // throw system error and show error page function raise_error($arg=array(), $log=FALSE, $terminate=FALSE) { global $__page_content, $CONFIG, $OUTPUT, $ERROR_CODE, $ERROR_MESSAGE; /* $arg keys: int code string type (php, xpath, db, imap, javascript) string message sring file int line */ // report bug (if not incompatible browser) if ($log && $arg['type'] && $arg['message']) log_bug($arg); // display error page and terminate script if ($terminate) { $ERROR_CODE = $arg['code']; $ERROR_MESSAGE = $arg['message']; include("program/steps/error.inc"); exit; } } // report error function log_bug($arg_arr) { global $CONFIG, $INSTALL_PATH; $program = $arg_arr['type']=='xpath' ? 'XPath' : strtoupper($arg_arr['type']); // write error to local log file if ($CONFIG['debug_level'] & 1) { $log_entry = sprintf("[%s] %s Error: %s in %s on line %d\n", date("d-M-Y H:i:s O", mktime()), $program, $arg_arr['message'], $arg_arr['file'], $arg_arr['line']); if (empty($CONFIG['log_dir'])) $CONFIG['log_dir'] = $INSTALL_PATH.'logs'; // try to open specific log file for writing if ($fp = @fopen($CONFIG['log_dir'].'/errors', 'a')) { fwrite($fp, $log_entry); fclose($fp); } else { // send error to PHPs error handler trigger_error($arg_arr['message']); } } /* // resport the bug to the global bug reporting system if ($CONFIG['debug_level'] & 2) { $delm = '%AC'; http_request(sprintf('http://roundcube.net/log/bug.php?_type=%s&_domain=%s&_server_ip=%s&_client_ip=%s&_useragent=%s&_url=%s%%3A//%s&_errors=%s%s%s%s%s', $arg_arr['type'], $GLOBALS['HTTP_HOST'], $GLOBALS['SERVER_ADDR'], $GLOBALS['REMOTE_ADDR'], rawurlencode($GLOBALS['HTTP_USER_AGENT']), $GLOBALS['SERVER_PORT']==43 ? 'https' : 'http', $GLOBALS['HTTP_HOST'].$GLOBALS['REQUEST_URI'], $arg_arr['file'], $delm, $arg_arr['line'], $delm, rawurlencode($arg_arr['message']))); } */ // show error if debug_mode is on if ($CONFIG['debug_level'] & 4) { print "$program Error"; if (!empty($arg_arr['file']) && !empty($arg_arr['line'])) print " in $arg_arr[file] ($arg_arr[line])"; print ": "; print nl2br($arg_arr['message']); print '
'; flush(); } } ?>