summaryrefslogtreecommitdiffstats
path: root/system/core
diff options
context:
space:
mode:
Diffstat (limited to 'system/core')
-rw-r--r--system/core/CodeIgniter.php292
1 files changed, 180 insertions, 112 deletions
diff --git a/system/core/CodeIgniter.php b/system/core/CodeIgniter.php
index 65c75a6c4..90cce1c6e 100644
--- a/system/core/CodeIgniter.php
+++ b/system/core/CodeIgniter.php
@@ -16,7 +16,7 @@
// ------------------------------------------------------------------------
/**
- * System Front Controller
+ * System Initialization File
*
* Loads the base classes and executes the request.
*
@@ -27,100 +27,177 @@
* @link http://codeigniter.com/user_guide/
*/
-// CI Version
-define('CI_VERSION', '1.7.2');
+/*
+ * ------------------------------------------------------
+ * Define the CodeIgniter Version
+ * ------------------------------------------------------
+ */
+ define('CI_VERSION', '2.0');
/*
* ------------------------------------------------------
* Load the global functions
* ------------------------------------------------------
*/
-require(BASEPATH.'codeigniter/Common'.EXT);
+ require(BASEPATH.'core/Common'.EXT);
/*
* ------------------------------------------------------
* Load the compatibility override functions
* ------------------------------------------------------
*/
-require(BASEPATH.'codeigniter/Compat'.EXT);
+ require(BASEPATH.'core/Compat'.EXT);
/*
* ------------------------------------------------------
* Load the framework constants
* ------------------------------------------------------
*/
-require(APPPATH.'config/constants'.EXT);
+ require(APPPATH.'config/constants'.EXT);
/*
* ------------------------------------------------------
* Define a custom error handler so we can log PHP errors
* ------------------------------------------------------
*/
-set_error_handler('_exception_handler');
+ set_error_handler('_exception_handler');
+
+ if ( ! is_php('5.3'))
+ {
+ @set_magic_quotes_runtime(0); // Kill magic quotes
+ }
-if ( ! is_php('5.3'))
-{
- @set_magic_quotes_runtime(0); // Kill magic quotes
-}
+ // Set a liberal script execution time limit
+ if (function_exists("set_time_limit") == TRUE AND @ini_get("safe_mode") == 0)
+ {
+ @set_time_limit(300);
+ }
/*
* ------------------------------------------------------
- * Start the timer... tick tock tick tock...
+ * Set the subclass_prefix
* ------------------------------------------------------
+ *
+ * Normally the "subclass_prefix" is set in the config file.
+ * The subclass prefix allows CI to know if a core class is
+ * being extended via a library in the local application
+ * "libraries" folder. Since CI allows config items to be
+ * overriden via data set in the main index. php file,
+ * before proceeding we need to know if a subclass_prefix
+ * override exists. If so, we will set this value now,
+ * before any classes are loaded
+ * Note: Since the config file data is cached it doesn't
+ * hurt to load it here.
*/
+ if (isset($assign_to_config['subclass_prefix']) AND $assign_to_config['subclass_prefix'] != '')
+ {
+ get_config(array('subclass_prefix' => $assign_to_config['subclass_prefix']));
+ }
-$BM =& load_class('Benchmark');
-$BM->mark('total_execution_time_start');
-$BM->mark('loading_time_base_classes_start');
+/*
+ * ------------------------------------------------------
+ * Start the timer... tick tock tick tock...
+ * ------------------------------------------------------
+ */
+ $BM =& load_class('Benchmark', 'core');
+ $BM->mark('total_execution_time_start');
+ $BM->mark('loading_time:_base_classes_start');
/*
* ------------------------------------------------------
* Instantiate the hooks class
* ------------------------------------------------------
*/
-
-$EXT =& load_class('Hooks');
+ $EXT =& load_class('Hooks', 'core');
/*
* ------------------------------------------------------
* Is there a "pre_system" hook?
* ------------------------------------------------------
*/
-$EXT->_call_hook('pre_system');
+ $EXT->_call_hook('pre_system');
+
+/*
+ * ------------------------------------------------------
+ * Instantiate the config class
+ * ------------------------------------------------------
+ */
+ $CFG =& load_class('Config', 'core');
+
+ // Do we have any manually set config items in the index.php file?
+ if (isset($assign_to_config))
+ {
+ $CFG->_assign_to_config($assign_to_config);
+ }
+
+/*
+ * ------------------------------------------------------
+ * Instantiate the Unicode class
+ * ------------------------------------------------------
+ *
+ * Note: Order here is rather important as the Unicode
+ * class needs to be used very early on, but it cannot
+ * properly determine if UTf-8 can be supported until
+ * after the Config class is instantiated.
+ *
+ */
+ $UNI =& load_class('Unicode', 'core');
+
/*
* ------------------------------------------------------
- * Instantiate the base classes
+ * Instantiate the URI class
* ------------------------------------------------------
*/
+ $URI =& load_class('URI', 'core');
-$CFG =& load_class('Config');
-$URI =& load_class('URI');
-$RTR =& load_class('Router');
-$OUT =& load_class('Output');
+/*
+ * ------------------------------------------------------
+ * Instantiate the routing class and set the routing
+ * ------------------------------------------------------
+ */
+ $RTR =& load_class('Router', 'core');
+ $RTR->_set_routing();
+
+ // Set any routing overrides that may exist in the main index file
+ if (isset($routing))
+ {
+ $RTR->_set_overrides($routing);
+ }
/*
* ------------------------------------------------------
- * Is there a valid cache file? If so, we're done...
+ * Instantiate the output class
* ------------------------------------------------------
*/
+ $OUT =& load_class('Output', 'core');
-if ($EXT->_call_hook('cache_override') === FALSE)
-{
- if ($OUT->_display_cache($CFG, $URI) == TRUE)
+/*
+ * ------------------------------------------------------
+ * Is there a valid cache file? If so, we're done...
+ * ------------------------------------------------------
+ */
+ if ($EXT->_call_hook('cache_override') === FALSE)
{
- exit;
+ if ($OUT->_display_cache($CFG, $URI) == TRUE)
+ {
+ exit;
+ }
}
-}
/*
* ------------------------------------------------------
- * Load the remaining base classes
+ * Load the Input class and sanitize globals
* ------------------------------------------------------
*/
+ $IN =& load_class('Input', 'core');
-$IN =& load_class('Input');
-$LANG =& load_class('Language');
+/*
+ * ------------------------------------------------------
+ * Load the Language class
+ * ------------------------------------------------------
+ */
+ $LANG =& load_class('Lang', 'core');
/*
* ------------------------------------------------------
@@ -131,35 +208,33 @@ $LANG =& load_class('Language');
* conditionally load different versions of the base
* class. Retaining PHP 4 compatibility requires a bit of a hack.
*
- * Note: The Loader class needs to be included first
- *
*/
-if ( ! is_php('5.0.0'))
-{
- load_class('Loader', FALSE);
- require(BASEPATH.'codeigniter/Base4'.EXT);
-}
-else
-{
- require(BASEPATH.'codeigniter/Base5'.EXT);
-}
-
-// Load the base controller class
-load_class('Controller', FALSE);
-
-// Load the local application controller
-// Note: The Router class automatically validates the controller path. If this include fails it
-// means that the default controller in the Routes.php file is not resolving to something valid.
-if ( ! file_exists(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().EXT))
-{
- show_error('Unable to load your default controller. Please make sure the controller specified in your Routes.php file is valid.');
-}
-
-include(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().EXT);
-
-// Set a mark point for benchmarking
-$BM->mark('loading_time_base_classes_end');
-
+ if (is_php('5.0.0') == TRUE)
+ {
+ require(BASEPATH.'core/Base5'.EXT);
+ }
+ else
+ {
+ // The Loader class needs to be included first when running PHP 4.x
+ load_class('Loader', 'core');
+ require(BASEPATH.'core/Base4'.EXT);
+ }
+
+ // Load the base controller class
+ require BASEPATH.'core/Controller'.EXT;
+
+ // Load the local application controller
+ // Note: The Router class automatically validates the controller path using the router->_validate_request().
+ // If this include fails it means that the default controller in the Routes.php file is not resolving to something valid.
+ if ( ! file_exists(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().EXT))
+ {
+ show_error('Unable to load your default controller. Please make sure the controller specified in your Routes.php file is valid.');
+ }
+
+ include(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().EXT);
+
+ // Set a mark point for benchmarking
+ $BM->mark('loading_time:_base_classes_end');
/*
* ------------------------------------------------------
@@ -170,54 +245,48 @@ $BM->mark('loading_time_base_classes_end');
* loader class can be called via the URI, nor can
* controller functions that begin with an underscore
*/
-$class = $RTR->fetch_class();
-$method = $RTR->fetch_method();
-
-if ( ! class_exists($class)
- OR $method == 'controller'
- OR strncmp($method, '_', 1) == 0
- OR in_array(strtolower($method), array_map('strtolower', get_class_methods('Controller')))
- )
-{
- show_404("{$class}/{$method}");
-}
+ $class = $RTR->fetch_class();
+ $method = $RTR->fetch_method();
+
+ if ( ! class_exists($class)
+ OR $method == 'controller'
+ OR strncmp($method, '_', 1) == 0
+ OR in_array(strtolower($method), array_map('strtolower', get_class_methods('Controller')))
+ )
+ {
+ show_404("{$class}/{$method}");
+ }
/*
* ------------------------------------------------------
* Is there a "pre_controller" hook?
* ------------------------------------------------------
*/
-$EXT->_call_hook('pre_controller');
+ $EXT->_call_hook('pre_controller');
/*
* ------------------------------------------------------
- * Instantiate the controller and call requested method
+ * Instantiate the requested controller
* ------------------------------------------------------
*/
+ // Mark a start point so we can benchmark the controller
+ $BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_start');
+
+ $CI = new $class();
-// Mark a start point so we can benchmark the controller
-$BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_start');
-
-$CI = new $class();
-
-// Is this a scaffolding request?
-if ($RTR->scaffolding_request === TRUE)
-{
- if ($EXT->_call_hook('scaffolding_override') === FALSE)
- {
- $CI->_ci_scaffolding();
- }
-}
-else
-{
- /*
- * ------------------------------------------------------
- * Is there a "post_controller_constructor" hook?
- * ------------------------------------------------------
- */
+/*
+ * ------------------------------------------------------
+ * Is there a "post_controller_constructor" hook?
+ * ------------------------------------------------------
+ */
$EXT->_call_hook('post_controller_constructor');
-
- // Is there a "remap" function?
+
+/*
+ * ------------------------------------------------------
+ * Call the requested method
+ * ------------------------------------------------------
+ */
+ // Is there a "remap" function? If so, we call it instead
if (method_exists($CI, '_remap'))
{
$CI->_remap($method);
@@ -232,48 +301,47 @@ else
}
// Call the requested method.
- // Any URI segments present (besides the class/function) will be passed to the method for convenience
- call_user_func_array(array(&$CI, $method), array_slice($URI->rsegments, 2));
+ // Any URI segments present (besides the class/function) will be passed to the method for convenience
+ call_user_func_array(array(&$CI, $method), array_slice($URI->rsegments, 2));
}
-}
-// Mark a benchmark end point
-$BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_end');
+
+ // Mark a benchmark end point
+ $BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_end');
/*
* ------------------------------------------------------
* Is there a "post_controller" hook?
* ------------------------------------------------------
*/
-$EXT->_call_hook('post_controller');
+ $EXT->_call_hook('post_controller');
/*
* ------------------------------------------------------
* Send the final rendered output to the browser
* ------------------------------------------------------
*/
-
-if ($EXT->_call_hook('display_override') === FALSE)
-{
- $OUT->_display();
-}
-
+ if ($EXT->_call_hook('display_override') === FALSE)
+ {
+ $OUT->_display();
+ }
+
/*
* ------------------------------------------------------
* Is there a "post_system" hook?
* ------------------------------------------------------
*/
-$EXT->_call_hook('post_system');
+ $EXT->_call_hook('post_system');
/*
* ------------------------------------------------------
* Close the DB connection if one exists
* ------------------------------------------------------
*/
-if (class_exists('CI_DB') AND isset($CI->db))
-{
- $CI->db->close();
-}
+ if (class_exists('CI_DB') AND isset($CI->db))
+ {
+ $CI->db->close();
+ }
/* End of file CodeIgniter.php */