function nodequeue_update_7300 in Nodequeue 7.3
Remove qid fields and adjust keys and indexes to use machine name.
File
- ./
nodequeue.install, line 406 - Install, update and uninstall functions for the nodequeue module.
Code
function nodequeue_update_7300() {
$name_field = array(
'description' => 'The machine name for the queue.',
'type' => 'varchar',
'length' => 128,
);
// Get an array map of qid/name values before deleting qid field from
// nodequeue_queue table.
$queues = db_select('nodequeue_queue', 'nq')
->fields('nq', array(
'qid',
'name',
))
->execute()
->fetchAllKeyed(0, 1);
// Changes to noqueue_queue table.
// Change qid from serial to int first, otherwise removing the primary key
// isn't possible.
db_change_field('nodequeue_queue', 'qid', 'qid', array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
));
db_drop_primary_key('nodequeue_queue');
db_drop_unique_key('nodequeue_queue', 'name');
db_add_primary_key('nodequeue_queue', array(
'name',
));
db_drop_field('nodequeue_queue', 'qid');
// Changes to nodequeue_roles table.
db_drop_index('nodequeue_roles', 'qid');
db_add_field('nodequeue_roles', 'name', $name_field);
nodequeue_update_populate_name_field('nodequeue_roles', $queues);
db_drop_field('nodequeue_roles', 'qid');
db_add_index('nodequeue_roles', 'name', array(
'name',
));
// Changes to nodequeue_types table.
db_drop_index('nodequeue_types', 'qid');
db_add_field('nodequeue_types', 'name', $name_field);
nodequeue_update_populate_name_field('nodequeue_types', $queues);
db_drop_field('nodequeue_types', 'qid');
db_add_index('nodequeue_types', 'name', array(
'name',
));
// Changes to nodequeue_subqueue table.
db_drop_index('nodequeue_subqueue', 'qid');
db_add_field('nodequeue_subqueue', 'name', $name_field);
nodequeue_update_populate_name_field('nodequeue_subqueue', $queues);
db_drop_field('nodequeue_subqueue', 'qid');
db_add_index('nodequeue_subqueue', 'name', array(
'name',
));
// Changes to nodequeue_nodes table.
db_drop_index('nodequeue_nodes', 'qid_nid');
db_add_field('nodequeue_nodes', 'name', $name_field);
nodequeue_update_populate_name_field('nodequeue_nodes', $queues);
db_drop_field('nodequeue_nodes', 'qid');
db_add_index('nodequeue_nodes', 'name_nid', array(
'name',
'nid',
));
// Upgrade smartqueue table here, to avoid problems, since qid is removed from
// nodequeue_queue table, we can't map qids to names after this update
// function is ran.
if (db_table_exists('smartqueue')) {
// Change qid from serial to int first, otherwise removing the primary key
// isn't possible.
db_change_field('smartqueue', 'qid', 'qid', array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
));
db_add_field('smartqueue', 'name', $name_field);
nodequeue_update_populate_name_field('smartqueue', $queues);
db_drop_primary_key('smartqueue');
db_add_primary_key('smartqueue', array(
'name',
));
db_drop_field('smartqueue', 'qid');
}
}