You are here

function bundle_clone_clone in bundle clone 7

1 call to bundle_clone_clone()
bundle_clone_admin_submit in ./bundle_clone.clone.inc

File

./bundle_clone.clone.inc, line 71

Code

function bundle_clone_clone($config, $fields) {
  $instances = field_info_instances($config->entity_type, $config->source);
  if (!$fields) {
    $fields = array_keys($instances);
  }
  $target_instances = field_info_instances($config->entity_type, $config->target);
  foreach ($fields as $field) {
    $source = $instances[$field];
    if (isset($target_instances[$field])) {
      $target = $target_instances[$field];
      drupal_set_message(t('Updating @instance', array(
        '@instance' => $field,
      )));
      foreach (array(
        'widget',
        'settings',
        'display',
      ) as $component) {
        $target[$component] = $source[$component] + $target[$component];
      }
      field_update_instance($target);
    }
    else {
      drupal_set_message(t('Creating @instance', array(
        '@instance' => $field,
      )));
      unset($source['id']);
      $source['bundle'] = $config->target;
      field_create_instance($source);
    }
  }
}