| 
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  |