diff options
-rw-r--r-- | system/libraries/Driver.php | 66 | ||||
-rw-r--r-- | tests/codeigniter/libraries/Driver_test.php | 2 |
2 files changed, 25 insertions, 43 deletions
diff --git a/system/libraries/Driver.php b/system/libraries/Driver.php index 8f5107b0d..72f376466 100644 --- a/system/libraries/Driver.php +++ b/system/libraries/Driver.php @@ -93,7 +93,7 @@ class CI_Driver_Library { $child_name = $this->lib_name.'_'.$child; // See if requested child is a valid driver - if ( ! in_array($child, array_map('strtolower', $this->valid_drivers))) + if ( ! in_array($child, $this->valid_drivers)) { // The requested driver isn't valid! $msg = 'Invalid driver requested: '.$child_name; @@ -101,12 +101,8 @@ class CI_Driver_Library { show_error($msg); } - // All driver files should be in a library subdirectory - capitalized - $subdir = ucfirst(strtolower($this->lib_name)); - // Get package paths and filename case variations to search $paths = $CI->load->get_package_paths(TRUE); - $cases = array(ucfirst($child_name), strtolower($child_name)); // Is there an extension? $class_name = $prefix.$child_name; @@ -116,31 +112,24 @@ class CI_Driver_Library { // Check for subclass file foreach ($paths as $path) { - // Extension will be in drivers subdirectory - $path .= 'libraries/'.$subdir.'/drivers/'; - - // Try filename with caps and all lowercase - foreach ($cases as $name) + // Does the file exist? + $file = $path.'libraries/'.$this->lib_name.'/drivers/'.$prefix.$child_name.'.php'; + if (file_exists($file)) { - // Does the file exist? - $file = $path.$prefix.$name.'.php'; - if (file_exists($file)) + // Yes - require base class from BASEPATH + $basepath = BASEPATH.'libraries/'.$this->lib_name.'/drivers/'.$child_name.'.php'; + if ( ! file_exists($basepath)) { - // Yes - require base class from BASEPATH - $basepath = BASEPATH.'libraries/'.$subdir.'/drivers/'.ucfirst($child_name).'.php'; - if ( ! file_exists($basepath)) - { - $msg = 'Unable to load the requested class: CI_'.$child_name; - log_message('error', $msg); - show_error($msg); - } - - // Include both sources and mark found - include($basepath); - include($file); - $found = TRUE; - break 2; + $msg = 'Unable to load the requested class: CI_'.$child_name; + log_message('error', $msg); + show_error($msg); } + + // Include both sources and mark found + include($basepath); + include($file); + $found = TRUE; + break; } } } @@ -156,20 +145,13 @@ class CI_Driver_Library { // Check package paths foreach ($paths as $path) { - // Class will be in drivers subdirectory - $path .= 'libraries/'.$subdir.'/drivers/'; - - // Try filename with caps and all lowercase - foreach ($cases as $name) + // Does the file exist? + $file = $path.'libraries/'.$this->lib_name.'/drivers/'.$child_name.'.php'; + if (file_exists($file)) { - // Does the file exist? - $file = $path.$name.'.php'; - if (file_exists($file)) - { - // Include source - include($file); - break 2; - } + // Include source + include($file); + break; } } } @@ -183,8 +165,8 @@ class CI_Driver_Library { show_error($msg); } - // Instantiate, decorate, and add child - $obj = new $class_name; + // Instantiate, decorate and add child + $obj = new $class_name(); $obj->decorate($this); $this->$child = $obj; return $this->$child; diff --git a/tests/codeigniter/libraries/Driver_test.php b/tests/codeigniter/libraries/Driver_test.php index 0186cfe97..fb5f3f020 100644 --- a/tests/codeigniter/libraries/Driver_test.php +++ b/tests/codeigniter/libraries/Driver_test.php @@ -72,7 +72,7 @@ class Driver_test extends CI_TestCase { $file = $this->name.'_'.$driver; $class = 'CI_'.$file; $content = '<?php class '.$class.' extends CI_Driver { }'; - $this->ci_vfs_create(strtolower($file), $content, $this->ci_app_root, + $this->ci_vfs_create($file, $content, $this->ci_app_root, array('libraries', $this->name, 'drivers')); // Make valid list |