Merge pull request #5175 from Firesphere/pulls/feature-set-owner-allmethods

Enhancement: Set the owner on an extension
This commit is contained in:
Damian Mooyman 2016-03-21 17:30:37 +13:00
commit 78f19bd2ed
2 changed files with 25 additions and 2 deletions

View File

@ -816,7 +816,9 @@ abstract class Object {
}
if(method_exists($extension, 'allMethodNames')) {
if ($extension instanceof Extension) $extension->setOwner($this);
$methods = $extension->allMethodNames(true);
if ($extension instanceof Extension) $extension->clearOwner();
} else {
if(!isset(self::$built_in_methods[$extension->class])) {

View File

@ -166,6 +166,13 @@ class DataExtensionTest extends SapphireTest {
$this->assertEquals("hello world", $do->testMethodApplied());
}
public function testExtensionAllMethodNamesHasOwner() {
/** @var DataExtensionTest_MyObject $do */
$do = DataExtensionTest_MyObject::create();
$this->assertTrue($do->hasMethod('getTestValueWithDataExtensionTest_MyObject'));
}
public function testPageFieldGeneration() {
$page = new DataExtensionTest_CMSFieldsBase();
$fields = $page->getCMSFields();
@ -365,17 +372,31 @@ class DataExtensionTest_Faves extends DataExtension implements TestOnly {
}
class DataExtensionTest_AppliedToDO extends DataExtension implements TestOnly {
class DataExtensionTest_AppliedToDO extends DataExtension implements TestOnly
{
public function testMethodApplied() {
public function testMethodApplied()
{
return "hello world";
}
}
class DataExtensionTest_AllMethodNames extends DataExtension implements TestOnly
{
public function allMethodNames()
{
return array(
strtolower('getTestValueWith'.$this->owner->ClassName)
);
}
}
DataExtensionTest_MyObject::add_extension('DataExtensionTest_Ext1');
DataExtensionTest_MyObject::add_extension('DataExtensionTest_Ext2');
DataExtensionTest_MyObject::add_extension('DataExtensionTest_Faves');
DataExtensionTest_MyObject::add_extension('DataExtensionTest_AllMethodNames');
/**
* Base class for CMS fields