/** * phpGroupWare generic error handler * * @link http://php.net/set_error_handler * */ function phpgw_handle_error($error_level, $error_msg, $error_file, $error_line, $error_context = array()) { if (error_reporting() == 0) { return true; } /* _debug_array($error_level); _debug_array($error_msg); _debug_array($error_file); _debug_array($error_line); //_debug_array($bt = debug_backtrace());die(); */ if (isset($GLOBALS['phpgw_info']['server']['log_levels']['global_level'])) { switch ($GLOBALS['phpgw_info']['server']['log_levels']['global_level']) { case 'F': // Fatal // Fatal case 'E': // Error $error_reporting = E_ERROR | E_USER_ERROR | E_PARSE; break; case 'W': // Warn // Warn case 'I': // Info $error_reporting = E_ERROR | E_USER_ERROR | E_WARNING | E_USER_WARNING | E_PARSE; break; case 'N': // Notice // Notice case 'D': // Debug $error_reporting = E_ERROR | E_USER_ERROR | E_WARNING | E_USER_WARNING | E_NOTICE | E_USER_NOTICE | E_PARSE; break; case 'S': // Strict $error_reporting = E_STRICT | E_PARSE; break; case 'DP': // Deprecated $error_reporting = E_ERROR | E_USER_ERROR | E_DEPRECATED | E_USER_DEPRECATED; break; } if (!!!($error_reporting & $error_level)) { return true; } } if (!isset($GLOBALS['phpgw']->log) || !is_object($GLOBALS['phpgw']->log)) { $GLOBALS['phpgw']->log = createObject('phpgwapi.log'); } $log =& $GLOBALS['phpgw']->log; if (!isset($GLOBALS['phpgw_info']['user']['apps']['admin'])) { $error_file = str_replace(PHPGW_SERVER_ROOT, '/path/to/phpgroupware', $error_file); } $bt = debug_backtrace(); $log_args = array('file' => $error_file, 'line' => $error_line, 'text' => "{$error_msg}\n" . phpgw_parse_backtrace($bt)); switch ($error_level) { case E_USER_ERROR: case E_ERROR: $log_args['severity'] = 'F'; //all "ERRORS" should be fatal $log->fatal($log_args); echo '<p class="msg">' . lang('ERROR: %1 in %2 at line %3', $error_msg, $error_file, $error_line) . "</p>\n"; die('<pre>' . phpgw_parse_backtrace($bt) . "</pre>\n"); case E_WARNING: case E_USER_WARNING: $log_args['severity'] = 'W'; $log->warn($log_args); echo '<p class="msg">' . lang('Warning: %1 in %2 at line %3', $error_msg, $error_file, $error_line) . "</p>\n"; echo '<pre>' . phpgw_parse_backtrace($bt) . "</pre>\n"; break; case PHPGW_E_INFO: $log_args['severity'] = 'I'; $log->info($log_args); break; case PHPGW_E_DEBUG: $log_args['severity'] = 'D'; $log->info($log_args); break; case E_NOTICE: case E_USER_NOTICE: $log_args['severity'] = 'N'; $log->notice($log_args); if (isset($GLOBALS['phpgw_info']['server']['log_levels']['global_level']) && $GLOBALS['phpgw_info']['server']['log_levels']['global_level'] == 'N') { echo '<p>' . lang('Notice: %1 in %2 at line %3', $error_msg, $error_file, $error_line) . "</p>\n"; echo '<pre>' . phpgw_parse_backtrace($bt) . "</pre>\n"; } break; case E_STRICT: $log_args['severity'] = 'S'; $log->strict($log_args); if (isset($GLOBALS['phpgw_info']['server']['log_levels']['global_level']) && $GLOBALS['phpgw_info']['server']['log_levels']['global_level'] == 'S') { // Will find the messages in the log - no need to print to screen // echo '<p>' . lang('Strict: %1 in %2 at line %3', $error_msg, $error_file, $error_line) . "</p>\n"; // echo '<pre>' . phpgw_parse_backtrace($bt) . "</pre>\n"; } break; case E_DEPRECATED: case E_USER_DEPRECATED: $log_args['severity'] = 'DP'; $log->deprecated($log_args); echo '<p class="msg">' . lang('deprecated: %1 in %2 at line %3', $error_msg, $error_file, $error_line) . "</p>\n"; echo '<pre>' . phpgw_parse_backtrace($bt) . "</pre>\n"; break; } }
/** * phpGroupWare generic error handler * * @link http://php.net/set_error_handler * */ function phpgw_handle_error($error_level, $error_msg, $error_file, $error_line, $error_context = array()) { if (error_reporting() == 0) { return true; } if (!isset($GLOBALS['phpgw']->log) || !is_object($GLOBALS['phpgw']->log)) { $GLOBALS['phpgw']->log = createObject('phpgwapi.log'); } $log =& $GLOBALS['phpgw']->log; $error_file = '/path/to/phpgroupware' . substr($error_file, strlen(PHPGW_SERVER_ROOT)); $bt = debug_backtrace(); $log_args = array('file' => $error_file, 'line' => $error_line, 'text' => "{$error_msg}\n" . phpgw_parse_backtrace($bt)); // echo "\n<br>" . lang('ERROR : %1 in %2 at line %3', $error_msg, $error_file, $error_line) . "<br>\n"; switch ($error_level) { case E_USER_ERROR: case E_ERROR: $log_args['severity'] = 'F'; //all "ERRORS" should be fatal $log->fatal($log_args); echo "\n<br>" . lang('ERROR Fatal: %1 in %2 at line %3', $error_msg, $error_file, $error_line) . "<br>\n"; break; case E_WARNING: case E_USER_WARNING: $log_args['severity'] = 'W'; $log->warn($log_args); echo "\n<br>" . lang('ERROR Warning: %1 in %2 at line %3', $error_msg, $error_file, $error_line) . "<br>\n"; break; case PHPGW_E_INFO: $log_args['severity'] = 'I'; $log->info($log_args); break; case PHPGW_E_DEBUG: $log_args['severity'] = 'D'; $log->info($log_args); break; case E_NOTICE: case E_USER_NOTICE: case E_STRICT: $log_args['severity'] = 'N'; $log->notice($log_args); // echo "\n<br>" . lang('ERROR Notice: %1 in %2 at line %3', $error_msg, $error_file, $error_line) . "<br>\n"; //this will be commented in the final version //No default, we just ignore it, for now } }