Вход Регистрация
Файл: 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::$_traceFile, self::$_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::$_traceFile, self::$_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::$_traceFile, self::$_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::$_traceFile, self::$_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::$_traceFile, self::$_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::$_traceFile, self::$_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::$_traceFile, self::$_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
Реклама