You are here

function regcode_update_6200 in Registration codes 6.2

Implementation of hook_update_N()

File

./regcode.install, line 49
Install, uninstall and scheme functions for the regcode module.

Code

function regcode_update_6200() {
  $sql = array();

  // Update our core columns
  $datetime = array(
    'type' => 'int',
    'not null' => FALSE,
  );
  db_add_field($sql, 'regcode', 'created2', $datetime);
  db_add_field($sql, 'regcode', 'lastused2', $datetime);
  db_add_field($sql, 'regcode', 'begins2', $datetime);
  db_add_field($sql, 'regcode', 'expires2', $datetime);
  $sql[] = update_sql("UPDATE {regcode} SET created2 = UNIX_TIMESTAMP(created), lastused2 = UNIX_TIMESTAMP(lastused), begins2 = UNIX_TIMESTAMP(begins), expires2 = UNIX_TIMESTAMP(expires)");
  db_drop_field($sql, 'regcode', 'created');
  db_drop_field($sql, 'regcode', 'lastused');
  db_drop_field($sql, 'regcode', 'begins');
  db_drop_field($sql, 'regcode', 'expires');
  db_change_field($sql, 'regcode', 'created2', 'created', $datetime);
  db_change_field($sql, 'regcode', 'lastused2', 'lastused', $datetime);
  db_change_field($sql, 'regcode', 'begins2', 'begins', $datetime);
  db_change_field($sql, 'regcode', 'expires2', 'expires', $datetime);

  // Install the new taxonomy table
  $schema = regcode_schema();
  db_create_table($sql, 'regcode_term', $schema['regcode_term']);
  _regcode_install_vocabulary();
  $vid = variable_get('regcode_vocabulary', 1);

  // Create and assign taxonomy terms for each category
  $res = db_query('SELECT DISTINCT(category) FROM {regcode}');
  while ($row = db_fetch_array($res)) {

    // Create a term for the category
    $form_values = array(
      'name' => $row['category'],
      'vid' => $vid,
      'weight' => 0,
    );
    taxonomy_save_term($form_values);
    $terms[$row['category']] = (int) $form_values['tid'];
  }
  $res = db_query('SELECT rid, category FROM {regcode}');
  while ($row = db_fetch_array($res)) {
    $sql[] = update_sql(sprintf('INSERT INTO {regcode_term} (rid, tid) VALUES (%d, %d)', $row['rid'], $terms[$row['category']]));
  }

  // Drop the category field
  db_drop_field($sql, 'regcode', 'category');
  return $sql;
}