Switch the 'modify' code of admin/field.php to use templates
[bugdar.git] / install / upgrade11.php
1 <?php
2 /*=====================================================================*\
3 || ###################################################################
4 || # Bugdar
5 || # Copyright (c)2004-2009 Blue Static
6 || #
7 || # This program is free software; you can redistribute it and/or modify
8 || # it under the terms of the GNU General Public License as published by
9 || # the Free Software Foundation; version 2 of the License.
10 || #
11 || # This program is distributed in the hope that it will be useful, but
12 || # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 || # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 || # more details.
15 || #
16 || # You should have received a copy of the GNU General Public License along
17 || # with this program; if not, write to the Free Software Foundation, Inc.,
18 || # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
19 || ###################################################################
20 \*=====================================================================*/
21
22 define('STOP_MARK', 5);
23 define('ACTIVE_SITE', 'upgrade11.php');
24
25 require_once('./global.php');
26 require_once('./includes/functions_datastore.php');
27
28 page_start();
29
30 // ###################################################################
31
32 if ($input->in['mark'] == 0)
33 {
34 ?>
35 <h1>Welcome to Bugdar</h1>
36
37 <p>This upgrade will move you from Bugdar 1.1.5 to Bugdar 1.2.0 Beta 1.</p>
38
39 <p>To begin the process, please click the button below.</p>
40 <?php
41 }
42
43 // ###################################################################
44
45 if ($input->in['mark'] == 1)
46 {
47 ?>
48 <h1>Minor Database Table Changes</h1>
49
50 <p>There are a few minor changes made to Bugdar's database schema that need to be propagated.</p>
51 <?php
52
53 $db->query("ALTER TABLE " . TABLE_PREFIX . "comment ADD parselinks BOOL NULL");
54 echo "Adding comment.parselinks to add an option to parse links in comments<br />\n";
55
56 $db->query("ALTER TABLE " . TABLE_PREFIX . "user ADD columnoptions TEXT NULL");
57 echo "Adding user.columnoptions to allow for custom column sorting<br />\n";
58
59 $db->query("ALTER TABLE " . TABLE_PREFIX . "product CHANGE componentmother parentid INT UNSIGNED NULL");
60 echo "Renaming product.componentmother to product.parentid<br />\n";
61
62 $db->query("ALTER TABLE " . TABLE_PREFIX . "version ADD obsolete BOOL NULL");
63 echo "Adding version.obsolete so products cannot be filed against certain versions<br />\n";
64
65 $db->query("ALTER TABLE " . TABLE_PREFIX . "user ADD authid VARCHAR(255) NULL");
66 echo "Adding user.authid for the Authentication API<br />\n";
67
68 echo "... done<br />\n";
69 }
70
71 // ###################################################################
72
73 if ($input->in['mark'] == 2)
74 {
75 ?>
76 <h1>Search Table Changes</h1>
77
78 <p>To support saved searches, a few major modifications need to be performed on the search table.</p>
79 <?php
80
81 $db->query("ALTER TABLE " . TABLE_PREFIX . "search DROP PRIMARY KEY");
82 echo "Dropping current primary key<br />\n";
83
84 $db->query("ALTER TABLE " . TABLE_PREFIX . "search ADD searchid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY");
85 echo "Adding search.searchid as a new primary key<br />\n";
86
87 $db->query("ALTER TABLE " . TABLE_PREFIX . "search ADD name VARCHAR(250) NULL");
88 echo "Adding search.name to allow naming of searches<br />\n";
89
90 $db->query("DELETE FROM " . TABLE_PREFIX . "search");
91 echo "Clearing out all the old searches<br />\n";
92
93 echo "... done<br />\n";
94 }
95
96 // ###################################################################
97
98 if ($input->in['mark'] == 3)
99 {
100 ?>
101 <h1>Custom Field Updates</h1>
102
103 <p>A change was made to the storage of custom bug field data. The data is being migrated to a different database table, but no data will be lost. This may take a few minutes. Do <em>not</em> go onto the next step if you receive any errors here.</p>
104 <?php
105 // gets all the fields
106 $fields = $db->query("SELECT * FROM " . TABLE_PREFIX . "bugfield");
107 foreach ($fields as $field)
108 {
109 // create the database field
110 $db->query("ALTER TABLE " . TABLE_PREFIX . "bug ADD custom$field[fieldid] MEDIUMTEXT NULL");
111
112 echo "Migrating custom$field[fieldid]";
113
114 // update all the data
115 $data = $db->query("SELECT * FROM " . TABLE_PREFIX . "bugvaluefill");
116 foreach ($data as $custom)
117 {
118 echo ".";
119 $db->query("UPDATE " . TABLE_PREFIX . "bug SET custom$field[fieldid] = '" . $db->escape_string($custom["field$field[fieldid]"]) . "' WHERE bugid = $custom[bugid]");
120 }
121 echo "done<br />\n";
122 }
123
124 echo ".... all done<br />\n";
125 }
126
127 // ###################################################################
128
129 if ($input->in['mark'] == 4)
130 {
131 ?>
132 <h1>Database Table Changes</h1>
133
134 <p>A few new features require new database tables, so we're adding those now.</p>
135 <?php
136
137 $db->query("DROP TABLE " . TABLE_PREFIX . "bugvaluefill");
138 echo "Dropping the old storage system for custom field data<br />";
139
140 $db->query("
141 CREATE TABLE " . TABLE_PREFIX . "passwordreset
142 (
143 activatorid VARCHAR(250) NOT NULL,
144 userid INT NOT NULL,
145 dateline INT NOT NULL,
146 PRIMARY KEY (activatorid)
147 )
148 ");
149 echo "Creating passwordreset table to create a 'lost password' functionality<br />\n";
150
151 $db->query("
152 CREATE TABLE " . TABLE_PREFIX . "adminsession
153 (
154 sessionid VARCHAR(250) NOT NULL,
155 userid INT UNSIGNED NOT NULL,
156 dateline INT UNSIGNED NOT NULL,
157 PRIMARY KEY (sessionid)
158 )
159 ");
160 echo "Creating adminsession table to greatly improve the admin control panel security<br />\n";
161
162 $db->query("
163 CREATE TABLE " . TABLE_PREFIX . "template
164 (
165 filename VARCHAR(255) NOT NULL,
166 template TEXT NOT NULL,
167 timestamp INT(10) UNSIGNED NOT NULL,
168 PRIMARY KEY (filename)
169 )
170 ");
171 echo "Creating template table to cache templates in the database to greatly inprove speed<br />\n";
172
173 echo "... done<br />\n";
174 }
175
176 // ###################################################################
177
178 if ($input->in['mark'] == 5)
179 {
180 ?>
181 <h1>Version Number Change</h1>
182
183 <p>This step finishes the upgrade by inreasing your version number.</p>
184
185 <?php
186
187 $db->query("UPDATE " . TABLE_PREFIX . "setting SET value = '1.2.0 Beta 1' WHERE varname = 'trackerversion'");
188 $db->query("REPLACE INTO " . TABLE_PREFIX . "setting (varname, value) VALUES ('authmethod', 'default')");
189 $db->query("REPLACE INTO " . TABLE_PREFIX . "setting (varname, value) VALUES ('columnoptions', '" . $db->escape_string('a:12:{s:5:"bugid";s:1:"1";s:7:"summary";s:1:"2";s:8:"reporter";s:1:"2";s:7:"product";s:1:"3";s:9:"component";s:1:"0";s:7:"version";s:1:"3";s:6:"status";s:1:"4";s:10:"resolution";s:1:"4";s:8:"priority";s:1:"5";s:8:"severity";s:1:"5";s:8:"lastpost";s:1:"6";s:5:"votes";s:1:"0";}') . "')");
190 $db->query("REPLACE INTO " . TABLE_PREFIX . "fieldhelp (keystring, title, body) VALUES ('columnorder', 'Custom Column Ordering', 'You can change the ordering and display of columns on the bug list using these settings. Any column with a position value of &quot;0&quot; will not be displayed in the list. Columns are positioned in the grid with the lowest numbered column starting at the far-left. If columns share a position number, they will be placed in the same column position.')");
191
192 build_user_help();
193 build_settings();
194
195 ?>
196
197 ... done.
198
199 <?php
200 }
201
202 // ###################################################################
203
204 page_end();
205
206 ?>