Verzeichnisstruktur phpBB-2.0.0
- Veröffentlicht
- 03.04.2002
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
install.php
0001 <?php
0002 /***************************************************************************
0003 * install.php
0004 * -------------------
0005 * begin : Tuesday, Sept 11, 2001
0006 * copyright : (C) 2001 The phpBB Group
0007 * email : support@phpbb.com
0008 *
0009 * $Id$
0010 *
0011 ***************************************************************************/
0012
0013 /***************************************************************************
0014 *
0015 * This program is free software; you can redistribute it and/or modify
0016 * it under the terms of the GNU General Public License as published by
0017 * the Free Software Foundation; either version 2 of the License, or
0018 * (at your option) any later version.
0019 *
0020 ***************************************************************************/
0021
0022 // ---------
0023 // FUNCTIONS
0024 //
0025 function page_header($text, $form_action = false)
0026 {
0027 global $phpEx, $lang;
0028
0029 ?>
0030 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
0031 <html>
0032 <head>
0033 <meta http-equiv="Content-Type" content="text/html; charset=<?php echo $lang['ENCODING']; ?>">
0034 <meta http-equiv="Content-Style-Type" content="text/css">
0035 <title><?php echo $lang['Welcome_install'];?></title>
0036 <link rel="stylesheet" href="../templates/subSilver/subSilver.css" type="text/css">
0037 <style type="text/css">
0038 <!--
0039 th { background-image: url('../templates/subSilver/images/cellpic3.gif') }
0040 td.cat { background-image: url('../templates/subSilver/images/cellpic1.gif') }
0041 td.rowpic { background-image: url('../templates/subSilver/images/cellpic2.jpg'); background-repeat: repeat-y }
0042 td.catHead,td.catSides,td.catLeft,td.catRight,td.catBottom { background-image: url('../templates/subSilver/images/cellpic1.gif') }
0043
0044 /* Import the fancy styles for IE only (NS4.x doesn't use the @import function) */
0045 @import url("../templates/subSilver/formIE.css");
0046 //-->
0047 </style>
0048 </head>
0049 <body bgcolor="#E5E5E5" text="#000000" link="#006699" vlink="#5584AA">
0050
0051 <table width="100%" border="0" cellspacing="0" cellpadding="10" align="center">
0052 <tr>
0053 <td class="bodyline" width="100%"><table width="100%" border="0" cellspacing="0" cellpadding="0">
0054 <tr>
0055 <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
0056 <tr>
0057 <td><img src="../templates/subSilver/images/logo_phpBB.gif" border="0" alt="Forum Home" vspace="1" /></td>
0058 <td align="center" width="100%" valign="middle"><span class="maintitle"><?php echo $lang['Welcome_install'];?></span></td>
0059 </tr>
0060 </table></td>
0061 </tr>
0062 <tr>
0063 <td><br /><br /></td>
0064 </tr>
0065 <tr>
0066 <td colspan="2"><table width="90%" border="0" align="center" cellspacing="0" cellpadding="0">
0067 <tr>
0068 <td><span class="gen"><?php echo $text; ?></span></td>
0069 </tr>
0070 </table></td>
0071 </tr>
0072 <tr>
0073 <td><br /><br /></td>
0074 </tr>
0075 <tr>
0076 <td width="100%"><table width="100%" cellpadding="2" cellspacing="1" border="0" class="forumline"><form action="<?php echo ($form_action) ? $form_action : 'install.'.$phpEx; ?>" name="install" method="post">
0077 <?php
0078
0079 }
0080
0081 function page_footer()
0082 {
0083
0084 ?>
0085 </table></form></td>
0086 </tr>
0087 </table></td>
0088 </tr>
0089 </table>
0090
0091 </body>
0092 </html>
0093 <?php
0094
0095 }
0096
0097 function page_common_form($hidden, $submit)
0098 {
0099
0100 ?>
0101 <tr>
0102 <td class="catBottom" align="center" colspan="2"><?php echo $hidden; ?><input class="mainoption" type="submit" value="<?php echo $submit; ?>" /></td>
0103 </tr>
0104 <?php
0105
0106 }
0107
0108 function page_upgrade_form()
0109 {
0110 global $lang;
0111
0112 ?>
0113 <tr>
0114 <td class="catBottom" align="center" colspan="2"><?php echo $lang['continue_upgrade']; ?></td>
0115 </tr>
0116 <tr>
0117 <td class="catBottom" align="center" colspan="2"><input type="submit" name="upgrade_now" value="<?php echo $lang['upgrade_submit']; ?>" /></td>
0118 </tr>
0119 <?php
0120
0121 }
0122
0123 function page_error($error_title, $error)
0124 {
0125
0126 ?>
0127 <tr>
0128 <th><?php echo $error_title; ?></th>
0129 </tr>
0130 <tr>
0131 <td class="row1" align="center"><span class="gen"><?php echo $error; ?></span></td>
0132 </tr>
0133 <?php
0134
0135 }
0136
0137 // Guess an initial language ... borrowed from phpBB 2.2 it's not perfect,
0138 // really it should do a straight match first pass and then try a "fuzzy"
0139 // match on a second pass instead of a straight "fuzzy" match.
0140 function guess_lang()
0141 {
0142 global $phpbb_root_path, $HTTP_SERVER_VARS;
0143
0144 // The order here _is_ important, at least for major_minor
0145 // matches. Don't go moving these around without checking with
0146 // me first - psoTFX
0147 $match_lang = array(
0148 'arabic' => 'ar([_-][a-z]+)?',
0149 'bulgarian' => 'bg',
0150 'catalan' => 'ca',
0151 'czech' => 'cs',
0152 'danish' => 'da',
0153 'german' => 'de([_-][a-z]+)?',
0154 'english' => 'en([_-][a-z]+)?',
0155 'estonian' => 'et',
0156 'finnish' => 'fi',
0157 'french' => 'fr([_-][a-z]+)?',
0158 'greek' => 'el',
0159 'spanish_argentina' => 'es[_-]ar',
0160 'spanish' => 'es([_-][a-z]+)?',
0161 'gaelic' => 'gd',
0162 'galego' => 'gl',
0163 'gujarati' => 'gu',
0164 'hebrew' => 'he',
0165 'hindi' => 'hi',
0166 'croatian' => 'hr',
0167 'hungarian' => 'hu',
0168 'icelandic' => 'is',
0169 'indonesian' => 'id([_-][a-z]+)?',
0170 'italian' => 'it([_-][a-z]+)?',
0171 'japanese' => 'ja([_-][a-z]+)?',
0172 'korean' => 'ko([_-][a-z]+)?',
0173 'latvian' => 'lv',
0174 'lithuanian' => 'lt',
0175 'macedonian' => 'mk',
0176 'dutch' => 'nl([_-][a-z]+)?',
0177 'norwegian' => 'no',
0178 'punjabi' => 'pa',
0179 'polish' => 'pl',
0180 'portuguese_brazil' => 'pt[_-]br',
0181 'portuguese' => 'pt([_-][a-z]+)?',
0182 'romanian' => 'ro([_-][a-z]+)?',
0183 'russian' => 'ru([_-][a-z]+)?',
0184 'slovenian' => 'sl([_-][a-z]+)?',
0185 'albanian' => 'sq',
0186 'serbian' => 'sr([_-][a-z]+)?',
0187 'slovak' => 'sv([_-][a-z]+)?',
0188 'swedish' => 'sv([_-][a-z]+)?',
0189 'thai' => 'th([_-][a-z]+)?',
0190 'turkish' => 'tr([_-][a-z]+)?',
0191 'ukranian' => 'uk([_-][a-z]+)?',
0192 'urdu' => 'ur',
0193 'viatnamese' => 'vi',
0194 'chinese_traditional_taiwan'=> 'zh[_-]tw',
0195 'chinese_simplified' => 'zh',
0196 );
0197
0198 if (isset($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE']))
0199 {
0200 $accept_lang_ary = explode(',', $HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE']);
0201 for ($i = 0; $i < sizeof($accept_lang_ary); $i++)
0202 {
0203 @reset($match_lang);
0204 while (list($lang, $match) = each($match_lang))
0205 {
0206 if (preg_match('#' . $match . '#i', trim($accept_lang_ary[$i])))
0207 {
0208 if (file_exists(@phpbb_realpath($phpbb_root_path . 'language/lang_' . $lang)))
0209 {
0210 return $lang;
0211 }
0212 }
0213 }
0214 }
0215 }
0216
0217 return 'english';
0218
0219 }
0220 //
0221 // FUNCTIONS
0222 // ---------
0223
0224 // Begin
0225 error_reporting (E_ERROR | E_WARNING | E_PARSE); // This will NOT report uninitialized variables
0226 set_magic_quotes_runtime(0); // Disable magic_quotes_runtime
0227
0228 // PHP5 with register_long_arrays off?
0229 if (!isset($HTTP_POST_VARS) && isset($_POST))
0230 {
0231 $HTTP_POST_VARS = $_POST;
0232 $HTTP_GET_VARS = $_GET;
0233 $HTTP_SERVER_VARS = $_SERVER;
0234 $HTTP_COOKIE_VARS = $_COOKIE;
0235 $HTTP_ENV_VARS = $_ENV;
0236 $HTTP_POST_FILES = $_FILES;
0237
0238 // _SESSION is the only superglobal which is conditionally set
0239 if (isset($_SESSION))
0240 {
0241 $HTTP_SESSION_VARS = $_SESSION;
0242 }
0243 }
0244
0245 // Slash data if it isn't slashed
0246 if (!get_magic_quotes_gpc())
0247 {
0248 if (is_array($HTTP_GET_VARS))
0249 {
0250 while (list($k, $v) = each($HTTP_GET_VARS))
0251 {
0252 if (is_array($HTTP_GET_VARS[$k]))
0253 {
0254 while (list($k2, $v2) = each($HTTP_GET_VARS[$k]))
0255 {
0256 $HTTP_GET_VARS[$k][$k2] = addslashes($v2);
0257 }
0258 @reset($HTTP_GET_VARS[$k]);
0259 }
0260 else
0261 {
0262 $HTTP_GET_VARS[$k] = addslashes($v);
0263 }
0264 }
0265 @reset($HTTP_GET_VARS);
0266 }
0267
0268 if (is_array($HTTP_POST_VARS))
0269 {
0270 while (list($k, $v) = each($HTTP_POST_VARS))
0271 {
0272 if (is_array($HTTP_POST_VARS[$k]))
0273 {
0274 while (list($k2, $v2) = each($HTTP_POST_VARS[$k]))
0275 {
0276 $HTTP_POST_VARS[$k][$k2] = addslashes($v2);
0277 }
0278 @reset($HTTP_POST_VARS[$k]);
0279 }
0280 else
0281 {
0282 $HTTP_POST_VARS[$k] = addslashes($v);
0283 }
0284 }
0285 @reset($HTTP_POST_VARS);
0286 }
0287
0288 if (is_array($HTTP_COOKIE_VARS))
0289 {
0290 while (list($k, $v) = each($HTTP_COOKIE_VARS))
0291 {
0292 if (is_array($HTTP_COOKIE_VARS[$k]))
0293 {
0294 while (list($k2, $v2) = each($HTTP_COOKIE_VARS[$k]))
0295 {
0296 $HTTP_COOKIE_VARS[$k][$k2] = addslashes($v2);
0297 }
0298 @reset($HTTP_COOKIE_VARS[$k]);
0299 }
0300 else
0301 {
0302 $HTTP_COOKIE_VARS[$k] = addslashes($v);
0303 }
0304 }
0305 @reset($HTTP_COOKIE_VARS);
0306 }
0307 }
0308
0309 // Begin main prog
0310 define('IN_PHPBB', true);
0311 // Uncomment the following line to completely disable the ftp option...
0312 // define('NO_FTP', true);
0313 $phpbb_root_path = './../';
0314 include($phpbb_root_path.'extension.inc');
0315
0316 // Initialise some basic arrays
0317 $userdata = array();
0318 $lang = array();
0319 $error = false;
0320
0321 // Include some required functions
0322 include($phpbb_root_path.'includes/constants.'.$phpEx);
0323 include($phpbb_root_path.'includes/functions.'.$phpEx);
0324 include($phpbb_root_path.'includes/sessions.'.$phpEx);
0325
0326 // Define schema info
0327 $available_dbms = array(
0328 'mysql'=> array(
0329 'LABEL' => 'MySQL 3.x',
0330 'SCHEMA' => 'mysql',
0331 'DELIM' => ';',
0332 'DELIM_BASIC' => ';',
0333 'COMMENTS' => 'remove_remarks'
0334 ),
0335 'mysql4' => array(
0336 'LABEL' => 'MySQL 4.x/5.x',
0337 'SCHEMA' => 'mysql',
0338 'DELIM' => ';',
0339 'DELIM_BASIC' => ';',
0340 'COMMENTS' => 'remove_remarks'
0341 ),
0342 'postgres' => array(
0343 'LABEL' => 'PostgreSQL 7.x',
0344 'SCHEMA' => 'postgres',
0345 'DELIM' => ';',
0346 'DELIM_BASIC' => ';',
0347 'COMMENTS' => 'remove_comments'
0348 ),
0349 'mssql' => array(
0350 'LABEL' => 'MS SQL Server 7/2000',
0351 'SCHEMA' => 'mssql',
0352 'DELIM' => 'GO',
0353 'DELIM_BASIC' => ';',
0354 'COMMENTS' => 'remove_comments'
0355 ),
0356 'msaccess' => array(
0357 'LABEL' => 'MS Access [ ODBC ]',
0358 'SCHEMA' => '',
0359 'DELIM' => '',
0360 'DELIM_BASIC' => ';',
0361 'COMMENTS' => ''
0362 ),
0363 'mssql-odbc' => array(
0364 'LABEL' => 'MS SQL Server [ ODBC ]',
0365 'SCHEMA' => 'mssql',
0366 'DELIM' => 'GO',
0367 'DELIM_BASIC' => ';',
0368 'COMMENTS' => 'remove_comments'
0369 )
0370 );
0371
0372 // Obtain various vars
0373 $confirm = (isset($HTTP_POST_VARS['confirm'])) ? true : false;
0374 $cancel = (isset($HTTP_POST_VARS['cancel'])) ? true : false;
0375
0376 if (isset($HTTP_POST_VARS['install_step']) || isset($HTTP_GET_VARS['install_step']))
0377 {
0378 $install_step = (isset($HTTP_POST_VARS['install_step'])) ? $HTTP_POST_VARS['install_step'] : $HTTP_GET_VARS['install_step'];
0379 }
0380 else
0381 {
0382 $install_step = '';
0383 }
0384
0385 $upgrade = (!empty($HTTP_POST_VARS['upgrade'])) ? $HTTP_POST_VARS['upgrade']: '';
0386 $upgrade_now = (!empty($HTTP_POST_VARS['upgrade_now'])) ? $HTTP_POST_VARS['upgrade_now']:'';
0387
0388 $dbms = isset($HTTP_POST_VARS['dbms']) ? $HTTP_POST_VARS['dbms'] : '';
0389
0390 $dbhost = (!empty($HTTP_POST_VARS['dbhost'])) ? $HTTP_POST_VARS['dbhost'] : 'localhost';
0391 $dbuser = (!empty($HTTP_POST_VARS['dbuser'])) ? $HTTP_POST_VARS['dbuser'] : '';
0392 $dbpasswd = (!empty($HTTP_POST_VARS['dbpasswd'])) ? $HTTP_POST_VARS['dbpasswd'] : '';
0393 $dbname = (!empty($HTTP_POST_VARS['dbname'])) ? $HTTP_POST_VARS['dbname'] : '';
0394
0395 $table_prefix = (!empty($HTTP_POST_VARS['prefix'])) ? $HTTP_POST_VARS['prefix'] : '';
0396
0397 $admin_name = (!empty($HTTP_POST_VARS['admin_name'])) ? $HTTP_POST_VARS['admin_name'] : '';
0398 $admin_pass1 = (!empty($HTTP_POST_VARS['admin_pass1'])) ? $HTTP_POST_VARS['admin_pass1'] : '';
0399 $admin_pass2 = (!empty($HTTP_POST_VARS['admin_pass2'])) ? $HTTP_POST_VARS['admin_pass2'] : '';
0400
0401 $ftp_path = (!empty($HTTP_POST_VARS['ftp_path'])) ? $HTTP_POST_VARS['ftp_path'] : '';
0402 $ftp_user = (!empty($HTTP_POST_VARS['ftp_user'])) ? $HTTP_POST_VARS['ftp_user'] : '';
0403 $ftp_pass = (!empty($HTTP_POST_VARS['ftp_pass'])) ? $HTTP_POST_VARS['ftp_pass'] : '';
0404
0405 if (isset($HTTP_POST_VARS['lang']) && preg_match('#^[a-z_]+$#', $HTTP_POST_VARS['lang']))
0406 {
0407 $language = strip_tags($HTTP_POST_VARS['lang']);
0408 }
0409 else
0410 {
0411 $language = guess_lang();
0412 }
0413
0414 $board_email = (!empty($HTTP_POST_VARS['board_email'])) ? $HTTP_POST_VARS['board_email'] : '';
0415 $script_path = (!empty($HTTP_POST_VARS['script_path'])) ? $HTTP_POST_VARS['script_path'] : str_replace('install', '', dirname($HTTP_SERVER_VARS['PHP_SELF']));
0416
0417 if (!empty($HTTP_POST_VARS['server_name']))
0418 {
0419 $server_name = $HTTP_POST_VARS['server_name'];
0420 }
0421 else
0422 {
0423 // Guess at some basic info used for install..
0424 if (!empty($HTTP_SERVER_VARS['SERVER_NAME']) || !empty($HTTP_ENV_VARS['SERVER_NAME']))
0425 {
0426 $server_name = (!empty($HTTP_SERVER_VARS['SERVER_NAME'])) ? $HTTP_SERVER_VARS['SERVER_NAME'] : $HTTP_ENV_VARS['SERVER_NAME'];
0427 }
0428 else if (!empty($HTTP_SERVER_VARS['HTTP_HOST']) || !empty($HTTP_ENV_VARS['HTTP_HOST']))
0429 {
0430 $server_name = (!empty($HTTP_SERVER_VARS['HTTP_HOST'])) ? $HTTP_SERVER_VARS['HTTP_HOST'] : $HTTP_ENV_VARS['HTTP_HOST'];
0431 }
0432 else
0433 {
0434 $server_name = '';
0435 }
0436 }
0437
0438 if (!empty($HTTP_POST_VARS['server_port']))
0439 {
0440 $server_port = $HTTP_POST_VARS['server_port'];
0441 }
0442 else
0443 {
0444 if (!empty($HTTP_SERVER_VARS['SERVER_PORT']) || !empty($HTTP_ENV_VARS['SERVER_PORT']))
0445 {
0446 $server_port = (!empty($HTTP_SERVER_VARS['SERVER_PORT'])) ? $HTTP_SERVER_VARS['SERVER_PORT'] : $HTTP_ENV_VARS['SERVER_PORT'];
0447 }
0448 else
0449 {
0450 $server_port = '80';
0451 }
0452 }
0453
0454 // Open config.php ... if it exists
0455 if (@file_exists(@phpbb_realpath('config.'.$phpEx)))
0456 {
0457 include($phpbb_root_path.'config.'.$phpEx);
0458 }
0459
0460 // Is phpBB already installed? Yes? Redirect to the index
0461 if (defined("PHPBB_INSTALLED"))
0462 {
0463 redirect('../index.'.$phpEx);
0464 }
0465
0466 // Import language file, setup template ...
0467 include($phpbb_root_path.'language/lang_' . $language . '/lang_main.'.$phpEx);
0468 include($phpbb_root_path.'language/lang_' . $language . '/lang_admin.'.$phpEx);
0469
0470 // Ok for the time being I'm commenting this out whilst I'm working on
0471 // better integration of the install with upgrade as per Bart's request
0472 // JLH
0473 if ($upgrade == 1)
0474 {
0475 // require('upgrade.'.$phpEx);
0476 $install_step = 1;
0477 }
0478
0479 // What do we need to do?
0480 if (!empty($HTTP_POST_VARS['send_file']) && $HTTP_POST_VARS['send_file'] == 1 && empty($HTTP_POST_VARS['upgrade_now']))
0481 {
0482 header('Content-Type: text/x-delimtext; name="config.' . $phpEx . '"');
0483 header('Content-disposition: attachment; filename="config.' . $phpEx . '"');
0484
0485 // We need to stripslashes no matter what the setting of magic_quotes_gpc is
0486 // because we add slashes at the top if its off, and they are added automaticlly
0487 // if it is on.
0488 echo stripslashes($HTTP_POST_VARS['config_data']);
0489
0490 exit;
0491 }
0492 else if (!empty($HTTP_POST_VARS['send_file']) && $HTTP_POST_VARS['send_file'] == 2)
0493 {
0494 $s_hidden_fields = '<input type="hidden" name="config_data" value="' . htmlspecialchars(stripslashes($HTTP_POST_VARS['config_data'])) . '" />';
0495 $s_hidden_fields .= '<input type="hidden" name="ftp_file" value="1" />';
0496
0497 if ($upgrade == 1)
0498 {
0499 $s_hidden_fields .= '<input type="hidden" name="upgrade" value="1" />';
0500 }
0501
0502 page_header($lang['ftp_instructs']);
0503
0504 ?>
0505 <tr>
0506 <th colspan="2"><?php echo $lang['ftp_info']; ?></th>
0507 </tr>
0508 <tr>
0509 <td class="row1" align="right"><span class="gen"><?php echo $lang['ftp_path']; ?></span></td>
0510 <td class="row2"><input type="text" name="ftp_dir"></td>
0511 </tr>
0512 <tr>
0513 <td class="row1" align="right"><span class="gen"><?php echo $lang['ftp_username']; ?></span></td>
0514 <td class="row2"><input type="text" name="ftp_user"></td>
0515 </tr>
0516 <tr>
0517 <td class="row1" align="right"><span class="gen"><?php echo $lang['ftp_password']; ?></span></td>
0518 <td class="row2"><input type="password" name="ftp_pass"></td>
0519 </tr>
0520 <?php
0521
0522 page_common_form($s_hidden_fields, $lang['Transfer_config']);
0523 page_footer();
0524 exit;
0525
0526 }
0527 else if (!empty($HTTP_POST_VARS['ftp_file']))
0528 {
0529 // Try to connect ...
0530 $conn_id = @ftp_connect('localhost');
0531 $login_result = @ftp_login($conn_id, "$ftp_user", "$ftp_pass");
0532
0533 if (!$conn_id || !$login_result)
0534 {
0535 page_header($lang['NoFTP_config']);
0536
0537 // Error couldn't get connected... Go back to option to send file...
0538 $s_hidden_fields = '<input type="hidden" name="config_data" value="' . htmlspecialchars(stripslashes($HTTP_POST_VARS['config_data'])) . '" />';
0539 $s_hidden_fields .= '<input type="hidden" name="send_file" value="1" />';
0540
0541 // If we're upgrading ...
0542 if ($upgrade == 1)
0543 {
0544 $s_hidden_fields .= '<input type="hidden" name="upgrade" value="1" />';
0545 $s_hidden_fields .= '<input type="hidden" name="dbms" value="'.$dmbs.'" />';
0546 $s_hidden_fields .= '<input type="hidden" name="prefix" value="'.$table_prefix.'" />';
0547 $s_hidden_fields .= '<input type="hidden" name="dbhost" value="'.$dbhost.'" />';
0548 $s_hidden_fields .= '<input type="hidden" name="dbname" value="'.$dbname.'" />';
0549 $s_hidden_fields .= '<input type="hidden" name="dbuser" value="'.$dbuser.'" />';
0550 $s_hidden_fields .= '<input type="hidden" name="dbpasswd" value="'.$dbpasswd.'" />';
0551 $s_hidden_fields .= '<input type="hidden" name="install_step" value="1" />';
0552 $s_hidden_fields .= '<input type="hidden" name="admin_pass1" value="1" />';
0553 $s_hidden_fields .= '<input type="hidden" name="admin_pass2" value="1" />';
0554 $s_hidden_fields .= '<input type="hidden" name="server_port" value="'.$server_port.'" />';
0555 $s_hidden_fields .= '<input type="hidden" name="server_name" value="'.$server_name.'" />';
0556 $s_hidden_fields .= '<input type="hidden" name="script_path" value="'.$script_path.'" />';
0557 $s_hidden_fields .= '<input type="hidden" name="board_email" value="'.$board_email.'" />';
0558
0559 page_upgrade_form();
0560 }
0561 else
0562 {
0563 page_common_form($s_hidden_fields, $lang['Download_config']);
0564
0565 }
0566
0567 page_footer();
0568 exit;
0569 }
0570 else
0571 {
0572 // Write out a temp file...
0573 $tmpfname = @tempnam('/tmp', 'cfg');
0574
0575 @unlink($tmpfname); // unlink for safety on php4.0.3+
0576
0577 $fp = @fopen($tmpfname, 'w');
0578
0579 @fwrite($fp, stripslashes($HTTP_POST_VARS['config_data']));
0580
0581 @fclose($fp);
0582
0583 // Now ftp it across.
0584 @ftp_chdir($conn_id, $ftp_dir);
0585
0586 $res = ftp_put($conn_id, 'config.'.$phpEx, $tmpfname, FTP_ASCII);
0587
0588 @ftp_quit($conn_id);
0589
0590 unlink($tmpfname);
0591
0592 if ($upgrade == 1)
0593 {
0594 require('upgrade.'.$phpEx);
0595 exit;
0596 }
0597
0598 // Ok we are basically done with the install process let's go on
0599 // and let the user configure their board now. We are going to do
0600 // this by calling the admin_board.php from the normal board admin
0601 // section.
0602 $s_hidden_fields = '<input type="hidden" name="username" value="' . $admin_name . '" />';
0603 $s_hidden_fields .= '<input type="hidden" name="password" value="' . $admin_pass1 . '" />';
0604 $s_hidden_fields .= '<input type="hidden" name="redirect" value="../admin/index.'.$phpEx.'" />';
0605 $s_hidden_fields .= '<input type="hidden" name="submit" value="' . $lang['Login'] . '" />';
0606
0607 page_header($lang['Inst_Step_2']);
0608 page_common_form($s_hidden_fields, $lang['Finish_Install']);
0609 page_footer();
0610 exit();
0611 }
0612 }
0613 else if ((empty($install_step) || $admin_pass1 != $admin_pass2 || empty($admin_pass1) || empty($dbhost)))
0614 {
0615 // Ok we haven't installed before so lets work our way through the various
0616 // steps of the install process. This could turn out to be quite a lengty
0617 // process.
0618
0619 // Step 0 gather the pertinant info for database setup...
0620 // Namely dbms, dbhost, dbname, dbuser, and dbpasswd.
0621 $instruction_text = $lang['Inst_Step_0'];
0622
0623 if (!empty($install_step))
0624 {
0625 if ((($HTTP_POST_VARS['admin_pass1'] != $HTTP_POST_VARS['admin_pass2'])) ||
0626 (empty($HTTP_POST_VARS['admin_pass1']) || empty($dbhost)) && $HTTP_POST_VARS['cur_lang'] == $language)
0627 {
0628 $error = $lang['Password_mismatch'];
0629 }
0630 }
0631
0632 $dirname = $phpbb_root_path . 'language';
0633 $dir = opendir($dirname);
0634
0635 $lang_options = array();
0636 while ($file = readdir($dir))
0637 {
0638 if (preg_match('#^lang_#i', $file) && !is_file(@phpbb_realpath($dirname . '/' . $file)) && !is_link(@phpbb_realpath($dirname . '/' . $file)))
0639 {
0640 $filename = trim(str_replace('lang_', '', $file));
0641 $displayname = preg_replace('/^(.*?)_(.*)$/', '\1 [ \2 ]', $filename);
0642 $displayname = preg_replace('/\[(.*?)_(.*)\]/', '[ \1 - \2 ]', $displayname);
0643 $lang_options[$displayname] = $filename;
0644 }
0645 }
0646
0647 closedir($dir);
0648
0649 @asort($lang_options);
0650 @reset($lang_options);
0651
0652 $lang_select = '<select name="lang" onchange="this.form.submit()">';
0653 while (list($displayname, $filename) = @each($lang_options))
0654 {
0655 $selected = ($language == $filename) ? ' selected="selected"' : '';
0656 $lang_select .= '<option value="' . $filename . '"' . $selected . '>' . ucwords($displayname) . '</option>';
0657 }
0658 $lang_select .= '</select>';
0659
0660 $dbms_select = '<select name="dbms" onchange="if(this.form.upgrade.options[this.form.upgrade.selectedIndex].value == 1){ this.selectedIndex = 0;}">';
0661 while (list($dbms_name, $details) = @each($available_dbms))
0662 {
0663 $selected = ($dbms_name == $dbms) ? 'selected="selected"' : '';
0664 $dbms_select .= '<option value="' . $dbms_name . '">' . $details['LABEL'] . '</option>';
0665 }
0666 $dbms_select .= '</select>';
0667
0668 $upgrade_option = '<select name="upgrade"';
0669 $upgrade_option .= 'onchange="if (this.options[this.selectedIndex].value == 1) { this.form.dbms.selectedIndex = 0; }">';
0670 $upgrade_option .= '<option value="0">' . $lang['Install'] . '</option>';
0671 $upgrade_option .= '<option value="1">' . $lang['Upgrade'] . '</option></select>';
0672
0673 $s_hidden_fields = '<input type="hidden" name="install_step" value="1" /><input type="hidden" name="cur_lang" value="' . $language . '" />';
0674
0675 page_header($instruction_text);
0676
0677 ?>
0678 <tr>
0679 <th colspan="2"><?php echo $lang['Initial_config']; ?></th>
0680 </tr>
0681 <tr>
0682 <td class="row1" align="right" width="30%"><span class="gen"><?php echo $lang['Default_lang']; ?>: </span></td>
0683 <td class="row2"><?php echo $lang_select; ?></td>
0684 </tr>
0685 <tr>
0686 <td class="row1" align="right"><span class="gen"><?php echo $lang['dbms']; ?>: </span></td>
0687 <td class="row2"><?php echo $dbms_select; ?></td>
0688 </tr>
0689 <tr>
0690 <td class="row1" align="right"><span class="gen"><?php echo $lang['Install_Method']; ?>:</span></td>
0691 <td class="row2"><?php echo $upgrade_option; ?></td>
0692 </tr>
0693 <tr>
0694 <th colspan="2"><?php echo $lang['DB_config']; ?></th>
0695 </tr>
0696 <tr>
0697 <td class="row1" align="right"><span class="gen"><?php echo $lang['DB_Host']; ?>: </span></td>
0698 <td class="row2"><input type="text" name="dbhost" value="<?php echo ($dbhost != '') ? $dbhost : ''; ?>" /></td>
0699 </tr>
0700 <tr>
0701 <td class="row1" align="right"><span class="gen"><?php echo $lang['DB_Name']; ?>: </span></td>
0702 <td class="row2"><input type="text" name="dbname" value="<?php echo ($dbname != '') ? $dbname : ''; ?>" /></td>
0703 </tr>
0704 <tr>
0705 <td class="row1" align="right"><span class="gen"><?php echo $lang['DB_Username']; ?>: </span></td>
0706 <td class="row2"><input type="text" name="dbuser" value="<?php echo ($dbuser != '') ? $dbuser : ''; ?>" /></td>
0707 </tr>
0708 <tr>
0709 <td class="row1" align="right"><span class="gen"><?php echo $lang['DB_Password']; ?>: </span></td>
0710 <td class="row2"><input type="password" name="dbpasswd" value="<?php echo ($dbpasswd != '') ? $dbpasswd : ''; ?>" /></td>
0711 </tr>
0712 <tr>
0713 <td class="row1" align="right"><span class="gen"><?php echo $lang['Table_Prefix']; ?>: </span></td>
0714 <td class="row2"><input type="text" name="prefix" value="<?php echo (!empty($table_prefix)) ? $table_prefix : "phpbb_"; ?>" /></td>
0715 </tr>
0716 <tr>
0717 <th colspan="2"><?php echo $lang['Admin_config']; ?></th>
0718 </tr>
0719 <?php
0720
0721 if ($error)
0722 {
0723 ?>
0724 <tr>
0725 <td class="row1" colspan="2" align="center"><span class="gen" style="color:red"><?php echo $error; ?></span></td>
0726 </tr>
0727 <?php
0728
0729 }
0730 ?>
0731 <tr>
0732 <td class="row1" align="right"><span class="gen"><?php echo $lang['Admin_email']; ?>: </span></td>
0733 <td class="row2"><input type="text" name="board_email" value="<?php echo ($board_email != '') ? $board_email : ''; ?>" /></td>
0734 </tr>
0735 <tr>
0736 <td class="row1" align="right"><span class="gen"><?php echo $lang['Server_name']; ?>: </span></td>
0737 <td class="row2"><input type="text" name="server_name" value="<?php echo $server_name; ?>" /></td>
0738 </tr>
0739 <tr>
0740 <td class="row1" align="right"><span class="gen"><?php echo $lang['Server_port']; ?>: </span></td>
0741 <td class="row2"><input type="text" name="server_port" value="<?php echo $server_port; ?>" /></td>
0742 </tr>
0743 <tr>
0744 <td class="row1" align="right"><span class="gen"><?php echo $lang['Script_path']; ?>: </span></td>
0745 <td class="row2"><input type="text" name="script_path" value="<?php echo $script_path; ?>" /></td>
0746 </tr>
0747 <tr>
0748 <td class="row1" align="right"><span class="gen"><?php echo $lang['Admin_Username']; ?>: </span></td>
0749 <td class="row2"><input type="text" name="admin_name" value="<?php echo ($admin_name != '') ? $admin_name : ''; ?>" /></td>
0750 </tr>
0751 <tr>
0752 <td class="row1" align="right"><span class="gen"><?php echo $lang['Admin_Password']; ?>: </span></td>
0753 <td class="row2"><input type="password" name="admin_pass1" value="<?php echo ($admin_pass1 != '') ? $admin_pass1 : ''; ?>" /></td>
0754 </tr>
0755 <tr>
0756 <td class="row1" align="right"><span class="gen"><?php echo $lang['Admin_Password_confirm']; ?>: </span></td>
0757 <td class="row2"><input type="password" name="admin_pass2" value="<?php echo ($admin_pass2 != '') ? $admin_pass2 : ''; ?>" /></td>
0758 </tr>
0759 <?php
0760
0761 page_common_form($s_hidden_fields, $lang['Start_Install']);
0762 page_footer();
0763 exit;
0764 }
0765 else
0766 {
0767 // Go ahead and create the DB, then populate it
0768 //
0769 // MS Access is slightly different in that a pre-built, pre-
0770 // populated DB is supplied, all we need do here is update
0771 // the relevant entries
0772 if (isset($dbms))
0773 {
0774 switch($dbms)
0775 {
0776 case 'msaccess':
0777 case 'mssql-odbc':
0778 $check_exts = 'odbc';
0779 $check_other = 'odbc';
0780 break;
0781
0782 case 'mssql':
0783 $check_exts = 'mssql';
0784 $check_other = 'sybase';
0785 break;
0786
0787 case 'mysql':
0788 case 'mysql4':
0789 $check_exts = 'mysql';
0790 $check_other = 'mysql';
0791 break;
0792
0793 case 'postgres':
0794 $check_exts = 'pgsql';
0795 $check_other = 'pgsql';
0796 break;
0797 }
0798
0799 if (!extension_loaded($check_exts) && !extension_loaded($check_other))
0800 {
0801 page_header($lang['Install'], '');
0802 page_error($lang['Installer_Error'], $lang['Install_No_Ext']);
0803 page_footer();
0804 exit;
0805 }
0806
0807 include($phpbb_root_path.'includes/db.'.$phpEx);
0808 }
0809
0810 $dbms_schema = 'schemas/' . $available_dbms[$dbms]['SCHEMA'] . '_schema.sql';
0811 $dbms_basic = 'schemas/' . $available_dbms[$dbms]['SCHEMA'] . '_basic.sql';
0812
0813 $remove_remarks = $available_dbms[$dbms]['COMMENTS'];;
0814 $delimiter = $available_dbms[$dbms]['DELIM'];
0815 $delimiter_basic = $available_dbms[$dbms]['DELIM_BASIC'];
0816
0817 if ($install_step == 1)
0818 {
0819 if ($upgrade != 1)
0820 {
0821 if ($dbms != 'msaccess')
0822 {
0823 // Load in the sql parser
0824 include($phpbb_root_path.'includes/sql_parse.'.$phpEx);
0825
0826 // Ok we have the db info go ahead and read in the relevant schema
0827 // and work on building the table.. probably ought to provide some
0828 // kind of feedback to the user as we are working here in order
0829 // to let them know we are actually doing something.
0830 $sql_query = @fread(@fopen($dbms_schema, 'r'), @filesize($dbms_schema));
0831 $sql_query = preg_replace('/phpbb_/', $table_prefix, $sql_query);
0832
0833 $sql_query = $remove_remarks($sql_query);
0834 $sql_query = split_sql_file($sql_query, $delimiter);
0835
0836 for ($i = 0; $i < sizeof($sql_query); $i++)
0837 {
0838 if (trim($sql_query[$i]) != '')
0839 {
0840 if (!($result = $db->sql_query($sql_query[$i])))
0841 {
0842 $error = $db->sql_error();
0843
0844 page_header($lang['Install'], '');
0845 page_error($lang['Installer_Error'], $lang['Install_db_error'] . '<br />' . $error['message']);
0846 page_footer();
0847 exit;
0848 }
0849 }
0850 }
0851
0852 // Ok tables have been built, let's fill in the basic information
0853 $sql_query = @fread(@fopen($dbms_basic, 'r'), @filesize($dbms_basic));
0854 $sql_query = preg_replace('/phpbb_/', $table_prefix, $sql_query);
0855
0856 $sql_query = $remove_remarks($sql_query);
0857 $sql_query = split_sql_file($sql_query, $delimiter_basic);
0858
0859 for($i = 0; $i < sizeof($sql_query); $i++)
0860 {
0861 if (trim($sql_query[$i]) != '')
0862 {
0863 if (!($result = $db->sql_query($sql_query[$i])))
0864 {
0865 $error = $db->sql_error();
0866
0867 page_header($lang['Install'], '');
0868 page_error($lang['Installer_Error'], $lang['Install_db_error'] . '<br />' . $error['message']);
0869 page_footer();
0870 exit;
0871 }
0872 }
0873 }
0874 }
0875
0876 // Ok at this point they have entered their admin password, let's go
0877 // ahead and create the admin account with some basic default information
0878 // that they can customize later, and write out the config file. After
0879 // this we are going to pass them over to the admin_forum.php script
0880 // to set up their forum defaults.
0881 $error = '';
0882
0883 // Update the default admin user with their information.
0884 $sql = "INSERT INTO " . $table_prefix . "config (config_name, config_value)
0885 VALUES ('board_startdate', " . time() . ")";
0886 if (!$db->sql_query($sql))
0887 {
0888 $error .= "Could not insert board_startdate :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
0889 }
0890
0891 $sql = "INSERT INTO " . $table_prefix . "config (config_name, config_value)
0892 VALUES ('default_lang', '" . str_replace("\'", "''", $language) . "')";
0893 if (!$db->sql_query($sql))
0894 {
0895 $error .= "Could not insert default_lang :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
0896 }
0897
0898 $update_config = array(
0899 'board_email' => $board_email,
0900 'script_path' => $script_path,
0901 'server_port' => $server_port,
0902 'server_name' => $server_name,
0903 );
0904
0905 while (list($config_name, $config_value) = each($update_config))
0906 {
0907 $sql = "UPDATE " . $table_prefix . "config
0908 SET config_value = '$config_value'
0909 WHERE config_name = '$config_name'";
0910 if (!$db->sql_query($sql))
0911 {
0912 $error .= "Could not insert default_lang :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
0913 }
0914 }
0915
0916 $admin_pass_md5 = ($confirm && $userdata['user_level'] == ADMIN) ? $admin_pass1 : md5($admin_pass1);
0917
0918 $sql = "UPDATE " . $table_prefix . "users
0919 SET username = '" . str_replace("\'", "''", $admin_name) . "', user_password='" . str_replace("\'", "''", $admin_pass_md5) . "', user_lang = '" . str_replace("\'", "''", $language) . "', user_email='" . str_replace("\'", "''", $board_email) . "'
0920 WHERE username = 'Admin'";
0921 if (!$db->sql_query($sql))
0922 {
0923 $error .= "Could not update admin info :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
0924 }
0925
0926 $sql = "UPDATE " . $table_prefix . "users
0927 SET user_regdate = " . time();
0928 if (!$db->sql_query($sql))
0929 {
0930 $error .= "Could not update user_regdate :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
0931 }
0932
0933 if ($error != '')
0934 {
0935 page_header($lang['Install'], '');
0936 page_error($lang['Installer_Error'], $lang['Install_db_error'] . '<br /><br />' . $error);
0937 page_footer();
0938 exit;
0939 }
0940 }
0941
0942 if (!$upgrade_now)
0943 {
0944 // Write out the config file.
0945 $config_data = '<?php'."\n\n";
0946 $config_data .= "\n// phpBB 2.x auto-generated config file\n// Do not change anything in this file!\n\n";
0947 $config_data .= '$dbms = \'' . $dbms . '\';' . "\n\n";
0948 $config_data .= '$dbhost = \'' . $dbhost . '\';' . "\n";
0949 $config_data .= '$dbname = \'' . $dbname . '\';' . "\n";
0950 $config_data .= '$dbuser = \'' . $dbuser . '\';' . "\n";
0951 $config_data .= '$dbpasswd = \'' . $dbpasswd . '\';' . "\n\n";
0952 $config_data .= '$table_prefix = \'' . $table_prefix . '\';' . "\n\n";
0953 $config_data .= 'define(\'PHPBB_INSTALLED\', true);'."\n\n";
0954 $config_data .= '?' . '>'; // Done this to prevent highlighting editors getting confused!
0955
0956 @umask(0111);
0957 $no_open = FALSE;
0958
0959 // Unable to open the file writeable do something here as an attempt
0960 // to get around that...
0961 if (!($fp = @fopen($phpbb_root_path . 'config.'.$phpEx, 'w')))
0962 {
0963 $s_hidden_fields = '<input type="hidden" name="config_data" value="' . htmlspecialchars($config_data) . '" />';
0964
0965 if (@extension_loaded('ftp') && !defined('NO_FTP'))
0966 {
0967 page_header($lang['Unwriteable_config'] . '<p>' . $lang['ftp_option'] . '</p>');
0968
0969 ?>
0970 <tr>
0971 <th colspan="2"><?php echo $lang['ftp_choose']; ?></th>
0972 </tr>
0973 <tr>
0974 <td class="row1" align="right" width="50%"><span class="gen"><?php echo $lang['Attempt_ftp']; ?></span></td>
0975 <td class="row2"><input type="radio" name="send_file" value="2"></td>
0976 </tr>
0977 <tr>
0978 <td class="row1" align="right" width="50%"><span class="gen"><?php echo $lang['Send_file']; ?></span></td>
0979 <td class="row2"><input type="radio" name="send_file" value="1"></td>
0980 </tr>
0981 <?php
0982
0983 }
0984 else
0985 {
0986 page_header($lang['Unwriteable_config']);
0987 $s_hidden_fields .= '<input type="hidden" name="send_file" value="1" />';
0988 }
0989
0990 if ($upgrade == 1)
0991 {
0992 $s_hidden_fields .= '<input type="hidden" name="upgrade" value="1" />';
0993 $s_hidden_fields .= '<input type="hidden" name="dbms" value="'.$dbms.'" />';
0994 $s_hidden_fields .= '<input type="hidden" name="prefix" value="'.$table_prefix.'" />';
0995 $s_hidden_fields .= '<input type="hidden" name="dbhost" value="'.$dbhost.'" />';
0996 $s_hidden_fields .= '<input type="hidden" name="dbname" value="'.$dbname.'" />';
0997 $s_hidden_fields .= '<input type="hidden" name="dbuser" value="'.$dbuser.'" />';
0998 $s_hidden_fields .= '<input type="hidden" name="dbpasswd" value="'.$dbpasswd.'" />';
0999 $s_hidden_fields .= '<input type="hidden" name="install_step" value="1" />';
1000 $s_hidden_fields .= '<input type="hidden" name="admin_pass1" value="1" />';
1001 $s_hidden_fields .= '<input type="hidden" name="admin_pass2" value="1" />';
1002 $s_hidden_fields .= '<input type="hidden" name="server_port" value="'.$server_port.'" />';
1003 $s_hidden_fields .= '<input type="hidden" name="server_name" value="'.$server_name.'" />';
1004 $s_hidden_fields .= '<input type="hidden" name="script_path" value="'.$script_path.'" />';
1005 $s_hidden_fields .= '<input type="hidden" name="board_email" value="'.$board_email.'" />';
1006
1007 page_upgrade_form();
1008
1009 }
1010 else
1011 {
1012 page_common_form($s_hidden_fields, $lang['Download_config']);
1013 }
1014
1015 page_footer();
1016 exit;
1017 }
1018
1019 $result = @fputs($fp, $config_data, strlen($config_data));
1020
1021 @fclose($fp);
1022 $upgrade_now = $lang['upgrade_submit'];
1023 }
1024
1025 // First off let's check and see if we are supposed to be doing an upgrade.
1026 if ($upgrade == 1 && $upgrade_now == $lang['upgrade_submit'])
1027 {
1028 define('INSTALLING', true);
1029 require('upgrade.'.$phpEx);
1030 exit;
1031 }
1032
1033 // Ok we are basically done with the install process let's go on
1034 // and let the user configure their board now. We are going to do
1035 // this by calling the admin_board.php from the normal board admin
1036 // section.
1037 $s_hidden_fields = '<input type="hidden" name="username" value="' . $admin_name . '" />';
1038 $s_hidden_fields .= '<input type="hidden" name="password" value="' . $admin_pass1 . '" />';
1039 $s_hidden_fields .= '<input type="hidden" name="redirect" value="admin/index.'.$phpEx.'" />';
1040 $s_hidden_fields .= '<input type="hidden" name="login" value="true" />';
1041
1042 page_header($lang['Inst_Step_2'], '../login.'.$phpEx);
1043 page_common_form($s_hidden_fields, $lang['Finish_Install']);
1044 page_footer();
1045 exit;
1046 }
1047 }
1048
1049 ?>
1050