You are here

function date_content_migrate_instance_alter in Date 7.2

Same name and namespace in other branches
  1. 7.3 date.field.inc \date_content_migrate_instance_alter()
  2. 7 date.field.inc \date_content_migrate_instance_alter()

Implements hook_content_migrate_instance_alter().

File

./date.field.inc, line 546
Field hooks to implement a date field.

Code

function date_content_migrate_instance_alter(&$instance_value, $field_value) {

  // Use this to tweak the conversion of instance or widget settings from the D6
  // style to the D7 style for specific situations not handled by basic
  // conversion, as when formatter or widget names or settings are changed.
  switch ($instance_value['widget']['module']) {
    case 'date':

      // Some settings have been moved from field to instance.
      $instance_value['widget']['settings']['repeat_collapsed'] = $field_value['settings']['repeat_collapsed'];

      // Some settings were moved from widget settings to instance settings.
      $instance_value['settings']['default_value'] = $instance_value['default_value'];
      unset($instance_value['default_value']);
      $instance_value['settings']['default_value_code'] = $instance_value['widget']['settings']['default_value_code'];
      unset($instance_value['widget']['settings']['default_value_code']);
      $instance_value['settings']['default_value2'] = $instance_value['widget']['settings']['default_value2'];
      unset($instance_value['widget']['settings']['default_value2']);
      $instance_value['settings']['default_value_code2'] = $instance_value['widget']['settings']['default_value_code2'];
      unset($instance_value['widget']['settings']['default_value_code2']);

      // We need to retrieve formatter settings from the variables and store
      // them in the instance.
      foreach ($instance_value['display'] as $context => &$display) {
        if ($display['type'] != 'format_interval') {
          $old_settings = date_old_formatter_get_settings($instance_value['field_name'], $instance_value['bundle'], $context);
          $display['settings'] = array_merge($display['settings'], $old_settings);

          // If the formatter was the 'default', then use the old
          // 'default_format' field property.
          $format = $display['type'] == 'default' ? $field_value['settings']['default_format'] : $display['type'];
          $display['settings']['format_type'] = $format;
          $display['type'] = 'date_default';
        }
      }
      break;
  }
}