CRM-17640 re-use contact apiQuery for contribution
authoreileen <emcnaughton@wikimedia.org>
Tue, 1 Dec 2015 15:32:10 +0000 (04:32 +1300)
committereileen <emcnaughton@wikimedia.org>
Tue, 1 Dec 2015 15:45:16 +0000 (04:45 +1300)
api/v3/Contribution.php

index 3003eb5f37ed214dd64a22469d199298fc9fa1df..dc1a9861ab93a6a767aa4ae4c24432e8e3e778ee 100644 (file)
@@ -241,18 +241,17 @@ function _civicrm_api3_contribution_delete_spec(&$params) {
 function civicrm_api3_contribution_get($params) {
 
   $mode = CRM_Contact_BAO_Query::MODE_CONTRIBUTE;
-  list($dao, $query) = _civicrm_api3_get_query_object($params, $mode, 'Contribution');
-
-  $contribution = array();
-  while ($dao->fetch()) {
-    //CRM-8662
-    $contribution_details = $query->store($dao);
-    $softContribution = CRM_Contribute_BAO_ContributionSoft::getSoftContribution($dao->contribution_id, TRUE);
-    $contribution[$dao->contribution_id] = array_merge($contribution_details, $softContribution);
+  $returnProperties = CRM_Contribute_BAO_Query::defaultReturnProperties($mode);
+
+  $contributions = _civicrm_api3_get_using_query_object('Contribution', $params, array(), NULL, $mode, $returnProperties);
+
+  foreach ($contributions as $id => $contribution) {
+    $softContribution = CRM_Contribute_BAO_ContributionSoft::getSoftContribution($id, TRUE);
+    $contributions[$id] = array_merge($contribution, $softContribution);
     // format soft credit for backward compatibility
-    _civicrm_api3_format_soft_credit($contribution[$dao->contribution_id]);
+    _civicrm_api3_format_soft_credit($contributions[$id]);
   }
-  return civicrm_api3_create_success($contribution, $params, 'Contribution', 'get');
+  return civicrm_api3_create_success($contributions, $params, 'Contribution', 'get');
 }
 
 /**