You are here

function viewfield_update_6003 in Viewfield 6

Same name and namespace in other branches
  1. 6.2 viewfield.install \viewfield_update_6003()

Update vname fields to varchar(128).

See also

viewfield_field_settings()

File

./viewfield.install, line 106
Installation functions.

Code

function viewfield_update_6003() {
  if ($abort = content_check_update('viewfield')) {
    return $abort;
  }
  $ret = array();
  $new_length = 128;
  $result = db_query("SELECT * FROM {" . content_field_tablename() . "} WHERE type = 'viewfield'");
  while ($field = db_fetch_array($result)) {
    $field['db_columns'] = unserialize($field['db_columns']);
    if ($field['db_columns']['vname']['length'] < $new_length) {
      $field['db_columns']['vname']['length'] = $new_length;
      $db_columns = serialize($field['db_columns']);
      $update = db_query("UPDATE {" . content_field_tablename() . "} SET db_columns = '%s' WHERE field_name = '%s'", $db_columns, $field['field_name']);
      $ret[] = array(
        'success' => $update !== FALSE,
        'query' => "UPDATE {" . content_field_tablename() . "} SET db_columns = '{$db_columns}' WHERE field_name = '{$field['field_name']}'",
      );
    }
  }
  foreach (content_fields() as $field) {
    if ($field['type'] == 'viewfield') {
      $field_database_info = content_database_info($field);
      $table_name = $field_database_info['table'];
      $vname_info = $field_database_info['columns']['vname'];

      // Apply to all fields, not just those with length < 128 because of bug in
      // 6001. If that update had been applied already, we want to make sure
      // this one gets applied.
      db_change_field($ret, $table_name, $vname_info['column'], $vname_info['column'], array(
        'type' => 'varchar',
        'length' => $new_length,
        'not null' => FALSE,
        'default' => NULL,
      ));
    }
  }
  return $ret;
}