You are here

function viewfield_update_7201 in Viewfield 7.3

Same name and namespace in other branches
  1. 7.2 viewfield.install \viewfield_update_7201()

Migrate allowed_views value from field to instance settings.

File

./viewfield.install, line 55
Installation functions for Viewfield module.

Code

function viewfield_update_7201() {
  $fields = db_query("SELECT id, data FROM {field_config} WHERE type = 'viewfield'");
  foreach ($fields as $field) {
    $fc_data = unserialize($field->data);
    if (isset($fc_data['settings']['allowed_views'])) {
      $instances = db_query("SELECT id, data FROM {field_config_instance} WHERE field_id = :field_id", array(
        ':field_id' => $field->id,
      ));
      foreach ($instances as $instance) {
        $fci_data = unserialize($instance->data);

        // Write new setting only if a new one hasn't been created before
        // running this update.
        if (!isset($fci_data['settings']['allowed_views'])) {
          $fci_data['settings']['allowed_views'] = $fc_data['settings']['allowed_views'];
          db_update('field_config_instance')
            ->fields(array(
            'data' => serialize($fci_data),
          ))
            ->condition('id', $instance->id)
            ->execute();
        }
      }
      unset($fc_data['settings']['allowed_views']);
      db_update('field_config')
        ->fields(array(
        'data' => serialize($fc_data),
      ))
        ->condition('id', $field->id)
        ->execute();
    }
  }
}