You are here

public function AdminForm::buildForm in Webform CiviCRM Integration 8.5

Build admin form for civicrm tab of a webform

Return value

array

File

src/AdminForm.php, line 68
Webform CiviCRM module's admin form.

Class

AdminForm
@file Webform CiviCRM module's admin form.

Namespace

Drupal\webform_civicrm

Code

public function buildForm() {
  $this->form_state
    ->set('nid', $this->webform
    ->id());
  $utils = \Drupal::service('webform_civicrm.utils');

  // Display confirmation message before deleting fields
  if (!empty($this->form_state
    ->get('msg'))) {
    return $this
      ->buildConfirmationForm();
  }

  // Add css & js
  $this
    ->addResources();
  if (empty($this->form_state
    ->getValues())) {
    $this
      ->initializeForm();
  }
  else {
    $this
      ->rebuildForm();
  }

  // Merge in existing fields
  $existing = array_keys($utils
    ->wf_crm_enabled_fields($this->webform, NULL, TRUE));
  $this->settings += array_fill_keys($existing, 'create_civicrm_webform_element');

  // Sort fields by set
  foreach ($this->fields as $fid => $field) {
    if (isset($field['set'])) {
      $set = $field['set'];
    }
    else {
      list($set) = explode('_', $fid, 2);
    }
    $this->sets[$set]['fields'][$fid] = $field;
  }

  // Build form fields
  $this
    ->buildFormIntro();
  foreach ($this->data['contact'] as $n => $c) {
    $this
      ->buildContactTab($n, $c);
  }
  $this
    ->buildMessageTabs();

  // Component tabs
  $this
    ->buildActivityTab();
  if (isset($this->sets['case'])) {
    $this
      ->buildCaseTab();
  }
  if (isset($this->sets['participant'])) {
    $this
      ->buildParticipantTab();
  }
  if (isset($this->sets['membership'])) {
    $this
      ->buildMembershipTab();
  }
  if (isset($this->sets['contribution'])) {
    $this
      ->buildContributionTab();
  }
  if (isset($this->sets['grant'])) {
    $this
      ->buildGrantTab();
  }
  $this
    ->buildOptionsTab();
  $this->form['actions']['submit'] = [
    '#type' => 'submit',
    '#value' => t('Save Settings'),
  ];
  return $this->form;
}