r1528: In install/installer.php:
[bugdar.git] / install / install.php
1 <?php
2 /*=====================================================================*\
3 || ###################################################################
4 || # Bugdar [#]version[#]
5 || # Copyright ©2002-[#]year[#] 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 [#]gpl[#] 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', 7);
23 define('ACTIVE_SITE', 'install.php');
24
25 require_once('./global.php');
26
27 page_start();
28
29 // ###################################################################
30
31 if ($bugsys->in['mark'] == 0)
32 {
33 ?>
34 <h1>Welcome to Bugdar</h1>
35
36 <p>This installer will take you through the procedure of setting up your Bugdar installation. If you are seeing this message, that means that your configuration file was read properly and that your database is accessible.</p>
37
38 <p>The following steps will initialize your database, place the default settings and data in your database, and finally ask you to enter in some settings to allow you to access the system when the installer finishes.</p>
39
40 <p>To begin the installation process, please click the button below.</p>
41 <?php
42 }
43
44 // ###################################################################
45
46 if ($bugsys->in['mark'] == 1)
47 {
48 ?>
49 <h1>Initializing Database</h1>
50
51 <p>This step will load the tables into your database so the rest of the installation can proceed forward.</p>
52
53 <?php
54
55 require_once('./install/schema.php');
56
57 foreach ($schema AS $table => $query)
58 {
59 $db->query($query);
60 echo 'Creating table ' . $table . '<br />' . "\n";
61 }
62 }
63
64 // ###################################################################
65
66 if ($bugsys->in['mark'] == 2)
67 {
68 ?>
69 <h1>Loading Default Data</h1>
70
71 <p>Default table data for usergroups, statuses, priorities, and other various options are being loaded. This will allow you to use Bugdar with minimal setup.</p>
72
73 <?php
74
75 require_once('./install/default_data.php');
76
77 foreach ($data AS $table => $records)
78 {
79 foreach ($records AS $record)
80 {
81 $fields = $values = array();
82 foreach ($record AS $field => $value)
83 {
84 $fields[] = $field;
85 $values[] = addslashes($value);
86 }
87
88 $db->query("INSERT INTO " . TABLE_PREFIX . "$table (" . implode(',', $fields) . ") VALUES ('" . implode("', '", $values) . "')");
89 }
90
91 echo 'Populating table ' . $table . '<br />' . "\n";
92 }
93
94 $db->query("INSERT INTO " . TABLE_PREFIX . "language (title, langcode, charset, direction, userselect) VALUES ('English (US)', 'en_US', 'utf-8', 'ltr', 1)");
95 echo 'Inserting default language<br />' . "\n";
96 }
97
98 // ###################################################################
99
100 if ($bugsys->in['mark'] == 3)
101 {
102 ?>
103 <h1>Loading Settings</h1>
104
105 <p>Default settings are being loaded into the system.</p>
106
107 <?php
108
109 require_once('./install/settings.php');
110
111 foreach ($settings AS $key => $value)
112 {
113 $db->query("INSERT INTO " . TABLE_PREFIX . "setting (varname, value) VALUES ('" . $key . "', '" . $db->escape_string($value) . "')");
114 }
115
116 echo 'Settings loaded...';
117 }
118
119
120 // ###################################################################
121
122 if ($bugsys->in['mark'] == 4)
123 {
124 ?>
125 <h1>Cache Data</h1>
126
127 <p>In order to make Bugdar as efficient as possible, the system caches the portions of data it can. This reduces the load of your server without compromising usability. Currently the caches are being built.</p>
128 <?php
129
130 require_once('./includes/permissions.php');
131
132 build_settings();
133 echo "Cached settings<br />\n";
134
135 build_usergroups();
136 echo "Cached usergroups<br />\n";
137
138 build_statuses();
139 echo "Cached statuses<br />\n";
140
141 build_priorities();
142 echo "Cached priorities<br />\n";
143
144 build_severities();
145 echo "Cached severities<br />\n";
146
147 build_assignedto();
148 echo "Cached assignable users/developers<br />\n";
149
150 build_resolutions();
151 echo "Cached resolutions<br />\n";
152
153 build_products();
154 echo "Cached products<br />\n";
155
156 build_versions();
157 echo "Cached versions<br />\n";
158
159 build_languages();
160 echo "Cached languages<br />\n";
161
162 build_user_help();
163 echo "Cached user help documentation<br />\n";
164 }
165
166 // ###################################################################
167
168 if ($bugsys->in['mark'] == 5)
169 {
170 $value = 'http' . ($_SERVER['HTTPS'] == 'on' ? 's' : '') . '://' . $_SERVER['SERVER_NAME'] . ($_SERVER['SERVER_PORT'] != '80' ? ':' . $_SERVER['SERVER_PORT'] : '') . str_replace('/install/install.php', '', $_SERVER['SCRIPT_NAME']);
171 ?>
172 <h1>General Settings</h1>
173
174 <p>These three settings are fundamental in setting up your bug tracking system. Please fill them in to proceed with the installation.</p>
175
176 <form name="settings-do" action="install.php" method="post">
177 <input type="hidden" name="mark" value="6" />
178
179 <div><strong>Tracker Name (the name of the entire tracking system, for instance "Acme Inc. Bug Tracker"):</strong> <input type="text" name="trackertitle" size="50" /></div>
180 <div><strong>Tracker URL (the root URL of your tracker, we have tried to guess this for you; <em>it does not end with a trailing slash!</em>):</strong> <input type="text" name="trackerurl" size="50" value="<?php echo $value; ?>" /></div>
181 <div><strong>Webmaster Email:</strong> <input type="text" name="webmasteremail" size="50" /></div>
182
183 <input type="submit" name="submit" value="Next Step" />
184
185 </form>
186
187 <?php
188
189 page_end(false);
190 }
191
192 // ###################################################################
193
194 if ($bugsys->in['mark'] == 6)
195 {
196 ?>
197 <h1>New Administrator</h1>
198
199 <p>Your settings have been saved. Now you must create a new administrative account for yourself. This account will have complete control over the system.</p>
200
201 <form name="user-do" action="install.php" method="post">
202 <input type="hidden" name="mark" value="7" />
203
204 <div><strong>Display Name:</strong> <input type="text" name="displayname" size="50" /></div>
205 <div><strong>Email Address:</strong> <input type="text" name="email" size="50" /></div>
206 <div><strong>Password:</strong> <input type="password" name="password" size="50" /></div>
207
208 <input type="submit" name="submit" value="Next Step" />
209 </form>
210
211 <?php
212
213 $db->query("UPDATE " . TABLE_PREFIX . "setting SET value = '" . $bugsys->input_escape('trackertitle') . "' WHERE varname = 'trackertitle'");
214 $db->query("UPDATE " . TABLE_PREFIX . "setting SET value = '" . $bugsys->input_escape('trackerurl') . "' WHERE varname = 'trackerurl'");
215 $db->query("UPDATE " . TABLE_PREFIX . "setting SET value = '" . $bugsys->input_escape('webmasteremail') . "' WHERE varname = 'webmasteremail'");
216
217 page_end(false);
218 }
219
220 // ###################################################################
221
222 if ($bugsys->in['mark'] == 7)
223 {
224 ?>
225 <h1>User Added</h1>
226
227 <p>Your new user has been added.</p>
228 <?php
229
230 require_once('./includes/api_user.php');
231
232 // we need to do this here because build_assignedto() uses this data and we don't have it loaded in
233 // the installer, so we need to do it manually
234 build_usergroups();
235
236 $user = new UserAPI($bugsys);
237 $user->set('email', $bugsys->in['email']);
238 $user->set('displayname', $bugsys->in['displayname']);
239 $user->set('password', $bugsys->in['password']);
240 $user->set('showcolors', 1);
241 $user->set('usergroupid', 6, true, false); // don't verify because we haven't cached usergroups yet
242 $user->insert();
243 }
244
245 // ###################################################################
246
247 page_end();
248
249 /*=====================================================================*\
250 || ###################################################################
251 || # $HeadURL$
252 || # $Id$
253 || ###################################################################
254 \*=====================================================================*/
255 ?>