function form_builder_webform_get_component in Form Builder 6
Save the contents of a form component into Webform's database tables.
1 call to form_builder_webform_get_component()
- form_builder_webform_save_node in modules/
webform/ form_builder_webform.module - Save the current Form Builder interface changes for a webform node.
File
- modules/
webform/ form_builder_webform.module, line 137 - Form Builder integration for the Webform module.
Code
function form_builder_webform_get_component($node, $element_id, $form) {
module_load_include('inc', 'form_builder_webform', 'form_builder_webform.components');
$element = form_builder_get_element($form, $element_id);
$type = isset($element['#webform_component']['type']) ? $element['#webform_component']['type'] : $element['#form_builder']['element_type'];
// Check for existing components.
$cid = substr($element_id, 4);
if (isset($node->webform['components'][$cid])) {
$component = $node->webform['components'][$cid];
}
elseif (isset($element['#webform_component']['is_new'])) {
if ($component = webform_component_invoke($type, 'defaults')) {
$component['type'] = $type;
}
}
// If the component type isn't found, don't try to save anything.
if (!isset($component)) {
return;
}
// Set typical component settings.
$component['name'] = $element['#title'];
$component['weight'] = $element['#weight'];
$component['form_key'] = $element['#key'];
$component['mandatory'] = isset($element['#required']) ? $element['#required'] : 0;
$component['email'] = 0;
$component['nid'] = $node->nid;
// Set the parent ID to default to the form base.
$component['pid'] = 0;
// Set the parent ID for the component if it is nested inside another component.
$parent = form_builder_get_element($form, $element['#form_builder']['parent_id']);
if ($parent && isset($parent['#webform_component']['cid'])) {
$component['pid'] = $parent['#webform_component']['cid'];
}
// Set the component's value. If the form element doesn't have a default,
// then new components should not be modified (they should use whatever the
// component default is), but existing components should have their stored
// value removed.
if (isset($element['#default_value'])) {
$component['value'] = is_array($element['#default_value']) ? implode(',', $element['#default_value']) : $element['#default_value'];
}
elseif (empty($element['#webform_component']['is_new'])) {
$component['value'] = NULL;
}
// Set all properties based on property maps.
$component = _form_builder_webform_save_mapped_component($component, $element);
// Allow each component to set any specific settings that can't be mapped.
if ($saved_component = form_builder_webform_component_invoke($type, 'form_builder_save', $component, $element)) {
$component = $saved_component;
}
return $component;
}