Make transaction param optional in completeOrder
authoreileen <emcnaughton@wikimedia.org>
Fri, 10 Apr 2020 07:13:22 +0000 (19:13 +1200)
committereileen <emcnaughton@wikimedia.org>
Fri, 10 Apr 2020 07:14:02 +0000 (19:14 +1200)
In all the places I checked passing in this param achieved nothing. Let's start by making it optional

CRM/Contribute/BAO/Contribution.php
CRM/Core/Payment/BaseIPN.php
api/v3/Contribution.php

index 633436e784d5b1f3de33d3ced50c3e25988918ac..be6547f66de95f033a022a3dad80e6c67e4cfc13 100644 (file)
@@ -4403,6 +4403,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac
    * @param array $ids
    * @param array $objects
    * @param CRM_Core_Transaction $transaction
+   *   It is not recommended to pass this in. The calling function handle it's own roll back if it wants it.
    * @param bool $isPostPaymentCreate
    *   Is this being called from the payment.create api. If so the api has taken care of financial entities.
    *   Note that our goal is that this would only ever be called from payment.create and never handle financials (only
@@ -4412,7 +4413,10 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac
    * @throws \CRM_Core_Exception
    * @throws \CiviCRM_API3_Exception
    */
-  public static function completeOrder($input, &$ids, $objects, $transaction, $isPostPaymentCreate = FALSE) {
+  public static function completeOrder($input, &$ids, $objects, $transaction = NULL, $isPostPaymentCreate = FALSE) {
+    if (!$transaction) {
+      $transaction = new CRM_Core_Transaction();
+    }
     $contribution = $objects['contribution'];
     $primaryContributionID = $contribution->id ?? $objects['first_contribution']->id;
     // The previous details are used when calculating line items so keep it before any code that 'does something'
index 36109ae172444c63804a009a4cc783ef9e4a328d..2da96d6cc4926b0f150a3590afac2bc54af9cd9e 100644 (file)
@@ -476,7 +476,7 @@ class CRM_Core_Payment_BaseIPN {
    * @throws \CRM_Core_Exception
    * @throws \CiviCRM_API3_Exception
    */
-  public function completeTransaction(&$input, &$ids, &$objects, &$transaction) {
+  public function completeTransaction(&$input, &$ids, &$objects, $transaction = NULL) {
     CRM_Contribute_BAO_Contribution::completeOrder($input, $ids, $objects, $transaction);
   }
 
index 688cba207fff1d263ec2b1545c19e0f3aa42627d..66f6cc0c93f2185124060467f4bc8f9c3432468e 100644 (file)
@@ -674,9 +674,8 @@ function _ipn_process_transaction(&$params, $contribution, $input, $ids, $firstC
   }
   $input['card_type_id'] = $params['card_type_id'] ?? NULL;
   $input['pan_truncation'] = $params['pan_truncation'] ?? NULL;
-  $transaction = new CRM_Core_Transaction();
-  return CRM_Contribute_BAO_Contribution::completeOrder($input, $ids, $objects, $transaction,
-     CRM_Utils_Array::value('is_post_payment_create', $params));
+  return CRM_Contribute_BAO_Contribution::completeOrder($input, $ids, $objects, NULL,
+    $params['is_post_payment_create'] ?? NULL);
 }
 
 /**