function image_field_caption_update_7201 in Image Field Caption 7.2
Migrate data to new format
File
- ./
image_field_caption.install, line 307 - Image field caption defines a new database schema for adding a caption to images.
Code
function image_field_caption_update_7201() {
// Only node was handled previously by the module
$bundle_type = 'node';
$query = db_select('image_field_caption', 't')
->fields('t');
$results = $query
->execute();
foreach ($results as $row) {
$instances = field_info_instances('node');
foreach ($instances as $bundle => $fields) {
foreach ($fields as $field_name => $field) {
// Skip any deleted and non image widget fields.
if ($field['deleted'] == 1) {
continue;
}
if ($field['widget']['type'] != 'image_image') {
continue;
}
$field = field_info_field($field_name);
$query = new EntityFieldQuery();
$entity_data = $query
->entityCondition('entity_type', $bundle_type)
->entityCondition('bundle', $bundle)
->fieldCondition($field, 'fid', $row->fid)
->addTag('DANGEROUS_ACCESS_CHECK_OPT_OUT')
->execute();
if (isset($entity_data[$bundle_type])) {
// Enable setting
$instance = field_info_instance($bundle_type, $field_name, $bundle);
$instance['settings']['image_field_caption'] = 1;
field_update_instance($instance);
foreach ($entity_data[$bundle_type] as $entity_id => $entity) {
$entities_load = array(
$entity_id => $entity,
);
field_attach_load($bundle_type, $entities_load);
foreach ($entity->{$field_name} as $langcode => $items) {
foreach ($items as $delta => $item) {
if ($item['fid'] == $row->fid) {
$columns = array(
'field_name',
'entity_type',
'entity_id',
'revision_id',
'bundle',
'delta',
'language',
'caption',
'caption_format',
);
list($id, $vid, $bundle) = entity_extract_ids($bundle_type, $entity);
$record = array(
'field_name' => $field_name,
'entity_type' => $bundle_type,
'entity_id' => $id,
'revision_id' => $vid,
'bundle' => $bundle,
'delta' => $delta,
'language' => $langcode,
'caption' => $row->caption,
'caption_format' => filter_default_format(),
);
$query = db_insert('field_image_field_caption')
->fields($columns);
$query
->values($record);
$query
->execute();
$revision_query = db_insert('field_image_field_caption_revision')
->fields($columns);
$revision_query
->values($record);
$revision_query
->execute();
}
}
}
}
}
}
}
}
drupal_flush_all_caches();
}