From 5391207b22ade18e297e2e91fbb14d525fe98e4a Mon Sep 17 00:00:00 2001 From: Seamus Lee Date: Fri, 11 Nov 2016 07:23:36 +1100 Subject: [PATCH] Retrieve all pamyent processors if we have had an id passed in as most likely coming from a contribution form --- CRM/Financial/BAO/PaymentProcessor.php | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/CRM/Financial/BAO/PaymentProcessor.php b/CRM/Financial/BAO/PaymentProcessor.php index 48174616d4..b67f63c1ca 100644 --- a/CRM/Financial/BAO/PaymentProcessor.php +++ b/CRM/Financial/BAO/PaymentProcessor.php @@ -291,11 +291,13 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces * @param string|NULL $mode * only return this mode - test|live or NULL for all * @param bool $reset + * @param boo $domain + * Dp we want to limit this to jusst the current domain. * * @throws CiviCRM_API3_Exception * @return array */ - public static function getAllPaymentProcessors($mode = 'all', $reset = FALSE) { + public static function getAllPaymentProcessors($mode = 'all', $reset = FALSE, $domain = TRUE) { $cacheKey = 'CRM_Financial_BAO_Payment_Processor_' . $mode . '_' . CRM_Core_Config::domainID(); if (!$reset) { @@ -307,10 +309,12 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces $retrievalParameters = array( 'is_active' => TRUE, - 'domain_id' => CRM_Core_Config::domainID(), - 'options' => array('sort' => 'is_default DESC, name'), + 'options' => array('sort' => 'is_default DESC, name', 'limit' => 0), 'api.payment_processor_type.getsingle' => 1, ); + if ($domain) { + $retrievalParameters['domain_id'] = CRM_Core_Config::domainID(); + } if ($mode == 'test') { $retrievalParameters['is_test'] = 1; } @@ -374,7 +378,12 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces public static function getPaymentProcessors($capabilities = array(), $ids = FALSE) { $mode = NULL; $testProcessors = in_array('TestMode', $capabilities) ? self::getAllPaymentProcessors('test') : array(); - $processors = self::getAllPaymentProcessors('all'); + if (is_array($ids)) { + $processors = self::getAllPaymentProcessors('all', TRUE, FALSE); + } + else { + $processors = self::getAllPaymentProcessors('all'); + } if (in_array('TestMode', $capabilities) && is_array($ids)) { $possibleLiveIDs = array_diff($ids, array_keys($testProcessors)); @@ -392,18 +401,18 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces foreach ($processors as $index => $processor) { if (is_array($ids) && !in_array($processor['id'], $ids)) { - unset ($processors[$index]); + unset($processors[$index]); continue; } // Invalid processors will store a null value in 'object' (e.g. if not all required config fields are present). // This is determined by calling when loading the processor via the $processorObject->checkConfig() function. if (!is_a($processor['object'], 'CRM_Core_Payment')) { - unset ($processors[$index]); + unset($processors[$index]); continue; } foreach ($capabilities as $capability) { if (($processor['object']->supports($capability)) == FALSE) { - unset ($processors[$index]); + unset($processors[$index]); continue 1; } } -- 2.25.1