votingapi.install in Voting API 6.2
Same filename and directory in other branches
Installation file for VotingAPI module.
File
votingapi.installView source
<?php
/**
* @file
* Installation file for VotingAPI module.
*/
function votingapi_schema() {
$schema['votingapi_vote'] = array(
'fields' => array(
'vote_id' => array(
'type' => 'serial',
'unsigned' => TRUE,
'not null' => TRUE,
),
'content_type' => array(
'type' => 'varchar',
'length' => 64,
'not null' => TRUE,
'default' => 'node',
),
'content_id' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
),
'value' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
),
'value_type' => array(
'type' => 'varchar',
'length' => 64,
'not null' => TRUE,
'default' => 'percent',
),
'tag' => array(
'type' => 'varchar',
'length' => 64,
'not null' => TRUE,
'default' => 'vote',
),
'uid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
),
'timestamp' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
),
'vote_source' => array(
'type' => 'varchar',
'length' => 255,
),
),
'primary key' => array(
'vote_id',
),
'indexes' => array(
'content_uid' => array(
'content_type',
'content_id',
'uid',
),
'content_uid_2' => array(
'content_type',
'uid',
),
'content_source' => array(
'content_type',
'content_id',
'vote_source',
),
'content_value_tag' => array(
'content_type',
'content_id',
'value_type',
'tag',
),
),
);
$schema['votingapi_cache'] = array(
'fields' => array(
'vote_cache_id' => array(
'type' => 'serial',
'unsigned' => TRUE,
'not null' => TRUE,
),
'content_type' => array(
'type' => 'varchar',
'length' => 64,
'not null' => TRUE,
'default' => 'node',
),
'content_id' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
),
'value' => array(
'type' => 'float',
'not null' => TRUE,
'default' => 0,
),
'value_type' => array(
'type' => 'varchar',
'length' => 64,
'not null' => TRUE,
'default' => 'percent',
),
'tag' => array(
'type' => 'varchar',
'length' => 64,
'not null' => TRUE,
'default' => 'vote',
),
'function' => array(
'type' => 'varchar',
'length' => 64,
'not null' => TRUE,
'default' => '',
),
'timestamp' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
),
),
'primary key' => array(
'vote_cache_id',
),
'indexes' => array(
'content' => array(
'content_type',
'content_id',
),
'content_function' => array(
'content_type',
'content_id',
'function',
),
'content_tag_func' => array(
'content_type',
'content_id',
'tag',
'function',
),
'content_vtype_tag' => array(
'content_type',
'content_id',
'value_type',
'tag',
),
'content_vtype_tag_func' => array(
'content_type',
'content_id',
'value_type',
'tag',
'function',
),
),
);
return $schema;
}
function votingapi_install() {
drupal_install_schema('votingapi');
}
function votingapi_uninstall() {
drupal_uninstall_schema('votingapi');
}
/**
* UTF8 update
*/
function votingapi_update_1() {
return _system_update_utf8(array(
'votingapi_vote',
'votingapi_cache',
));
}
/**
* Value fields changed to signed floats.
*/
function votingapi_update_2() {
$ret = array();
db_drop_primary_key($ret, 'votingapi_cache');
db_drop_primary_key($ret, 'votingapi_vote');
db_change_field($ret, votingapi_cache, value, value, array(
'type' => 'float',
'default' => NULL,
), array(
'primary_key' => array(
'vote_cache_id',
),
));
db_change_field($ret, votingapi_vote, value, value, array(
'type' => 'float',
'default' => NULL,
), array(
'primary_key' => array(
'vote_id',
),
));
return $ret;
}
/**
* Value fields changed to signed floats.
*/
function votingapi_update_3() {
$ret = array();
switch ($GLOBALS['db_type']) {
case 'mysql':
case 'mysqli':
$ret[] = update_sql("UPDATE {votingapi_cache} SET value_type = 'percent' WHERE value_type = '1'");
$ret[] = update_sql("UPDATE {votingapi_cache} SET value_type = 'points' WHERE value_type = '2'");
$ret[] = update_sql("UPDATE {votingapi_cache} SET value_type = 'option' WHERE value_type = '3'");
$ret[] = update_sql("UPDATE {votingapi_vote} SET value_type = 'percent' WHERE value_type = '1'");
$ret[] = update_sql("UPDATE {votingapi_vote} SET value_type = 'points' WHERE value_type = '2'");
$ret[] = update_sql("UPDATE {votingapi_vote} SET value_type = 'option' WHERE value_type = '3'");
break;
}
return $ret;
}
/**
* Initial work to roll Voting Actions functionality into Voting API.
*/
function votingapi_update_4() {
$ret = array();
$name = 'votingapi_action_set';
$table_action_step = array(
'fields' => array(
'vasid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
),
'parent' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
),
'required' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
),
'mask' => array(
'type' => 'varchar',
'default' => 'AND',
),
'content_type' => array(
'type' => 'varchar',
'length' => 20,
'default' => NULL,
),
'name' => array(
'type' => 'varchar',
'length' => 128,
'default' => NULL,
),
'enabled' => array(
'type' => 'int',
'default' => 1,
),
'source' => array(
'type' => 'varchar',
'length' => 65,
'default' => NULL,
),
'weight' => array(
'type' => 'int',
'length' => 10,
'not null' => TRUE,
'default' => 0,
),
),
'primary key' => array(
'vasid',
),
);
db_create_table($ret, $name, $table_action_set);
$name = 'votingapi_action_condition';
$table_action_condition = array(
'fields' => array(
'vacid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
),
'vasid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
),
'weight' => array(
'type' => 'int',
'length' => 10,
'not null' => TRUE,
'default' => 0,
),
'value' => array(
'type' => 'varchar',
'length' => 255,
),
'handler' => array(
'type' => 'varchar',
'length' => 255,
),
),
'primary key' => array(
'vacid',
),
);
db_create_table($ret, $name, $table_action_condition);
$name = 'votingapi_action';
$table_votingapi_action = array(
'fields' => array(
'vasid' => array(
'type' => 'int',
'length' => 10,
'unsigned' => TRUE,
'not null' => TRUE,
),
'aid' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => 0,
),
),
);
db_create_table($ret, $name, $table_votingapi_action);
return $ret;
}
/**
* Fixed index definition, corrected table prefixes.
*/
function votingapi_update_5() {
$ret = array();
db_add_index($ret, '{votingapi_vote}', 'content', array(
'content_type',
'content_id',
));
db_add_index($ret, '{votingapi_cache}', 'content', array(
'content_type',
'content_id',
));
db_drop_index($ret, '{votingapi_vote}', 'content_type');
db_drop_index($ret, '{votingapi_vote}', 'content_id');
db_drop_index($ret, '{votingapi_cache}', 'content_type');
db_drop_index($ret, '{votingapi_cache}', 'content_id');
db_rename_table($ret, 'votingapi_action_condition', '{votingapi_action_condition}');
db_rename_table($ret, 'votingapi_action', '{votingapi_action}');
switch ($GLOBALS['db_type']) {
case 'mysql':
case 'mysqli':
$ret[] = update_sql("UPDATE {sequences} SET name = '{votingapi_cache}' WHERE name = 'votingapi_cache';");
$ret[] = update_sql("UPDATE {sequences} SET name = '{votingapi_vote}' WHERE name = 'votingapi_vote';");
break;
}
return $ret;
}
function votingapi_update_6() {
$ret = array();
db_add_column($ret, 'votingapi_action_condition', 'name', 'varchar', array(
'length' => 128,
));
db_add_column($ret, 'votingapi_action_set', 'name', 'description', array(
'length' => 255,
'not null' => TRUE,
));
db_change_column($ret, 'votingapi_action_condition', 'value', 'data', 'varchar', array(
'length' => 255,
));
return $ret;
}
function votingapi_update_7() {
// There are quite a few changes. Let's just take the easy way and nuke this puppy.
// Nothing has been using the tables up to this point, anyhow.
db_drop_table($ret, 'votingapi_action_set');
db_drop_table($ret, 'votingapi_action_condition');
db_drop_table($ret, 'votingapi_action');
$name = 'votingapi_action_set';
$table_votingapi_action_set = array(
'fields' => array(
'name' => array(
'type' => 'varchar',
'length' => 64,
'not null' => TRUE,
),
'parent_name' => array(
'type' => 'varchar',
'default' => NULL,
),
'content_type' => array(
'type' => 'varchar',
'length' => 20,
'default' => NULL,
),
'source' => array(
'type' => 'varchar',
'length' => 64,
'default' => NULL,
),
'description' => array(
'type' => 'varchar',
'length' => 255,
'default' => NULL,
),
'required' => array(
'type' => 'int',
'length' => 8,
'not null' => TRUE,
'default' => 0,
),
'criteria_mask' => array(
'type' => 'varchar',
'length' => 8,
'default' => 'AND',
),
'weight' => array(
'type' => 'int',
'length' => 10,
'not null' => TRUE,
'default' => 0,
),
),
'primary_key' => array(
'name',
),
);
db_create_table($ret, $name, $table_votingapi_action_set);
$name = 'votingapi_action_condition';
$table_votingapi_action_condition = array(
'fields' => array(
'name' => array(
'type' => 'varchar',
'length' => 64,
'length' => 64,
),
'parent_name' => array(
'type' => 'varchar',
'default' => NULL,
),
'description' => array(
'type' => 'varchar',
'length' => 255,
'default' => NULL,
),
'data' => array(
'type' => 'varchar',
'length' => 255,
),
'handler' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
),
),
'primary key' => array(
'name',
),
);
db_create_table($ret, $name, $table_votingapi_action_condition);
$name = 'votingapi_action';
$table_votingapi_action = array(
'fields' => array(
'parent_name' => array(
'type' => 'varchar',
'length' => 64,
'length' => 64,
),
'aid' => array(
'type' => 'varchar',
'length' => 255,
'not null' => 255,
),
),
);
db_create_table($ret, $name, $table_votingapi_action);
return $ret;
}
function votingapi_update_8() {
// whoops. mis-named column.
$ret = array();
db_change_column($ret, 'votingapi_action_set', 'criteria_mask', 'condition_mask', 'varchar', array(
'length' => 8,
'default' => 'AND',
));
return $ret;
}
function votingapi_update_9() {
$ret = array();
db_add_column($ret, 'votingapi_cache', 'timestamp', 'int', array(
'length' => 11,
'default' => NULL,
));
$ret[] = update_sql("UPDATE {votingapi_cache} SET timestamp = " . time() . " WHERE timestamp IS NULL;");
return $ret;
}
function votingapi_update_6100() {
$ret = array();
// Convert vote_id and vote_cache_id columns to auto increment.
db_drop_primary_key($ret, 'votingapi_cache');
db_change_field($ret, 'votingapi_cache', 'vote_cache_id', 'vote_cache_id', array(
'type' => 'serial',
'not null' => TRUE,
), array(
'primary key' => array(
'vote_cache_id',
),
));
db_drop_primary_key($ret, 'votingapi_vote');
db_change_field($ret, 'votingapi_vote', 'vote_id', 'vote_id', array(
'type' => 'serial',
'not null' => TRUE,
), array(
'primary key' => array(
'vote_id',
),
));
// Rename the 'hostname' field to 'vote_source' for more flexibility.
db_change_field($ret, 'votingapi_vote', 'hostname', 'vote_source', array(
'type' => 'varchar',
'length' => 255,
));
$indexes = array(
'content_uid' => array(
'content_type',
'content_id',
'uid',
),
'content_source' => array(
'content_type',
'content_id',
'vote_source',
),
'content_vtype' => array(
'content_type',
'content_id',
'value_type',
),
'content_value_tag' => array(
'content_type',
'content_id',
'value_type',
'tag',
),
);
foreach ($indexes as $name => $fields) {
db_add_index($ret, 'votingapi_vote', $name, $fields);
}
$indexes = array(
'content_function' => array(
'content_type',
'content_id',
'function',
),
'content_tag_func' => array(
'content_type',
'content_id',
'tag',
'function',
),
'content_vtype_tag' => array(
'content_type',
'content_id',
'value_type',
'tag',
),
'content_vtype_tag_func' => array(
'content_type',
'content_id',
'value_type',
'tag',
'function',
),
);
foreach ($indexes as $name => $fields) {
db_add_index($ret, 'votingapi_cache', $name, $fields);
}
// Yes, we loves us the SchemaAPI.
return $ret;
}
// More index tweaking for votingapi_vote table.
// It's not really kosher, but this update was *altered* after the release of version 2.0
// to correct a typo. Better to fix it in-place than leave an actual bug.
function votingapi_update_6101() {
$ret = array();
db_drop_index($ret, 'votingapi_vote', 'content');
db_drop_index($ret, 'votingapi_vote', 'content_vtype');
db_add_index($ret, 'votingapi_vote', 'content_uid_2', array(
'content_type',
'uid',
));
return $ret;
}
Functions
Name | Description |
---|---|
votingapi_install | |
votingapi_schema | @file Installation file for VotingAPI module. |
votingapi_uninstall | |
votingapi_update_1 | UTF8 update |
votingapi_update_2 | Value fields changed to signed floats. |
votingapi_update_3 | Value fields changed to signed floats. |
votingapi_update_4 | Initial work to roll Voting Actions functionality into Voting API. |
votingapi_update_5 | Fixed index definition, corrected table prefixes. |
votingapi_update_6 | |
votingapi_update_6100 | |
votingapi_update_6101 | |
votingapi_update_7 | |
votingapi_update_8 | |
votingapi_update_9 |