From 2e6d0f0965f2f1b6207847cdb9b871799e8aa9d3 Mon Sep 17 00:00:00 2001 From: Jaap Jansma <jaap.jansma@civicoop.org> Date: Thu, 18 Apr 2024 17:28:54 +0200 Subject: [PATCH] Added contact types to contact tab output. --- CHANGELOG.md | 6 ++- .../DataProcessorContactSummaryTab.php | 46 +++++++++++++++++++ info.xml | 4 +- .../DataProcessorContactSummaryTab.tpl | 5 ++ 4 files changed, 57 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e5f2308..71d090a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ -# Version 1.103 (not yet released) +# Version 1.103 -# Version 1.102 +* Added contact types to contact tab output. + +# Version 1.102 * Fixed issue with export output and php 8. * Fix for deprecated function calls. See #142 diff --git a/CRM/Contact/DataProcessorContactSummaryTab.php b/CRM/Contact/DataProcessorContactSummaryTab.php index 52454424..6a57b9f8 100644 --- a/CRM/Contact/DataProcessorContactSummaryTab.php +++ b/CRM/Contact/DataProcessorContactSummaryTab.php @@ -64,6 +64,34 @@ class CRM_Contact_DataProcessorContactSummaryTab implements UIFormOutputInterfac if (!$outputClass->checkUIPermission($output, $dataprocessor)) { continue; } + $contactTypeIsValid = true; + $contactTypes = []; + if (isset($output['configuration']['contact_types']) && is_array($output['configuration']['contact_types'])) { + $contactTypes = $output['configuration']['contact_types']; + } + if (count($contactTypes)) { + try { + $contact = \Civi\Api4\Contact::get(FALSE) + ->addWhere('id', '=', $contactId) + ->execute() + ->single(); + } + catch (CRM_Core_Exception $e) { + $contactTypeIsValid = FALSE; + } + if (!in_array($contact['contact_type'], $contactTypes)) { + $contactTypeIsValid = false; + foreach($contact['contact_sub_type'] as $contactSubType) { + if (in_array($contactSubType, $contactTypes)) { + $contactTypeIsValid = true; + break; + } + } + } + } + if (!$contactTypeIsValid) { + continue; + } $count = 0; if ($contactId) { @@ -146,6 +174,20 @@ class CRM_Contact_DataProcessorContactSummaryTab implements UIFormOutputInterfac $form->add('text', 'weight', E::ts('Weight')); $form->add('text', 'default_limit', E::ts('Default Limit')); + $contactTypes = []; + $contactTypesApi = \Civi\Api4\ContactType::get(FALSE) + ->setLimit(0) + ->execute(); + foreach($contactTypesApi as $contactType) { + $contactTypes[$contactType['name']] = $contactType['label']; + } + $form->add('select', 'contact_types', E::ts('Contact Types'), $contactTypes, false, array( + 'style' => 'min-width:250px', + 'class' => 'crm-select2 huge', + 'multiple' => true, + 'placeholder' => E::ts('- select -'), + )); + $defaults = array(); if ($output) { @@ -165,6 +207,9 @@ class CRM_Contact_DataProcessorContactSummaryTab implements UIFormOutputInterfac if (isset($output['configuration']['hidden_fields'])) { $defaults['hidden_fields'] = $output['configuration']['hidden_fields']; } + if (isset($output['configuration']['contact_types'])) { + $defaults['contact_types'] = $output['configuration']['contact_types']; + } if (isset($output['configuration']['default_limit'])) { $defaults['default_limit'] = $output['configuration']['default_limit']; } @@ -208,6 +253,7 @@ class CRM_Contact_DataProcessorContactSummaryTab implements UIFormOutputInterfac $output['permission'] = $submittedValues['permission']; $configuration['contact_id_field'] = $submittedValues['contact_id_field']; $configuration['hidden_fields'] = $submittedValues['hidden_fields']; + $configuration['contact_types'] = $submittedValues['contact_types']; $configuration['help_text'] = $submittedValues['help_text']; $configuration['no_result_text'] = $submittedValues['no_result_text']; $configuration['weight'] = $submittedValues['weight']; diff --git a/info.xml b/info.xml index 8b5d01f6..c44f0d10 100644 --- a/info.xml +++ b/info.xml @@ -14,8 +14,8 @@ <url desc="Documentation">https://lab.civicrm.org/extensions/dataprocessor/blob/master/README.md</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2024-04-15</releaseDate> - <version>1.103-dev</version> + <releaseDate>2024-04-18</releaseDate> + <version>1.103</version> <develStage>stable</develStage> <compatibility> <ver>5.37</ver> diff --git a/templates/CRM/Contact/Form/OutputConfiguration/DataProcessorContactSummaryTab.tpl b/templates/CRM/Contact/Form/OutputConfiguration/DataProcessorContactSummaryTab.tpl index 5efc01a1..541beab7 100644 --- a/templates/CRM/Contact/Form/OutputConfiguration/DataProcessorContactSummaryTab.tpl +++ b/templates/CRM/Contact/Form/OutputConfiguration/DataProcessorContactSummaryTab.tpl @@ -21,6 +21,11 @@ <div class="content">{$form.hidden_fields.html}</div> <div class="clear"></div> </div> + <div class="crm-section"> + <div class="label">{$form.contact_types.label}</div> + <div class="content">{$form.contact_types.html}</div> + <div class="clear"></div> + </div> <div class="crm-section"> <div class="label">{$form.no_result_text.label}</div> <div class="content">{$form.no_result_text.html}</div> -- GitLab