Mercurial > defr > drupal > ad
diff channel/ad_channel.install @ 1:948362c2a207 ad
update advertisement
author | pierre |
---|---|
date | Thu, 02 Apr 2009 15:28:21 +0000 |
parents | |
children | e5584a19768b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/channel/ad_channel.install Thu Apr 02 15:28:21 2009 +0000 @@ -0,0 +1,90 @@ +<?php +// $Id: ad_channel.install,v 1.1.4.3 2009/03/05 21:20:36 jeremy Exp $ + +/** + * + * Ad channel database schema. + * Copyright (c) 2008-2009 Jeremy Andrews <jeremy@tag1consulting.com>. + */ + +/** + * Create the ad_channel schema. + */ +function ad_channel_install() { + switch ($GLOBALS['db_type']) { + case 'mysql': + case 'mysqli': + default: + // TODO: PostgreSQL support. Patches welcome. + /* The ad_channel table stores channel definitions and rules. + */ + db_query("CREATE TABLE {ad_channel} ( + chid INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, + name VARCHAR(64) NOT NULL DEFAULT '', + description LONGTEXT NULL, + conid INT(11) UNSIGNED NOT NULL DEFAULT '0', + weight TINYINT(4) SIGNED NOT NULL DEFAULT '0', + display TINYINT(1) UNSIGNED NOT NULL DEFAULT '0', + urls TEXT NULL, + groups TEXT NULL, + PRIMARY KEY (chid), + KEY (name) + );"); + /* The ad_channel_container table stores channel container definitions. + */ + db_query("CREATE TABLE {ad_channel_container} ( + conid INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, + name VARCHAR(64) NOT NULL DEFAULT '', + description LONGTEXT NULL, + weight TINYINT(4) SIGNED NOT NULL DEFAULT '0', + PRIMARY KEY (conid) + );"); + /* The ad_channel_node table stores per node channel information. + */ + db_query("CREATE TABLE {ad_channel_node} ( + chid INT(11) UNSIGNED NOT NULL DEFAULT '0', + nid INT(11) UNSIGNED NOT NULL DEFAULT '0', + PRIMARY KEY (chid, nid), + KEY (nid, chid) + );"); + /* The ad_channel_node table stores per node channel information. + */ + db_query("CREATE TABLE {ad_priority} ( + aid INT(11) UNSIGNED NOT NULL DEFAULT '0', + priority TINYINT UNSIGNED NOT NULL DEFAULT '0', + PRIMARY KEY (aid, priority) + );"); + } +} + +/** + * Completely uninstall the ad channel module. + */ +function ad_channel_uninstall() { + switch ($GLOBALS['db_type']) { + case 'mysql': + case 'mysqli': + default: + // TODO: PostgreSQL support. Patches welcome. + db_query('DROP TABLE {ad_channel}'); + db_query('DROP TABLE {ad_channel_container}'); + db_query('DROP TABLE {ad_channel_node}'); + } +} + +/** + * Populate the ad_priority table. + */ +function ad_channel_update_6001() { + $ret = array(); + + $result = db_query('SELECT a.aid, p.priority FROM {ads} a LEFT JOIN {ad_priority} p ON a.aid = p.aid'); + while ($ad = db_fetch_object($result)) { + if (!isset($ad->priority)) { + $ret[] = update_sql("INSERT INTO {ad_priority} (aid, priority) VALUES ($ad->aid, 0)"); + } + } + + return $ret; +} +