<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.5 |
+ | CiviCRM version 4.6 |
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC (c) 2004-2014 |
+--------------------------------------------------------------------+
* The values for the contribution db object
*
* @var array
- * @protected
*/
public $_values;
* The total amount
*
* @var float
- * @public
*/
public $_totalAmount;
* Set variables up before form is built
*
* @return void
- * @access public
*/
- function preProcess() {
+ public function preProcess() {
parent::preProcess();
// lineItem isn't set until Register postProcess
if ($rfp || CRM_Utils_Array::value('additional_participants', $this->_params[0], FALSE)) {
$payment = CRM_Core_Payment::singleton($this->_mode, $this->_paymentProcessor, $this);
$paymentObjError = ts('The system did not record payment details for this payment and so could not process the transaction. Please report this error to the site administrator.');
- if (is_object($payment))
+ if (is_object($payment)) {
$expressParams = $payment->getExpressCheckoutDetails($this->get('token'));
- else
+ }
+ else {
CRM_Core_Error::fatal($paymentObjError);
+ }
- $params['payer'] = $expressParams['payer'];
+ $params['payer'] = CRM_Utils_Array::value('payer', $expressParams);
$params['payer_id'] = $expressParams['payer_id'];
$params['payer_status'] = $expressParams['payer_status'];
$params['discountAmount'] = $this->_params[0]['discountAmount'];
$params['discountMessage'] = $this->_params[0]['discountMessage'];
}
+ if (!empty($this->_params[0]['amount_priceset_level_radio'])) {
+ $params['amount_priceset_level_radio'] = $this->_params[0]['amount_priceset_level_radio'];
+ }
$params['amount_level'] = $this->_params[0]['amount_level'];
$params['currencyID'] = $this->_params[0]['currencyID'];
$params['payment_action'] = 'Sale';
$registerParams["billing_country-{$this->_bltID}"] = CRM_Core_PseudoConstant::countryIsoCode($registerParams["billing_country_id-{$this->_bltID}"]);
}
if (isset($registerParams['credit_card_exp_date'])) {
- $registerParams['year'] = CRM_Core_Payment_Form::getCreditCardExpirationYear($registerParams);
+ $registerParams['year'] = CRM_Core_Payment_Form::getCreditCardExpirationYear($registerParams);
$registerParams['month'] = CRM_Core_Payment_Form::getCreditCardExpirationMonth($registerParams);
}
if ($this->_values['event']['is_monetary']) {
* no help display needed
*
* @return int
- * @access public
*/
- function getAction() {
+ public function getAction() {
if ($this->_action & CRM_Core_Action::PREVIEW) {
return CRM_Core_Action::VIEW | CRM_Core_Action::PREVIEW;
}
* Build the form object
*
* @return void
- * @access public
*/
public function buildQuickForm() {
$this->assignToTemplate();
$taxAmount += $v['tax_amount'];
if (is_array($v)) {
foreach (array(
- 'first_name', 'last_name') as $name) {
+ 'first_name',
+ 'last_name',
+ ) as $name) {
if (isset($v['billing_' . $name]) &&
!isset($v[$name])
) {
}
}
- $invoiceSettings = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::CONTRIBUTE_PREFERENCES_NAME,'contribution_invoice_settings');
+ $invoiceSettings = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::CONTRIBUTE_PREFERENCES_NAME, 'contribution_invoice_settings');
$taxTerm = CRM_Utils_Array::value('tax_term', $invoiceSettings);
$invoicing = CRM_Utils_Array::value('invoicing', $invoiceSettings);
if ($invoicing) {
$this->addButtons(array(
array(
'type' => 'back',
- 'name' => ts('<< Go Back'),
+ 'name' => ts('Go Back'),
),
)
);
}
else {
- $contribButton = ts('Continue >>');
+ $contribButton = ts('Continue');
$this->addButtons(array(
array(
'type' => 'back',
- 'name' => ts('<< Go Back'),
+ 'name' => ts('Go Back'),
),
array(
'type' => 'next',
// Assign Participant Count to Lineitem Table
$this->assign('pricesetFieldsCount', CRM_Price_BAO_PriceSet::getPricesetCount($this->_priceSetId));
+ $this->addFormRule(array('CRM_Event_Form_Registration_Confirm', 'formRule'), $this);
+ }
+
+ public static function formRule($fields, $files, $self) {
+ $errors = array();
+ $eventFull = CRM_Event_BAO_Participant::eventFull($self->_eventId, FALSE, CRM_Utils_Array::value('has_waitlist', $self->_values['event']));
+ if ($eventFull && empty($self->_allowConfirmation)) {
+ if (empty($self->_allowWaitlist)) {
+ CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/event/register', "reset=1&id={$self->_eventId}", FALSE, NULL, FALSE, TRUE));
+ }
+ }
+ $self->_feeBlock = $self->_values['fee'];
+ CRM_Event_Form_Registration_Register::formatFieldsForOptionFull($self);
+
+ if (!empty($self->_priceSetId)) {
+ $priceSetErrors = self::validatePriceSet($self, $self->_params);
+ //get price set fields errors in.
+ $errors = array_merge($errors, CRM_Utils_Array::value(0, $priceSetErrors, array()));
+ }
+
+ if (!empty($errors)) {
+ $soldOutOptions = implode("<br/>", $priceSetErrors['soldOutOptions']);
+ CRM_Core_Session::setStatus(ts('You have been returned to the start of the registration process and any sold out events have been removed from your selections. You will not be able to continue until you review your booking and select different events if you wish. The following events were sold out:'), ts('Unfortunately some of your options have now sold out for one or more participants.'), 'error');
+ CRM_Core_Session::setStatus(ts("{$soldOutOptions}"), ts('Sold out:'), 'error');
+ CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/event/register', "_qf_Register_display=true&qfKey=" . $fields['qfKey']));
+ }
+ return empty($errors) ? TRUE : $errors;
}
/**
* Process the form submission
*
- * @access public
*
* @return void
*/
public function postProcess() {
- $now = date('YmdHis');
+ $now = date('YmdHis');
$this->_params = $this->get('params');
if (!empty($this->_params[0]['contact_id'])) {
}
}
elseif ($this->_contributeMode == 'express' && !empty($value['is_primary'])) {
- if (is_object($payment))
+ if (is_object($payment)) {
$result = $payment->doExpressCheckout($value);
- else
+ }
+ else {
CRM_Core_Error::fatal($paymentObjError);
+ }
}
elseif (!empty($value['is_primary'])) {
CRM_Core_Payment_Form::mapParams($this->_bltID, $value, $value, TRUE);
}
//passing contribution id is already registered.
- $contribution =
- self::processContribution($this, $value, $result, $contactID, $pending, $isAdditionalAmount);
+ $contribution = self::processContribution($this, $value, $result, $contactID, $pending, $isAdditionalAmount);
$value['contributionID'] = $contribution->id;
$value['contributionTypeID'] = $contribution->financial_type_id;
$value['receive_date'] = $contribution->receive_date;
$value['contributionTypeID'] = $contribution->financial_type_id;
}
$value['contactID'] = $contactID;
- $value['eventID'] = $this->_eventId;
+ $value['eventID'] = $this->_eventId;
$value['item_name'] = $value['description'];
}
// handle register date CRM-4320
if ($this->_allowConfirmation) {
- $registerDate = CRM_Utils_Array::value( 'participant_register_date', $params );
+ $registerDate = CRM_Utils_Array::value('participant_register_date', $params);
}
elseif (!empty($params['participant_register_date']) &&
is_array($params['participant_register_date']) &&
}
$entityTable = 'civicrm_participant';
- $invoiceSettings = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::CONTRIBUTE_PREFERENCES_NAME,'contribution_invoice_settings');
+ $invoiceSettings = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::CONTRIBUTE_PREFERENCES_NAME, 'contribution_invoice_settings');
$invoicing = CRM_Utils_Array::value('invoicing', $invoiceSettings);
$totalTaxAmount = 0;
$dataArray = array();
}
if (!empty($this->_lineItem)) {
- $lineItems = $this->_lineItem;
- $lineItem = array();
+ $lineItems = $this->_lineItem;
+ $lineItem = array();
if ($lineItemValue = CRM_Utils_Array::value($participantNum, $lineItems)) {
$lineItem[] = $lineItemValue;
}
unset($copyParticipantCount[$participantNum]);
}
}
- if ($participantNum === NULL)
- break;
+ if ($participantNum === NULL) {
+ break;
+ }
//carry the participant submitted values.
$this->_values['params'][$participantID] = $params[$participantNum];
$this->assign('amounts', $amount);
}
if ($this->_lineItem) {
- $lineItems = $this->_lineItem;
- $lineItem = array();
+ $lineItems = $this->_lineItem;
+ $lineItem = array();
if ($lineItemValue = CRM_Utils_Array::value($participantNum, $lineItems)) {
$lineItem[] = $lineItemValue;
}
* @param bool $isAdditionalAmount
*
* @return void
- * @access public
*/
- static function processContribution(&$form, $params, $result, $contactID,
+ public static function processContribution(
+ &$form, $params, $result, $contactID,
$pending = FALSE, $isAdditionalAmount = FALSE
) {
$transaction = new CRM_Core_Transaction();
- $now = date('YmdHis');
+ $now = date('YmdHis');
$receiptDate = NULL;
if (!empty($form->_values['event']['is_email_confirm'])) {
$contribParams = array(
'contact_id' => $contactID,
- 'financial_type_id' => !empty($form->_values['event']['financial_type_id']) ?
- $form->_values['event']['financial_type_id'] : $params['financial_type_id'],
+ 'financial_type_id' => !empty($form->_values['event']['financial_type_id']) ? $form->_values['event']['financial_type_id'] : $params['financial_type_id'],
'receive_date' => $now,
'total_amount' => $params['amount'],
'tax_amount' => $params['tax_amount'],
* @param CRM_Core_Form $form
*
* @return void
- * @access public
*/
public static function fixLocationFields(&$params, &$fields, &$form) {
if (!empty($form->_fields)) {
!$form->_values['event']['is_monetary'] ||
$form->_allowWaitlist ||
$form->_requireApproval
- ) && !empty($params["email-{$form->_bltID}"])) {
+ ) && !empty($params["email-{$form->_bltID}"])
+ ) {
$params['email-Primary'] = $params["email-{$form->_bltID}"];
}
}
* @param CRM_Core_Form $form
*
* @return void
- * @access public
*/
public static function updateContactFields($contactID, $params, $fields, &$form) {
//add the contact to group, if add to group is selected for a
'contact_type'
);
- if(array_key_exists('contact_id', $params) && empty($params['contact_id'])) {
+ if (array_key_exists('contact_id', $params) && empty($params['contact_id'])) {
// we unset this here because the downstream function ignores the contactID we give it
// if it is set & it is difficult to understand the implications of 'fixing' this downstream
// but if we are passing a contact id into this function it's reasonable to assume we don't
public static function assignProfiles(&$form) {
$participantParams = $form->_params;
$formattedValues = $profileFields = array();
- $count = 1;
+ $count = 1;
foreach ($participantParams as $participantNum => $participantValue) {
if ($participantNum) {
- $prefix1 = 'additional';
- $prefix2 = 'additional_';
- } else {
- $prefix1 = '';
- $prefix2 = '';
+ $prefix1 = 'additional';
+ $prefix2 = 'additional_';
+ }
+ else {
+ $prefix1 = '';
+ $prefix2 = '';
}
if ($participantValue != 'skip') {
//get the customPre profile info
if (!empty($form->_values[$prefix2 . 'custom_pre_id'])) {
$values = $groupName = array();
CRM_Event_BAO_Event::displayProfile($participantValue,
- $form->_values[ $prefix2 . 'custom_pre_id'],
+ $form->_values[$prefix2 . 'custom_pre_id'],
$groupName,
$values,
$profileFields
}
$form->_fields = $profileFields;
}
- if (!empty($formattedValues) ) {
+ if (!empty($formattedValues)) {
$form->assign('primaryParticipantProfile', $formattedValues[1]);
- $form->set('primaryParticipantProfile', $formattedValues[1]);
+ $form->set('primaryParticipantProfile', $formattedValues[1]);
if ($count > 2) {
unset($formattedValues[1]);
$form->assign('addParticipantProfile', $formattedValues);
- $form->set('addParticipantProfile', $formattedValues);
+ $form->set('addParticipantProfile', $formattedValues);
}
}
}