* Fix any double json encoding in Payment Processor accepted_credit_cards field
*/
public static function fixDoubleEscapingPaymentProcessorCreditCards() {
- $paymentProcessors = PaymentProcessor::get(FALSE)->execute();
+ $paymentProcessors = PaymentProcessor::get(FALSE)->addWhere('is_test', 'IS NOT NULL')->addWhere('domain_id', 'IS NOT NULL')->execute();
foreach ($paymentProcessors as $paymentProcessor) {
- if (is_numeric(array_keys($paymentProcessor['accepted_credit_cards'])[0])) {
- PaymentProcessor::update(FALSE)->addValue('accepted_credit_cards', json_decode($paymentProcessor['accepted_credit_cards'], TRUE))->addWhere('id', '=', $paymentProcessor['id'])->execute();
+ if (is_array($paymentProcessor['accepted_credit_cards']) && is_numeric(array_keys($paymentProcessor['accepted_credit_cards'])[0])) {
+ PaymentProcessor::update(FALSE)->addValue('accepted_credit_cards', json_decode($paymentProcessor['accepted_credit_cards'][0], TRUE))->addWhere('id', '=', $paymentProcessor['id'])->execute();
}
}
return TRUE;
];
PaymentProcessor::update()->addValue('accepted_credit_cards', $creditCards)->addWhere('id', '=', $this->ids['PaymentProcessor']['anet'])->execute();
PaymentProcessor::update()->addValue('accepted_credit_cards', json_encode($creditCards))->addWhere('id', '=', $this->ids['PaymentProcessor']['authorize_net'])->execute();
+ $dummyPaymentProcessor = $this->processorCreate();
+ PaymentProcessor::update()->addValue('accepted_credit_cards', NULL)->addWhere('id', '=', $dummyPaymentProcessor)->execute();
CRM_Upgrade_Incremental_php_FiveSixtyFour::fixDoubleEscapingPaymentProcessorCreditCards();
- $paymentProcessors = PaymentProcessor::get()->execute();
+ $paymentProcessors = PaymentProcessor::get()->addWhere('id', 'IN', [$this->ids['PaymentProcessor']['anet'], $this->ids['PaymentProcessor']['authorize_net'], $dummyPaymentProcessor])->execute();
foreach ($paymentProcessors as $paymentProcessor) {
- $this->assertEquals($creditCards, $paymentProcessor['accepted_credit_cards']);
+ if (!empty($paymentProcessor['accepted_credit_cards'])) {
+ $this->assertEquals($creditCards, $paymentProcessor['accepted_credit_cards']);
+ }
}
}