f844742ccb1d0a425d54123fb633480a38b6215b
[ctracker.git] / libs / lib_updates.php
1 <?php
2 /**
3  * Automatic database updates
4  *
5  * @author              Roland Haeder <webmaster@ship-simu.org>
6  * @version             3.0.0
7  * @copyright   Copyright (c) 2009 - 2011 Cracker Tracker Team
8  * @license             GNU GPL 3.0 or any newer version
9  * @link                http://www.ship-simu.org
10  *
11  * This program is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation, either version 3 of the License, or
14  * (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program. If not, see <http://www.gnu.org/licenses/>.
23  */
24
25 // Init all updates
26 function crackerTrackerInitUpdates () {
27         // Add all
28         $GLOBALS['ctracker_updates'] = array(
29                 // Ticket system:
30                 0 => array(
31                         'CREATE TABLE IF NOT EXISTS `ctracker_ticket` (
32 `ctracker_ticket` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
33 `ctracker_ticket_remote_addr` varchar(15) NOT NULL,
34 `ctracker_ticket_user_agent` tinytext NOT NULL,
35 `ctracker_ticket_name` varchar(255) NOT NULL,
36 `ctracker_ticket_email` varchar(255) NOT NULL,
37 `ctracker_ticket_comment` tinytext NOT NULL,
38 PRIMARY KEY ( `ctracker_ticket` ),
39 UNIQUE KEY (`ctracker_ticket_remote_addr`)
40 ) TYPE=InnoDB',
41                         'CREATE TABLE IF NOT EXISTS `ctracker_ticket_data` (
42 `ctracker_ticket_data_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
43 `ctracker_ticket_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
44 `ctracker_data_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
45 PRIMARY KEY ( `ctracker_ticket_data_id` ),
46 UNIQUE KEY `ctracker_ticket_data` ( `ctracker_ticket_id`, `ctracker_data_id` ),
47 INDEX ( `ctracker_data_id` ),
48 FOREIGN KEY ( `ctracker_ticket_id` ) REFERENCES `' . $GLOBALS['ctracker_dbname'] . '`.`ctracker_ticket` (
49 `ctracker_ticket`
50 ) ON DELETE CASCADE,
51 FOREIGN KEY ( `ctracker_data_id` ) REFERENCES `' . $GLOBALS['ctracker_dbname'] . '`.`ctracker_data` (
52 `id`
53 ) ON DELETE CASCADE
54 ) TYPE=InnoDB',
55                 ),
56
57                 // NULL for missing values
58                 1 => array(
59                         "ALTER TABLE `ctracker_data` CHANGE `script_name` `script_name` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Full script name'",
60                         "UPDATE `ctracker_data` SET `script_name`=NULL WHERE `script_name`=''",
61                         "ALTER TABLE `ctracker_data` CHANGE `server_name` `server_name` TINYTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Server''s host name'",
62                         "UPDATE `ctracker_data` SET `server_name`=NULL WHERE `server_name`=''",
63                 ),
64
65                 // Also store proxy address
66                 2 => array(
67                         'ALTER TABLE `ctracker_data` ADD `proxy_addr` VARCHAR(15) NULL DEFAULT NULL',
68                         'ALTER TABLE `ctracker_ticket` ADD `ctracker_ticket_proxy_addr` VARCHAR(15) NULL DEFAULT NULL',
69                 ),
70
71                 // Better key for always repeating query
72                 3 => array(
73                         'ALTER TABLE `ctracker`.`ctracker_data` ADD INDEX `remote_proxy_last` ( `remote_addr`, `proxy_addr` )',
74                 ),
75         );
76 }
77
78 // Runs the given updates at number X
79 function runCrackerTrackerUpdates ($update) {
80         // We assume it is set
81         foreach ($GLOBALS['ctracker_updates'][$update] as $sql) {
82                 // Run the SQL command
83                 runCrackerTrackerSql($sql, __FUNCTION__, __LINE__);
84         } // END - foreach
85 }
86
87 // [EOF]
88 ?>