X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FEvent%2FForm%2FRegistration%2FRegister.php;h=7947fdb1ea20b5cee09134cee0431ead438cb9ec;hb=2ab5ff1dbdd3d9457a4297c3004af734b2096fff;hp=648cb4a85b0d29e79321614a0fd0b030e7ebbf90;hpb=4d20ef52acecafc3c3aa0f22b8268e5468352022;p=civicrm-core.git diff --git a/CRM/Event/Form/Registration/Register.php b/CRM/Event/Form/Registration/Register.php index 648cb4a85b..7947fdb1ea 100644 --- a/CRM/Event/Form/Registration/Register.php +++ b/CRM/Event/Form/Registration/Register.php @@ -1,7 +1,7 @@ _defaults = array(); $contactID = $this->getContactID(); if ($contactID) { //@todo CRM-11915 I observed that even when the billing block is not present the routine to retrieve the billing defaults is still called - which seems a bit redundant. - $names = array( - 'first_name', 'middle_name', 'last_name', - "street_address-{$this->_bltID}", "city-{$this->_bltID}", "postal_code-{$this->_bltID}", - "country_id-{$this->_bltID}", "state_province_id-{$this->_bltID}", - ); - - foreach ($names as $name) { - $fields[$name] = 1; - } - $fields["state_province-{$this->_bltID}"] = 1; - $fields["country-{$this->_bltID}"] = 1; - $fields["email-{$this->_bltID}"] = 1; - $fields['email-Primary'] = 1; - - CRM_Core_BAO_UFGroup::setProfileDefaults($contactID, $fields, $this->_defaults); - - // use primary email address if billing email address is empty - if (empty($this->_defaults["email-{$this->_bltID}"]) && - !empty($this->_defaults['email-Primary']) - ) { - $this->_defaults["email-{$this->_bltID}"] = $this->_defaults['email-Primary']; - } - - foreach ($names as $name) { - if (isset($this->_defaults[$name])) { - $this->_defaults['billing_' . $name] = $this->_defaults[$name]; - } - } + $billingDefaults = $this->getProfileDefaults('Billing', $contactID); + $this->_defaults = array_merge($this->_defaults, $billingDefaults); } $config = CRM_Core_Config::singleton(); // set default country from config if no country set @@ -426,14 +400,21 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { self::buildAmount($this); } - $pps = NULL; + $pps = array(); + //@todo this processor adding fn is another one duplicated on contribute - a shared + // common class would make this sort of thing extractable if (!empty($this->_paymentProcessors)) { - $pps = $this->_paymentProcessors; - foreach ($pps as $key => & $name) { + foreach ($this->_paymentProcessors as $key => $name) { + if($name['billing_mode'] == 1) { + $onlinePaymentProcessorEnabled = TRUE; + } $pps[$key] = $name['name']; } } - + if($this->getContactID() === '0' && !$this->_values['event']['is_multiple_registrations']) { + //@todo we are blocking for multiple registrations because we haven't tested + $this->addCidZeroOptions($onlinePaymentProcessorEnabled); + } if (CRM_Utils_Array::value('is_pay_later', $this->_values['event']) && ($this->_allowConfirmation || (!$this->_requireApproval && !$this->_allowWaitlist)) ) { @@ -851,6 +832,9 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { } if ($self->_values['event']['is_monetary']) { + if (($fields['amount'] > 0) && !isset($fields['payment_processor'])) { + $errors['payment_processor'] = ts('Please select a Payment Method'); + } if (is_array($self->_paymentProcessor)) { $payment = CRM_Core_Payment::singleton($self->_mode, $self->_paymentProcessor, $this); $error = $payment->checkConfig($self->_mode); @@ -870,7 +854,7 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { } } - $isZeroAmount = $skipPayementValidation = FALSE; + $isZeroAmount = $skipPaymentValidation = FALSE; if (CRM_Utils_Array::value('priceSetId', $fields)) { if (CRM_Utils_Array::value('amount', $fields) == 0) { $isZeroAmount = TRUE; @@ -892,13 +876,13 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { } if ($isZeroAmount && !($self->_forcePayement && CRM_Utils_Array::value('additional_participants', $fields))) { - $skipPayementValidation = TRUE; + $skipPaymentValidation = TRUE; } // also return if paylater mode or zero fees for valid members if (CRM_Utils_Array::value('is_pay_later', $fields) || CRM_Utils_Array::value('bypass_payment', $fields) || - $skipPayementValidation || + $skipPaymentValidation || (!$self->_allowConfirmation && ($self->_requireApproval || $self->_allowWaitlist)) ) { return empty($errors) ? TRUE : $errors;