You are here

function uc_extra_fields_pane_update_6203 in Extra Fields Checkout Pane 6.2

Removes field 'display' Adds field 'display_settings'

File

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

Code

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

  // Get current display settings (checkout page only)
  $fields_display = array();
  $fields_nodisplay = array();
  $fieldsresult = db_query('SELECT field_id, display FROM {uc_extra_fields}');
  while ($field = db_fetch_array($fieldsresult)) {
    if ($field['display']) {
      $fields_display[] = $field['field_id'];
    }
    else {
      $fields_nodisplay[] = $field['field_id'];
    }
  }

  // Remove field 'display'
  db_drop_field($ret, 'uc_extra_fields', 'display');

  // Add field 'display_settings'
  db_add_field($ret, 'uc_extra_fields', 'display_settings', array(
    'type' => 'text',
    'size' => 'medium',
    'not null' => TRUE,
    'serialize' => TRUE,
  ));

  // Save display settings
  if (count($fields_display) > 0) {
    $display_settings = array(
      'checkout' => TRUE,
    );
    $sql_display_settings = serialize($display_settings);
    $query = "UPDATE {uc_extra_fields}\n    SET display_settings='%s'\n    WHERE field_id in(" . implode(",", $fields_display) . ")\n    ";
    $result = db_query($query, $sql_display_settings);
    $ret[] = array(
      'success' => $result !== FALSE,
      'query' => check_plain($query),
    );
  }
  if (count($fields_nodisplay) > 0) {
    $display_settings = array(
      'checkout' => FALSE,
    );
    $sql_display_settings = serialize($display_settings);
    $query = "UPDATE {uc_extra_fields}\n    SET display_settings='%s'\n    WHERE field_id in(" . implode(",", $fields_nodisplay) . ")\n    ";
    $result = db_query($query, $sql_display_settings);
    $ret[] = array(
      'success' => $result !== FALSE,
      'query' => check_plain($query),
    );
  }
  return $ret;
}