2 /*=====================================================================*\
3 || ###################################################################
4 || # Bugdar [#]version[#]
5 || # Copyright ©2002-[#]year[#] 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 [#]gpl[#] 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 require_once('./global.php');
29 // ###################################################################
31 if ($bugsys->in
['mark'] == 0)
34 <h1
>Welcome to Bugdar
</h1
>
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
>
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
>
40 <p
>To begin the installation process
, please click the button below
.</p
>
44 // ###################################################################
46 if ($bugsys->in
['mark'] == 1)
49 <h1
>Installation Check
</h1
>
51 <style type
="text/css" media
="screen">
56 color
: rgb(255, 0, 0);
60 color
: rgb(0, 150, 0);
65 <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>
67 <strong>MySQL Privileges:</strong>
71 $db->showerrors = false;
73 $pf = $tests[] = ($db->query("CREATE TABLE install_check (col1 VARCHAR(255) NULL);") ? 'pass
' : 'fail
');
74 echo "\n\t<li class=\"$pf\">CREATE TABLE</li>";
76 $pf = $tests[] = ($db->query("INSERT INTO install_check (col1) VALUES ('example
')") ? 'pass
' : 'fail
');
77 echo "\n\t<li class=\"$pf\">INSERT</li>";
79 $pf = $tests[] = ($db->query("UPDATE install_check SET col1 = 'example2
'") ? 'pass
' : 'fail
');
80 echo "\n\t<li class=\"$pf\">UPDATE</li>";
82 $pf = $tests[] = ($db->query("SELECT * FROM install_check") ? 'pass
' : 'fail
');
83 echo "\n\t<li class=\"$pf\">SELECT</li>";
85 $pf = $tests[] = ($db->query("DELETE FROM install_check WHERE col1 = 'example2
'") ? 'pass
' : 'fail
');
86 echo "\n\t<li class=\"$pf\">DELETE</li>";
88 $pf = $tests[] = ($db->query("ALTER TABLE install_check ADD col3 BOOL") ? 'pass
' : 'fail
');
89 echo "\n\t<li class=\"$pf\">ALTER</li>";
91 $pf = $tests[] = ($db->query("ALTER TABLE install_check ADD INDEX (col1)") ? 'pass
' : 'fail
');
92 echo "\n\t<li class=\"$pf\">ALTER ADD INDEX</li>";
94 $pf = $tests[] = ($db->query("REPLACE INTO install_check (col1) VALUES ('example3
')") ? 'pass
' : 'fail
');
95 echo "\n\t<li class=\"$pf\">REPLACE</li>";
97 $pf = $tests[] = ($db->query("OPTIMIZE TABLE install_check") ? 'pass
' : 'fail
');
98 echo "\n\t<li class=\"$pf\">OPTIMIZE</li>";
100 $pf = $tests[] = ($db->query("DROP TABLE install_check") ? 'pass
' : 'fail
');
101 echo "\n\t<li class=\"$pf\">DROP TABLE</li>";
105 $valcount = array_count_values($tests);
106 if ($valcount['fail
'] > 0)
108 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>";
113 // ###################################################################
115 if ($bugsys->in['mark
'] == 2)
118 <h1>Initializing Database</h1>
120 <p>This step will load the tables into your database so the rest of the installation can proceed forward.</p>
124 require_once('./install
/schema
.php
');
126 foreach ($schema AS $table => $query)
129 echo 'Creating table
' . $table . '<br
/>' . "\n";
133 // ###################################################################
135 if ($bugsys->in['mark
'] == 3)
138 <h1>Loading Default Data</h1>
140 <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>
144 require_once('./install
/default_data
.php
');
146 foreach ($data AS $table => $records)
148 foreach ($records AS $record)
150 $fields = $values = array();
151 foreach ($record AS $field => $value)
154 $values[] = addslashes($value);
157 $db->query("INSERT INTO " . TABLE_PREFIX . "$table (" . implode(',', $fields) . ") VALUES ('" . implode("', '", $values) . "')");
160 echo 'Populating table
' . $table . '<br
/>' . "\n";
163 $db->query("INSERT INTO " . TABLE_PREFIX . "language (title, langcode, charset, direction, userselect) VALUES ('English (US
)', 'en_US
', 'utf
-8', 'ltr
', 1)");
164 echo 'Inserting
default language
<br
/>' . "\n";
167 // ###################################################################
169 if ($bugsys->in['mark
'] == 4)
172 <h1>Loading Settings</h1>
174 <p>Default settings are being loaded into the system.</p>
178 require_once('./install
/settings
.php
');
180 foreach ($settings AS $key => $value)
182 $db->query("INSERT INTO " . TABLE_PREFIX . "setting (varname, value) VALUES ('" . $key . "', '" . $db->escape_string($value) . "')");
185 echo 'Settings loaded
...';
189 // ###################################################################
191 if ($bugsys->in['mark
'] == 5)
196 <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>
199 require_once('./includes
/permissions
.php
');
202 echo "Cached settings<br />\n";
205 echo "Cached usergroups<br />\n";
208 echo "Cached statuses<br />\n";
211 echo "Cached priorities<br />\n";
214 echo "Cached severities<br />\n";
217 echo "Cached assignable users/developers<br />\n";
220 echo "Cached resolutions<br />\n";
223 echo "Cached products<br />\n";
226 echo "Cached versions<br />\n";
229 echo "Cached languages<br />\n";
232 echo "Cached user help documentation<br />\n";
235 // ###################################################################
237 if ($bugsys->in['mark
'] == 6)
239 $value = 'http
' . ($_SERVER['HTTPS
'] == 'on
' ? 's
' : '') . '://' . $_SERVER['SERVER_NAME'] . ($_SERVER['SERVER_PORT'] != '80' ? ':' . $_SERVER['SERVER_PORT'] : '') . str_replace('/install/install.php', '', $_SERVER['SCRIPT_NAME']);
241 <h1
>General Settings
</h1
>
243 <p
>These three settings are fundamental in setting up your bug tracking system
. Please fill them in to proceed with the installation
.</p
>
245 <form name
="settings-do" action
="install.php" method
="post">
246 <input type
="hidden" name
="mark" value
="7" />
248 <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
>
249 <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
>
250 <div
><strong
>Webmaster Email
:</strong
> <input type
="text" name
="webmasteremail" size
="50" /></div
>
252 <input type
="submit" name
="submit" value
="Next Step" />
261 // ###################################################################
263 if ($bugsys->in
['mark'] == 7)
266 <h1
>New Administrator
</h1
>
268 <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
>
270 <form name
="user-do" action
="install.php" method
="post">
271 <input type
="hidden" name
="mark" value
="8" />
273 <div
><strong
>Display Name
:</strong
> <input type
="text" name
="displayname" size
="50" /></div
>
274 <div
><strong
>Email Address
:</strong
> <input type
="text" name
="email" size
="50" /></div
>
275 <div
><strong
>Password
:</strong
> <input type
="password" name
="password" size
="50" /></div
>
277 <input type
="submit" name
="submit" value
="Next Step" />
282 $db->query("UPDATE " . TABLE_PREFIX
. "setting SET value = '" . $bugsys->input_escape('trackertitle') . "' WHERE varname = 'trackertitle'");
283 $db->query("UPDATE " . TABLE_PREFIX
. "setting SET value = '" . $bugsys->input_escape('trackerurl') . "' WHERE varname = 'trackerurl'");
284 $db->query("UPDATE " . TABLE_PREFIX
. "setting SET value = '" . $bugsys->input_escape('webmasteremail') . "' WHERE varname = 'webmasteremail'");
291 // ###################################################################
293 if ($bugsys->in
['mark'] == 8)
298 <p
>Your
new user has been added
.</p
>
301 require_once('./includes/api_user.php');
303 // we need to do this here because build_assignedto() uses this data and we don't have it loaded in
304 // the installer, so we need to do it manually
307 $user = new UserAPI($bugsys);
308 $user->set('email', $bugsys->in
['email']);
309 $user->set('displayname', $bugsys->in
['displayname']);
310 $user->set('password', $bugsys->in
['password']);
311 $user->set('showcolors', 1);
312 $user->set('usergroupid', 6, true
, false
); // don't verify because we haven't cached usergroups yet
316 // ###################################################################
320 /*=====================================================================*\
321 || ###################################################################
324 || ###################################################################
325 \*=====================================================================*/