static function updatePendingOnlineContribution($participantId, $statusId) { if (!$participantId || !$statusId) { return; } $contributionId = CRM_Contribute_BAO_Contribution::checkOnlinePendingContribution($participantId, 'Event'); if (!$contributionId) { return; } //status rules. //1. participant - positive => contribution - completed. //2. participant - negative => contribution - cancelled. $positiveStatuses = CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Positive'"); $negativeStatuses = CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Negative'"); $contributionStatuses = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); $contributionStatusId = NULL; if (array_key_exists($statusId, $positiveStatuses)) { $contributionStatusId = array_search('Completed', $contributionStatuses); } if (array_key_exists($statusId, $negativeStatuses)) { $contributionStatusId = array_search('Cancelled', $contributionStatuses); } if (!$contributionStatusId) { return; } $params = array('component_id' => $participantId, 'componentName' => 'Event', 'contribution_id' => $contributionId, 'contribution_status_id' => $contributionStatusId); //change related contribution status. $updatedStatusId = CRM_Core_Payment_BaseIPN::updateContributionStatus($params); return $updatedStatusId; }