View source
<?php
function nodequeue_install() {
drupal_set_message('Installing nodequeue');
switch ($GLOBALS['db_type']) {
case 'mysql':
case 'mysqli':
db_query("CREATE TABLE if not exists {nodequeue_queue} (\n qid int(10) unsigned NOT NULL PRIMARY KEY,\n title varchar(255) NOT NULL,\n subqueue_title varchar(255) NOT NULL,\n size int(3) unsigned default '0',\n link varchar(255),\n link_remove varchar(255),\n owner varchar(255) default 'nodequeue',\n show_in_ui int(1) default '1',\n show_in_tab int(1) default '1',\n show_in_links int(1) default '1',\n reference varchar(255) default '0',\n reverse tinyint\n ) /*!40100 DEFAULT CHARACTER SET utf8 */");
db_query("CREATE TABLE if not exists {nodequeue_roles} (\n qid int(10) unsigned NOT NULL,\n rid int(10) unsigned,\n KEY (qid),\n KEY (rid)\n )/*!40100 DEFAULT CHARACTER SET utf8 */");
db_query("CREATE TABLE if not exists {nodequeue_types} (\n qid int(10) unsigned NOT NULL,\n type varchar(255),\n KEY (qid),\n KEY (type)\n )/*!40100 DEFAULT CHARACTER SET utf8 */");
db_query("CREATE TABLE if not exists {nodequeue_subqueue} (\n sqid int(10) unsigned PRIMARY KEY,\n qid int(10) unsigned NOT NULL,\n reference varchar(255) default 0,\n title varchar(255) default '',\n KEY (qid),\n KEY (reference),\n KEY (title)\n )/*!40100 DEFAULT CHARACTER SET utf8 */");
db_query("CREATE TABLE if not exists {nodequeue_nodes} (\n qid int(10) unsigned NOT NULL,\n sqid int(10) unsigned NOT NULL,\n nid int(10) unsigned,\n position int(3) unsigned,\n timestamp int unsigned NOT NULL default '0',\n KEY (sqid, position),\n KEY (nid)\n )/*!40100 DEFAULT CHARACTER SET utf8 */");
$success = TRUE;
break;
case 'pgsql':
db_query("CREATE TABLE {nodequeue_queue} (\n qid integer NOT NULL PRIMARY KEY,\n title varchar(255) NOT NULL,\n size integer default '0',\n owner varchar(255) default 'nodequeue',\n show_in_ui integer default '1',\n show_in_tab integer default '1',\n link varchar(255),\n link_remove varchar(255),\n reverse smallint\n )");
db_query("CREATE TABLE {nodequeue_roles} (\n qid integer NOT NULL,\n rid integer\n )");
db_query("CREATE INDEX {nodequeue_roles}_qid_idx ON {nodequeue_roles} (qid)");
db_query("CREATE INDEX {nodequeue_roles}_rid_idx ON {nodequeue_roles} (rid)");
db_query("CREATE TABLE {nodequeue_types} (\n qid integer NOT NULL,\n type varchar(255)\n )");
db_query("CREATE INDEX {nodequeue_types}_qid_idx ON {nodequeue_types} (qid)");
db_query("CREATE TABLE {nodequeue_nodes} (\n sqid integer NOT NULL,\n qid integer NOT NULL,\n nid integer,\n position integer,\n timestamp integer NOT NULL default '0'\n )");
db_query("CREATE INDEX {nodequeue_nodes}_sqid_idx ON {nodequeue_nodes} (sqid, position)");
db_query("CREATE INDEX {nodequeue_nodes}_nid_idx ON {nodequeue_nodes} (nid)");
db_query("CREATE SEQUENCE nodequeue_queue_qid_seq INCREMENT 1 START 1");
$success = TRUE;
break;
}
if ($success) {
drupal_set_message(t('Nodequeue module installed tables successfully.'));
}
else {
drupal_set_message(t('The installation of nodequeue module was unsuccessful.'), 'error');
}
}
function nodequeue_uninstall() {
$tables = array(
'nodequeue_queue',
'nodequeue_subqueue',
'nodequeue_roles',
'nodequeue_types',
'nodequeue_nodes',
);
foreach ($tables as $table) {
if (db_table_exists($table)) {
db_query("DROP TABLE {$table}");
}
}
if ($GLOBALS['db_type'] == 'pgsql') {
db_query("DROP SEQUENCE nodequeue_queue_qid_seq;");
}
else {
$names = array(
'nodequeue_queue_qid',
'nodequeue_subqueue_sqid',
);
foreach ($names as $name) {
db_query("DELETE FROM {sequences} WHERE name = '%s'", $name);
}
}
}
function nodequeue_update_1() {
if ($GLOBALS['db_type'] == 'pgsql') {
db_query("CREATE SEQUENCE nodequeue_queue_qid_seq INCREMENT 1 START 1");
}
}
function nodequeue_update_5000() {
$ret = array();
$ret[] = t(array(
'success' => TRUE,
'query' => 'Some of the following queries may appear to fail. This is not a problem.',
));
$ret[] = update_sql("ALTER TABLE {nodequeue_queue} ADD COLUMN link VARCHAR(40) DEFAULT '' NOT NULL");
$ret[] = update_sql("ALTER TABLE {nodequeue_queue} ADD COLUMN link_remove VARCHAR(40) DEFAULT '' NOT NULL");
$ret[] = update_sql("CREATE INDEX {nodequeue_roles}_qid_idx ON {nodequeue_roles} (qid)");
$ret[] = update_sql("CREATE INDEX {nodequeue_roles}_rid_idx ON {nodequeue_roles} (rid)");
$ret[] = update_sql("CREATE INDEX {nodequeue_types}_qid_idx ON {nodequeue_types} (qid)");
$ret[] = update_sql("CREATE INDEX {nodequeue_nodes}_qid_idx ON {nodequeue_nodes} (qid, position)");
$ret[] = update_sql("CREATE INDEX {nodequeue_nodes}_nid_idx ON {nodequeue_nodes} (nid)");
$ret[] = _system_update_utf8(array(
'nodequeue_queue',
'nodequeue_roles',
'nodequeue_types',
'nodequeue_nodes',
));
return $ret;
}
function nodequeue_update_5001() {
$ret = array();
switch ($GLOBALS['db_type']) {
case 'mysql':
case 'mysqli':
$ret[] = update_sql("ALTER TABLE {nodequeue_nodes} ADD COLUMN timestamp int DEFAULT '0' NOT NULL");
break;
case 'pgsql':
db_add_column($ret, 'nodequeue_nodes', 'timestamp', 'integer', array(
'default' => 0,
'not null' => TRUE,
));
break;
}
return $ret;
}
function nodequeue_update_5201() {
$ret = array();
db_add_column($ret, 'nodequeue_queue', 'owner', 'varchar(255)', array(
'default' => "'nodequeue'",
));
db_add_column($ret, 'nodequeue_queue', 'show_in_ui', 'integer', array(
'default' => 1,
));
db_add_column($ret, 'nodequeue_queue', 'show_in_tab', 'integer', array(
'default' => 1,
));
db_add_column($ret, 'nodequeue_queue', 'show_in_links', 'integer', array(
'default' => 1,
));
db_add_column($ret, 'nodequeue_queue', 'reference', 'varchar(255)', array(
'default' => 0,
));
$ret[] = update_sql("UPDATE {nodequeue_queue} SET owner = 'nodequeue', show_in_ui = 1, show_in_tab = 1, show_in_links = 1, reference = 0");
switch ($GLOBALS['db_type']) {
case 'mysql':
case 'mysqli':
$ret[] = update_sql("CREATE TABLE if not exists {nodequeue_subqueue} (\n sqid int(10) unsigned PRIMARY KEY,\n qid int(10) unsigned NOT NULL,\n reference varchar(255) default 0,\n title varchar(255) default '',\n KEY {nodequeue_subqueue}_qid_idx (qid),\n KEY {nodequeue_subqueue}_reference_idx (reference),\n KEY {nodequeue_subqueue}_title_idx (title)\n )/*!40100 DEFAULT CHARACTER SET utf8 */");
break;
case 'pgsql':
break;
}
$result = db_query("SELECT * FROM {nodequeue_queue}");
while ($queue = db_fetch_object($result)) {
$last_qid = $queue->qid;
$ret[] = update_sql("INSERT INTO {nodequeue_subqueue} (sqid, qid, reference, title) VALUES ({$queue->qid}, {$queue->qid}, {$queue->qid}, '{$queue->title}')");
}
if (isset($last_qid)) {
switch ($GLOBALS['db_type']) {
case 'mysql':
case 'mysqli':
$ret[] = update_sql("INSERT INTO {sequences} (name, id) VALUES ('{nodequeue_subqueue}_sqid', {$last_qid})");
break;
case 'pgsql':
break;
}
}
db_add_column($ret, 'nodequeue_nodes', 'sqid', 'integer');
$ret[] = update_sql("UPDATE {nodequeue_nodes} SET sqid = qid");
$ret[] = update_sql("CREATE INDEX {nodequeue_nodes}_sqid_idx ON {nodequeue_nodes} (sqid, position)");
return $ret;
}
function nodequeue_update_5202() {
$ret = array();
db_add_column($ret, 'nodequeue_queue', 'subqueue_title', 'varchar(255)');
return $ret;
}
function nodequeue_update_5203() {
$ret = array();
switch ($GLOBALS['db_type']) {
case 'mysql':
case 'mysqli':
db_add_column($ret, 'nodequeue_queue', 'reverse', 'int(1)');
break;
}
return $ret;
}
function nodequeue_update_5204() {
$ret = array();
switch ($GLOBALS['db_type']) {
case 'mysql':
case 'mysqli':
$ret[] = update_sql("ALTER TABLE {nodequeue_queue} MODIFY COLUMN reverse tinyint");
break;
case 'pgsql':
db_add_column($ret, 'nodequeue_queue', 'reverse', 'smallint');
break;
}
return $ret;
}