function webform_civicrm_fill_values in Webform CiviCRM Integration 6
Same name and namespace in other branches
- 6.2 webform_civicrm_forms.inc \webform_civicrm_fill_values()
- 7 webform_civicrm_forms.inc \webform_civicrm_fill_values()
- 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];
}
}
}