function _content_migrate_batch_process_create_fields in Content Construction Kit (CCK) 7.3
Batch operation callback to create fields.
1 call to _content_migrate_batch_process_create_fields()
- drush_content_migrate_field_structure in modules/
content_migrate/ includes/ content_migrate.drush.inc
1 string reference to '_content_migrate_batch_process_create_fields'
- _content_migrate_batch in modules/
content_migrate/ includes/ content_migrate.admin.inc - Helper function to create a batch.
File
- modules/
content_migrate/ includes/ content_migrate.admin.inc, line 222 - content_migrate.admin.inc Code to process field data migration, moved into a separate file for efficiency.
Code
function _content_migrate_batch_process_create_fields($field_name, &$context) {
$messages = array();
$errors = array();
$type_names = node_type_get_names();
$allowed_fields = field_info_field_types();
$allowed_widgets = field_info_widget_types();
$allowed_formatters = field_info_formatter_types();
$context['message'] = t('"Creating field: %field', array(
'%field' => $field_name,
));
$field_value = content_migrate_get_field_values($field_name);
if (isset($field_value['messages'])) {
$messages = $field_value['messages'];
unset($field_value['messages']);
}
$instance_info = field_info_instances('node');
// Create the field and store the new field
// definition in $context so we can retrieve it later.
try {
// A shared field may already have been created, check first.
$field = field_info_field($field_value['field_name']);
if (empty($field)) {
unset($field_value['columns']);
unset($field_value['db_storage']);
$field = field_create_field($field_value);
$context['fields'][$field_name] = $field;
$messages[] = t("Created field @field_name", array(
'@field_name' => $field_name,
));
}
// Create each of the new instances and store
// the new instance definitions in $context.
$instance_values = content_migrate_get_instance_values(NULL, $field_name);
foreach ($instance_values as $bundle => $instance_value) {
try {
if (isset($instance_value['messages'])) {
$messages = array_merge($messages, $instance_value['messages']);
unset($instance_value['messages']);
}
if (!isset($instance_info[$bundle][$field_name])) {
$instance = field_create_instance($instance_value);
$context['instances'][$field_name][$bundle] = $instance;
$messages[] = t("Created instance of @field_name in bundle @bundle.", array(
'@field_name' => $field_name,
'@bundle' => $type_names[$bundle],
));
}
} catch (Exception $e) {
$errors[] = t('Error creating instance of @field_name in bundle @bundle.', array(
'@field_name' => $field_name,
'@bundle' => $type_names[$bundle],
));
$errors[] = $e;
}
}
} catch (Exception $e) {
$errors[] = t("Error creating field @field_name", array(
'@field_name' => $field_name,
));
$errors[] = $e;
}
field_info_cache_clear();
foreach ($messages as $message) {
drupal_set_message($message, 'warning');
}
foreach ($errors as $error) {
drupal_set_message($error, 'error');
}
$context['finished'] = TRUE;
}