X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=includes%2Ferrors.inc;h=a54abba810f3adf87d950d29f6c763dd6a5f81da;hb=f0d25b5b9e8a2ec332a921fa85d5fb8be6fa73b3;hp=2a1aedd9f9138afdd4ab5bd79c37fa67fbe1191a;hpb=95ff74b5722826544743a01daf527aa3c9efe11a;p=fa-stable.git diff --git a/includes/errors.inc b/includes/errors.inc index 2a1aedd9..a54abba8 100644 --- a/includes/errors.inc +++ b/includes/errors.inc @@ -21,7 +21,8 @@ function get_backtrace($html = false, $skip=0) foreach($trace as $trn => $tr) { if ($trn <= $skip) continue; if ($html) $str .= ''; - $str .= $tr['file'].':'.$tr['line'].': '; + if (isset($tr['file']) && isset($tr['line'])) + $str .= $tr['file'].':'.$tr['line'].': '; if ($html) $str .= ''; if (isset($tr['type'])) { if($tr['type'] == '::') { @@ -32,7 +33,7 @@ function get_backtrace($html = false, $skip=0) } $str .= $tr['function'].'('; - if(is_array($tr['args'])) { + if(isset($tr['args']) && is_array($tr['args'])) { $args = array(); foreach($tr['args'] as $n=>$a) { if (is_object($tr['args'][$n])) @@ -56,7 +57,7 @@ function get_backtrace($html = false, $skip=0) // display in message box. function error_handler($errno, $errstr, $file, $line) { - global $messages, $SysPrefs; + global $messages, $SysPrefs, $cur_error_level; // skip well known warnings we don't care about. // Please use restrainedly to not risk loss of important messages @@ -71,22 +72,31 @@ function error_handler($errno, $errstr, $file, $line) { } } - $bt = $SysPrefs->go_debug>1 ? get_backtrace(true, 1) : array(); + $bt = isset($SysPrefs) && $SysPrefs->go_debug>1 ? get_backtrace(true, 1) : array(); - // error_reporting==0 when messages are set off with @ - if ($errno & error_reporting()) { - // suppress duplicated errors - if (!in_array(array($errno, $errstr, $file, $line, @$bt), $messages)) - $messages[] = array($errno, $errstr, $file, $line, @$bt); - } - else if ($errno&~E_NOTICE && $errstr != '') { // log all not displayed messages - $user = @$_SESSION["wa_current_user"]->loginname; - $context = isset($SysPrefs) && !$SysPrefs->db_ok ? '[before upgrade]' : ''; - error_log(user_company() . ":$user:". basename($file) .":$line:$context $errstr"); + // error_reporting!=cur_error_level when messages are set off with @ + if ($cur_error_level == error_reporting()) { + if ($errno & $cur_error_level) { + // suppress duplicated errors + if (!in_array(array($errno, $errstr, $file, $line, @$bt), $messages)) + $messages[] = array($errno, $errstr, $file, $line, @$bt); + } + else if ($errno&~E_NOTICE && $errstr != '') { // log all not displayed messages + $user = @$_SESSION["wa_current_user"]->loginname; + $context = isset($SysPrefs) && !$SysPrefs->db_ok ? '[before upgrade]' : ''; + error_log(user_company() . ":$user:". basename($file) .":$line:$context $errstr"); + } } return true; } + +function exception_handler($exception) +{ + error_handler(E_ERROR, sprintf(_("Unhandled exception [%s]: %s."), $exception->getCode(), $exception->getMessage()), + $exception->getFile(), $exception->getLine()); + end_page(); +} //------------------------------------------------------------------------------ // Formats system messages before insert them into message
// FIX center is unused now