2 /*=====================================================================*\
3 || ###################################################################
5 || # Copyright ©2002-2007 Blue Static
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.
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
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 \*=====================================================================*/
22 define('STOP_MARK', 8);
23 define('ACTIVE_SITE', 'install.php');
25 // the collation used for installation
26 $COLLATION = 'utf8_general_ci';
28 require_once('./global.php');
32 // ###################################################################
34 if ($input->in
['mark'] == 0)
37 <h1
>Welcome to Bugdar
</h1
>
39 <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
>
41 <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
>
43 <p
>To begin the installation process
, please click the button below
.</p
>
47 // ###################################################################
49 if ($input->in
['mark'] == 1)
52 <h1
>Installation Check
</h1
>
54 <style type
="text/css" media
="screen">
59 color
: rgb(255, 0, 0);
63 color
: rgb(0, 150, 0);
68 <p
>This step will ensure that Bugdar can install
and run properly
. In all of these tests
, <span
class="pass">green means the test succeeded
</span
> and <span
class="fail">red means it didn
't</span>.</p>
70 <strong>MySQL Privileges:</strong>
74 $db->showerrors = false;
76 $pf = $tests[] = ($db->query("CREATE TABLE install_check (col1 VARCHAR(255) NULL);") ? 'pass
' : 'fail
');
77 echo "\n\t<li class=\"$pf\">CREATE TABLE</li>";
79 $pf = $tests[] = ($db->query("INSERT INTO install_check (col1) VALUES ('example
')") ? 'pass
' : 'fail
');
80 echo "\n\t<li class=\"$pf\">INSERT</li>";
82 $pf = $tests[] = ($db->query("UPDATE install_check SET col1 = 'example2
'") ? 'pass
' : 'fail
');
83 echo "\n\t<li class=\"$pf\">UPDATE</li>";
85 $pf = $tests[] = ($db->query("SELECT * FROM install_check") ? 'pass
' : 'fail
');
86 echo "\n\t<li class=\"$pf\">SELECT</li>";
88 $pf = $tests[] = ($db->query("DELETE FROM install_check WHERE col1 = 'example2
'") ? 'pass
' : 'fail
');
89 echo "\n\t<li class=\"$pf\">DELETE</li>";
91 $pf = $tests[] = ($db->query("ALTER TABLE install_check ADD col3 BOOL") ? 'pass
' : 'fail
');
92 echo "\n\t<li class=\"$pf\">ALTER</li>";
94 $pf = $tests[] = ($db->query("ALTER TABLE install_check ADD INDEX (col1)") ? 'pass
' : 'fail
');
95 echo "\n\t<li class=\"$pf\">ALTER ADD INDEX</li>";
97 $pf = $tests[] = ($db->query("REPLACE INTO install_check (col1) VALUES ('example3
')") ? 'pass
' : 'fail
');
98 echo "\n\t<li class=\"$pf\">REPLACE</li>";
100 $pf = $tests[] = ($db->query("OPTIMIZE TABLE install_check") ? 'pass
' : 'fail
');
101 echo "\n\t<li class=\"$pf\">OPTIMIZE</li>";
103 $pf = $tests[] = ($db->query("DROP TABLE install_check") ? 'pass
' : 'fail
');
104 echo "\n\t<li class=\"$pf\">DROP TABLE</li>";
108 $valcount = array_count_values($tests);
109 if ($valcount['fail
'] > 0)
111 echo "<p>Please adjust your MySQL setup and refresh this page to ensure that Bugdar can operate properly. If you do not do so, Bugdar cannot be installed.</p>";
116 // ###################################################################
118 if ($input->in['mark
'] == 2)
121 <h1>Initializing Database</h1>
123 <p>This step will load the tables into your database so the rest of the installation can proceed forward.</p>
127 require './includes
/config
.php
';
128 $db->query("ALTER DATABASE $database COLLATE $COLLATION");
130 require_once('./install
/schema
.php
');
132 foreach ($schema AS $table => $query)
135 echo 'Creating table
' . $table . '<br
/>' . "\n";
139 // ###################################################################
141 if ($input->in['mark
'] == 3)
144 <h1>Loading Default Data</h1>
146 <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>
150 require_once('./install
/default_data
.php
');
152 foreach ($data AS $table => $records)
154 foreach ($records AS $record)
156 $fields = $values = array();
157 foreach ($record AS $field => $value)
160 $values[] = addslashes($value);
163 $db->query("INSERT INTO " . TABLE_PREFIX . "$table (" . implode(',', $fields) . ") VALUES ('" . implode("', '", $values) . "')");
166 echo 'Populating table
' . $table . '<br
/>' . "\n";
169 $db->query("INSERT INTO " . TABLE_PREFIX . "language (title, langcode, charset, direction, userselect) VALUES ('English (US
)', 'en_US
', 'utf
-8', 'ltr
', 1)");
170 echo 'Inserting
default language
<br
/>' . "\n";
173 // ###################################################################
175 if ($input->in['mark
'] == 4)
178 <h1>Loading Settings</h1>
180 <p>Default settings are being loaded into the system.</p>
184 require_once('./install
/settings
.php
');
186 foreach ($settings AS $key => $value)
188 $db->query("INSERT INTO " . TABLE_PREFIX . "setting (varname, value) VALUES ('" . $key . "', '" . $db->escape_string($value) . "')");
191 echo 'Settings loaded
...';
195 // ###################################################################
197 if ($input->in['mark
'] == 5)
202 <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>
205 require_once('./includes
/permissions
.php
');
208 echo "Cached settings<br />\n";
211 echo "Cached usergroups<br />\n";
214 echo "Cached statuses<br />\n";
217 echo "Cached priorities<br />\n";
220 echo "Cached severities<br />\n";
223 echo "Cached assignable users/developers<br />\n";
226 echo "Cached resolutions<br />\n";
229 echo "Cached products<br />\n";
232 echo "Cached versions<br />\n";
235 echo "Cached languages<br />\n";
238 echo "Cached user help documentation<br />\n";
241 // ###################################################################
243 if ($input->in['mark
'] == 6)
245 $value = 'http
' . ($_SERVER['HTTPS
'] == 'on
' ? 's
' : '') . '://' . $_SERVER['SERVER_NAME'] . ($_SERVER['SERVER_PORT'] != '80' ? ':' . $_SERVER['SERVER_PORT'] : '') . str_replace('/install/install.php', '', $_SERVER['SCRIPT_NAME']);
247 <h1
>General Settings
</h1
>
249 <p
>These three settings are fundamental in setting up your bug tracking system
. Please fill them in to proceed with the installation
.</p
>
251 <form name
="settings-do" action
="install.php" method
="post">
252 <input type
="hidden" name
="mark" value
="7" />
254 <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
>
255 <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
>
256 <div
><strong
>Webmaster Email
:</strong
> <input type
="text" name
="webmasteremail" size
="50" /></div
>
258 <input type
="submit" name
="submit" value
="Next Step" />
267 // ###################################################################
269 if ($input->in
['mark'] == 7)
272 <h1
>New Administrator
</h1
>
274 <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
>
276 <form name
="user-do" action
="install.php" method
="post">
277 <input type
="hidden" name
="mark" value
="8" />
279 <div
><strong
>Display Name
:</strong
> <input type
="text" name
="displayname" size
="50" /></div
>
280 <div
><strong
>Email Address
:</strong
> <input type
="text" name
="email" size
="50" /></div
>
281 <div
><strong
>Password
:</strong
> <input type
="password" name
="password" size
="50" /></div
>
283 <input type
="submit" name
="submit" value
="Next Step" />
288 $db->query("UPDATE " . TABLE_PREFIX
. "setting SET value = '" . $bugsys->input_escape('trackertitle') . "' WHERE varname = 'trackertitle'");
289 $db->query("UPDATE " . TABLE_PREFIX
. "setting SET value = '" . $bugsys->input_escape('trackerurl') . "' WHERE varname = 'trackerurl'");
290 $db->query("UPDATE " . TABLE_PREFIX
. "setting SET value = '" . $bugsys->input_escape('webmasteremail') . "' WHERE varname = 'webmasteremail'");
297 // ###################################################################
299 if ($input->in
['mark'] == 8)
304 <p
>Your
new user has been added
.</p
>
307 require_once('./includes/api_user.php');
309 // we need to do this here because build_assignedto() uses this data and we don't have it loaded in
310 // the installer, so we need to do it manually
313 $user = new UserAPI();
314 $user->set('email', $input->in
['email']);
315 $user->set('displayname', $input->in
['displayname']);
316 $user->set('password', $input->in
['password']);
317 $user->set('showcolors', 1);
318 $user->set('usergroupid', 6, true, false); // don't verify because we haven't cached usergroups yet
322 // ###################################################################
326 /*=====================================================================*\
327 || ###################################################################
330 || ###################################################################
331 \*=====================================================================*/