+--------------------------------------------------------------------+
| CiviCRM version 4.6 |
+--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2014 |
+ | Copyright CiviCRM LLC (c) 2004-2015 |
+--------------------------------------------------------------------+
| This file is a part of CiviCRM. |
| |
| GNU Affero General Public License or the licensing of CiviCRM, |
| see the CiviCRM license FAQ at http://civicrm.org/licensing |
+--------------------------------------------------------------------+
-*/
+ */
/**
*
*
* @package CRM
- * @copyright CiviCRM LLC (c) 2004-2014
+ * @copyright CiviCRM LLC (c) 2004-2015
* $Id$
*
*/
class CRM_Event_Form_Registration_AdditionalParticipant extends CRM_Event_Form_Registration {
/**
- * The defaults involved in this page
+ * The defaults involved in this page.
*/
public $_defaults = array();
public $additionalParticipantId = NULL;
/**
- * Set variables up before form is built
+ * Set variables up before form is built.
*
* @return void
*/
$defaults = array_merge($this->_defaults, $defaults);
//reset values for all options those are full.
- if (!empty($unsetSubmittedOptions) && empty($_POST)) {
- $this->resetElementValue($unsetSubmittedOptions);
- }
+ CRM_Event_Form_Registration::resetElementValue($unsetSubmittedOptions, $this);
//load default campaign from page.
if (array_key_exists('participant_campaign_id', $this->_fields)) {
}
/**
- * Build the form object
+ * Build the form object.
*
* @return void
*/
$pre = $post = array();
foreach (array(
'pre',
- 'post'
+ 'post',
) as $keys) {
if (isset($this->_values['additional_custom_' . $keys . '_id'])) {
$this->buildCustom($this->_values['additional_custom_' . $keys . '_id'], 'additionalCustom' . ucfirst($keys), TRUE);
}
foreach (array(
'first_name',
- 'last_name'
+ 'last_name',
) as $name) {
if (array_key_exists($name, $$keys) &&
CRM_Utils_Array::value('is_required', CRM_Utils_Array::value($name, $$keys))
if ($this->_requireApproval) {
$statusMessage = ts("It looks like you are now registering a group of %1 participants. The event has %2 available spaces (you will not be wait listed). Registration for this event requires approval. You will receive an email once your registration has been reviewed.", array(
1 => ++$processedCnt,
- 2 => $spaces
+ 2 => $spaces,
));
}
else {
$statusMessage = ts("It looks like you are now registering a group of %1 participants. The event has %2 available spaces (you will not be wait listed).", array(
1 => ++$processedCnt,
- 2 => $spaces
+ 2 => $spaces,
));
}
}
else {
$statusMessage = ts("It looks like you are now registering a group of %1 participants. The event has %2 available spaces (you will not be wait listed). Please go back to the main registration page and reduce the number of additional people. You will also need to complete payment information.", array(
1 => ++$processedCnt,
- 2 => $spaces
+ 2 => $spaces,
));
$allowToProceed = FALSE;
}
'name' => ts('Skip Participant'),
'subName' => 'skip',
'icon' => 'seek-next',
- )
+ ),
)
);
}
}
/**
- * Global form rule
+ * Global form rule.
*
* @param array $fields
* The input form values.
*
* @return bool|array
* true if no errors, else array of errors
- * @static
*/
public static function formRule($fields, $files, $self) {
$errors = array();
) {
$errors['_qf_default'] = ts('It looks like event has only %2 seats available and you are trying to register %1 participants, so could you please select price options accordingly.', array(
1 => $totalParticipants,
- 2 => $self->_availableRegistrations
+ 2 => $self->_availableRegistrations,
));
}
}
CRM_Core_Form::validateMandatoryFields($self->_fields, $fields, $errors);
- // make sure that credit card number and cvv are valid
- CRM_Core_Payment_Form::validateCreditCard($self->_params[0], $errors);
+ // validate supplied payment instrument values (e.g. credit card number and cvv)
+ $payment_processor_id = $self->_params[0]['payment_processor'];
+ CRM_Core_Payment_Form::validatePaymentInstrument($payment_processor_id, $self->_params[0], $errors, $self);
- if ($errors) {
+ if (!empty($errors)) {
return FALSE;
}
}
}
}
+ return TRUE;
}
/**
- * Process the form submission
+ * Process the form submission.
*
*
* @return void
$lineItem = array();
CRM_Price_BAO_PriceSet::processAmount($this->_values['fee'], $params, $lineItem);
- //build the line item..
- if (array_key_exists($addParticipantNum, $this->_lineItem)) {
- $this->_lineItem[$addParticipantNum] = $lineItem;
- }
- else {
- $this->_lineItem[] = $lineItem;
- }
+ //build line item array..
+ //if requireApproval/waitlist is enabled we hide fees for primary participant
+ // (and not for additional participant which might be is a bug)
+ //lineItem are not correctly build for primary participant
+ //this results in redundancy since now lineItems for additional participant will be build against primary participantNum
+ //therefore lineItems must always be build against current participant No
+ $this->_lineItem[$addParticipantNum] = $lineItem;
}
}
}
//build the params array.
- if (array_key_exists($addParticipantNum, $this->_params)) {
- $this->_params[$addParticipantNum] = $params;
- }
- else {
- $this->_params[] = $params;
- }
+ $this->_params[$addParticipantNum] = $params;
}
//finally set the params.
}
/**
- * Check whether call current participant is last one
+ * Check whether call current participant is last one.
*
* @param bool $isButtonJs
*
- * @return boolean
+ * @return bool
* ture on success.
*/
public function isLastParticipant($isButtonJs = FALSE) {
return FALSE;
}
- /**
- * Reset values for all options those are full.
- *
- **/
- public function resetElementValue($optionFullIds = array()) {
- if (!is_array($optionFullIds) ||
- empty($optionFullIds) ||
- !$this->isSubmitted()
- ) {
- return;
- }
-
- foreach ($optionFullIds as $fldId => $optIds) {
- $name = "price_$fldId";
- if (!$this->elementExists($name)) {
- continue;
- }
-
- $element = $this->getElement($name);
- $eleType = $element->getType();
-
- $resetSubmitted = FALSE;
- switch ($eleType) {
- case 'text':
- if ($element->isFrozen()) {
- $element->setValue('');
- $resetSubmitted = TRUE;
- }
- break;
-
- case 'group':
- if (is_array($element->_elements)) {
- foreach ($element->_elements as $child) {
- $childType = $child->getType();
- $methodName = 'getName';
- if ($childType) {
- $methodName = 'getValue';
- }
- if (in_array($child->{$methodName}(), $optIds) && $child->isFrozen()) {
- $resetSubmitted = TRUE;
- $child->updateAttributes(array('checked' => NULL));
- }
- }
- }
- break;
-
- case 'select':
- $resetSubmitted = TRUE;
- $element->_values = array();
- break;
- }
-
- //finally unset values from submitted.
- if ($resetSubmitted) {
- $this->resetSubmittedValue($name, $optIds);
- }
- }
- }
-
- /**
- * @param string $elementName
- * @param array $optionIds
- */
- public function resetSubmittedValue($elementName, $optionIds = array()) {
- if (empty($elementName) ||
- !$this->elementExists($elementName) ||
- !$this->getSubmitValue($elementName)
- ) {
- return;
- }
- foreach (array(
- 'constantValues',
- 'submitValues',
- 'defaultValues'
- ) as $val) {
- $values = &$this->{"_$val"};
- if (!is_array($values) || empty($values)) {
- continue;
- }
- $eleVal = CRM_Utils_Array::value($elementName, $values);
- if (empty($eleVal)) {
- continue;
- }
- if (is_array($eleVal)) {
- $found = FALSE;
- foreach ($eleVal as $keyId => $ignore) {
- if (in_array($keyId, $optionIds)) {
- $found = TRUE;
- unset($values[$elementName][$keyId]);
- }
- }
- if ($found && empty($values[$elementName][$keyId])) {
- $values[$elementName][$keyId] = NULL;
- }
- }
- else {
- $values[$elementName][$keyId] = NULL;
- }
- }
- }
}