From: eileenmcnaugton Date: Mon, 28 Sep 2015 10:48:28 +0000 (+1300) Subject: CRM-17294 renamed fields not passed to processor X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=bddc8a28fc2bb767b15fab2143df6426b6cc5ee4;p=civicrm-core.git CRM-17294 renamed fields not passed to processor --- diff --git a/CRM/Contribute/Form/AbstractEditPayment.php b/CRM/Contribute/Form/AbstractEditPayment.php index fff7ca2a97..7fb7a90e40 100644 --- a/CRM/Contribute/Form/AbstractEditPayment.php +++ b/CRM/Contribute/Form/AbstractEditPayment.php @@ -435,7 +435,7 @@ LEFT JOIN civicrm_contribution on (civicrm_contribution.contact_id = civicrm_co // @todo review this. The inclusion of this IF was to address test processors being incorrectly loaded. // However the function $this->getValidProcessors() is expected to only return the processors relevant // to the mode (using the actual id - ie. the id of the test processor for the test processor). - // for some reason there was a need to filter here per commit history - but this indicates a problem + // for some reason there was a need to filter here per commit history - but this indicates a problem // somewhere else. if ($processor['is_test'] == ($this->_mode == 'test')) { $this->_processors[$id] = ts($processor['name']); @@ -685,10 +685,6 @@ LEFT JOIN civicrm_contribution on (civicrm_contribution.contact_id = civicrm_co $fields[$name] = 1; } - // also add location name to the array - $this->_params["address_name-{$this->_bltID}"] = CRM_Utils_Array::value('billing_first_name', $this->_params) . ' ' . CRM_Utils_Array::value('billing_middle_name', $this->_params) . ' ' . CRM_Utils_Array::value('billing_last_name', $this->_params); - $this->_params["address_name-{$this->_bltID}"] = trim($this->_params["address_name-{$this->_bltID}"]); - $fields["address_name-{$this->_bltID}"] = 1; //ensure we don't over-write the payer's email with the member's email @@ -697,15 +693,7 @@ LEFT JOIN civicrm_contribution on (civicrm_contribution.contact_id = civicrm_co } list($hasBillingField, $addressParams) = CRM_Contribute_BAO_Contribution::getPaymentProcessorReadyAddressParams($this->_params, $this->_bltID); - $nameFields = array('first_name', 'middle_name', 'last_name'); - - foreach ($nameFields as $name) { - $fields[$name] = 1; - if (array_key_exists("billing_$name", $this->_params)) { - $this->_params[$name] = $this->_params["billing_{$name}"]; - $this->_params['preserveDBName'] = TRUE; - } - } + $fields = $this->formatParamsForPaymentProcessor($fields); if ($hasBillingField) { $addressParams = array_merge($this->_params, $addressParams); @@ -716,13 +704,6 @@ LEFT JOIN civicrm_contribution on (civicrm_contribution.contact_id = civicrm_co CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $this->_contactID, 'contact_type') ); } - // Add additional parameters that the payment processors are used to receiving. - if (!empty($this->_params["billing_state_province_id-{$this->_bltID}"])) { - $this->_params["state_province-{$this->_bltID}"] = $this->_params["billing_state_province-{$this->_bltID}"] = CRM_Core_PseudoConstant::stateProvinceAbbreviation($this->_params["billing_state_province_id-{$this->_bltID}"]); - } - if (!empty($this->_params["billing_country_id-{$this->_bltID}"])) { - $this->_params["country-{$this->_bltID}"] = $this->_params["billing_country-{$this->_bltID}"] = CRM_Core_PseudoConstant::countryIsoCode($this->_params["billing_country_id-{$this->_bltID}"]); - } } } diff --git a/CRM/Contribute/Form/Contribution/Confirm.php b/CRM/Contribute/Form/Contribution/Confirm.php index 8a8b270c45..b367b2f4f5 100644 --- a/CRM/Contribute/Form/Contribution/Confirm.php +++ b/CRM/Contribute/Form/Contribution/Confirm.php @@ -1922,22 +1922,16 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr } } - if (!array_key_exists('first_name', $fields)) { - $nameFields = array('first_name', 'middle_name', 'last_name'); - foreach ($nameFields as $name) { - $fields[$name] = 1; - if (array_key_exists("billing_$name", $params)) { - $params[$name] = $params["billing_{$name}"]; - $params['preserveDBName'] = TRUE; - } - } - } + $fields = $this->formatParamsForPaymentProcessor($fields); // billing email address $fields["email-{$this->_bltID}"] = 1; //unset the billing parameters if it is pay later mode //to avoid creation of billing location + // @todo - note that elsewhere we don't unset these - we simply make + // a sensible decision about including them when building the form + // and if they are submitted we handle them. Check out abstractEditPaymentForm. if ($isPayLater && !$this->_isBillingAddressRequiredForPayLater) { $billingFields = array( 'billing_first_name', diff --git a/CRM/Core/Form.php b/CRM/Core/Form.php index 89b2524dd3..c63b6db240 100644 --- a/CRM/Core/Form.php +++ b/CRM/Core/Form.php @@ -683,6 +683,44 @@ class CRM_Core_Form extends HTML_QuickForm_Page { } } + /** + * Format the fields for the payment processor. + * + * In order to pass fields to the payment processor in a consistent way we add some renamed + * parameters. + * + * @param array $fields + * + * @return array + */ + protected function formatParamsForPaymentProcessor($fields) { + // also add location name to the array + $this->_params["address_name-{$this->_bltID}"] = CRM_Utils_Array::value('billing_first_name', $this->_params) . ' ' . CRM_Utils_Array::value('billing_middle_name', $this->_params) . ' ' . CRM_Utils_Array::value('billing_last_name', $this->_params); + $this->_params["address_name-{$this->_bltID}"] = trim($this->_params["address_name-{$this->_bltID}"]); + // Add additional parameters that the payment processors are used to receiving. + if (!empty($this->_params["billing_state_province_id-{$this->_bltID}"])) { + $this->_params['state_province'] = $this->_params["state_province-{$this->_bltID}"] = $this->_params["billing_state_province-{$this->_bltID}"] = CRM_Core_PseudoConstant::stateProvinceAbbreviation($this->_params["billing_state_province_id-{$this->_bltID}"]); + } + if (!empty($this->_params["billing_country_id-{$this->_bltID}"])) { + $this->_params['country'] = $this->_params["country-{$this->_bltID}"] = $this->_params["billing_country-{$this->_bltID}"] = CRM_Core_PseudoConstant::countryIsoCode($this->_params["billing_country_id-{$this->_bltID}"]); + } + + list($hasAddressField, $addressParams) = CRM_Contribute_BAO_Contribution::getPaymentProcessorReadyAddressParams($this->_params, $this->_bltID); + if ($hasAddressField) { + $this->_params = array_merge($this->_params, $addressParams); + } + + $nameFields = array('first_name', 'middle_name', 'last_name'); + foreach ($nameFields as $name) { + $fields[$name] = 1; + if (array_key_exists("billing_$name", $this->_params)) { + $this->_params[$name] = $this->_params["billing_{$name}"]; + $this->_params['preserveDBName'] = TRUE; + } + } + return $fields; + } + /** * Handle Payment Processor switching for contribution and event registration forms. *