From 8dca13988e943c8897f7fb8f87eb0e01665b9ac8 Mon Sep 17 00:00:00 2001 From: colemanw <coleman@civicrm.org> Date: Sat, 17 Aug 2024 21:30:21 +0000 Subject: [PATCH] Afform - Exclude LocBlock fields that will be replaced by joins --- ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php b/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php index c1498182ff21..524b50d57b92 100644 --- a/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php +++ b/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php @@ -99,6 +99,10 @@ public static function getFields($entityName, $params = []) { } $params['values']['state_province_id'] = \Civi::settings()->get('defaultContactStateProvince'); } + // Exclude LocBlock fields that will be replaced by joins (see below) + if ($params['action'] === 'create' && $entityName === 'LocBlock') { + $params['where'][] = ['fk_entity', 'IS NULL']; + } $fields = (array) civicrm_api4($entityName, 'getFields', $params); // Add implicit joins to search fields if ($params['action'] === 'get') { @@ -121,6 +125,7 @@ public static function getFields($entityName, $params = []) { if ($params['action'] === 'create' && $entityName === 'LocBlock') { $joinParams = $params; // Exclude fields that don't apply to locBlocks + array_pop($joinParams['where']); $joinParams['where'][] = ['name', 'NOT IN', ['id', 'is_primary', 'is_billing', 'location_type_id', 'contact_id']]; foreach (['Address', 'Email', 'Phone', 'IM'] as $joinEntity) { $joinEntityFields = (array) civicrm_api4($joinEntity, 'getFields', $joinParams);