You are here

function _civicrm_entity_price_set_field_setup_price_set_fapi in CiviCRM Entity 7.2

Helper function to add price set FAPI elements on form

_state

Parameters

$form:

$default_values:

$parent:

$count:

1 call to _civicrm_entity_price_set_field_setup_price_set_fapi()
_civicrm_entity_price_set_field_setup_event_registration_form_fapi in modules/civicrm_entity_price_set_field/includes/civicrm_entity_price_set_field.event_registration.inc
Helper function to setup event registration form FAPI

File

modules/civicrm_entity_price_set_field/includes/civicrm_entity_price_set_field.price_set.inc, line 16
CiviCRM Entity Price Set Field, Price Set Form generation

Code

function _civicrm_entity_price_set_field_setup_price_set_fapi(&$form, &$form_state, $default_values, $parent, $count) {
  $data = $form_state['price_set_data'][$count];
  if (!empty($data)) {
    $form[$parent]['contacts'][$count]['price_set'] = array(
      '#type' => 'container',
      '#attributes' => array(
        'class' => array(
          'civicrm-price-set',
          'civicrm-price-set-' . $data['price_set']->id,
        ),
      ),
      '#weight' => -5,
    );
    foreach ($data['price_fields'] as $pf_id => $price_field) {
      if (empty($price_field['pf_entity']->is_active)) {
        continue;
      }
      if (!empty($price_field['pf_entity']->active_on)) {
        if (time() < strtotime($price_field['pf_entity']->active_on)) {
          continue;
        }
      }
      if (!empty($price_field['pf_entity']->expire_on)) {
        if (time() > strtotime($price_field['pf_entity']->expire_on)) {
          continue;
        }
      }
      $form[$parent]['contacts'][$count]['price_set'][$pf_id] = array(
        '#type' => 'container',
        '#attributes' => array(
          'class' => array(
            'civicrm-price-field',
            'price-field-type-' . drupal_html_class(strtolower($price_field['pf_entity']->html_type)),
            'price-field-' . drupal_html_class(strtolower($price_field['pf_entity']->name)),
          ),
        ),
      );
      $form[$parent]['contacts'][$count]['price_set'][$pf_id]['price_field_values'] = array();
      $form[$parent]['contacts'][$count]['price_set'][$pf_id]['price_field_values']['#title'] = t($price_field['pf_entity']->label);
      if (!empty($price_field['pf_entity']->help_post)) {
        $form[$parent]['contacts'][$count]['price_set'][$pf_id]['price_field_values']['#description'] = t($price_field['pf_entity']->help_post);
      }
      if (!empty($price_field['pf_entity']->is_required)) {
        $form[$parent]['contacts'][$count]['price_set'][$pf_id]['price_field_values']['#required'] = TRUE;
      }
      if ($price_field['pf_entity']->html_type == 'Text') {
        $form[$parent]['contacts'][$count]['price_set'][$pf_id]['price_field_values']['#type'] = 'textfield';
        $form[$parent]['contacts'][$count]['price_set'][$pf_id]['price_field_values']['#size'] = 7;
        $form[$parent]['contacts'][$count]['price_set'][$pf_id]['price_field_values']['#maxlength'] = 5;
        $default_value = '';
      }
      else {
        switch ($price_field['pf_entity']->html_type) {
          case 'Radio':
            $form[$parent]['contacts'][$count]['price_set'][$pf_id]['price_field_values']['#type'] = 'radios';

            //$default_value = array();
            $default_value = '';
            break;
          case 'Select':
            $form[$parent]['contacts'][$count]['price_set'][$pf_id]['price_field_values']['#type'] = 'select';
            $default_value = '';
            break;
          case 'CheckBox':
            $form[$parent]['contacts'][$count]['price_set'][$pf_id]['price_field_values']['#type'] = 'checkboxes';
            $default_value = array();
            break;
        }
        $options = array();
        foreach ($price_field['price_field_values'] as $id => $price_field_value) {
          if (empty($price_field_value->is_active)) {
            continue;
          }
          if (is_numeric($price_field_value->amount)) {
            $amount = number_format($price_field_value->amount, 2);
          }
          else {
            $amount = $price_field_value->amount;
          }
          $options[$id] = $price_field_value->label . ' $' . $amount;
          if (!empty($price_field_value->is_default)) {
            if (is_array($default_value)) {
              $default_value[$id] = $id;
            }
            else {
              $default_value = $id;
            }
          }
        }
        $form[$parent]['contacts'][$count]['price_set'][$pf_id]['price_field_values']['#options'] = $options;
      }
      if (empty($default_values['contacts'][$count]['price_set'][$pf_id]['price_field_values'])) {
        $form[$parent]['contacts'][$count]['price_set'][$pf_id]['price_field_values']['#default_value'] = $default_value;
        if ($price_field['pf_entity']->html_type == 'Radio' && empty($default_value)) {
          $form[$parent]['contacts'][$count]['price_set'][$pf_id]['price_field_values']['#default_value'] = array();
        }
      }
      else {
        $form[$parent]['contacts'][$count]['price_set'][$pf_id]['price_field_values']['#default_value'] = $default_values['contacts'][$count]['price_set'][$pf_id]['price_field_values'];
      }
    }
  }
}