From 0bf51d92caf9380da99d708993826ec5a4eb2cc4 Mon Sep 17 00:00:00 2001 From: Jose Lorenzo Rodriguez Date: Fri, 11 Mar 2011 01:31:01 -0430 Subject: [PATCH] Improving App::import() to make importing from plugins work again --- lib/Cake/Core/App.php | 18 ++++++++++++++---- .../models/datasources/TestSource.php | 2 ++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/lib/Cake/Core/App.php b/lib/Cake/Core/App.php index 88cb24ed6d8..91260321deb 100644 --- a/lib/Cake/Core/App.php +++ b/lib/Cake/Core/App.php @@ -145,7 +145,8 @@ class App { 'components' => 'Controller/Component', 'views' => 'View', 'helpers' => 'View/Helper', - 'shells' => 'Console/Command' + 'shells' => 'Console/Command', + 'libs' => 'Lib' ); /** @@ -228,7 +229,7 @@ public static function build($paths = array(), $reset = false) { '%s' . 'vendors' . DS . 'shells' . DS . 'tasks' . DS, VENDORS . 'shells' . DS . 'tasks' . DS ), - 'libs' => array('%s' . 'libs' . DS), + 'Lib' => array('%s' . 'libs' . DS), 'locales' => array('%s' . 'locale' . DS), 'vendors' => array('%s' . 'vendors' . DS, VENDORS), 'plugins' => array(APP . 'plugins' . DS, CAKE_CORE_INCLUDE_PATH . DS . 'plugins' . DS) @@ -262,8 +263,8 @@ public static function build($paths = array(), $reset = false) { } } - $mergeExclude = array('libs', 'locales', 'vendors', 'plugins'); - $appLibs = empty($paths['libs']) ? $defaults['libs'] : $paths['libs']; + $mergeExclude = array('Lib', 'locales', 'vendors', 'plugins'); + $appLibs = empty($paths['Lib']) ? $defaults['Lib'] : $paths['Lib']; foreach ($defaults as $type => $default) { if (empty(self::$__packages[$type]) || empty($paths)) { @@ -553,6 +554,15 @@ public static function import($type = null, $name = null, $parent = true, $searc $name .= ($suffix == $name) ? '' : $suffix; } + if (isset(self::$types[$originalType]['extends'])) { + $extends = self::$types[$originalType]['extends']; + App::uses($extends, $type); + if ($plugin && in_array($originalType, array('controller', 'model'))) { + $pluginName = substr($plugin, 0 , -1); + App::uses($pluginName . $extends, $plugin . $type); + } + } + App::uses(Inflector::camelize($name), $plugin . $type); return (bool) self::load($name); } diff --git a/lib/Cake/tests/test_app/plugins/test_plugin/models/datasources/TestSource.php b/lib/Cake/tests/test_app/plugins/test_plugin/models/datasources/TestSource.php index 2fc4026b0bc..dee54101afd 100644 --- a/lib/Cake/tests/test_app/plugins/test_plugin/models/datasources/TestSource.php +++ b/lib/Cake/tests/test_app/plugins/test_plugin/models/datasources/TestSource.php @@ -1,4 +1,6 @@