You are here

function wf_crm_process_options_selection in Webform CiviCRM Integration 7.3

Same name and namespace in other branches
  1. 7.5 includes/wf_crm_admin_component.inc \wf_crm_process_options_selection()
  2. 7.4 includes/wf_crm_admin_component.inc \wf_crm_process_options_selection()

Drupal FAPI form submit callback Custom Processing for CiviCRM webform component option lists

1 string reference to 'wf_crm_process_options_selection'
_wf_crm_component_form_alter in ./webform_civicrm_admin.inc
Alter back-end webform component edit forms. Called by hook_form_alter() whenever editing a webform component.

File

./webform_civicrm_admin.inc, line 1367

Code

function wf_crm_process_options_selection($form, &$form_state) {
  $vals =& $form_state['values'];
  $vals['value'] = '';
  foreach ($vals['civicrm_options_fieldset']['civicrm_defaults'] as $k) {
    if ($k) {
      $vals['value'] .= ($vals['value'] ? ',' : '') . str_replace('_web_civi_option_selected_', '', $k);
    }
  }
  if (isset($vals['civicrm_options_fieldset']['civicrm_options'])) {
    if (empty($vals['extra']['civicrm_live_options'])) {
      $items = array();
      foreach ($vals['civicrm_options_fieldset']['civicrm_options'] as $k) {
        if ($k) {
          $v = str_replace('_web_civi_option_selected_', '', $k);
          if (!($label = $vals['civicrm_options_fieldset']['civicrm_option_label_' . $v])) {
            $label = $form['civicrm_options_fieldset']['civicrm_option_name_' . $v]['#value'];
          }
          $items[$vals['civicrm_options_fieldset']['civicrm_option_weight_' . $v]] = $v . '|' . $label;
        }
      }
      ksort($items);
      $vals['extra']['items'] = implode("\n", $items);

      // A single radio should be shown as a checkbox
      if (count($items) == 1 && empty($vals['extra']['aslist'])) {
        $vals['extra']['multiple'] = 1;
      }
    }
    else {
      civicrm_initialize();
      $node = node_load($vals['nid']);
      $items = wf_crm_field_options($vals, 'live_options', $node->webform_civicrm['data']);
      $items += wf_crm_str2array($vals['extra']['items']);
      $vals['extra']['items'] = wf_crm_array2str($items);
    }
  }
}