ad.install in Advertisement 6
Same filename and directory in other branches
Advertisement module database schema.
Copyright (c) 2005-2009. Jeremy Andrews <jeremy@tag1consulting.com>.
File
ad.installView source
<?php
/**
* @file
* Advertisement module database schema.
*
* Copyright (c) 2005-2009.
* Jeremy Andrews <jeremy@tag1consulting.com>.
*/
/**
* Ad module database schema.
*/
function ad_schema() {
/**
* The ad table stores administrative information about each ad. The
* actual ad itself can be found in the appropriate ad type table.
*/
$schema['ads'] = array(
'description' => 'The ad table stores administrative information about each ad. The actual ad itself can be found in the appropriate ad type table.',
'fields' => array(
'aid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'Unique ad ID. Equals to ad nid.',
),
'uid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'The {users}.uid that owns this node; initially, this is the user that created it.',
),
'adstatus' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
'description' => 'Ad status',
),
'adtype' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
'description' => 'Ad type',
),
'redirect' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
'description' => 'Ad redirect URL',
),
'autoactivate' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'Is ad autoactivating?',
),
'autoactivated' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'Is ad autoactivated?',
),
'autoexpire' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'Is ad autoexpiring?',
),
'autoexpired' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'Is ad autoexpired?',
),
'activated' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'Is ad activated?',
),
'maxviews' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'Maximum ad impressions',
),
'maxclicks' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'Maximum ad clicks',
),
'expired' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'Is ad expired?',
),
),
'primary key' => array(
'aid',
),
'indexes' => array(
'uid' => array(
'uid',
),
'autoactivate' => array(
'autoactivate',
),
'autoactivate' => array(
'autoactivate',
),
),
);
/**
* This table counts each time a given action occurs on an ad. Actions
* include when the ad is viewed, clicked, enabled and disabled.
* Statistics are collected at an hourly granularity.
*
* The source column is used for tracking statistics for externally
* hosted ads.
*
* Actions:
* 'view', 'click', 'enable', 'disable'
*/
$schema['ad_statistics'] = array(
'description' => 'Stores ad statistics.',
'fields' => array(
'sid' => array(
'type' => 'serial',
'not null' => TRUE,
'unsigned' => TRUE,
'description' => 'Statistics entry ID.',
),
'aid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'Ad id.',
),
'date' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'Date when action was made.',
),
'action' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
'description' => 'Actions: "view", "click", "enable", "disable".',
),
'adgroup' => array(
'type' => 'varchar',
'length' => 255,
'not null' => FALSE,
'default' => '',
'description' => 'Ad group.',
),
'hostid' => array(
'type' => 'varchar',
'length' => 32,
'not null' => TRUE,
'default' => '',
'description' => 'Host from which acion was made.',
),
'count' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'Count of actions triggered.',
),
),
'primary key' => array(
'sid',
),
'indexes' => array(
'aid' => array(
'aid',
),
'date' => array(
'date',
),
'action' => array(
'action',
),
'adgroup' => array(
'adgroup',
),
'hostid' => array(
'hostid',
),
),
);
/**
* The ad_clicks table tracks when a given advertisement was clicked,
* who clicked it (uid if any and IP address), and what page they were
* on when they clicked it.
*/
$schema['ad_clicks'] = array(
'description' => 'The ad_clicks table tracks when a given advertisement was clicked, who clicked it (uid if any and IP address), and what page they were on when they clicked it.',
'fields' => array(
'cid' => array(
'type' => 'serial',
'not null' => TRUE,
'unsigned' => TRUE,
'description' => 'Statistics entry ID.',
),
'aid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'Ad id.',
),
'uid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => '',
),
'status' => array(
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => '',
),
'hostname' => array(
'type' => 'varchar',
'length' => 128,
'not null' => TRUE,
'default' => '',
'description' => 'Host from which acion was made.',
),
'user_agent' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
'description' => 'Clicker\'s browser agent.',
),
'adgroup' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
'description' => 'Ad group.',
),
'hostid' => array(
'type' => 'varchar',
'length' => 32,
'not null' => TRUE,
'default' => '',
'description' => 'Host from which acion was made.',
),
'url' => array(
'type' => 'varchar',
'length' => 255,
'not null' => FALSE,
'default' => '',
'description' => 'Clicked URL.',
),
'timestamp' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'Date when action was made.',
),
),
'primary key' => array(
'cid',
),
'indexes' => array(
'aid' => array(
'aid',
),
'status' => array(
'status',
),
'hostname' => array(
'hostname',
),
'user_agent' => array(
'user_agent',
),
'adgroup' => array(
'adgroup',
),
'hostid' => array(
'hostid',
),
'url' => array(
'url',
),
),
);
/**
* The ad_hosts table is used to configure users that can display ads
* remotely.
*/
$schema['ad_hosts'] = array(
'description' => 'The ad_hosts table is used to configure users that can display ads remotely. ',
'fields' => array(
'uid' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => '',
),
'hostid' => array(
'type' => 'varchar',
'length' => 32,
'not null' => TRUE,
'default' => '',
'description' => 'Host from which acion was made.',
),
'status' => array(
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => '',
),
'description' => array(
'type' => 'text',
'not null' => FALSE,
'description' => 'Host from which acion was made.',
),
),
'primary key' => array(
'uid',
),
'indexes' => array(
'status' => array(
'status',
),
'hostid' => array(
'hostid',
),
),
);
return $schema;
}
/**
* Ad module installation.
*/
function ad_install() {
// Create tables.
drupal_install_schema('ad');
}
/**
* Allow complete uninstallation of the ad module.
*/
function ad_uninstall() {
// Remove tables.
drupal_uninstall_schema('ad');
// Delete all ad content.
$result = db_query("SELECT nid FROM {node} WHERE type = 'ad'");
while ($node = db_fetch_object($result)) {
node_delete($node->nid);
variable_del("ad_autoactivate_warning_{$node->nid}");
}
// Delete all remaining ad module variables.
$variables = array(
'ad_cron_timestamp',
'ad_link_target',
'ad_cache',
'ad_cache_file',
'adserve',
'ad_group_vid',
'ad_groups',
'ad_validate_url',
'ad_display',
);
foreach ($variables as $variable) {
variable_del($variable);
}
db_query("DELETE FROM {variable} WHERE name LIKE 'ad_block_quantity_%'");
}
/**
* Convert some things from absolete dev. schema to new schema API
*/
function ad_update_6001() {
$ret = array();
// When we touching index columns, we should first remove it from schema
db_drop_index($ret, 'ad_clicks', 'status');
db_change_field($ret, 'ad_clicks', 'status', 'status', array(
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => '',
), array(
'indexes' => array(
'status' => array(
'status',
),
),
));
db_drop_index($ret, 'ad_hosts', 'status');
db_change_field($ret, 'ad_hosts', 'status', 'status', array(
'type' => 'int',
'size' => 'tiny',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => '',
), array(
'indexes' => array(
'status' => array(
'status',
),
),
));
db_drop_index($ret, 'ad_statistics', 'hostid');
db_change_field($ret, 'ad_statistics', 'hostid', 'hostid', array(
'type' => 'varchar',
'length' => 32,
'not null' => TRUE,
'default' => '',
'description' => 'Host from which acion was made.',
), array(
'indexes' => array(
'hostid' => array(
'hostid',
),
),
));
db_drop_index($ret, 'ad_hosts', 'hostid');
db_change_field($ret, 'ad_hosts', 'hostid', 'hostid', array(
'type' => 'varchar',
'length' => 32,
'not null' => TRUE,
'default' => '',
'description' => 'Host from which acion was made.',
), array(
'indexes' => array(
'hostid' => array(
'hostid',
),
),
));
return $ret;
}
/**
* Rebuild menu for anyone using the ad_embed module.
*/
function ad_update_6002() {
menu_rebuild();
return array();
}
/**
* Flush all caches for new themeable ad display functions.
*/
function ad_update_6003() {
drupal_flush_all_caches();
return array();
}
Functions
Name![]() |
Description |
---|---|
ad_install | Ad module installation. |
ad_schema | Ad module database schema. |
ad_uninstall | Allow complete uninstallation of the ad module. |
ad_update_6001 | Convert some things from absolete dev. schema to new schema API |
ad_update_6002 | Rebuild menu for anyone using the ad_embed module. |
ad_update_6003 | Flush all caches for new themeable ad display functions. |