You are here

function text_update_6001 in Content Construction Kit (CCK) 6

Same name and namespace in other branches
  1. 6.3 modules/text/text.install \text_update_6001()
  2. 6.2 modules/text/text.install \text_update_6001()

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

Leaving it up to module developers to handle conversion of numbers to NULL values, since there are times when zeros are valid data and times when they should be NULL.

File

modules/text/text.install, line 71

Code

function text_update_6001() {
  $ret = array();

  // Get the latest cache values and schema.
  content_clear_type_cache(TRUE, 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 'text':
          $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);

            // TODO : errors on text/blob columns : no default value allowed (!)
            db_field_set_no_default($ret, $table, $column);
            if ($attributes['type'] == 'varchar' || $attributes['type'] == 'text') {
              $ret[] = update_sql("UPDATE {" . $table . "} SET " . $column . " = NULL WHERE " . $column . " = ''");
            }
            else {

              // TODO : replace format = 0 with format = NULL ?? Is this right ?
              $ret[] = update_sql("UPDATE {" . $table . "} SET " . $column . " = NULL WHERE " . $column . " = 0");
            }
          }
          break;
      }
    }
  }
  return $ret;
}