You are here

function uc_extra_fields_pane_update_6200 in Extra Fields Checkout Pane 6.2

Upgrade from uc_extra_fields_pane 6.x.1.x

File

./uc_extra_fields_pane.install, line 145
Module: uc_extra_fields_pane.module

Code

function uc_extra_fields_pane_update_6200() {
  $ret = array();
  $fields = array(
    'field_pane_type' => array(
      'type' => 'varchar',
      'length' => 20,
      'description' => 'The defined pane type for this variable to appear in. If you want more panes, one of the things you will have to do is add another pane type inside uc_extra_fields_pane.module.',
    ),
    'field_delta' => array(
      'type' => 'int',
      'length' => 10,
      'description' => 'The delta position of this field on the pane selected for this field.',
    ),
    'field_value_type' => array(
      'type' => 'int',
      'length' => 10,
      'description' => 'The type of input to the field_value database field.',
    ),
    'field_value' => array(
      'type' => 'blob',
      'description' => 'A blob that can be used to store anything from php code, to constant values, to select values',
    ),
    'field_display' => array(
      'type' => 'int',
      'size' => 'tiny',
      'not null' => TRUE,
      'default' => 0,
    ),
  );
  foreach ($fields as $fieldname => $definition) {
    db_add_field($ret, 'uc_extra_fields', $fieldname, $definition);
  }

  // Change unique key
  db_drop_unique_key($ret, 'uc_extra_fields', 'field_name');
  db_add_unique_key($ret, 'uc_extra_fields', 'field_db_name', array(
    'field_db_name',
  ));

  // Make length longer, or else adding suffixes may fail.
  db_change_field($ret, 'uc_extra_fields', 'field_db_name', 'field_db_name', array(
    'type' => 'varchar',
    'length' => '32',
    'not null' => TRUE,
  ));

  // Add suffixes to every field ('_delivery' or '_billing').
  $rows = array();
  $result = db_query("SELECT * FROM {uc_extra_fields}");
  while ($row = db_fetch_array($result)) {
    $rows[] = $row;
  }
  $ret[] = update_sql("TRUNCATE TABLE {uc_extra_fields}");
  foreach ($rows as $row) {
    $db_name = $row['field_db_name'] . '_delivery';
    $pane_type = 'extra_delivery';
    $ret[] = update_sql("INSERT INTO {uc_extra_fields} (field_name, field_description, field_db_name, field_pane_type, field_value_type, field_display, field_required) VALUES('" . $row['field_name'] . "', '" . $row['field_description'] . "', '" . $db_name . "', '" . $pane_type . "', 0, 1, '" . $row['field_required'] . "')");
    $db_name = $row['field_db_name'] . '_billing';
    $pane_type = 'extra_billing';
    $ret[] = update_sql("INSERT INTO {uc_extra_fields} (field_name, field_description, field_db_name, field_pane_type, field_value_type, field_display, field_required) VALUES('" . $row['field_name'] . "', '" . $row['field_description'] . "', '" . $db_name . "', '" . $pane_type . "', 0, 1, '" . $row['field_required'] . "')");
  }
  return $ret;
}