ad.install in Advertisement 6.3
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 action was made.',
),
'count' => array(
'type' => 'int',
'not null' => TRUE,
'unsigned' => TRUE,
'default' => 0,
'description' => 'Count of actions triggered.',
),
'extra' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
'description' => 'Allow add-on modules to provide additional statistics granularity.',
),
),
'primary key' => array(
'sid',
),
'indexes' => array(
'aid_date_action' => array(
'aid',
'date',
'action',
),
'date' => array(
'date',
),
'action' => array(
'action',
),
'adgroup' => array(
'adgroup',
),
'hostid' => array(
'hostid',
),
'extra' => array(
'extra',
),
),
);
/**
* 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 action 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 action 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.',
),
'extra' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
'description' => 'Allow add-on modules to provide additional statistics granularity.',
),
),
'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',
),
'extra' => array(
'extra',
),
),
);
return $schema;
}
/**
* Ad module installation.
*/
function ad_install() {
// Create tables.
drupal_install_schema('ad');
}
/**
* Allow complete uninstallation of the ad module.
*/
function ad_uninstall() {
// 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_%'");
// Remove tables.
drupal_uninstall_schema('ad');
}
/**
* Convert some things from obsolete 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 action 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 action 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();
}
/**
* Introduce "extra" field for ad statistics and clicks, optionally allowing
* add-on modules to provide additional granularity.
*/
function ad_update_6004() {
$ret = array();
db_add_field($ret, 'ad_statistics', 'extra', array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
'description' => 'Allow add-on modules to provide additional statistics granularity.',
), array(
'indexes' => array(
'extra' => array(
'extra',
),
),
));
db_add_field($ret, 'ad_clicks', 'extra', array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
'description' => 'Allow add-on modules to provide additional statistics granularity.',
), array(
'indexes' => array(
'extra' => array(
'extra',
),
),
));
return $ret;
}
/**
* Flush all caches for AHAH ad type switcher to work.
*/
function ad_update_6005() {
drupal_flush_all_caches();
return array();
}
/**
* Flush all caches
*/
function ad_update_6006() {
drupal_flush_all_caches();
return array();
}
/**
* Add new index to ad_statistics table for running reports.
*/
function ad_update_6007() {
$ret = array();
db_add_index($ret, 'ad_statistics', 'aid_date_action', array(
'aid',
'date',
'action',
));
db_drop_index($ret, 'ad_statistics', 'aid');
return $ret;
}
/**
* If block caching is enabled, make it a per-page cache. This is necessary
* to fix bug #604350.
*/
function ad_update_6008() {
$ret = array();
$ret[] = update_sql("UPDATE {blocks} SET cache = " . BLOCK_CACHE_PER_PAGE . " WHERE module = 'ad'");
return $ret;
}
/**
* Value of iframe scrolling should be yes/no instead of on/off.
*/
function ad_update_6009() {
$scrolling = variable_get('ad_iframe_scroll', 'auto');
if ('on' == $scrolling) {
variable_set('ad_iframe_scroll', 'yes');
}
else {
if ('off' == $scrolling) {
variable_set('ad_iframe_scroll', 'no');
}
}
}
/**
* Enable new ad_client module
*/
function ad_update_6300() {
$new_module = array(
'ad_client',
);
/* You'd think there'd be a single function to call to do all this. */
module_enable($new_module);
drupal_install_modules($new_module);
drupal_rebuild_theme_registry();
node_types_rebuild();
menu_rebuild();
cache_clear_all('schema', 'cache');
drupal_clear_css_cache();
drupal_clear_js_cache();
return array(
array(
'success' => TRUE,
'query' => "'ad_client' module enabled.",
),
);
}
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 obsolete 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. |
ad_update_6004 | Introduce "extra" field for ad statistics and clicks, optionally allowing add-on modules to provide additional granularity. |
ad_update_6005 | Flush all caches for AHAH ad type switcher to work. |
ad_update_6006 | Flush all caches |
ad_update_6007 | Add new index to ad_statistics table for running reports. |
ad_update_6008 | If block caching is enabled, make it a per-page cache. This is necessary to fix bug #604350. |
ad_update_6009 | Value of iframe scrolling should be yes/no instead of on/off. |
ad_update_6300 | Enable new ad_client module |