Browse Source

adding a plugin propery to models wwith tests for ticket #85

Merge pull request #696
dogmatic69 13 years ago
parent
commit
6d4f4b57d7

+ 12 - 1
lib/Cake/Model/Model.php

@@ -236,6 +236,13 @@ class Model extends Object implements CakeEventListener {
 	public $tablePrefix = null;
 
 /**
+ * Plugin model belongs to.
+ *
+ * @var string
+ */
+	public $plugin = null;
+
+/**
  * Name of the model.
  *
  * @var string
@@ -665,12 +672,16 @@ class Model extends Object implements CakeEventListener {
 			extract(array_merge(
 				array(
 					'id' => $this->id, 'table' => $this->useTable, 'ds' => $this->useDbConfig,
-					'name' => $this->name, 'alias' => $this->alias
+					'name' => $this->name, 'alias' => $this->alias, 'plugin' => $this->plugin
 				),
 				$id
 			));
 		}
 
+		if ($this->plugin === null) {
+			$this->plugin = (isset($plugin) ? $plugin : $this->plugin);
+		}
+
 		if ($this->name === null) {
 			$this->name = (isset($name) ? $name : get_class($this));
 		}

+ 8 - 0
lib/Cake/Test/Case/Model/ModelIntegrationTest.php

@@ -1667,6 +1667,14 @@ class ModelIntegrationTest extends BaseModelTest {
 		$result = $TestModel->alias;
 		$expected = 'AnotherTest';
 		$this->assertEquals($expected, $result);
+
+		$TestModel = ClassRegistry::init('Test');
+		$expected = null;
+		$this->assertEquals($expected, $TestModel->plugin);
+
+		$TestModel = ClassRegistry::init('TestPlugin.TestPluginComment');
+		$expected = 'TestPlugin';
+		$this->assertEquals($expected, $TestModel->plugin);
 	}
 
 /**

+ 1 - 0
lib/Cake/Utility/ClassRegistry.php

@@ -124,6 +124,7 @@ class ClassRegistry {
 				list($plugin, $class) = pluginSplit($class);
 				if ($plugin) {
 					$pluginPath = $plugin . '.';
+					$settings['plugin'] = $plugin;
 				}
 
 				if (empty($settings['alias'])) {