You are here

function email_update_6001 in Email Field 6

Implemenation of hook_update_N();

Update from 5.x to 6.x

Set all columns to accept NULL values and set empty string values in the database to NULL.

File

./email.install, line 48

Code

function email_update_6001() {
  if ($abort = content_check_update('email')) {
    return $abort;
  }
  drupal_load('module', 'content');
  $ret = array();
  $ret[] = update_sql("UPDATE {" . content_instance_tablename() . "} SET widget_type = 'email_textfield' WHERE widget_type = 'email'");
  content_associate_fields('email');
  content_clear_type_cache(TRUE);
  include_once drupal_get_path('module', 'content') . '/content.install';
  $types = content_types_install();
  foreach ($types as $type_name => $fields) {
    foreach ($fields as $field) {
      switch ($field['type']) {
        case 'email':
          $db_info = content_database_info($field);
          $table = $db_info['table'];
          foreach ($db_info['columns'] as $column => $attributes) {
            $attributes['not null'] = FALSE;
            $column = $attributes['column'];
            db_change_field($ret, $table, $column, $column, $attributes);
            db_field_set_no_default($ret, $table, $column);
            $ret[] = update_sql("UPDATE {" . $table . "} SET " . $column . " = NULL WHERE " . $column . " = ''");
          }
          break;
      }
    }
  }
  return $ret;
}