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;
}