annotate channel/ad_channel.install @ 2:e5584a19768b ad

maj module ad
author sly
date Wed, 15 Apr 2009 07:58:32 +0000
parents 948362c2a207
children 416ea999ed76
rev   line source
pierre@1 1 <?php
sly@2 2 // $Id: ad_channel.install,v 1.1.4.5 2009/04/09 22:04:49 jeremy Exp $
pierre@1 3
pierre@1 4 /**
pierre@1 5 *
pierre@1 6 * Ad channel database schema.
pierre@1 7 * Copyright (c) 2008-2009 Jeremy Andrews <jeremy@tag1consulting.com>.
pierre@1 8 */
pierre@1 9
pierre@1 10 /**
pierre@1 11 * Create the ad_channel schema.
pierre@1 12 */
pierre@1 13 function ad_channel_install() {
pierre@1 14 switch ($GLOBALS['db_type']) {
pierre@1 15 case 'mysql':
pierre@1 16 case 'mysqli':
pierre@1 17 default:
pierre@1 18 // TODO: PostgreSQL support. Patches welcome.
pierre@1 19 /* The ad_channel table stores channel definitions and rules.
pierre@1 20 */
pierre@1 21 db_query("CREATE TABLE {ad_channel} (
pierre@1 22 chid INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
pierre@1 23 name VARCHAR(64) NOT NULL DEFAULT '',
pierre@1 24 description LONGTEXT NULL,
pierre@1 25 conid INT(11) UNSIGNED NOT NULL DEFAULT '0',
pierre@1 26 weight TINYINT(4) SIGNED NOT NULL DEFAULT '0',
pierre@1 27 display TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
pierre@1 28 urls TEXT NULL,
pierre@1 29 groups TEXT NULL,
pierre@1 30 PRIMARY KEY (chid),
pierre@1 31 KEY (name)
pierre@1 32 );");
pierre@1 33 /* The ad_channel_container table stores channel container definitions.
pierre@1 34 */
pierre@1 35 db_query("CREATE TABLE {ad_channel_container} (
pierre@1 36 conid INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
pierre@1 37 name VARCHAR(64) NOT NULL DEFAULT '',
pierre@1 38 description LONGTEXT NULL,
pierre@1 39 weight TINYINT(4) SIGNED NOT NULL DEFAULT '0',
pierre@1 40 PRIMARY KEY (conid)
pierre@1 41 );");
pierre@1 42 /* The ad_channel_node table stores per node channel information.
pierre@1 43 */
pierre@1 44 db_query("CREATE TABLE {ad_channel_node} (
pierre@1 45 chid INT(11) UNSIGNED NOT NULL DEFAULT '0',
pierre@1 46 nid INT(11) UNSIGNED NOT NULL DEFAULT '0',
pierre@1 47 PRIMARY KEY (chid, nid),
pierre@1 48 KEY (nid, chid)
pierre@1 49 );");
pierre@1 50 /* The ad_channel_node table stores per node channel information.
pierre@1 51 */
pierre@1 52 db_query("CREATE TABLE {ad_priority} (
pierre@1 53 aid INT(11) UNSIGNED NOT NULL DEFAULT '0',
pierre@1 54 priority TINYINT UNSIGNED NOT NULL DEFAULT '0',
pierre@1 55 PRIMARY KEY (aid, priority)
pierre@1 56 );");
pierre@1 57 }
pierre@1 58 }
pierre@1 59
pierre@1 60 /**
pierre@1 61 * Completely uninstall the ad channel module.
pierre@1 62 */
pierre@1 63 function ad_channel_uninstall() {
pierre@1 64 switch ($GLOBALS['db_type']) {
pierre@1 65 case 'mysql':
pierre@1 66 case 'mysqli':
pierre@1 67 default:
pierre@1 68 // TODO: PostgreSQL support. Patches welcome.
pierre@1 69 db_query('DROP TABLE {ad_channel}');
pierre@1 70 db_query('DROP TABLE {ad_channel_container}');
pierre@1 71 db_query('DROP TABLE {ad_channel_node}');
pierre@1 72 }
pierre@1 73 }
pierre@1 74
pierre@1 75 /**
pierre@1 76 * Populate the ad_priority table.
pierre@1 77 */
pierre@1 78 function ad_channel_update_6001() {
pierre@1 79 $ret = array();
pierre@1 80
pierre@1 81 $result = db_query('SELECT a.aid, p.priority FROM {ads} a LEFT JOIN {ad_priority} p ON a.aid = p.aid');
pierre@1 82 while ($ad = db_fetch_object($result)) {
pierre@1 83 if (!isset($ad->priority)) {
pierre@1 84 $ret[] = update_sql("INSERT INTO {ad_priority} (aid, priority) VALUES ($ad->aid, 0)");
pierre@1 85 }
pierre@1 86 }
pierre@1 87
pierre@1 88 return $ret;
pierre@1 89 }
pierre@1 90
sly@2 91 /**
sly@2 92 * Rebuild the menu so that channels and containers can be deleted.
sly@2 93 */
sly@2 94 function ad_channel_update_6002() {
sly@2 95 cache_clear_all();
sly@2 96 menu_rebuild();
sly@2 97 return array();
sly@2 98 }
sly@2 99
sly@2 100 /**
sly@2 101 * Introduce no_channel_weight.
sly@2 102 */
sly@2 103 function ad_channel_update_6003() {
sly@2 104 $ret = array();
sly@2 105 $ret[] = update_sql("ALTER TABLE {ad_channel} ADD no_channel_weight INT(3) NOT NULL DEFAULT '0'");
sly@2 106 return $ret;
sly@2 107 }
sly@2 108