Skip to content

Commit

Permalink
Fix Contribution.create to not attempt to set contacts on activity up…
Browse files Browse the repository at this point in the history
…date

In udpate cases the original allocations were more correct
  • Loading branch information
eileenmcnaughton committed Dec 14, 2020
1 parent dc4063d commit 3df7ea6
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions CRM/Contribute/BAO/Contribution.php
Original file line number Diff line number Diff line change
Expand Up @@ -517,18 +517,24 @@ public static function create(&$params) {
])->execute()->first();

$campaignParams = isset($params['campaign_id']) ? ['campaign_id' => ($params['campaign_id'] ?? NULL)] : [];
Activity::save(FALSE)->addRecord(array_merge([
$activityParams = array_merge([
'activity_type_id:name' => 'Contribution',
'source_record_id' => $contribution->id,
'source_contact_id' => CRM_Core_Session::getLoggedInContactID() ?: $contribution->contact_id,
'target_contact_id' => CRM_Core_Session::getLoggedInContactID() ? [$contribution->contact_id] : [],
'activity_date_time' => $contribution->receive_date,
'is_test' => (bool) $contribution->is_test,
'status_id:name' => $isCompleted ? 'Completed' : 'Scheduled',
'skipRecentView' => TRUE,
'subject' => CRM_Activity_BAO_Activity::getActivitySubject($contribution),
'id' => $existingActivity['id'] ?? NULL,
], $campaignParams))->execute();
], $campaignParams);
if (!$activityParams['id']) {
// Don't set target contacts on update as these will have been
// correctly created and we risk overwriting them with
// 'best guess' params.
$activityParams['source_contact_id'] = $params['source_contact_id'] ?? (CRM_Core_Session::getLoggedInContactID() ?: $contribution->contact_id);
$activityParams['target_contact_id'] = [$contribution->contact_id];
}
Activity::save(FALSE)->addRecord($activityParams)->execute();
}

// do not add to recent items for import, CRM-4399
Expand Down

0 comments on commit 3df7ea6

Please sign in to comment.