From 7cf463d98f06568fbb9b0b45b4c098b31614245c Mon Sep 17 00:00:00 2001 From: Morgan Date: Wed, 27 May 2020 17:48:57 -0400 Subject: [PATCH] Allow bidirectional assignment of relationships from search results --- CRM/Case/Form/AddToCaseAsRole.php | 5 ++++- CRM/Contact/BAO/Relationship.php | 12 +++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/CRM/Case/Form/AddToCaseAsRole.php b/CRM/Case/Form/AddToCaseAsRole.php index f2809047e3..91d55122a9 100644 --- a/CRM/Case/Form/AddToCaseAsRole.php +++ b/CRM/Case/Form/AddToCaseAsRole.php @@ -51,7 +51,10 @@ class CRM_Case_Form_AddToCaseAsRole extends CRM_Contact_Form_Task { $roleTypes = []; foreach ($relType as $k => $v) { - $roleTypes[substr($k, 0, strpos($k, '_'))] = $v; + //Limit this to relationship types from contact A to B + if (substr($k, -4) == "_a_b") { + $roleTypes[substr($k, 0, strpos($k, '_'))] = $v; + } } return $roleTypes; diff --git a/CRM/Contact/BAO/Relationship.php b/CRM/Contact/BAO/Relationship.php index 3dc3b0321c..24122a128a 100644 --- a/CRM/Contact/BAO/Relationship.php +++ b/CRM/Contact/BAO/Relationship.php @@ -1489,13 +1489,14 @@ LEFT JOIN civicrm_country ON (civicrm_address.country_id = civicrm_country.id) } /** - * Get get list of relationship type based on the target contact type. + * Get list of relationship type based on the target contact type. + * Both directions of relationships are included if their labels are not the same. * * @param string $targetContactType - * It's valid contact tpye(may be Individual , Organization , Household). + * A valid contact type (may be Individual, Organization, Household). * * @return array - * array reference of all relationship types with context to current contact type . + * array reference of all relationship types with context to current contact type. */ public static function getRelationType($targetContactType) { $relationshipType = []; @@ -1505,6 +1506,11 @@ LEFT JOIN civicrm_country ON (civicrm_address.country_id = civicrm_country.id) if ($type['contact_type_b'] == $targetContactType || empty($type['contact_type_b'])) { $relationshipType[$key . '_a_b'] = $type['label_a_b']; } + if (($type['contact_type_a'] == $targetContactType || empty($type['contact_type_a'])) + && $type['label_a_b'] != $type['label_b_a'] + ) { + $relationshipType[$key . '_b_a'] = $type['label_b_a']; + } } return $relationshipType; -- 2.25.1