$sendReminders = CRM_Utils_Array::value('send_reminders', $params, FALSE);
- $allStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
-
- // unset statues that we never use for pledges
- foreach (array(
- 'Completed',
- 'Cancelled',
- 'Failed',
- ) as $statusKey) {
- if ($key = CRM_Utils_Array::key($statusKey, $allStatus)) {
- unset($allStatus[$key]);
- }
- }
+ $allStatus = array_flip(CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'));
+ $allPledgeStatus = CRM_Core_OptionGroup::values('pledge_status',
+ TRUE, FALSE, FALSE, NULL, 'name', TRUE
+ );
+ unset($allPledgeStatus['Completed'], $allPledgeStatus['Cancelled']);
+ unset($allStatus['Completed'], $allStatus['Cancelled'], $allStatus['Failed']);
- $statusIds = implode(',', array_keys($allStatus));
+ $statusIds = implode(',', $allStatus);
+ $pledgeStatusIds = implode(',', $allPledgeStatus);
$updateCnt = 0;
$query = "
) as amount_paid
FROM civicrm_pledge pledge, civicrm_pledge_payment payment
WHERE pledge.id = payment.pledge_id
- AND payment.status_id IN ( {$statusIds} ) AND pledge.status_id IN ( {$statusIds} )
+ AND payment.status_id IN ( {$statusIds} ) AND pledge.status_id IN ( {$pledgeStatusIds} )
GROUP By payment.id
";
if (CRM_Utils_Date::overdue(CRM_Utils_Date::customFormat($dao->scheduled_date, '%Y%m%d'),
$now
- ) && $dao->payment_status != array_search('Overdue', $allStatus)
+ ) && $dao->payment_status != $allStatus['Overdue']
) {
$pledgePayments[$dao->pledge_id][$dao->payment_id] = $dao->payment_id;
}
}
+ $allPledgeStatus = array_flip($allPledgeStatus);
// process the updating script...
-
foreach ($pledgePayments as $pledgeId => $paymentIds) {
// 1. update the pledge /pledge payment status. returns new status when an update happens
- $returnMessages[] = "Checking if status update is needed for Pledge Id: {$pledgeId} (current status is {$allStatus[$pledgeStatus[$pledgeId]]})";
+ $returnMessages[] = "Checking if status update is needed for Pledge Id: {$pledgeId} (current status is {$allPledgeStatus[$pledgeStatus[$pledgeId]]})";
$newStatus = CRM_Pledge_BAO_PledgePayment::updatePledgePaymentStatus($pledgeId, $paymentIds,
- array_search('Overdue', $allStatus), NULL, 0, FALSE, TRUE
+ $allStatus['Overdue'], NULL, 0, FALSE, TRUE
);
if ($newStatus != $pledgeStatus[$pledgeId]) {
- $returnMessages[] = "- status updated to: {$allStatus[$newStatus]}";
+ $returnMessages[] = "- status updated to: {$allPledgeStatus[$newStatus]}";
$updateCnt += 1;
}
}