copyValues($params); $dao->id = CRM_Utils_Array::value('id', $params); //Fixed for avoiding duplicate entry error when user goes //back and forward during payment mode is notify if (!$dao->find(TRUE)) { $dao->save(); } CRM_Utils_Hook::post($hook, 'MembershipPayment', $dao->id, $dao); // CRM-14197 we are in the process on phasing out membershipPayment in favour of storing both contribution_id & entity_id (membership_id) on the line items // table. However, at this stage we have both - there is still quite a bit of refactoring to do to set the line_iten entity_id right the first time // however, we can assume at this stage that any contribution id will have only one line item with that membership type in the line item table // OR the caller will have taken responsibility for updating the line items themselves so we will update using SQL here $membershipTypeID = civicrm_api3('membership', 'getvalue', array( 'id' => $dao->membership_id, 'return' => 'membership_type_id', )); $sql = "UPDATE civicrm_line_item li LEFT JOIN civicrm_price_field_value pv ON pv.id = li.price_field_value_id SET entity_table = 'civicrm_membership', entity_id = %1 WHERE pv.membership_type_id = %2 AND contribution_id = %3"; CRM_Core_DAO::executeQuery($sql, array( 1 => array($dao->membership_id, 'Integer'), 2 => array($membershipTypeID, 'Integer'), 3 => array($dao->contribution_id, 'Integer'), )); return $dao; } /** * Delete membership Payments. * * @param int $id * * @return bool */ public static function del($id) { $dao = new CRM_Member_DAO_MembershipPayment(); $dao->id = $id; $result = FALSE; if ($dao->find(TRUE)) { $dao->delete(); $result = TRUE; } return $result; } }