}
/**
- * Format the fields for the payment processor.
+ * Format the fields in $this->_params for the payment processor.
*
* In order to pass fields to the payment processor in a consistent way we add some renamed
* parameters.
* @return array
*/
protected function formatParamsForPaymentProcessor($fields) {
+ $this->_params = $this->prepareParamsForPaymentProcessor($this->_params);
+ $fields = array_merge($fields, ['first_name' => 1, 'middle_name' => 1, 'last_name' => 1]);
+ return $fields;
+ }
+
+ /**
+ * Format the fields in $params for the payment processor.
+ *
+ * In order to pass fields to the payment processor in a consistent way we add some renamed
+ * parameters.
+ *
+ * @param array $params Payment processor params
+ *
+ * @return array $params
+ */
+ protected function prepareParamsForPaymentProcessor($params) {
// 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}"]);
+ $params["address_name-{$this->_bltID}"] = CRM_Utils_Array::value('billing_first_name', $params) . ' ' . CRM_Utils_Array::value('billing_middle_name', $params) . ' ' . CRM_Utils_Array::value('billing_last_name', $params);
+ $params["address_name-{$this->_bltID}"] = trim($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($params["billing_state_province_id-{$this->_bltID}"])) {
+ $params['state_province'] = $params["state_province-{$this->_bltID}"] = $params["billing_state_province-{$this->_bltID}"] = CRM_Core_PseudoConstant::stateProvinceAbbreviation($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}"]);
+ if (!empty($params["billing_country_id-{$this->_bltID}"])) {
+ $params['country'] = $params["country-{$this->_bltID}"] = $params["billing_country-{$this->_bltID}"] = CRM_Core_PseudoConstant::countryIsoCode($params["billing_country_id-{$this->_bltID}"]);
}
- list($hasAddressField, $addressParams) = CRM_Contribute_BAO_Contribution::getPaymentProcessorReadyAddressParams($this->_params, $this->_bltID);
+ list($hasAddressField, $addressParams) = CRM_Contribute_BAO_Contribution::getPaymentProcessorReadyAddressParams($params, $this->_bltID);
if ($hasAddressField) {
- $this->_params = array_merge($this->_params, $addressParams);
+ $params = array_merge($params, $addressParams);
}
- // @fixme it would be really nice to have a comment here so I had a clue why we are setting $fields[$name] = 1
- // Also how does relate to similar code in CRM_Contact_BAO_Contact::addBillingNameFieldsIfOtherwiseNotSet()
+ // How does this relate to similar code in CRM_Contact_BAO_Contact::addBillingNameFieldsIfOtherwiseNotSet()?
$nameFields = ['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;
+ if (array_key_exists("billing_$name", $params)) {
+ $params[$name] = $params["billing_{$name}"];
+ $params['preserveDBName'] = TRUE;
}
}
- return $fields;
+
+ // For legacy reasons we set these creditcard expiry fields if present
+ if (isset($params['credit_card_exp_date'])) {
+ $params['year'] = CRM_Core_Payment_Form::getCreditCardExpirationYear($params);
+ $params['month'] = CRM_Core_Payment_Form::getCreditCardExpirationMonth($params);
+ }
+
+ // Assign IP address parameter
+ $params['ip_address'] = CRM_Utils_System::ipAddress();
+
+ return $params;
}
/**
return $this->addRadio($name, $label, $options, $props, NULL, $required);
case 'CheckBox':
+ if ($context === 'search') {
+ $this->addYesNo($name, $label, TRUE, FALSE, $props);
+ return;
+ }
$text = isset($props['text']) ? $props['text'] : NULL;
unset($props['text']);
return $this->addElement('checkbox', $name, $label, $text, $props);
* that small pieces of duplication are not being refactored into separate functions because their only shared parent
* is this form. Inserting a class FrontEndForm.php between the contribution & event & this class would allow functions like this
* and a dozen other small ones to be refactored into a shared parent with the reduction of much code duplication
- *
- * @param $onlinePaymentProcessorEnabled
*/
- public function addCIDZeroOptions($onlinePaymentProcessorEnabled) {
+ public function addCIDZeroOptions() {
$this->assign('nocid', TRUE);
$profiles = [];
if ($this->_values['custom_pre_id']) {
if ($this->_values['custom_post_id']) {
$profiles = array_merge($profiles, (array) $this->_values['custom_post_id']);
}
- if ($onlinePaymentProcessorEnabled) {
- $profiles[] = 'billing';
- }
+ $profiles[] = 'billing';
if (!empty($this->_values)) {
$this->addAutoSelector($profiles);
}