converted to unix-style eol
[www-register-wizard.git] / libraries / Exceptions.php
1 <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
2 /**
3  * CodeIgniter
4  *
5  * An open source application development framework for PHP 4.3.2 or newer
6  *
7  * @package             CodeIgniter
8  * @author              ExpressionEngine Dev Team
9  * @copyright   Copyright (c) 2008, EllisLab, Inc.
10  * @license             http://codeigniter.com/user_guide/license.html
11  * @link                http://codeigniter.com
12  * @since               Version 1.0
13  * @filesource
14  */
15
16 // ------------------------------------------------------------------------
17
18 /**
19  * Exceptions Class
20  *
21  * @package             CodeIgniter
22  * @subpackage  Libraries
23  * @category    Exceptions
24  * @author              ExpressionEngine Dev Team
25  * @link                http://codeigniter.com/user_guide/libraries/exceptions.html
26  */
27 class CI_Exceptions {
28         var $action;
29         var $severity;
30         var $message;
31         var $filename;
32         var $line;
33         var $ob_level;
34
35         var $levels = array(
36                                                 E_ERROR                         =>      'Error',
37                                                 E_WARNING                       =>      'Warning',
38                                                 E_PARSE                         =>      'Parsing Error',
39                                                 E_NOTICE                        =>      'Notice',
40                                                 E_CORE_ERROR            =>      'Core Error',
41                                                 E_CORE_WARNING          =>      'Core Warning',
42                                                 E_COMPILE_ERROR         =>      'Compile Error',
43                                                 E_COMPILE_WARNING       =>      'Compile Warning',
44                                                 E_USER_ERROR            =>      'User Error',
45                                                 E_USER_WARNING          =>      'User Warning',
46                                                 E_USER_NOTICE           =>      'User Notice',
47                                                 E_STRICT                        =>      'Runtime Notice'
48                                         );
49
50
51         /**
52          * Constructor
53          *
54          */     
55         function CI_Exceptions()
56         {
57                 $this->ob_level = ob_get_level();
58                 // Note:  Do not log messages from this constructor.
59         }
60         
61         // --------------------------------------------------------------------
62
63         /**
64          * Exception Logger
65          *
66          * This function logs PHP generated error messages
67          *
68          * @access      private
69          * @param       string  the error severity
70          * @param       string  the error string
71          * @param       string  the error filepath
72          * @param       string  the error line number
73          * @return      string
74          */
75         function log_exception($severity, $message, $filepath, $line)
76         {       
77                 $severity = ( ! isset($this->levels[$severity])) ? $severity : $this->levels[$severity];
78                 
79                 log_message('error', 'Severity: '.$severity.'  --> '.$message. ' '.$filepath.' '.$line, TRUE);
80         }
81
82         // --------------------------------------------------------------------
83
84         /**
85          * 404 Page Not Found Handler
86          *
87          * @access      private
88          * @param       string
89          * @return      string
90          */
91         function show_404($page = '')
92         {       
93                 $heading = "404 Page Not Found";
94                 $message = "The page you requested was not found.";
95
96                 log_message('error', '404 Page Not Found --> '.$page);
97                 echo $this->show_error($heading, $message, 'error_404');
98                 exit;
99         }
100         
101         // --------------------------------------------------------------------
102
103         /**
104          * General Error Page
105          *
106          * This function takes an error message as input
107          * (either as a string or an array) and displays
108          * it using the specified template.
109          *
110          * @access      private
111          * @param       string  the heading
112          * @param       string  the message
113          * @param       string  the template name
114          * @return      string
115          */
116         function show_error($heading, $message, $template = 'error_general')
117         {
118                 $message = '<p>'.implode('</p><p>', ( ! is_array($message)) ? array($message) : $message).'</p>';
119
120                 if (ob_get_level() > $this->ob_level + 1)
121                 {
122                         ob_end_flush(); 
123                 }
124                 ob_start();
125                 include(APPPATH.'errors/'.$template.EXT);
126                 $buffer = ob_get_contents();
127                 ob_end_clean();
128                 return $buffer;
129         }
130
131         // --------------------------------------------------------------------
132
133         /**
134          * Native PHP error handler
135          *
136          * @access      private
137          * @param       string  the error severity
138          * @param       string  the error string
139          * @param       string  the error filepath
140          * @param       string  the error line number
141          * @return      string
142          */
143         function show_php_error($severity, $message, $filepath, $line)
144         {       
145                 $severity = ( ! isset($this->levels[$severity])) ? $severity : $this->levels[$severity];
146         
147                 $filepath = str_replace("\\", "/", $filepath);
148                 
149                 // For safety reasons we do not show the full file path
150                 if (FALSE !== strpos($filepath, '/'))
151                 {
152                         $x = explode('/', $filepath);
153                         $filepath = $x[count($x)-2].'/'.end($x);
154                 }
155                 
156                 if (ob_get_level() > $this->ob_level + 1)
157                 {
158                         ob_end_flush(); 
159                 }
160                 ob_start();
161                 include(APPPATH.'errors/error_php'.EXT);
162                 $buffer = ob_get_contents();
163                 ob_end_clean();
164                 echo $buffer;
165         }
166
167
168 }
169 // END Exceptions Class
170
171 /* End of file Exceptions.php */
172 /* Location: ./system/libraries/Exceptions.php */