<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); | |
/** | |
* CodeIgniter | |
* | |
* An open source application development framework for PHP 4.3.2 or newer | |
* | |
* @package CodeIgniter | |
* @author ExpressionEngine Dev Team | |
* @copyright Copyright (c) 2006, EllisLab, Inc. | |
* @license http://codeigniter.com/user_guide/license.html | |
* @link http://codeigniter.com | |
* @since Version 1.0 | |
* @filesource | |
*/ | |
// ------------------------------------------------------------------------ | |
/** | |
* Exceptions Class | |
* | |
* @package CodeIgniter | |
* @subpackage Libraries | |
* @category Exceptions | |
* @author ExpressionEngine Dev Team | |
* @link http://codeigniter.com/user_guide/libraries/exceptions.html | |
*/ | |
class CI_Exceptions { | |
var $action; | |
var $severity; | |
var $message; | |
var $filename; | |
var $line; | |
var $ob_level; | |
var $levels = array( | |
E_ERROR => 'Error', | |
E_WARNING => 'Warning', | |
E_PARSE => 'Parsing Error', | |
E_NOTICE => 'Notice', | |
E_CORE_ERROR => 'Core Error', | |
E_CORE_WARNING => 'Core Warning', | |
E_COMPILE_ERROR => 'Compile Error', | |
E_COMPILE_WARNING => 'Compile Warning', | |
E_USER_ERROR => 'User Error', | |
E_USER_WARNING => 'User Warning', | |
E_USER_NOTICE => 'User Notice', | |
E_STRICT => 'Runtime Notice' | |
); | |
/** | |
* Constructor | |
* | |
*/ | |
function CI_Exceptions() | |
{ | |
$this->ob_level = ob_get_level(); | |
// Note: Do not log messages from this constructor. | |
} | |
// -------------------------------------------------------------------- | |
/** | |
* Exception Logger | |
* | |
* This function logs PHP generated error messages | |
* | |
* @access private | |
* @param string the error severity | |
* @param string the error string | |
* @param string the error filepath | |
* @param string the error line number | |
* @return string | |
*/ | |
function log_exception($severity, $message, $filepath, $line) | |
{ | |
$severity = (! isset($this->levels[$severity])) ? $severity : $this->levels[$severity]; | |
log_message('error', 'Severity: '.$severity.' --> '.$message. ' '.$filepath.' '.$line, TRUE); | |
} | |
// -------------------------------------------------------------------- | |
/** | |
* 404 Page Not Found Handler | |
* | |
* @access private | |
* @param string | |
* @return string | |
*/ | |
function show_404($page = '') | |
{ | |
$heading = "404 Page Not Found"; | |
$message = "The page you requested was not found."; | |
log_message('error', '404 Page Not Found --> '.$page); | |
echo $this->show_error($heading, $message, 'error_404'); | |
exit; | |
} | |
// -------------------------------------------------------------------- | |
/** | |
* General Error Page | |
* | |
* This function takes an error message as input | |
* (either as a string or an array) and displays | |
* it using the specified template. | |
* | |
* @access private | |
* @param string the heading | |
* @param string the message | |
* @param string the template name | |
* @return string | |
*/ | |
function show_error($heading, $message, $template = 'error_general') | |
{ | |
$message = '<p>'.implode('</p><p>', (! is_array($message)) ? array($message) : $message).'</p>'; | |
if (ob_get_level() > $this->ob_level + 1) | |
{ | |
ob_end_flush(); | |
} | |
ob_start(); | |
include(APPPATH.'errors/'.$template.EXT); | |
$buffer = ob_get_contents(); | |
ob_end_clean(); | |
return $buffer; | |
} | |
// -------------------------------------------------------------------- | |
/** | |
* Native PHP error handler | |
* | |
* @access private | |
* @param string the error severity | |
* @param string the error string | |
* @param string the error filepath | |
* @param string the error line number | |
* @return string | |
*/ | |
function show_php_error($severity, $message, $filepath, $line) | |
{ | |
$severity = (! isset($this->levels[$severity])) ? $severity : $this->levels[$severity]; | |
$filepath = str_replace("\\", "/", $filepath); | |
// For safety reasons we do not show the full file path | |
if (FALSE !== strpos($filepath, '/')) | |
{ | |
$x = explode('/', $filepath); | |
$filepath = $x[count($x)-2].'/'.end($x); | |
} | |
if (ob_get_level() > $this->ob_level + 1) | |
{ | |
ob_end_flush(); | |
} | |
ob_start(); | |
include(APPPATH.'errors/error_php'.EXT); | |
$buffer = ob_get_contents(); | |
ob_end_clean(); | |
echo $buffer; | |
} | |
} | |
// END Exceptions Class |