pierre@1
|
1 <?php |
pierre@1
|
2 // $Id: ad_channel.install,v 1.1.4.3 2009/03/05 21:20:36 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 |