PluginProbe
ShiftController Employee Shift Scheduling / 2.1.2
ShiftController Employee Shift Scheduling v2.1.2
4.9.97 4.9.96 4.9.95 4.9.74 4.9.75 4.9.76 4.9.77 4.9.78 4.9.84 4.9.85 4.9.87 4.9.91 4.9.92 trunk 2.1.0 2.1.1 2.1.2 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 3.2.4 All 38 releases
shiftcontroller / happ / system / core / CodeIgniter.php

CodeIgniter.php in ShiftController Employee Shift Scheduling 2.1.2, at happ/system/core/CodeIgniter.php

402 lines 11.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
2 /**
3 * CodeIgniter
4 *
5 * An open source application development framework for PHP 5.1.6 or newer
6 *
7 * @package CodeIgniter
8 * @author ExpressionEngine Dev Team
9 * @copyright Copyright (c) 2008 - 2011, 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 * System Initialization File
20 *
21 * Loads the base classes and executes the request.
22 *
23 * @package CodeIgniter
24 * @subpackage codeigniter
25 * @category Front-controller
26 * @author ExpressionEngine Dev Team
27 * @link http://codeigniter.com/user_guide/
28 */
29
30 /**
31 * CodeIgniter Version
32 *
33 * @var string
34 *
35 */
36 define('CI_VERSION', '2.1.4');
37
38 /**
39 * CodeIgniter Branch (Core = TRUE, Reactor = FALSE)
40 *
41 * @var boolean
42 *
43 */
44 define('CI_CORE', FALSE);
45
46 /*
47 * ------------------------------------------------------
48 * Load the global functions
49 * ------------------------------------------------------
50 */
51 require(BASEPATH.'core/Common.php');
52
53 /*
54 * ------------------------------------------------------
55 * Load the framework constants
56 * ------------------------------------------------------
57 */
58 if (defined('ENVIRONMENT') AND file_exists(APPPATH.'config/'.ENVIRONMENT.'/constants.php'))
59 {
60 require(APPPATH.'config/'.ENVIRONMENT.'/constants.php');
61 }
62 else
63 {
64 require(APPPATH.'config/constants.php');
65 }
66
67 /*
68 * ------------------------------------------------------
69 * Define a custom error handler so we can log PHP errors
70 * ------------------------------------------------------
71 */
72 set_error_handler('_exception_handler');
73
74 if ( ! is_php('5.3'))
75 {
76 @set_magic_quotes_runtime(0); // Kill magic quotes
77 }
78
79 /*
80 * ------------------------------------------------------
81 * Set the subclass_prefix
82 * ------------------------------------------------------
83 *
84 * Normally the "subclass_prefix" is set in the config file.
85 * The subclass prefix allows CI to know if a core class is
86 * being extended via a library in the local application
87 * "libraries" folder. Since CI allows config items to be
88 * overriden via data set in the main index. php file,
89 * before proceeding we need to know if a subclass_prefix
90 * override exists. If so, we will set this value now,
91 * before any classes are loaded
92 * Note: Since the config file data is cached it doesn't
93 * hurt to load it here.
94 */
95 if (isset($assign_to_config['subclass_prefix']) AND $assign_to_config['subclass_prefix'] != '')
96 {
97 get_config(array('subclass_prefix' => $assign_to_config['subclass_prefix']));
98 }
99
100 /*
101 * ------------------------------------------------------
102 * Set a liberal script execution time limit
103 * ------------------------------------------------------
104 */
105 if (function_exists("set_time_limit") == TRUE AND @ini_get("safe_mode") == 0)
106 {
107 @set_time_limit(300);
108 }
109
110 /*
111 * ------------------------------------------------------
112 * Start the timer... tick tock tick tock...
113 * ------------------------------------------------------
114 */
115 $BM =& load_class('Benchmark', 'core');
116 $BM->mark('total_execution_time_start');
117 $BM->mark('loading_time:_base_classes_start');
118
119 /*
120 * ------------------------------------------------------
121 * Instantiate the hooks class
122 * ------------------------------------------------------
123 */
124 $EXT =& load_class('Hooks', 'core');
125
126 /*
127 * ------------------------------------------------------
128 * Is there a "pre_system" hook?
129 * ------------------------------------------------------
130 */
131 $EXT->_call_hook('pre_system');
132
133 /*
134 * ------------------------------------------------------
135 * Instantiate the config class
136 * ------------------------------------------------------
137 */
138 $CFG =& load_class('Config', 'core');
139
140 // Do we have any manually set config items in the index.php file?
141 if (isset($assign_to_config))
142 {
143 $CFG->_assign_to_config($assign_to_config);
144 }
145
146 /*
147 * ------------------------------------------------------
148 * Instantiate the UTF-8 class
149 * ------------------------------------------------------
150 *
151 * Note: Order here is rather important as the UTF-8
152 * class needs to be used very early on, but it cannot
153 * properly determine if UTf-8 can be supported until
154 * after the Config class is instantiated.
155 *
156 */
157
158 $UNI =& load_class('Utf8', 'core');
159
160 /*
161 * ------------------------------------------------------
162 * Instantiate the URI class
163 * ------------------------------------------------------
164 */
165 $URI =& load_class('URI', 'core');
166
167 /*
168 * ------------------------------------------------------
169 * Instantiate the routing class and set the routing
170 * ------------------------------------------------------
171 */
172 $RTR =& load_class('Router', 'core');
173 $RTR->_set_routing();
174
175 // Set any routing overrides that may exist in the main index file
176 if (isset($routing))
177 {
178 $RTR->_set_overrides($routing);
179 }
180
181 /*
182 * ------------------------------------------------------
183 * Instantiate the output class
184 * ------------------------------------------------------
185 */
186 $OUT =& load_class('Output', 'core');
187
188 /*
189 * ------------------------------------------------------
190 * Is there a valid cache file? If so, we're done...
191 * ------------------------------------------------------
192 */
193 if ($EXT->_call_hook('cache_override') === FALSE)
194 {
195 if ($OUT->_display_cache($CFG, $URI) == TRUE)
196 {
197 exit;
198 }
199 }
200
201 /*
202 * -----------------------------------------------------
203 * Load the security class for xss and csrf support
204 * -----------------------------------------------------
205 */
206 $SEC =& load_class('Security', 'core');
207
208 /*
209 * ------------------------------------------------------
210 * Load the Input class and sanitize globals
211 * ------------------------------------------------------
212 */
213 $IN =& load_class('Input', 'core');
214
215 /*
216 * ------------------------------------------------------
217 * Load the Language class
218 * ------------------------------------------------------
219 */
220 $LANG =& load_class('Lang', 'core');
221
222 /*
223 * ------------------------------------------------------
224 * Load the app controller and local controller
225 * ------------------------------------------------------
226 *
227 */
228 // Load the base controller class
229 require BASEPATH.'core/Controller.php';
230
231 function &ci_get_instance()
232 {
233 return CI_Controller::ci_get_instance();
234 }
235
236
237 if (file_exists(APPPATH.'core/'.$CFG->config['subclass_prefix'].'Controller.php'))
238 {
239 require APPPATH.'core/'.$CFG->config['subclass_prefix'].'Controller.php';
240 }
241
242 // Load the local application controller
243 // Note: The Router class automatically validates the controller path using the router->_validate_request().
244 // If this include fails it means that the default controller in the Routes.php file is not resolving to something valid.
245 if ( ! file_exists(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().'.php'))
246 {
247 show_error('Unable to load your default controller. Please make sure the controller specified in your Routes.php file is valid.');
248 }
249
250 include(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().'.php');
251
252 // Set a mark point for benchmarking
253 $BM->mark('loading_time:_base_classes_end');
254
255 /*
256 * ------------------------------------------------------
257 * Security check
258 * ------------------------------------------------------
259 *
260 * None of the functions in the app controller or the
261 * loader class can be called via the URI, nor can
262 * controller functions that begin with an underscore
263 */
264 $class = $RTR->fetch_class();
265 $method = $RTR->fetch_method();
266
267 if ( ! class_exists($class)
268 OR strncmp($method, '_', 1) == 0
269 OR in_array(strtolower($method), array_map('strtolower', get_class_methods('CI_Controller')))
270 )
271 {
272 if ( ! empty($RTR->routes['404_override']))
273 {
274 $x = explode('/', $RTR->routes['404_override']);
275 $class = $x[0];
276 $method = (isset($x[1]) ? $x[1] : 'index');
277 if ( ! class_exists($class))
278 {
279 if ( ! file_exists(APPPATH.'controllers/'.$class.'.php'))
280 {
281 show_404("{$class}/{$method}");
282 }
283
284 include_once(APPPATH.'controllers/'.$class.'.php');
285 }
286 }
287 else
288 {
289 show_404("{$class}/{$method}");
290 }
291 }
292
293 /*
294 * ------------------------------------------------------
295 * Is there a "pre_controller" hook?
296 * ------------------------------------------------------
297 */
298 $EXT->_call_hook('pre_controller');
299
300 /*
301 * ------------------------------------------------------
302 * Instantiate the requested controller
303 * ------------------------------------------------------
304 */
305 // Mark a start point so we can benchmark the controller
306 $BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_start');
307
308 $CI = new $class();
309
310 /*
311 * ------------------------------------------------------
312 * Is there a "post_controller_constructor" hook?
313 * ------------------------------------------------------
314 */
315 $EXT->_call_hook('post_controller_constructor');
316
317 /*
318 * ------------------------------------------------------
319 * Call the requested method
320 * ------------------------------------------------------
321 */
322 // Is there a "remap" function? If so, we call it instead
323 if (method_exists($CI, '_remap'))
324 {
325 $CI->_remap($method, array_slice($URI->rsegments, 2));
326 }
327 else
328 {
329 // is_callable() returns TRUE on some versions of PHP 5 for private and protected
330 // methods, so we'll use this workaround for consistent behavior
331 if ( ! in_array(strtolower($method), array_map('strtolower', get_class_methods($CI))))
332 {
333 // Check and see if we are using a 404 override and use it.
334 if ( ! empty($RTR->routes['404_override']))
335 {
336 $x = explode('/', $RTR->routes['404_override']);
337 $class = $x[0];
338 $method = (isset($x[1]) ? $x[1] : 'index');
339 if ( ! class_exists($class))
340 {
341 if ( ! file_exists(APPPATH.'controllers/'.$class.'.php'))
342 {
343 show_404("{$class}/{$method}");
344 }
345
346 include_once(APPPATH.'controllers/'.$class.'.php');
347 unset($CI);
348 $CI = new $class();
349 }
350 }
351 else
352 {
353 show_404("{$class}/{$method}");
354 }
355 }
356
357 // Call the requested method.
358 // Any URI segments present (besides the class/function) will be passed to the method for convenience
359 call_user_func_array(array(&$CI, $method), array_slice($URI->rsegments, 2));
360 }
361
362
363 // Mark a benchmark end point
364 $BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_end');
365
366 /*
367 * ------------------------------------------------------
368 * Is there a "post_controller" hook?
369 * ------------------------------------------------------
370 */
371 $EXT->_call_hook('post_controller');
372
373 /*
374 * ------------------------------------------------------
375 * Send the final rendered output to the browser
376 * ------------------------------------------------------
377 */
378 if ($EXT->_call_hook('display_override') === FALSE)
379 {
380 $OUT->_display();
381 }
382
383 /*
384 * ------------------------------------------------------
385 * Is there a "post_system" hook?
386 * ------------------------------------------------------
387 */
388 $EXT->_call_hook('post_system');
389
390 /*
391 * ------------------------------------------------------
392 * Close the DB connection if one exists
393 * ------------------------------------------------------
394 */
395 if (class_exists('CI_DB') AND isset($CI->db))
396 {
397 $CI->db->close();
398 }
399
400
401 /* End of file CodeIgniter.php */
402 /* Location: ./system/core/CodeIgniter.php */