Пример #1
0
 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;
 }