function flexiform_webform_field_create_instance in Flexiform 7
Implements hook_field_create_instance().
When a field is added to a flexiform_webform submission bundle add it to that forms form_fields.
File
- flexiform_webform/
flexiform_webform.module, line 285 - Module provides simple webform functionality.
Code
function flexiform_webform_field_create_instance($instance) {
// Only act on fields added to the flexiform_submission entity.
if ($instance['entity_type'] != 'flexiform_webform_submission') {
return;
}
$forms = db_select('flexiform', 'f')
->fields('f', array(
'form',
'id',
))
->condition('base_entity', 'flexiform_webform_submission')
->condition('base_entity_bundle', $instance['bundle'])
->execute()
->fetchAllAssoc('id');
$added_to = array();
foreach ($forms as $form) {
$flexiform = entity_load_single('flexiform', $form->form);
// Only add to forms that use the flexiform form builder.
if ($flexiform->builder != 'FlexiformBuilderFlexiform') {
continue;
}
$settings = array(
'element_name' => 'field:' . $instance['field_name'],
'entity_namespace' => 'base_entity',
);
$element = FlexiformElement::createElement($flexiform, $settings);
$flexiform
->addElement($element);
$flexiform
->save();
$added_to[] = l($flexiform->label, "admin/structure/flexiforms/manage/{$flexiform->form}/form-fields", array(
'attributes' => array(
'target' => '_blank',
),
));
}
if (!empty($added_to)) {
$message = t('The field %field has been added to the following flexiforms:', array(
'%field' => $instance['label'],
));
$list = array(
'#theme' => 'item_list',
'#items' => $added_to,
);
$message .= drupal_render($list);
drupal_set_message($message);
}
}