You are here

function webform_civicrm_process_form_settings in Webform CiviCRM Integration 7.2

Same name and namespace in other branches
  1. 6.2 webform_civicrm_admin.inc \webform_civicrm_process_form_settings()

Build the $data array for webform settings; called while rebuilding or post-processing the configure form.

2 calls to webform_civicrm_process_form_settings()
webform_civicrm_configure_form_builder in ./webform_civicrm_admin.inc
Form to configure CiviCRM options for a Webform Called indirectly from hook_menu() for D7-D6 compatibility
webform_civicrm_configure_form_submit in ./webform_civicrm_admin.inc
Submission handler, saves CiviCRM options for a Webform node

File

./webform_civicrm_admin.inc, line 628

Code

function webform_civicrm_process_form_settings(&$vals) {
  $data = array(
    'contact' => array(),
  );
  $created_new_contact = FALSE;
  list($contact_types, $sub_types) = webform_civicrm_get_contact_types();
  for ($n = 1; $n <= $vals['number_of_contacts']; ++$n) {
    if (isset($vals[$n . '_contact_type'])) {
      $data['contact'][$n] = array(
        'contact' => array(
          1 => array(
            'contact_type' => $vals[$n . '_contact_type'],
            'contact_sub_type' => array(),
          ),
        ),
        'activity_target' => isset($vals['activity_targets'][$n]) ? $vals['activity_targets'][$n] : 1,
      );
      if ($sub_type = webform_civicrm_aval($vals, 'civicrm_' . $n . '_contact_1_contact_contact_sub_type')) {
        $allowed = $sub_types[$vals[$n . '_contact_type']];
        foreach ($sub_type as $sub) {
          if (isset($allowed[$sub])) {
            $data['contact'][$n]['contact'][1]['contact_sub_type'][$sub] = $sub;
          }
        }
      }
    }
    else {
      $data['contact'][$n] = array(
        'contact' => array(
          1 => array(
            'contact_type' => 'individual',
            'contact_sub_type' => array(),
          ),
        ),
        'activity_target' => 1,
      );
      $created_new_contact = TRUE;
    }
  }
  if ($created_new_contact) {
    drupal_set_message(t('Tip: Consider using the clone feature to add multiple similar contacts. (see help for more info)'), 'status', FALSE);
  }
  foreach ($vals as $key => $val) {
    if (strpos($key, '_number_of_') !== FALSE) {
      list($ent, $n, $k) = explode('_', $key, 3);
      if (isset($data[$ent][$n]) || $ent == 'participant') {
        $data[$ent][$n][$k] = $val;
      }
    }
  }
  if (!empty($vals['activity_type_id'])) {
    $data['activity'] = array(
      1 => array(
        'activity' => array(
          1 => array(
            'activity_type_id' => $vals['activity_type_id'],
          ),
        ),
      ),
    );
    if (isset($vals['activity_subject'])) {
      $data['activity'][1]['activity'][1]['subject'] = $vals['activity_subject'];
      $data['activity'][1]['assignee_group'] = $vals['activity_assignee_group'];
      $data['activity'][1]['details'] = $vals['activity_details'];
      $data['activity'][1]['existing_activity_status'] = $vals['existing_activity_status'];
    }
    else {
      $data['activity'][1]['activity'][1]['status_id'] = 2;
    }
  }
  if (!empty($vals['case_type_id'])) {
    $data['case'] = array(
      1 => array(
        'case' => array(
          1 => array(
            'case_type_id' => $vals['case_type_id'],
          ),
        ),
      ),
    );
    if (isset($vals['case_subject'])) {
      $data['case'][1]['case'][1]['subject'] = $vals['case_subject'];
      $data['case'][1]['case'][1]['status_id'] = $vals['case_status_id'];
      $data['case'][1]['case'][1]['creator_id'] = $vals['case_creator_id'];
      $data['case'][1]['case'][1]['medium_id'] = $vals['case_medium_id'];
    }
  }
  if (isset($vals['participant_reg_type'])) {
    $data['participant_reg_type'] = $vals['participant_reg_type'];
    $data['reg_options'] = $vals['reg_options'];
  }
  $vals['data'] = $data;
}