Вход Регистрация
Файл: lib/Errors.php
Строк: 209
<?php
/**
 * 
 * This software is distributed under the GNU GPL v3.0 license.
 * @author Gemorroj
 * @copyright 2008-2011 http://wapinet.ru
 * @license http://www.gnu.org/licenses/gpl-3.0.txt
 * @link http://wapinet.ru/gmanager/
 * @version 0.8 beta
 * 
 * PHP version >= 5.2.1
 * 
 */


class Errors
{
    const 
MESSAGE_OK 0;
    const 
MESSAGE_FAIL 1;
    const 
MESSAGE_EMAIL 2;

    private static 
$_php_errormsg;


    
/**
     * Trace log file
     */
    
private static $_traceFile '/GmanagerTrace.log';


    
/**
     * errorHandler
     * 
     * @param int    $errno
     * @param string $errstr
     * @param string $errfile
     * @param int    $errline
     * @return bool
     */
    
public static function errorHandler ($errno$errstr$errfile$errline)
    {
        if (!
defined('E_DEPRECATED')) {
            
define('E_DEPRECATED'8192);
        }
        if (!
defined('E_USER_DEPRECATED')) {
            
define('E_USER_DEPRECATED'16384);
        }

        if (
preg_match('/Gmanager.php((d+)) : eval()/'$errfile)) {
            switch (
$errno) {
                case 
E_USER_ERROR:
                    @
ob_end_clean();
                    echo 
'USER ERROR: ' $errstr '. Fatal error on line ' $errline ', aborting...' "n";
                    exit;
                    break;


                case 
E_WARNING:
                case 
E_USER_WARNING:
                    echo 
'WARNING: ' $errstr ' on line ' $errline "n";
                    break;


                case 
E_NOTICE:
                case 
E_USER_NOTICE:
                    echo 
'NOTICE: ' $errstr ' on line ' $errline "n";
                    break;


                case 
E_STRICT:
                    echo 
'STRICT: ' $errstr ' on line ' $errline "n";
                    break;


                case 
E_RECOVERABLE_ERROR:
                    echo 
'RECOVERABLE ERROR: ' $errstr ' on line ' $errline "n";
                    break;


                case 
E_PARSE:
                    echo 
'PARSE ERROR: ' $errstr ' on line ' $errline "n";
                    break;


                case 
E_DEPRECATED:
                case 
E_USER_DEPRECATED:
                    echo 
'DEPRECATED: ' $errstr ' on line ' $errline "n";
                    break;


                default:
                    echo 
'Error type: [' $errno '], ' $errstr ' on line ' $errline "n";
                    break;
            }
        } else {
            if (!
Config::get('Gmanager''trace') || !is_writable(self::$_traceFile)) {
                return 
true;
            }

            switch (
$errno) {
                case 
E_USER_ERROR:
                    @
ob_end_clean();
                    echo 
ini_get('error_prepend_string') . 'USER ERROR: ' $errstr '<br/>Fatal error on line ' $errline ' ' $errfile ', PHP ' PHP_VERSION ' (' PHP_OS ')<br/>Aborting...' ini_get('error_append_string');
                    
file_put_contents(self::$_traceFile'USER ERROR: ' $errstr '. Fatal error on line ' $errline ' ' $errfile ', PHP ' PHP_VERSION ' (' PHP_OS ')' "n" print_r(debug_backtrace(), true) . "nn"FILE_APPEND);
                    exit;
                    break;


                case 
E_WARNING:
                case 
E_USER_WARNING:
                    
self::$_php_errormsg 'WARNING: ' $errstr ' on line ' $errline ' ' $errfile;
                    
file_put_contents(self::$_traceFileself::$_php_errormsg ', PHP ' PHP_VERSION ' (' PHP_OS ')' "n" print_r(debug_backtrace(), true) . "nn"FILE_APPEND);
                    break;


                case 
E_NOTICE:
                case 
E_USER_NOTICE:
                    
self::$_php_errormsg 'NOTICE: ' $errstr ' on line ' $errline ' ' $errfile;
                    
file_put_contents(self::$_traceFileself::$_php_errormsg ', PHP ' PHP_VERSION ' (' PHP_OS ')' "n" print_r(debug_backtrace(), true) . "nn"FILE_APPEND);
                    break;


                case 
E_STRICT:
                    
self::$_php_errormsg 'STRICT: ' $errstr ' on line ' $errline ' ' $errfile;
                    
file_put_contents(self::$_traceFileself::$_php_errormsg ', PHP ' PHP_VERSION ' (' PHP_OS ')' "n" print_r(debug_backtrace(), true) . "nn"FILE_APPEND);
                    break;


                case 
E_RECOVERABLE_ERROR:
                    
self::$_php_errormsg 'RECOVERABLE ERROR: ' $errstr ' on line ' $errline ' ' $errfile;
                    
file_put_contents(self::$_traceFileself::$_php_errormsg ', PHP ' PHP_VERSION ' (' PHP_OS ')' "n" print_r(debug_backtrace(), true) . "nn"FILE_APPEND);
                    break;


                case 
E_PARSE:
                    
self::$_php_errormsg 'PARSE ERROR: ' $errstr ' on line ' $errline ' ' $errfile;
                    
file_put_contents(self::$_traceFileself::$_php_errormsg ', PHP ' PHP_VERSION ' (' PHP_OS ')' "n" print_r(debug_backtrace(), true) . "nn"FILE_APPEND);
                    break;


                case 
E_DEPRECATED:
                case 
E_USER_DEPRECATED:
                    
self::$_php_errormsg 'DEPRECATED: ' $errstr ' on line ' $errline ' ' $errfile;
                    
file_put_contents(self::$_traceFileself::$_php_errormsg ', PHP ' PHP_VERSION ' (' PHP_OS ')' "n" print_r(debug_backtrace(), true) . "nn"FILE_APPEND);
                    break;


                default:
                    
self::$_php_errormsg 'Error type: [' $errno '], ' $errstr ' on line ' $errline ' ' $errfile;
                    
file_put_contents(self::$_traceFileself::$_php_errormsg ', PHP ' PHP_VERSION ' (' PHP_OS ')' "n" print_r(debug_backtrace(), true) . "nn"FILE_APPEND);
                    break;
            }
        }

        return 
true;
    }


    
/**
     * get
     * 
     * @return string
     */
    
public static function get ()
    {
        if (
self::$_php_errormsg) {
            return 
self::$_php_errormsg;
        }

        
$err error_get_last();
        if (
$err) {
            return 
$err['message'] . ' (' $err['file'] . ': ' $err['line'] . ')';
        } else {
            return 
Language::get('unknown_error');
        }
    }


    
/**
     * message
     * 
     * @param string $text
     * @param int    $error Errors::MESSAGE_OK - ok, Errors::MESSAGE_FAIL - error, Errors::MESSAGE_EMAIL - error + email
     * @return string
     */
    
public static function message ($text ''$error Errors::MESSAGE_OK)
    {
        if (
$error == self::MESSAGE_EMAIL) {
            return 
'<div class="red">' $text '<br/></div><div><form action="change.php?go=send_mail&amp;c=' Registry::get('rCurrent') . '" method="post"><div><input type="hidden" name="to" value="wapinet@mail.ru"/><input type="hidden" name="theme" value="Gmanager ' Config::getVersion() . ' Error (' Config::get('Gmanager''mode') . ')"/><input type="hidden" name="mess" value="' htmlspecialchars('URI: ' basename($_SERVER['PHP_SELF']) . '?' $_SERVER['QUERY_STRING'] . "n" 'PHP: ' PHP_VERSION "n" htmlspecialchars_decode(str_replace('<br/>'"n"$text), ENT_COMPAT), ENT_COMPAT) . '"/><input type="submit" value="' Language::get('send_report') . '"/></div></form></div>';
        } else if (
$error == self::MESSAGE_FAIL) {
            return 
'<div class="red">' $text '<br/></div>';
        }

        return 
'<div class="green">' $text '<br/></div>';
    }
}

?>
Онлайн: 2
Реклама