From 6df7268c73c6b850aed0920322b1d8983f7790aa Mon Sep 17 00:00:00 2001 From: colemanw Date: Fri, 1 Dec 2023 15:59:54 +0000 Subject: [PATCH] SearchKit - Fix Search Segments for contact type entities A SearchSegment created for the Contact entity should also apply to Individual, Organization & Household entities. --- .../Spec/Provider/SearchSegmentExtraFieldProvider.php | 5 +++++ .../phpunit/api/v4/SearchSegment/SearchSegmentTest.php | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ext/search_kit/Civi/Api4/Service/Spec/Provider/SearchSegmentExtraFieldProvider.php b/ext/search_kit/Civi/Api4/Service/Spec/Provider/SearchSegmentExtraFieldProvider.php index 5662d023cd..97f3f2c470 100644 --- a/ext/search_kit/Civi/Api4/Service/Spec/Provider/SearchSegmentExtraFieldProvider.php +++ b/ext/search_kit/Civi/Api4/Service/Spec/Provider/SearchSegmentExtraFieldProvider.php @@ -62,6 +62,11 @@ class SearchSegmentExtraFieldProvider implements Generic\SpecProviderInterface { } foreach ($searchSegments as $set) { \Civi::$statics['all_search_segments'][$set['entity_name']]['segment_' . $set['name']] = $set; + if ($set['entity_name'] === 'Contact') { + foreach (\CRM_Contact_BAO_ContactType::basicTypes() as $contactType) { + \Civi::$statics['all_search_segments'][$contactType]['segment_' . $set['name']] = $set; + } + } } } return \Civi::$statics['all_search_segments'][$entity] ?? []; diff --git a/ext/search_kit/tests/phpunit/api/v4/SearchSegment/SearchSegmentTest.php b/ext/search_kit/tests/phpunit/api/v4/SearchSegment/SearchSegmentTest.php index e628fa87c5..feff968ec6 100644 --- a/ext/search_kit/tests/phpunit/api/v4/SearchSegment/SearchSegmentTest.php +++ b/ext/search_kit/tests/phpunit/api/v4/SearchSegment/SearchSegmentTest.php @@ -6,6 +6,7 @@ use Civi\Api4\Contact; use Civi\Api4\Contribution; use Civi\Api4\CustomField; use Civi\Api4\CustomGroup; +use Civi\Api4\Individual; use Civi\Api4\Relationship; use Civi\Api4\SearchSegment; use Civi\Test\HeadlessInterface; @@ -245,7 +246,7 @@ class SearchSegmentTest extends \PHPUnit\Framework\TestCase implements HeadlessI ['birth_date' => 'now - 33 year - 1 month'], [], ]; - Contact::save(FALSE) + Individual::save(FALSE) ->setRecords($sampleData) ->addChain('rel', Relationship::create() ->addValue('relationship_type_id', 1) @@ -274,6 +275,11 @@ class SearchSegmentTest extends \PHPUnit\Framework\TestCase implements HeadlessI ]) ->execute(); + $field = Individual::getFields(FALSE) + ->addWhere('name', '=', 'segment_Age_Range') + ->execute()->single(); + $this->assertEquals('Age Range', $field['label']); + $params = [ 'checkPermissions' => FALSE, 'return' => 'page:1', -- 2.25.1