From: Morgan Date: Wed, 27 May 2020 21:48:57 +0000 (-0400) Subject: Allow bidirectional assignment of relationships from search results X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=7cf463d98f06568fbb9b0b45b4c098b31614245c;p=civicrm-core.git Allow bidirectional assignment of relationships from search results --- 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;