CodeIgniter installed
[living-lab-site.git] / system / core / Exceptions.php
diff --git a/system/core/Exceptions.php b/system/core/Exceptions.php
new file mode 100755 (executable)
index 0000000..f565956
--- /dev/null
@@ -0,0 +1,178 @@
+<?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;
+       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
+        */
+       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
+        * @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 it
+               if ($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
+        * @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.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
+
+/* End of file Exceptions.php */
+/* Location: ./system/core/Exceptions.php */
\ No newline at end of file