r992: Use an API to insert the admin user
[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', 8);
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 ($query 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, languagecode, charset, direction, filename, userselect, debug) VALUES ('English (US)', 'en', 'utf-8', 'ltr', './includes/strings/english-us.strings.xml', 1, 0)");
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 class dummy { function string() {} }
110 $lang = new dummy();
111
112 require_once('./includes/settings.php');
113
114 foreach ($config AS $varname => $setting)
115 {
116 $db->query("INSERT INTO " . TABLE_PREFIX . "setting (varname, value) VALUES ('" . $varname . "', '" . addslashes($setting[3]) . "')");
117 }
118
119 echo 'Settings loaded...';
120 }
121
122 // ###################################################################
123
124 if ($bugsys->in['mark'] == 4)
125 {
126 $value = 'http' . ($_SERVER['HTTPS'] == 'on' ? 's' : '') . '://' . $_SERVER['SERVER_NAME'] . ($_SERVER['SERVER_PORT'] != '80' ? ':' . $_SERVER['SERVER_PORT'] : '') . str_replace('/install/install.php', '', $_SERVER['SCRIPT_NAME']);
127 ?>
128 <h1>General Settings</h1>
129
130 <p>These three settings are fundamental in setting up your bug tracking system. Please fill them in to proceed with the installation.</p>
131
132 <form name="settings-do" action="install.php" method="post">
133 <input type="hidden" name="mark" value="5" />
134
135 <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>
136 <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="<?= $value ?>" /></div>
137 <div><strong>Webmaster Email:</strong> <input type="text" name="webmasteremail" size="50" /></div>
138
139 <input type="submit" name="submit" value="Next Step" />
140
141 </form>
142
143 <?php
144
145 page_end(false);
146 }
147
148 // ###################################################################
149
150 if ($bugsys->in['mark'] == 5)
151 {
152 ?>
153 <h1>New Administrator</h1>
154
155 <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>
156
157 <form name="user-do" action="install.php" method="post">
158 <input type="hidden" name="mark" value="6" />
159
160 <div><strong>Display Name:</strong> <input type="text" name="displayname" size="50" /></div>
161 <div><strong>Email Address:</strong> <input type="text" name="email" size="50" /></div>
162 <div><strong>Password:</strong> <input type="password" name="password" size="50" /></div>
163
164 <input type="submit" name="submit" value="Next Step" />
165 </form>
166
167 <?php
168
169 $db->query("UPDATE " . TABLE_PREFIX . "setting SET value = '" . $bugsys->in['trackertitle'] . "' WHERE varname = 'trackertitle'");
170 $db->query("UPDATE " . TABLE_PREFIX . "setting SET value = '" . $bugsys->in['trackerurl'] . "' WHERE varname = 'trackerurl'");
171 $db->query("UPDATE " . TABLE_PREFIX . "setting SET value = '" . $bugsys->in['webmasteremail'] . "' WHERE varname = 'webmasteremail'");
172
173 page_end(false);
174 }
175
176 // ###################################################################
177
178 if ($bugsys->in['mark'] == 6)
179 {
180 ?>
181 <h1>User Added</h1>
182
183 <p>Your new user has been added.</p>
184 <?php
185
186 require_once('./includes/api_user.php');
187
188 $user = new UserAPI($bugsys);
189 $user->set('email', $bugsys->in['email']);
190 $user->set('displayname', $bugsys->in['displayname']);
191 $user->set('password', $bugsys->in['password']);
192 $user->set('usergroupid', 6);
193 $user->insert();
194 }
195
196 // ###################################################################
197
198 if ($bugsys->in['mark'] == 7)
199 {
200 ?>
201 <h1>Cache Data</h1>
202
203 <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>
204 <?php
205
206 require_once('./includes/permissions.php');
207
208 build_settings();
209 echo "Cached settings<br />\n";
210
211 build_usergroups();
212 echo "Cached usergroups<br />\n";
213
214 build_statuses();
215 echo "Cached statuses<br />\n";
216
217 build_priorities();
218 echo "Cached priorities<br />\n";
219
220 build_severities();
221 echo "Cached severities<br />\n";
222
223 build_assignedto();
224 echo "Cached assignable users/developers<br />\n";
225
226 build_resolutions();
227 echo "Cached resolutions<br />\n";
228
229 build_products();
230 echo "Cached products<br />\n";
231
232 build_versions();
233 echo "Cached versions<br />\n";
234
235 build_user_help();
236 echo "Cached user help documentation<br />\n";
237 }
238
239 // ###################################################################
240
241 if ($bugsys->in['mark'] == 8)
242 {
243 ?>
244 <h1>Load Language Strings</h1>
245
246 <p>Bugdar's flexible language system caches all of the strings in the database. Currently, the strings are being read from the raw file into the cache.</p>
247 <?php
248
249 class dummy { function setlex() {} function string() {} }
250 $lang = new dummy();
251
252 $bugsys->load('xml', 'xml');
253
254 build_languages();
255
256 require_once('./includes/language.php');
257 build_language_cache(1);
258 }
259
260 // ###################################################################
261
262 page_end();
263
264 /*=====================================================================*\
265 || ###################################################################
266 || # $HeadURL$
267 || # $Id$
268 || ###################################################################
269 \*=====================================================================*/
270 ?>