[REF] Remove most interaction with
authoreileen <emcnaughton@wikimedia.org>
Tue, 1 Sep 2020 23:54:40 +0000 (11:54 +1200)
committereileen <emcnaughton@wikimedia.org>
Tue, 1 Sep 2020 23:54:40 +0000 (11:54 +1200)
With this change we are only looking up
1) objects['paymentProcessor'] - we should probably just pass in the id
2) objects['contribution'] - we could make this a param in it's own right & remove objects
3) objects['event'] - just used to get event title - we could do a query off participant

CRM/Contribute/BAO/Contribution.php
CRM/Core/Payment/BaseIPN.php
CRM/Event/Form/Task/Batch.php
api/v3/Contribution.php

index bc56e48995f8cb94bc5062e18ea1008fa732db1c..238c4f196d3c95f0e3150a132c6c49cb19dfb48a 100644 (file)
@@ -4449,7 +4449,10 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac
     // @todo see if we even need this - it's used further down to create an activity
     // but the BAO layer should create that - we just need to add a test to cover it & can
     // maybe remove $ids altogether.
-    $contributionContactID = $ids['related_contact'] ?? NULL;
+    $contributionContactID = $ids['related_contact'];
+    $participantID = $ids['participant'];
+    $recurringContributionID = $ids['contributionRecur'];
+
     // Unset ids just to make it clear it's not used again.
     unset($ids);
     // The previous details are used when calculating line items so keep it before any code that 'does something'
@@ -4472,9 +4475,6 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac
       'financial_type_id',
     ];
 
-    $participant = $objects['participant'] ?? NULL;
-    $recurContrib = $objects['contributionRecur'] ?? NULL;
-    $recurringContributionID = (empty($recurContrib->id)) ? NULL : $recurContrib->id;
     $event = $objects['event'] ?? NULL;
 
     $paymentProcessorId = '';
@@ -4520,7 +4520,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac
     }
     else {
       if (empty($input['IAmAHorribleNastyBeyondExcusableHackInTheCRMEventFORMTaskClassThatNeedsToBERemoved'])) {
-        $participantParams['id'] = $participant->id;
+        $participantParams['id'] = $participantID;
         $participantParams['status_id'] = 'Registered';
         civicrm_api3('Participant', 'create', $participantParams);
       }
index e4312a5fd79781604eaac6ed56aa29a427f83935..fdfce40a0f58a7d0d154459a339c09715b2389e4 100644 (file)
@@ -468,7 +468,11 @@ class CRM_Core_Payment_BaseIPN {
    * @throws \CiviCRM_API3_Exception
    */
   public function completeTransaction($input, $ids, $objects) {
-    CRM_Contribute_BAO_Contribution::completeOrder($input, $ids, $objects);
+    CRM_Contribute_BAO_Contribution::completeOrder($input, [
+      'related_contact' => $ids['related_contact'] ?? NULL,
+      'participant' => !empty($objects['participant']) ? $objects['participant']->id : NULL,
+      'contributionRecur' => !empty($objects['contributionRecur']) ? $objects['contributionRecur']->id : NULL,
+    ], $objects);
   }
 
   /**
index 16d8752bde391f651d6420a3d6316110ea2207bd..bc00eccc68d1a2a637eeadb938e95dacd8e4e84e 100644 (file)
@@ -417,7 +417,11 @@ class CRM_Event_Form_Task_Batch extends CRM_Event_Form_Task {
     //complete the contribution.
     // @todo use the api - ie civicrm_api3('Contribution', 'completetransaction', $input);
     // as this method is not preferred / supported.
-    CRM_Contribute_BAO_Contribution::completeOrder($input, $ids, $objects);
+    CRM_Contribute_BAO_Contribution::completeOrder($input, [
+      'related_contact' => $ids['related_contact'] ?? NULL,
+      'participant' => !empty($objects['participant']) ? $objects['participant']->id : NULL,
+      'contributionRecur' => NULL,
+    ], $objects);
 
     // reset template values before processing next transactions
     $template->clearTemplateVars();
index 63036179825e31b851b6845146a47e4a5ac217db..e011ab5b1c02ade95d06cf53a7ce501d647a05e7 100644 (file)
@@ -681,7 +681,11 @@ function _ipn_process_transaction(&$params, $contribution, $input, $ids, $firstC
   if (!empty($params['payment_instrument_id'])) {
     $input['payment_instrument_id'] = $params['payment_instrument_id'];
   }
-  return CRM_Contribute_BAO_Contribution::completeOrder($input, $ids, $objects,
+  return CRM_Contribute_BAO_Contribution::completeOrder($input, [
+    'related_contact' => $ids['related_contact'] ?? NULL,
+    'participant' => !empty($objects['participant']) ? $objects['participant']->id : NULL,
+    'contributionRecur' => !empty($objects['contributionRecur']) ? $objects['contributionRecur']->id : NULL,
+  ], $objects,
     $params['is_post_payment_create'] ?? NULL);
 }