You are here

function content_migrate_get_options in Content Construction Kit (CCK) 7.3

Determine which fields can be migrated, have already been migrated, and are unable to be migrated due to missing modules.

3 calls to content_migrate_get_options()
content_migrate_select in modules/content_migrate/includes/content_migrate.admin.inc
Form generator for the migration selection form.
drush_content_migrate_get_fields in modules/content_migrate/includes/content_migrate.drush.inc
drush_content_migrate_status in modules/content_migrate/includes/content_migrate.drush.inc
Command callback.

File

modules/content_migrate/includes/content_migrate.admin.inc, line 18
content_migrate.admin.inc Code to process field data migration, moved into a separate file for efficiency.

Code

function content_migrate_get_options() {
  $options = array(
    'available' => array(),
    'converted' => array(),
    'missing' => array(),
  );
  $field_values = content_migrate_get_field_values();
  if (empty($field_values)) {
    drupal_set_message(t('There is no D6 field information in this database.'));
    return FALSE;
  }
  $type_names = node_type_get_names();
  $new_fields = array_keys(field_info_fields());

  // Figure out which field and widget modules are available.
  $available_modules = array_unique(array_merge(module_implements('field_info'), module_implements('field_widget_info')));
  foreach ($field_values as $field_name => $field_value) {
    $messages = array();
    $bundles = array();
    $missing_module = !in_array($field_value['module'], $available_modules);
    if ($missing_module) {
      $messages[] = '<span class="error">' . t("Missing field module: '@field'. This field cannot be migrated.", array(
        '@field' => $field_value['module'],
      )) . '</span>';
    }
    if (isset($field_value['messages'])) {
      $messages = array_merge($messages, $field_value['messages']);
      unset($field_value['messages']);
    }
    $instance_values = content_migrate_get_instance_values(NULL, $field_name);

    // Debug

    //dsm($field_value);

    //dsm($instance_values);
    foreach ($instance_values as $bundle => $instance_value) {
      if (isset($instance_value['messages'])) {
        $messages = array_merge($messages, $instance_value['messages']);
        unset($instance_values[$bundle]['messages']);
      }
      $bundles[] = $type_names[$bundle];
      $label = $instance_value['label'];
    }
    $data = array(
      0 => $field_name,
      1 => $field_value['type'],
      2 => theme('item_list', array(
        'items' => $bundles,
      )),
      3 => theme('item_list', array(
        'items' => $messages,
      )),
    );
    if (in_array($field_name, $new_fields)) {
      $options['converted'][$field_name] = $data;
    }
    elseif ($missing_module) {
      $options['missing'][$field_name] = $data;
    }
    else {
      $options['available'][$field_name] = $data;
    }
  }
  return $options;
}