You are here

function webform_civicrm_fill_values in Webform CiviCRM Integration 6

Same name and namespace in other branches
  1. 6.2 webform_civicrm_forms.inc \webform_civicrm_fill_values()
  2. 7 webform_civicrm_forms.inc \webform_civicrm_fill_values()
  3. 7.2 webform_civicrm_forms.inc \webform_civicrm_fill_values()

Recursively walk through form array and set default values for fields based on CiviCRM contact data Called by _webform_civicrm_webform_frontend_form_alter() when webform is being viewed by a known contact @Param $elements: FAPI array @Param $contact: Array of CiviCRM contact data Matching depends on form keys being the same as contact array keys

1 call to webform_civicrm_fill_values()
_webform_civicrm_webform_frontend_form_alter in ./webform_civicrm_forms.inc
Alter front-end of webforms: Called by hook_form_alter() when rendering a civicrm-enabled webform Add custom prefix. Display message. Block unknown users. Set webform default values.

File

./webform_civicrm_forms.inc, line 334

Code

function webform_civicrm_fill_values(&$elements, $contact) {
  $sp = CRM_Core_DAO::VALUE_SEPARATOR;
  foreach ($elements as $eid => &$element) {
    if (substr($eid, 0, 1) == '#' || !is_array($element)) {
      continue;
    }
    if ($element['#type'] == 'fieldset') {

      // Recurse through fieldsets
      webform_civicrm_fill_values($element, $contact);
      continue;
    }
    if (isset($contact[$eid])) {
      if ($element['#type'] == 'date') {
        $dates = explode('-', $contact[$eid]);
        $contact[$eid] = array(
          'year' => $dates[0],
          'month' => intval($dates[1]),
          'day' => intval($dates[2]),
        );
      }
      elseif (($element['#type'] == 'checkboxes' || !empty($element['#multiple'])) && !is_array($contact[$eid])) {
        $contact[$eid] = explode($sp, trim($contact[$eid], $sp));
      }
      if ($element['#type'] == 'hidden') {
        $element['#value'] = $contact[$eid];
      }
      $element['#default_value'] = $contact[$eid];
    }
  }
}