You are here

function ds_extras_update_7200 in Display Suite 7.2

Fix storage of formatter settings in ds_field_settings table.

File

modules/ds_extras/ds_extras.install, line 112
Install file.

Code

function ds_extras_update_7200() {
  ctools_include('export');
  $ds_field_settings = ctools_export_crud_load_all('ds_field_settings');
  db_truncate('ds_field_settings')
    ->execute();
  foreach ($ds_field_settings as $layout => $field_settings) {
    $record = $field_settings;
    foreach ($field_settings->settings as $field => $settings) {

      // Move any field template settings to 'formatter_settings' key.
      if (isset($settings['ft'])) {
        $settings['formatter_settings']['ft'] = $settings['ft'];
        unset($settings['ft']);
      }

      // Inspect the classes key, in case it's an array, something went
      // wrong during saving, simply unset the array completely.
      if (isset($settings['formatter_settings']['ft']['classes']) && is_array($settings['formatter_settings']['ft']['classes'])) {
        unset($settings['formatter_settings']['ft']['classes']);
      }
      $record->settings[$field] = $settings;
    }
    drupal_write_record('ds_field_settings', $record);
  }
}