You are here

private function wf_crm_admin_form::buildContributionTab in Webform CiviCRM Integration 7.4

Same name and namespace in other branches
  1. 7.5 includes/wf_crm_admin_form.inc \wf_crm_admin_form::buildContributionTab()

Contribution settings

1 call to wf_crm_admin_form::buildContributionTab()
wf_crm_admin_form::buildForm in includes/wf_crm_admin_form.inc
Build admin form for civicrm tab of a webform

File

includes/wf_crm_admin_form.inc, line 994
Webform CiviCRM module's admin form.

Class

wf_crm_admin_form
@file Webform CiviCRM module's admin form.

Code

private function buildContributionTab() {
  $this->form['contribution'] = array(
    '#type' => 'fieldset',
    '#title' => t('Contribution'),
    '#group' => 'webform_civicrm',
    '#description' => t('In order to process live transactions for events, memberships, or contributions, select a contribution page and its billing fields will be included on the webform.'),
    '#attributes' => array(
      'class' => array(
        'civi-icon-contribution',
      ),
    ),
  );
  $fid = 'civicrm_1_contribution_1_contribution_contribution_page_id';
  $this->form['contribution'][$fid] = $this
    ->addItem($fid, $this->fields['contribution_contribution_page_id']);
  unset($this->sets['contribution']['fields']['contribution_contribution_page_id']);
  $this
    ->addAjaxItem('contribution', $fid, 'sets');
  $page_id = wf_crm_aval($this->data, 'contribution:1:contribution:1:contribution_page_id');
  if ($page_id) {
    $page = wf_civicrm_api('contribution_page', 'getsingle', array(
      'id' => $page_id,
    ));
  }
  if (!$page_id || empty($page['financial_type_id'])) {
    return;
  }

  // Make sure webform is set-up to prevent credit card abuse.
  $this
    ->checkSubmissionLimit();

  // Add contribution fields
  foreach ($this->sets as $sid => $set) {
    if ($set['entity_type'] == 'contribution' && (empty($set['sub_types']) || in_array($page['financial_type_id'], $set['sub_types']))) {
      $this->form['contribution']['sets'][$sid] = array(
        '#type' => 'fieldset',
        '#title' => $set['label'],
        '#attributes' => array(
          'id' => $sid,
          'class' => array(
            'web-civi-checkbox-set',
          ),
        ),
        'js_select' => $this
          ->addToggle($sid),
      );
      $this
        ->addDynamicCustomSetting($this->form['contribution']['sets'][$sid], $sid, 'contribution', 1);
      if (isset($set['fields'])) {
        foreach ($set['fields'] as $fid => $field) {
          $fid = "civicrm_1_contribution_1_{$fid}";
          $this->form['contribution']['sets'][$sid][$fid] = $this
            ->addItem($fid, $field);
        }
      }
    }
  }

  // LineItem
  $num = wf_crm_aval($this->data, "lineitem:number_number_of_lineitem", 0);
  $this->form['contribution']['sets']["lineitem_1_number_of_lineitem"] = array(
    '#type' => 'select',
    '#title' => t('Additional Line items'),
    '#default_value' => $num,
    '#options' => range(0, 9),
    '#prefix' => '<div class="number-of">',
    '#suffix' => '</div>',
  );
  $this
    ->addAjaxItem("contribution:sets", "lineitem_1_number_of_lineitem", "lineitem");
  for ($n = 1; $n <= $num; ++$n) {
    $fs = "contribution_sets_lineitem_{$n}_fieldset";
    $this->form['contribution']['sets']['lineitem'][$fs] = array(
      '#type' => 'fieldset',
      '#title' => t('Line item !num', array(
        '!num' => $n,
      )),
      '#attributes' => array(
        'id' => $fs,
        'class' => array(
          'web-civi-checkbox-set',
        ),
      ),
      'js_select' => $this
        ->addToggle($fs),
    );
    foreach ($this->sets['line_items']['fields'] as $fid => $field) {
      $fid = "civicrm_1_lineitem_{$n}_{$fid}";
      $this->form['contribution']['sets']['lineitem'][$fs][$fid] = $this
        ->addItem($fid, $field);
    }
  }
}