You are here

function field_group_field_ui_clone_field_groups in Field Group 7.2

Same name and namespace in other branches
  1. 8.3 includes/field_ui.inc \field_group_field_ui_clone_field_groups()
  2. 8 includes/field_ui.inc \field_group_field_ui_clone_field_groups()
  3. 7 field_group.field_ui.inc \field_group_field_ui_clone_field_groups()

Submit handler to save existing fieldgroups from one view mode or form to another.

1 string reference to 'field_group_field_ui_clone_field_groups'
field_group_field_ui_create_vertical_tabs in ./field_group.field_ui.inc
Create vertical tabs.

File

./field_group.field_ui.inc, line 789
Field_group.field_ui.inc is a file that contains most functions needed on the Fields UI Manage forms (display and fields).

Code

function field_group_field_ui_clone_field_groups($form, &$form_state) {
  $source_mode = $form_state['values']['additional_settings']['fieldgroup_clone'] == 0 ? 'form' : $form_state['values']['additional_settings']['fieldgroup_clone'];
  $groups_to_clone = field_group_read_groups(array(
    'bundle' => $form_state['field_group_params']->bundle,
    'entity_type' => $form_state['field_group_params']->entity_type,
  ));
  $source_groups = $groups_to_clone[$form_state['field_group_params']->entity_type][$form_state['field_group_params']->bundle][$source_mode];
  $fields = array_keys($form_state['values']['fields']);
  if (!empty($source_groups)) {
    foreach ($source_groups as $source_group) {
      if (in_array($source_group->group_name, $fields)) {
        drupal_set_message(t('Fieldgroup @group is not cloned since a group already exists with the same name.', array(
          '@group' => $source_group->group_name,
        )), 'warning');
        continue;
      }

      // Recreate the identifier and reset the id.
      $source_group->id = NULL;
      $source_group->mode = $form_state['field_group_params']->mode;
      $source_group->identifier = $source_group->group_name . '|' . $source_group->entity_type . '|' . $source_group->bundle . '|' . $form_state['field_group_params']->mode;
      $source_group->disabled = FALSE;
      unset($source_group->export_type, $source_group->type, $source_group->table);

      // Save and enable it in ctools.
      ctools_include('export');
      ctools_export_crud_save('field_group', $source_group);
      ctools_export_crud_enable('field_group', $source_group->identifier);
      drupal_set_message(t('Fieldgroup @group cloned successfully.', array(
        '@group' => $source_group->group_name,
      )));
    }
  }
}