ACC SHELL

Path : /srv/www/vhosts/alfa-com/engine/
File Upload :
Current File : /srv/www/vhosts/alfa-com/engine/Error.php

<?php
	// Author: Jakub Macek, CZ; Copyright: Poski.com s.r.o.; Code is taken from comments on php.net and slightly altered. Copying allowed.

	function my_error_handler_arg($arg)
	{
		switch (strtolower(gettype($arg)))
		{
			case 'string':
				$result = '"' . U::cut(str_replace(array("\n"), array(''), $arg), 200) . '"';
				break;
			case 'boolean':
				$result = var_export($arg, true);
				break;
			case 'object':
				$result =  'object(' . get_class($arg) . ')';
				break;
			case 'array':
				$result = 'array(' . count($arg) . ')';
				break;
			case 'resource':
				$result = 'resource(' . get_resource_type($arg) . ')';
				break;
			default:
				$result = var_export($arg, true);
				break;
		}
		return $result;
	}

	function error_print_backtrace($development = false)
	{
		ob_start();
		if(function_exists('debug_backtrace')){
			$basepath = BASE;
			$backtrace = debug_backtrace();
			array_shift($backtrace);
			foreach($backtrace as $i=>$l)
			{
				if (isset($l['class']))
					echo "[$i] in function <b>{$l['class']}{$l['type']}{$l['function']}(</b>";
				else
					echo "[$i] in function <b>{$l['function']}(</b>";
				if (!empty($l['args']))
				{
					$separator = '';
					if ($development)
						foreach($l['args'] as $arg)
						{
							echo $separator . my_error_handler_arg($arg);
							$separator = ', ';
						}
				}
				echo "<b>)</b>";
				if ($development)
				{
					if (isset($l['file']))
					{
						$file = str_replace($basepath, "", $l['file']);
						$file = str_replace("/var/www/vhosts/".$GLOBALS['site']['devDomain']."/httpdocs/engine/", "~/", $l['file']);
						echo " in <b>$file</b>";
					}
					if (isset($l['line'])) echo " on line <b>{$l['line']}</b>";
				}
				echo "\n";
			}
		}
		return ob_get_clean();
	}
	
	function my_error_handler($errno, $errstr, $errfile, $errline){
		$errno = $errno & error_reporting();
		if($errno == 0) return;
		if(!defined('E_STRICT'))            define('E_STRICT', 2048);
		if(!defined('E_RECOVERABLE_ERROR')) define('E_RECOVERABLE_ERROR', 4096);
		echo "\n<pre><b>";
		switch($errno){
			case E_ERROR:               echo "Error";                  break;
			case E_WARNING:             echo "Warning";                break;
			case E_PARSE:               echo "Parse Error";            break;
			case E_NOTICE:              echo "Notice";                 break;
			case E_CORE_ERROR:          echo "Core Error";             break;
			case E_CORE_WARNING:        echo "Core Warning";           break;
			case E_COMPILE_ERROR:       echo "Compile Error";          break;
			case E_COMPILE_WARNING:     echo "Compile Warning";        break;
			case E_USER_ERROR:          echo "User Error";             break;
			case E_USER_WARNING:        echo "User Warning";           break;
			case E_USER_NOTICE:         echo "User Notice";            break;
			case E_STRICT:              echo "Strict Notice";          break;
			case E_RECOVERABLE_ERROR:   echo "Recoverable Error";      break;
			default:                    echo "Unknown error ($errno)"; break;
		}
		$basepath = $GLOBALS["site"]["base"][0];
		$errfile = str_replace($basepath, "", $errfile);
		echo ":</b> <i>$errstr</i> in <b>$errfile</b> on line <b>$errline</b>\n";
		echo error_print_backtrace(DEV);
		echo "</pre>\n";
		if(isset($GLOBALS['error_fatal'])){
			if($GLOBALS['error_fatal'] & $errno) die('fatal');
		}

		return true;
	}

	function error_fatal($mask = NULL){
		if(!is_null($mask)){
			$GLOBALS['error_fatal'] = $mask;
		}elseif(!isset($GLOBALS['die_on'])){
			$GLOBALS['error_fatal'] = 0;
		}
		return $GLOBALS['error_fatal'];
	}

	set_error_handler('my_error_handler');
	error_fatal(E_ERROR || E_WARNING);

	if (!function_exists('error'))
	{
		function error($message = '', $level = E_USER_ERROR)
		{
			//echo '<div style="background: white; border: 2px solid red; color: black;">';
			//echo '<pre>' . "\n"; debug_print_backtrace(); echo '</pre>' . "\n";
			trigger_error($message, $level);
			//echo '</div>';
		}
	}

	function death($message, $variable = null)
	{
		trigger_error($message, E_USER_ERROR);
		dump($variable);
		die();
	}

	if (!function_exists('dump'))
	{
		function dump($var, $label = null, $echo = true, $html = true)
		{
			$label = ($label === null) ? '' : rtrim($label) . ' ' . PHP_EOL;
			ob_start();
			var_dump($var);
			$output = ob_get_clean();
			$output = preg_replace("/\]\=\>\n(\s+)/m", "] => ", $output);
			if ($html)
				$output = PHP_EOL . '<!--dump--><pre>' . PHP_EOL . ($label ? ('<strong>' . $label . '</strong>') : '') . htmlspecialchars($output, ENT_QUOTES) . '</pre><!--dump-->';
			else
				$output = PHP_EOL . $label . PHP_EOL . $output . PHP_EOL;
			if ($echo)
				echo $output;
			return $output;
		}
	}

	function fbo($object)
	{
		fb(dump($object, null, false, false));
	}
?>

ACC SHELL 2018