Skip to content

Commit

Permalink
Simplifying datasources loading, it now requires datasources to be co…
Browse files Browse the repository at this point in the history
…nfigured with the 'datasource' array key, which is a relative path from Model/Datasource/
  • Loading branch information
lorenzo committed Dec 4, 2010
1 parent be1263d commit 7dc8d5e
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 34 deletions.
49 changes: 16 additions & 33 deletions lib/Cake/Model/ConnectionManager.php
Expand Up @@ -161,15 +161,20 @@ public static function loadDataSource($connName) {
$conn = $_this->_connectionsEnum[$connName];
}

if (class_exists($conn['classname'])) {
if (class_exists($conn['classname'], false)) {
return false;
}

$conn = array_merge(array('plugin' => null, 'classname' => null, 'parent' => null), $conn);
$class = trim("{$conn['plugin']}.{$conn['classname']}", '.');
$plugin = $package = null;
if (!empty($conn['plugin'])) {
$plugin .= '.';
}
if (!empty($conn['package'])) {
$package = '/' . $conn['package'];
}

App::uses($class, 'Model/Datasource');
if (class_exists($class)) {
App::uses($conn['classname'], $plugin . 'Model/Datasource' . $package);
if (!class_exists($conn['classname'])) {
trigger_error(sprintf(__('ConnectionManager::loadDataSource - Unable to import DataSource class %s'), $class), E_USER_ERROR);
return null;
}
Expand Down Expand Up @@ -230,36 +235,14 @@ protected function _getConnectionObjects() {
* @return array An indexed array with: filename, classname, plugin and parent
*/
private function __connectionData($config) {
if (!isset($config['datasource'])) {
$config['datasource'] = 'dbo';
}
$filename = $classname = $parent = $plugin = null;

if (!empty($config['driver'])) {
$parent = $this->__connectionData(array('datasource' => $config['datasource']));
$parentSource = preg_replace('/_source$/', '', $parent['filename']);
$package = $classname = $plugin = null;

list($plugin, $classname) = pluginSplit($config['driver']);
if ($plugin) {
$source = Inflector::underscore($classname);
} else {
$source = $parentSource . '_' . $config['driver'];
$classname = Inflector::camelize(strtolower($source));
}
$filename = $parentSource . DS . $source;
} else {
list($plugin, $classname) = pluginSplit($config['datasource']);
if ($plugin) {
$filename = Inflector::underscore($classname);
} else {
$filename = Inflector::underscore($config['datasource']);
}
if (substr($filename, -7) != '_source') {
$filename .= '_source';
}
$classname = Inflector::camelize(strtolower($filename));
list($plugin, $classname) = pluginSplit($config['datasource']);
if (strpos($classname, '/') !== false) {
$package = dirname($classname);
$classname = basename($classname);
}
return compact('filename', 'classname', 'parent', 'plugin');
return compact('package', 'classname', 'plugin');
}

/**
Expand Down
4 changes: 3 additions & 1 deletion lib/Cake/Model/Datasource/Database/Mysql.php
Expand Up @@ -18,6 +18,8 @@
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
*/

App::uses('DboSource', 'Model/Datasource');

/**
* MySQL DBO driver object
*
Expand All @@ -26,7 +28,7 @@
* @package cake
* @subpackage cake.cake.libs.model.datasources.dbo
*/
class DboMysql extends DboSource {
class Mysql extends DboSource {

/**
* Datasource description
Expand Down

0 comments on commit 7dc8d5e

Please sign in to comment.