Ejemplo n.º 1
0
/**
 * 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;
    }
}
Ejemplo n.º 2
0
/**
 * 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
    }
}