summaryrefslogtreecommitdiffstats
path: root/system/core/Loader.php
diff options
context:
space:
mode:
Diffstat (limited to 'system/core/Loader.php')
-rw-r--r--system/core/Loader.php40
1 files changed, 33 insertions, 7 deletions
diff --git a/system/core/Loader.php b/system/core/Loader.php
index 2a78f4153..808fa80df 100644
--- a/system/core/Loader.php
+++ b/system/core/Loader.php
@@ -130,10 +130,8 @@ class CI_Loader {
/**
* Class constructor
*
- * Sets component load paths, gets the initial output buffering level
- * and calls the autoloader.
+ * Sets component load paths, gets the initial output buffering level.
*
- * @uses CI_Loader::_ci_autoloader()
* @return void
*/
public function __construct()
@@ -143,8 +141,6 @@ class CI_Loader {
$this->_ci_helper_paths = array(APPPATH, BASEPATH);
$this->_ci_model_paths = array(APPPATH);
$this->_ci_view_paths = array(VIEWPATH => TRUE);
- $this->_base_classes =& is_loaded();
- $this->_ci_autoloader();
log_message('debug', 'Loader Class Initialized');
}
@@ -152,6 +148,23 @@ class CI_Loader {
// --------------------------------------------------------------------
/**
+ * Initializer
+ *
+ * @todo Figure out a way to move this to the constructor
+ * without breaking *package_path*() methods.
+ * @uses CI_Loader::_ci_autoloader()
+ * @used-by CI_Controller::__construct()
+ * @return void
+ */
+ public function initialize()
+ {
+ $this->_base_classes =& is_loaded();
+ $this->_ci_autoloader();
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
* Is Loaded
*
* A utility method to test if a class is in the self::$_ci_classes array.
@@ -379,7 +392,20 @@ class CI_Loader {
require_once(BASEPATH.'database/DB_forge.php');
require_once(BASEPATH.'database/drivers/'.$CI->db->dbdriver.'/'.$CI->db->dbdriver.'_forge.php');
- $class = 'CI_DB_'.$CI->db->dbdriver.'_forge';
+
+ if ( ! empty($CI->db->subdriver))
+ {
+ $driver_path = BASEPATH.'database/drivers/'.$CI->db->dbdriver.'/subdrivers/'.$CI->db->dbdriver.'_'.$CI->db->subdriver.'_forge.php';
+ if (file_exists($driver_path))
+ {
+ require_once($driver_path);
+ $class = 'CI_DB_'.$CI->db->dbdriver.'_'.$CI->db->subdriver.'_forge';
+ }
+ }
+ else
+ {
+ $class = 'CI_DB_'.$CI->db->dbdriver.'_forge';
+ }
$CI->dbforge = new $class();
}
@@ -1134,7 +1160,7 @@ class CI_Loader {
*
* Loads component listed in the config/autoload.php file.
*
- * @used-by CI_Loader::__construct()
+ * @used-by CI_Loader::initialize()
* @return void
*/
protected function _ci_autoloader()