Don't allow Contribution.repeattransaction to be used without a recurring contribution
authorMatthew Wire <mjw@mjwconsult.co.uk>
Mon, 1 Jun 2020 10:13:06 +0000 (11:13 +0100)
committerMatthew Wire <mjw@mjwconsult.co.uk>
Mon, 1 Jun 2020 14:45:59 +0000 (15:45 +0100)
api/v3/Contribution.php

index 859dbaed2ea223feaa6867e78b432ececd4207b3..bbe016918144e5c0ad12852764d0970b6c4ff544 100644 (file)
@@ -594,6 +594,14 @@ function civicrm_api3_contribution_repeattransaction($params) {
     throw new API_Exception(
       'A valid original contribution ID is required', 'invalid_data');
   }
+  // We don't support repeattransaction without a related recurring contribution.
+  if (empty($contribution->contribution_recur_id)) {
+    throw new API_Exception(
+      'Repeattransaction API can only be used in the context of contributions that have a contribution_recur_id.',
+      'invalid_data'
+    );
+  }
+
   $original_contribution = clone $contribution;
   $input['payment_processor_id'] = civicrm_api3('contributionRecur', 'getvalue', [
     'return' => 'payment_processor_id',