From f880fd166960362851d08a3e7a0949778a713dae Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Mon, 22 Dec 2014 16:00:46 +1300 Subject: [PATCH] CRM-15749 minimal patch allowing alteration of --- CRM/Member/BAO/Membership.php | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/CRM/Member/BAO/Membership.php b/CRM/Member/BAO/Membership.php index bbb7a69057..1c1957a897 100644 --- a/CRM/Member/BAO/Membership.php +++ b/CRM/Member/BAO/Membership.php @@ -73,20 +73,24 @@ class CRM_Member_BAO_Membership extends CRM_Member_DAO_Membership { */ public static function add(&$params, $ids = array()) { $oldStatus = $oldType = NULL; - if (!empty($ids['membership'])) { - CRM_Utils_Hook::pre('edit', 'Membership', $ids['membership'], $params); - - $membershipObj = new CRM_Member_DAO_Membership(); - $membershipObj->id = $ids['membership']; + $params['id'] = CRM_Utils_Array::value('id', $params, CRM_Utils_Array::value('membership', $ids)); + if ($params['id']) { + CRM_Utils_Hook::pre('edit', 'Membership', $params['id'], $params); + } + else { + CRM_Utils_Hook::pre('create', 'Membership', $params['id'], $params); + } + $id = $params['id']; + // we do this after the hooks are called in case it has been altered + if ($id) { + $membershipObj = new CRM_Member_DAO_Membership(); + $membershipObj->id = $id; $membershipObj->find(); while ($membershipObj->fetch()) { $oldStatus = $membershipObj->status_id; $oldType = $membershipObj->membership_type_id; } } - else { - CRM_Utils_Hook::pre('create', 'Membership', NULL, $params); - } if (array_key_exists('is_override', $params) && !$params['is_override']) { $params['is_override'] = 'null'; @@ -94,7 +98,7 @@ class CRM_Member_BAO_Membership extends CRM_Member_DAO_Membership { $membership = new CRM_Member_BAO_Membership(); $membership->copyValues($params); - $membership->id = CRM_Utils_Array::value('membership', $ids); + $membership->id = $id; $membership->save(); $membership->free(); @@ -142,7 +146,7 @@ class CRM_Member_BAO_Membership extends CRM_Member_DAO_Membership { // reset the group contact cache since smart groups might be affected due to this CRM_Contact_BAO_GroupContactCache::remove(); - if (!empty($ids['membership'])) { + if ($id) { if ($membership->status_id != $oldStatus) { $allStatus = CRM_Member_BAO_Membership::buildOptions('status_id', 'get'); $activityParam = array( -- 2.25.1