return $config; } } class DataExtensionTest_ContactRole extends DataExtension implements TestOnly { private static $db = array('Website' => 'Varchar', 'Phone' => 'Varchar(255)'); private static $has_many = array('RelatedObjects' => 'DataExtensionTest_RelatedObject'); private static $defaults = array('Phone' => '123'); private static $api_access = true; } class DataExtensionTest_RelatedObject extends DataObject implements TestOnly { private static $db = array("FieldOne" => "Varchar", "FieldTwo" => "Varchar"); private static $has_one = array("Contact" => "DataExtensionTest_Member"); } DataExtensionTest_Member::add_extension('DataExtensionTest_ContactRole'); class DataExtensionTest_MyObject extends DataObject implements TestOnly { private static $db = array('Title' => 'Varchar'); public function canOne($member = null) { // extended access checks $results = $this->extend('canOne', $member); if ($results && is_array($results)) { if (!min($results)) { return false; } } return false; } public function canTwo($member = null)