From e5ccee438075551f3e918fda11f10ce0e6311cc0 Mon Sep 17 00:00:00 2001 From: Pradeep Nayak Date: Mon, 17 Sep 2018 23:37:35 +0100 Subject: [PATCH 1/2] Respect pre hook for relationship to alter id in $params --- CRM/Contact/BAO/Relationship.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CRM/Contact/BAO/Relationship.php b/CRM/Contact/BAO/Relationship.php index df64ddcbba8d..b0a92b3fa111 100644 --- a/CRM/Contact/BAO/Relationship.php +++ b/CRM/Contact/BAO/Relationship.php @@ -285,14 +285,14 @@ public static function legacyCreateMultiple(&$params, $ids = array()) { * @return CRM_Contact_BAO_Relationship */ public static function add(&$params, $ids = array(), $contactId = NULL) { - $relationshipId = CRM_Utils_Array::value('relationship', $ids, CRM_Utils_Array::value('id', $params)); + $params['id'] = CRM_Utils_Array::value('relationship', $ids, CRM_Utils_Array::value('id', $params)); $hook = 'create'; - if ($relationshipId) { + if ($params['id']) { $hook = 'edit'; } //@todo hook are called from create and add - remove one - CRM_Utils_Hook::pre($hook, 'Relationship', $relationshipId, $params); + CRM_Utils_Hook::pre($hook, 'Relationship', $params['id'], $params); $relationshipTypes = CRM_Utils_Array::value('relationship_type_id', $params); @@ -306,7 +306,7 @@ public static function add(&$params, $ids = array(), $contactId = NULL) { if ($type == 6) { CRM_Contact_BAO_Household::updatePrimaryContact($params['contact_id_b'], $params['contact_id_a']); } - if (!empty($relationshipId) && self::isCurrentEmployerNeedingToBeCleared($params, $relationshipId, $type)) { + if (!empty($params['id']) && self::isCurrentEmployerNeedingToBeCleared($params, $params['id'], $type)) { CRM_Contact_BAO_Contact_Utils::clearCurrentEmployer($params['contact_id_a']); } $relationship = new CRM_Contact_BAO_Relationship(); @@ -316,7 +316,7 @@ public static function add(&$params, $ids = array(), $contactId = NULL) { $relationship->contact_id_b = $params['contact_id_b']; $relationship->contact_id_a = $params['contact_id_a']; $relationship->relationship_type_id = $type; - $relationship->id = $relationshipId; + $relationship->id = $params['id']; $dateFields = array('end_date', 'start_date'); @@ -332,7 +332,7 @@ public static function add(&$params, $ids = array(), $contactId = NULL) { $relationship->$defaultField = $params[$defaultField]; } } - elseif (!$relationshipId) { + elseif (empty($params['id'])) { $relationship->$defaultField = $defaultValue; } } From e355968525c7f37cf952add966be18b0785cfaf4 Mon Sep 17 00:00:00 2001 From: colemanw Date: Wed, 23 Jan 2019 19:55:19 -0500 Subject: [PATCH 2/2] Don't pass $ids by reference in add function --- CRM/Contact/BAO/Relationship.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CRM/Contact/BAO/Relationship.php b/CRM/Contact/BAO/Relationship.php index b0a92b3fa111..c7a71a6c43cf 100644 --- a/CRM/Contact/BAO/Relationship.php +++ b/CRM/Contact/BAO/Relationship.php @@ -284,7 +284,7 @@ public static function legacyCreateMultiple(&$params, $ids = array()) { * * @return CRM_Contact_BAO_Relationship */ - public static function add(&$params, $ids = array(), $contactId = NULL) { + public static function add($params, $ids = array(), $contactId = NULL) { $params['id'] = CRM_Utils_Array::value('relationship', $ids, CRM_Utils_Array::value('id', $params)); $hook = 'create';