diff --git a/CRM/Contact/DAO/Contact.php b/CRM/Contact/DAO/Contact.php index f6b08d4ddd3c..1dbc2a5f2920 100644 --- a/CRM/Contact/DAO/Contact.php +++ b/CRM/Contact/DAO/Contact.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Contact/Contact.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:0470d0df786c3ac33a435555a3d026fb) + * (GenCodeChecksum:db242115b7297ba205c6abac5b8318c6) */ /** @@ -604,6 +604,7 @@ public static function &fields() { ], 'where' => 'civicrm_contact.contact_type', 'export' => TRUE, + 'contactType' => 'Contact', 'table_name' => 'civicrm_contact', 'entity' => 'Contact', 'bao' => 'CRM_Contact_BAO_Contact', diff --git a/Civi/Api4/Service/Spec/SpecGatherer.php b/Civi/Api4/Service/Spec/SpecGatherer.php index d77e3a8bc49b..6a0854192284 100644 --- a/Civi/Api4/Service/Spec/SpecGatherer.php +++ b/Civi/Api4/Service/Spec/SpecGatherer.php @@ -94,6 +94,9 @@ private function addDAOFields(string $entityName, string $action, RequestSpec $s if (isset($DAOField['contactType']) && $spec->getValue('contact_type') && $DAOField['contactType'] !== $spec->getValue('contact_type')) { continue; } + elseif (($DAOField['contactType'] ?? NULL) === 'Contact' && $entityName !== 'Contact') { + continue; + } if (!empty($DAOField['component']) && !\CRM_Core_Component::isEnabled($DAOField['component'])) { continue; } diff --git a/Civi/Api4/Utils/FormattingUtil.php b/Civi/Api4/Utils/FormattingUtil.php index 2aba6212f210..4f4da40dd46f 100644 --- a/Civi/Api4/Utils/FormattingUtil.php +++ b/Civi/Api4/Utils/FormattingUtil.php @@ -432,7 +432,7 @@ public static function contactFieldsToRemove($contactType, $prefix): array { if (!isset(\Civi::$statics[__CLASS__][__FUNCTION__][$contactType])) { \Civi::$statics[__CLASS__][__FUNCTION__][$contactType] = []; foreach (\CRM_Contact_DAO_Contact::fields() as $field) { - if (!empty($field['contactType']) && $field['contactType'] != $contactType) { + if (!empty($field['contactType']) && $field['contactType'] !== 'Contact' && $field['contactType'] !== $contactType) { \Civi::$statics[__CLASS__][__FUNCTION__][$contactType][] = $field['name']; // Include suffixed variants like prefix_id:label if (!empty($field['pseudoconstant'])) { diff --git a/tests/phpunit/api/v4/Action/GetExtraFieldsTest.php b/tests/phpunit/api/v4/Action/GetExtraFieldsTest.php index ec50d5097326..0ee2a9b93cde 100644 --- a/tests/phpunit/api/v4/Action/GetExtraFieldsTest.php +++ b/tests/phpunit/api/v4/Action/GetExtraFieldsTest.php @@ -43,21 +43,21 @@ public function testGetFieldsByContactType(): void { $individualFields = (array) $getFields->setValues(['contact_type' => 'Individual'])->execute()->indexBy('name'); $this->assertArrayNotHasKey('sic_code', $individualFields); - $this->assertTrue($individualFields['contact_type']['readonly']); + $this->assertArrayNotHasKey('contact_type', $individualFields); $this->assertArrayHasKey('first_name', $individualFields); $orgId = Contact::create(FALSE)->addValue('contact_type', 'Organization')->execute()->first()['id']; $organizationFields = (array) $getFields->setValues(['id' => $orgId])->execute()->indexBy('name'); $this->assertArrayHasKey('organization_name', $organizationFields); $this->assertArrayHasKey('sic_code', $organizationFields); - $this->assertTrue($organizationFields['contact_type']['readonly']); + $this->assertArrayNotHasKey('contact_type', $organizationFields); $this->assertArrayNotHasKey('first_name', $organizationFields); $this->assertArrayNotHasKey('household_name', $organizationFields); $hhId = Household::create(FALSE)->execute()->first()['id']; $householdFields = (array) $getFields->setValues(['id' => $hhId])->execute()->indexBy('name'); $this->assertArrayNotHasKey('sic_code', $householdFields); - $this->assertTrue($householdFields['contact_type']['readonly']); + $this->assertArrayNotHasKey('contact_type', $householdFields); $this->assertArrayNotHasKey('first_name', $householdFields); $this->assertArrayHasKey('household_name', $householdFields); } diff --git a/tests/phpunit/api/v4/Action/GetFieldsTest.php b/tests/phpunit/api/v4/Action/GetFieldsTest.php index 93e769f3c8d1..8aeab52cc85f 100644 --- a/tests/phpunit/api/v4/Action/GetFieldsTest.php +++ b/tests/phpunit/api/v4/Action/GetFieldsTest.php @@ -66,7 +66,7 @@ public function testContactGetFields(): void { ->execute() ->indexBy('name'); // Ensure table & column are returned - $this->assertEquals('civicrm_contact', $fields['display_name']['table_name']); + $this->assertEquals('civicrm_contact', $fields['contact_type']['table_name']); $this->assertEquals('display_name', $fields['display_name']['column_name']); // Check suffixes diff --git a/xml/schema/Contact/Contact.xml b/xml/schema/Contact/Contact.xml index 778dab43bee5..d03fb9152707 100644 --- a/xml/schema/Contact/Contact.xml +++ b/xml/schema/Contact/Contact.xml @@ -53,6 +53,7 @@ true 1.1 3.1 + Contact index_contact_type