Blame | Last modification | View Log | RSS feed
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');/*** CodeIgniter** An open source application development framework for PHP 5.1.6 or newer** @package CodeIgniter* @author ExpressionEngine Dev Team* @copyright Copyright (c) 2008 - 2011, 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;/*** Nesting level of the output buffering mechanism** @var int* @access public*/var $ob_level;/*** List if available error levels** @var array* @access public*/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*/public function __construct(){$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 the page* @param bool log error yes/no* @return string*/function show_404($page = '', $log_error = TRUE){$heading = "404 Page Not Found";$message = "The page you requested was not found.";// By default we log this, but allow a dev to skip itif ($log_error){log_message('error', '404 Page Not Found --> '.$page);}echo $this->show_error($heading, $message, 'error_404', 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* @param int the status code* @return string*/function show_error($heading, $message, $template = 'error_general', $status_code = 500){set_status_header($status_code);$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.'.php');$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 pathif (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.php');$buffer = ob_get_contents();ob_end_clean();echo $buffer;}}// END Exceptions Class/* End of file Exceptions.php *//* Location: ./system/core/Exceptions.php */