summaryrefslogtreecommitdiffstats
path: root/system/core/Loader.php
diff options
context:
space:
mode:
authorDaniel Paul Searles <daniel.paul.searles@gmail.com>2012-11-05 23:34:50 +0100
committerDaniel Paul Searles <daniel.paul.searles@gmail.com>2012-11-05 23:34:50 +0100
commit0e4069ba30922941917a26463cba250b0f14c8ef (patch)
tree76a7de06b6f8b07ab36ebaffe78235f22dffb1a2 /system/core/Loader.php
parent3aca5695b2b8561986d11e20e6da46f9b32060f1 (diff)
parentd743cdbe448258cc7f02abf15e8dc797dc6403eb (diff)
Merge branch 'develop' of git://github.com/EllisLab/CodeIgniter into develop
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()