home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 April (DVD) / PCWorld_2008-04_DVD.iso / temadvd / phpbb / phpBB-2.0.22.exe / phpBB2 / install / install.php < prev    next >
Encoding:
PHP Script  |  2006-12-19  |  34.4 KB  |  1,050 lines

  1. <?php
  2. /***************************************************************************
  3.  *                                install.php
  4.  *                            -------------------
  5.  *   begin                : Tuesday, Sept 11, 2001
  6.  *   copyright            : (C) 2001 The phpBB Group
  7.  *   email                : support@phpbb.com
  8.  *
  9.  *   $Id: install.php,v 1.6.2.14 2005/12/29 11:51:11 acydburn Exp $
  10.  *
  11.  ***************************************************************************/
  12.  
  13. /***************************************************************************
  14.  *
  15.  *   This program is free software; you can redistribute it and/or modify
  16.  *   it under the terms of the GNU General Public License as published by
  17.  *   the Free Software Foundation; either version 2 of the License, or
  18.  *   (at your option) any later version.
  19.  *
  20.  ***************************************************************************/
  21.  
  22. // ---------
  23. // FUNCTIONS
  24. //
  25. function page_header($text, $form_action = false)
  26. {
  27.     global $phpEx, $lang;
  28.  
  29. ?>
  30. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  31. <html>
  32. <head>
  33. <meta http-equiv="Content-Type" content="text/html; charset=<?php echo $lang['ENCODING']; ?>">
  34. <meta http-equiv="Content-Style-Type" content="text/css">
  35. <title><?php echo $lang['Welcome_install'];?></title>
  36. <link rel="stylesheet" href="../templates/subSilver/subSilver.css" type="text/css">
  37. <style type="text/css">
  38. <!--
  39. th            { background-image: url('../templates/subSilver/images/cellpic3.gif') }
  40. td.cat        { background-image: url('../templates/subSilver/images/cellpic1.gif') }
  41. td.rowpic    { background-image: url('../templates/subSilver/images/cellpic2.jpg'); background-repeat: repeat-y }
  42. td.catHead,td.catSides,td.catLeft,td.catRight,td.catBottom { background-image: url('../templates/subSilver/images/cellpic1.gif') }
  43.  
  44. /* Import the fancy styles for IE only (NS4.x doesn't use the @import function) */
  45. @import url("../templates/subSilver/formIE.css"); 
  46. //-->
  47. </style>
  48. </head>
  49. <body bgcolor="#E5E5E5" text="#000000" link="#006699" vlink="#5584AA">
  50.  
  51. <table width="100%" border="0" cellspacing="0" cellpadding="10" align="center"> 
  52.     <tr>
  53.         <td class="bodyline" width="100%"><table width="100%" border="0" cellspacing="0" cellpadding="0">
  54.             <tr>
  55.                 <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
  56.                     <tr>
  57.                         <td><img src="../templates/subSilver/images/logo_phpBB.gif" border="0" alt="Forum Home" vspace="1" /></td>
  58.                         <td align="center" width="100%" valign="middle"><span class="maintitle"><?php echo $lang['Welcome_install'];?></span></td>
  59.                     </tr>
  60.                 </table></td>
  61.             </tr>
  62.             <tr>
  63.                 <td><br /><br /></td>
  64.             </tr>
  65.             <tr>
  66.                 <td colspan="2"><table width="90%" border="0" align="center" cellspacing="0" cellpadding="0">
  67.                     <tr>
  68.                         <td><span class="gen"><?php echo $text; ?></span></td>
  69.                     </tr>
  70.                 </table></td>
  71.             </tr>
  72.             <tr>
  73.                 <td><br /><br /></td>
  74.             </tr>
  75.             <tr>
  76.                 <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">
  77. <?php
  78.  
  79. }
  80.  
  81. function page_footer()
  82. {
  83.  
  84. ?>
  85.                 </table></form></td>
  86.             </tr>
  87.         </table></td>
  88.     </tr>
  89. </table>
  90.  
  91. </body>
  92. </html>
  93. <?php
  94.  
  95. }
  96.  
  97. function page_common_form($hidden, $submit)
  98. {
  99.  
  100. ?>
  101.                     <tr> 
  102.                       <td class="catBottom" align="center" colspan="2"><?php echo $hidden; ?><input class="mainoption" type="submit" value="<?php echo $submit; ?>" /></td>
  103.                     </tr>
  104. <?php
  105.  
  106. }
  107.  
  108. function page_upgrade_form()
  109. {
  110.     global $lang;
  111.  
  112. ?>
  113.                     <tr>
  114.                         <td class="catBottom" align="center" colspan="2"><?php echo $lang['continue_upgrade']; ?></td>
  115.                     </tr>
  116.                     <tr>
  117.                         <td class="catBottom" align="center" colspan="2"><input type="submit" name="upgrade_now" value="<?php echo $lang['upgrade_submit']; ?>" /></td>
  118.                     </tr>
  119. <?php 
  120.  
  121. }
  122.  
  123. function page_error($error_title, $error)
  124. {
  125.  
  126. ?>
  127.                     <tr>
  128.                         <th><?php echo $error_title; ?></th>
  129.                     </tr>
  130.                     <tr>
  131.                         <td class="row1" align="center"><span class="gen"><?php echo $error; ?></span></td>
  132.                     </tr>
  133. <?php
  134.  
  135. }
  136.  
  137. // Guess an initial language ... borrowed from phpBB 2.2 it's not perfect, 
  138. // really it should do a straight match first pass and then try a "fuzzy"
  139. // match on a second pass instead of a straight "fuzzy" match.
  140. function guess_lang()
  141. {
  142.     global $phpbb_root_path, $HTTP_SERVER_VARS;
  143.  
  144.     // The order here _is_ important, at least for major_minor
  145.     // matches. Don't go moving these around without checking with
  146.     // me first - psoTFX
  147.     $match_lang = array(
  148.         'arabic'                    => 'ar([_-][a-z]+)?', 
  149.         'bulgarian'                    => 'bg', 
  150.         'catalan'                    => 'ca', 
  151.         'czech'                        => 'cs', 
  152.         'danish'                    => 'da', 
  153.         'german'                    => 'de([_-][a-z]+)?',
  154.         'english'                    => 'en([_-][a-z]+)?', 
  155.         'estonian'                    => 'et', 
  156.         'finnish'                    => 'fi', 
  157.         'french'                    => 'fr([_-][a-z]+)?', 
  158.         'greek'                        => 'el', 
  159.         'spanish_argentina'            => 'es[_-]ar', 
  160.         'spanish'                    => 'es([_-][a-z]+)?', 
  161.         'gaelic'                    => 'gd', 
  162.         'galego'                    => 'gl', 
  163.         'gujarati'                    => 'gu', 
  164.         'hebrew'                    => 'he', 
  165.         'hindi'                        => 'hi', 
  166.         'croatian'                    => 'hr', 
  167.         'hungarian'                    => 'hu', 
  168.         'icelandic'                    => 'is', 
  169.         'indonesian'                => 'id([_-][a-z]+)?', 
  170.         'italian'                    => 'it([_-][a-z]+)?', 
  171.         'japanese'                    => 'ja([_-][a-z]+)?', 
  172.         'korean'                    => 'ko([_-][a-z]+)?', 
  173.         'latvian'                    => 'lv', 
  174.         'lithuanian'                => 'lt', 
  175.         'macedonian'                => 'mk', 
  176.         'dutch'                        => 'nl([_-][a-z]+)?', 
  177.         'norwegian'                    => 'no', 
  178.         'punjabi'                    => 'pa', 
  179.         'polish'                    => 'pl', 
  180.         'portuguese_brazil'            => 'pt[_-]br', 
  181.         'portuguese'                => 'pt([_-][a-z]+)?', 
  182.         'romanian'                    => 'ro([_-][a-z]+)?', 
  183.         'russian'                    => 'ru([_-][a-z]+)?', 
  184.         'slovenian'                    => 'sl([_-][a-z]+)?', 
  185.         'albanian'                    => 'sq', 
  186.         'serbian'                    => 'sr([_-][a-z]+)?', 
  187.         'slovak'                    => 'sv([_-][a-z]+)?', 
  188.         'swedish'                    => 'sv([_-][a-z]+)?', 
  189.         'thai'                        => 'th([_-][a-z]+)?', 
  190.         'turkish'                    => 'tr([_-][a-z]+)?', 
  191.         'ukranian'                    => 'uk([_-][a-z]+)?', 
  192.         'urdu'                        => 'ur', 
  193.         'viatnamese'                => 'vi',
  194.         'chinese_traditional_taiwan'=> 'zh[_-]tw',
  195.         'chinese_simplified'        => 'zh', 
  196.     );
  197.  
  198.     if (isset($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE']))
  199.     {
  200.         $accept_lang_ary = explode(',', $HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE']);
  201.         for ($i = 0; $i < sizeof($accept_lang_ary); $i++)
  202.         {
  203.             @reset($match_lang);
  204.             while (list($lang, $match) = each($match_lang))
  205.             {
  206.                 if (preg_match('#' . $match . '#i', trim($accept_lang_ary[$i])))
  207.                 {
  208.                     if (file_exists(@phpbb_realpath($phpbb_root_path . 'language/lang_' . $lang)))
  209.                     {
  210.                         return $lang;
  211.                     }
  212.                 }
  213.             }
  214.         }
  215.     }
  216.  
  217.     return 'english';
  218.     
  219. }
  220. //
  221. // FUNCTIONS
  222. // ---------
  223.  
  224. // Begin
  225. error_reporting  (E_ERROR | E_WARNING | E_PARSE); // This will NOT report uninitialized variables
  226. set_magic_quotes_runtime(0); // Disable magic_quotes_runtime
  227.  
  228. // PHP5 with register_long_arrays off?
  229. if (!isset($HTTP_POST_VARS) && isset($_POST))
  230. {
  231.     $HTTP_POST_VARS = $_POST;
  232.     $HTTP_GET_VARS = $_GET;
  233.     $HTTP_SERVER_VARS = $_SERVER;
  234.     $HTTP_COOKIE_VARS = $_COOKIE;
  235.     $HTTP_ENV_VARS = $_ENV;
  236.     $HTTP_POST_FILES = $_FILES;
  237.  
  238.     // _SESSION is the only superglobal which is conditionally set
  239.     if (isset($_SESSION))
  240.     {
  241.         $HTTP_SESSION_VARS = $_SESSION;
  242.     }
  243. }
  244.  
  245. // Slash data if it isn't slashed
  246. if (!get_magic_quotes_gpc())
  247. {
  248.     if (is_array($HTTP_GET_VARS))
  249.     {
  250.         while (list($k, $v) = each($HTTP_GET_VARS))
  251.         {
  252.             if (is_array($HTTP_GET_VARS[$k]))
  253.             {
  254.                 while (list($k2, $v2) = each($HTTP_GET_VARS[$k]))
  255.                 {
  256.                     $HTTP_GET_VARS[$k][$k2] = addslashes($v2);
  257.                 }
  258.                 @reset($HTTP_GET_VARS[$k]);
  259.             }
  260.             else
  261.             {
  262.                 $HTTP_GET_VARS[$k] = addslashes($v);
  263.             }
  264.         }
  265.         @reset($HTTP_GET_VARS);
  266.     }
  267.  
  268.     if (is_array($HTTP_POST_VARS))
  269.     {
  270.         while (list($k, $v) = each($HTTP_POST_VARS))
  271.         {
  272.             if (is_array($HTTP_POST_VARS[$k]))
  273.             {
  274.                 while (list($k2, $v2) = each($HTTP_POST_VARS[$k]))
  275.                 {
  276.                     $HTTP_POST_VARS[$k][$k2] = addslashes($v2);
  277.                 }
  278.                 @reset($HTTP_POST_VARS[$k]);
  279.             }
  280.             else
  281.             {
  282.                 $HTTP_POST_VARS[$k] = addslashes($v);
  283.             }
  284.         }
  285.         @reset($HTTP_POST_VARS);
  286.     }
  287.  
  288.     if (is_array($HTTP_COOKIE_VARS))
  289.     {
  290.         while (list($k, $v) = each($HTTP_COOKIE_VARS))
  291.         {
  292.             if (is_array($HTTP_COOKIE_VARS[$k]))
  293.             {
  294.                 while (list($k2, $v2) = each($HTTP_COOKIE_VARS[$k]))
  295.                 {
  296.                     $HTTP_COOKIE_VARS[$k][$k2] = addslashes($v2);
  297.                 }
  298.                 @reset($HTTP_COOKIE_VARS[$k]);
  299.             }
  300.             else
  301.             {
  302.                 $HTTP_COOKIE_VARS[$k] = addslashes($v);
  303.             }
  304.         }
  305.         @reset($HTTP_COOKIE_VARS);
  306.     }
  307. }
  308.  
  309. // Begin main prog
  310. define('IN_PHPBB', true);
  311. // Uncomment the following line to completely disable the ftp option...
  312. // define('NO_FTP', true);
  313. $phpbb_root_path = './../';
  314. include($phpbb_root_path.'extension.inc');
  315.  
  316. // Initialise some basic arrays
  317. $userdata = array();
  318. $lang = array();
  319. $error = false;
  320.  
  321. // Include some required functions
  322. include($phpbb_root_path.'includes/constants.'.$phpEx);
  323. include($phpbb_root_path.'includes/functions.'.$phpEx);
  324. include($phpbb_root_path.'includes/sessions.'.$phpEx);
  325.  
  326. // Define schema info
  327. $available_dbms = array(
  328.     'mysql'=> array(
  329.         'LABEL'            => 'MySQL 3.x',
  330.         'SCHEMA'        => 'mysql', 
  331.         'DELIM'            => ';',
  332.         'DELIM_BASIC'    => ';',
  333.         'COMMENTS'        => 'remove_remarks'
  334.     ), 
  335.     'mysql4' => array(
  336.         'LABEL'            => 'MySQL 4.x/5.x',
  337.         'SCHEMA'        => 'mysql', 
  338.         'DELIM'            => ';', 
  339.         'DELIM_BASIC'    => ';',
  340.         'COMMENTS'        => 'remove_remarks'
  341.     ), 
  342.     'postgres' => array(
  343.         'LABEL'            => 'PostgreSQL 7.x',
  344.         'SCHEMA'        => 'postgres', 
  345.         'DELIM'            => ';', 
  346.         'DELIM_BASIC'    => ';',
  347.         'COMMENTS'        => 'remove_comments'
  348.     ), 
  349.     'mssql' => array(
  350.         'LABEL'            => 'MS SQL Server 7/2000',
  351.         'SCHEMA'        => 'mssql', 
  352.         'DELIM'            => 'GO', 
  353.         'DELIM_BASIC'    => ';',
  354.         'COMMENTS'        => 'remove_comments'
  355.     ),
  356.     'msaccess' => array(
  357.         'LABEL'            => 'MS Access [ ODBC ]',
  358.         'SCHEMA'        => '', 
  359.         'DELIM'            => '', 
  360.         'DELIM_BASIC'    => ';',
  361.         'COMMENTS'        => ''
  362.     ),
  363.     'mssql-odbc' =>    array(
  364.         'LABEL'            => 'MS SQL Server [ ODBC ]',
  365.         'SCHEMA'        => 'mssql', 
  366.         'DELIM'            => 'GO',
  367.         'DELIM_BASIC'    => ';',
  368.         'COMMENTS'        => 'remove_comments'
  369.     )
  370. );
  371.  
  372. // Obtain various vars
  373. $confirm = (isset($HTTP_POST_VARS['confirm'])) ? true : false;
  374. $cancel = (isset($HTTP_POST_VARS['cancel'])) ? true : false;
  375.  
  376. if (isset($HTTP_POST_VARS['install_step']) || isset($HTTP_GET_VARS['install_step']))
  377. {
  378.     $install_step = (isset($HTTP_POST_VARS['install_step'])) ? $HTTP_POST_VARS['install_step'] : $HTTP_GET_VARS['install_step'];
  379. }
  380. else
  381. {
  382.     $install_step = '';
  383. }
  384.  
  385. $upgrade = (!empty($HTTP_POST_VARS['upgrade'])) ? $HTTP_POST_VARS['upgrade']: '';
  386. $upgrade_now = (!empty($HTTP_POST_VARS['upgrade_now'])) ? $HTTP_POST_VARS['upgrade_now']:'';
  387.  
  388. $dbms = isset($HTTP_POST_VARS['dbms']) ? $HTTP_POST_VARS['dbms'] : '';
  389.  
  390. $dbhost = (!empty($HTTP_POST_VARS['dbhost'])) ? $HTTP_POST_VARS['dbhost'] : 'localhost';
  391. $dbuser = (!empty($HTTP_POST_VARS['dbuser'])) ? $HTTP_POST_VARS['dbuser'] : '';
  392. $dbpasswd = (!empty($HTTP_POST_VARS['dbpasswd'])) ? $HTTP_POST_VARS['dbpasswd'] : '';
  393. $dbname = (!empty($HTTP_POST_VARS['dbname'])) ? $HTTP_POST_VARS['dbname'] : '';
  394.  
  395. $table_prefix = (!empty($HTTP_POST_VARS['prefix'])) ? $HTTP_POST_VARS['prefix'] : '';
  396.  
  397. $admin_name = (!empty($HTTP_POST_VARS['admin_name'])) ? $HTTP_POST_VARS['admin_name'] : '';
  398. $admin_pass1 = (!empty($HTTP_POST_VARS['admin_pass1'])) ? $HTTP_POST_VARS['admin_pass1'] : '';
  399. $admin_pass2 = (!empty($HTTP_POST_VARS['admin_pass2'])) ? $HTTP_POST_VARS['admin_pass2'] : '';
  400.  
  401. $ftp_path = (!empty($HTTP_POST_VARS['ftp_path'])) ? $HTTP_POST_VARS['ftp_path'] : '';
  402. $ftp_user = (!empty($HTTP_POST_VARS['ftp_user'])) ? $HTTP_POST_VARS['ftp_user'] : '';
  403. $ftp_pass = (!empty($HTTP_POST_VARS['ftp_pass'])) ? $HTTP_POST_VARS['ftp_pass'] : '';
  404.  
  405. if (isset($HTTP_POST_VARS['lang']) && preg_match('#^[a-z_]+$#', $HTTP_POST_VARS['lang']))
  406. {
  407.     $language = strip_tags($HTTP_POST_VARS['lang']);
  408. }
  409. else
  410. {
  411.     $language = guess_lang();
  412. }
  413.  
  414. $board_email = (!empty($HTTP_POST_VARS['board_email'])) ? $HTTP_POST_VARS['board_email'] : '';
  415. $script_path = (!empty($HTTP_POST_VARS['script_path'])) ? $HTTP_POST_VARS['script_path'] : str_replace('install', '', dirname($HTTP_SERVER_VARS['PHP_SELF']));
  416.  
  417. if (!empty($HTTP_POST_VARS['server_name']))
  418. {
  419.     $server_name = $HTTP_POST_VARS['server_name'];
  420. }
  421. else
  422. {
  423.     // Guess at some basic info used for install..
  424.     if (!empty($HTTP_SERVER_VARS['SERVER_NAME']) || !empty($HTTP_ENV_VARS['SERVER_NAME']))
  425.     {
  426.         $server_name = (!empty($HTTP_SERVER_VARS['SERVER_NAME'])) ? $HTTP_SERVER_VARS['SERVER_NAME'] : $HTTP_ENV_VARS['SERVER_NAME'];
  427.     }
  428.     else if (!empty($HTTP_SERVER_VARS['HTTP_HOST']) || !empty($HTTP_ENV_VARS['HTTP_HOST']))
  429.     {
  430.         $server_name = (!empty($HTTP_SERVER_VARS['HTTP_HOST'])) ? $HTTP_SERVER_VARS['HTTP_HOST'] : $HTTP_ENV_VARS['HTTP_HOST'];
  431.     }
  432.     else
  433.     {
  434.         $server_name = '';
  435.     }
  436. }
  437.  
  438. if (!empty($HTTP_POST_VARS['server_port']))
  439. {
  440.     $server_port = $HTTP_POST_VARS['server_port'];
  441. }
  442. else
  443. {
  444.     if (!empty($HTTP_SERVER_VARS['SERVER_PORT']) || !empty($HTTP_ENV_VARS['SERVER_PORT']))
  445.     {
  446.         $server_port = (!empty($HTTP_SERVER_VARS['SERVER_PORT'])) ? $HTTP_SERVER_VARS['SERVER_PORT'] : $HTTP_ENV_VARS['SERVER_PORT'];
  447.     }
  448.     else
  449.     {
  450.         $server_port = '80';
  451.     }
  452. }
  453.  
  454. // Open config.php ... if it exists
  455. if (@file_exists(@phpbb_realpath('config.'.$phpEx)))
  456. {
  457.     include($phpbb_root_path.'config.'.$phpEx);
  458. }
  459.  
  460. // Is phpBB already installed? Yes? Redirect to the index
  461. if (defined("PHPBB_INSTALLED"))
  462. {
  463.     redirect('../index.'.$phpEx);
  464. }
  465.  
  466. // Import language file, setup template ...
  467. include($phpbb_root_path.'language/lang_' . $language . '/lang_main.'.$phpEx);
  468. include($phpbb_root_path.'language/lang_' . $language . '/lang_admin.'.$phpEx);
  469.  
  470. // Ok for the time being I'm commenting this out whilst I'm working on
  471. // better integration of the install with upgrade as per Bart's request
  472. // JLH
  473. if ($upgrade == 1)
  474. {
  475.     // require('upgrade.'.$phpEx);
  476.     $install_step = 1;
  477. }
  478.  
  479. // What do we need to do?
  480. if (!empty($HTTP_POST_VARS['send_file']) && $HTTP_POST_VARS['send_file'] == 1 && empty($HTTP_POST_VARS['upgrade_now']))
  481. {
  482.     header('Content-Type: text/x-delimtext; name="config.' . $phpEx . '"');
  483.     header('Content-disposition: attachment; filename="config.' . $phpEx . '"');
  484.  
  485.     // We need to stripslashes no matter what the setting of magic_quotes_gpc is
  486.     // because we add slashes at the top if its off, and they are added automaticlly 
  487.     // if it is on.
  488.     echo stripslashes($HTTP_POST_VARS['config_data']);
  489.  
  490.     exit;
  491. }
  492. else if (!empty($HTTP_POST_VARS['send_file']) && $HTTP_POST_VARS['send_file'] == 2)
  493. {
  494.     $s_hidden_fields = '<input type="hidden" name="config_data" value="' . htmlspecialchars(stripslashes($HTTP_POST_VARS['config_data'])) . '" />';
  495.     $s_hidden_fields .= '<input type="hidden" name="ftp_file" value="1" />';
  496.  
  497.     if ($upgrade == 1)
  498.     {
  499.         $s_hidden_fields .= '<input type="hidden" name="upgrade" value="1" />';
  500.     }
  501.  
  502.     page_header($lang['ftp_instructs']);
  503.  
  504. ?>
  505.                     <tr>
  506.                         <th colspan="2"><?php echo $lang['ftp_info']; ?></th>
  507.                     </tr>
  508.                     <tr>
  509.                         <td class="row1" align="right"><span class="gen"><?php echo $lang['ftp_path']; ?></span></td>
  510.                         <td class="row2"><input type="text" name="ftp_dir"></td>
  511.                     </tr>
  512.                     <tr>
  513.                         <td class="row1" align="right"><span class="gen"><?php echo $lang['ftp_username']; ?></span></td>
  514.                         <td class="row2"><input type="text" name="ftp_user"></td>
  515.                     </tr>
  516.                     <tr>
  517.                         <td class="row1" align="right"><span class="gen"><?php echo $lang['ftp_password']; ?></span></td>
  518.                         <td class="row2"><input type="password" name="ftp_pass"></td>
  519.                     </tr>
  520. <?php
  521.  
  522.     page_common_form($s_hidden_fields, $lang['Transfer_config']);
  523.     page_footer();
  524.     exit;
  525.  
  526. }
  527. else if (!empty($HTTP_POST_VARS['ftp_file']))
  528. {
  529.     // Try to connect ...
  530.     $conn_id = @ftp_connect('localhost');
  531.     $login_result = @ftp_login($conn_id, "$ftp_user", "$ftp_pass");
  532.  
  533.     if (!$conn_id || !$login_result)
  534.     {
  535.         page_header($lang['NoFTP_config']);
  536.  
  537.         // Error couldn't get connected... Go back to option to send file...
  538.         $s_hidden_fields = '<input type="hidden" name="config_data" value="' . htmlspecialchars(stripslashes($HTTP_POST_VARS['config_data'])) . '" />';
  539.         $s_hidden_fields .= '<input type="hidden" name="send_file" value="1" />';
  540.  
  541.         // If we're upgrading ...
  542.         if ($upgrade == 1)
  543.         {
  544.             $s_hidden_fields .= '<input type="hidden" name="upgrade" value="1" />';
  545.             $s_hidden_fields .= '<input type="hidden" name="dbms" value="'.$dmbs.'" />';
  546.             $s_hidden_fields .= '<input type="hidden" name="prefix" value="'.$table_prefix.'" />';
  547.             $s_hidden_fields .= '<input type="hidden" name="dbhost" value="'.$dbhost.'" />';
  548.             $s_hidden_fields .= '<input type="hidden" name="dbname" value="'.$dbname.'" />';
  549.             $s_hidden_fields .= '<input type="hidden" name="dbuser" value="'.$dbuser.'" />';
  550.             $s_hidden_fields .= '<input type="hidden" name="dbpasswd" value="'.$dbpasswd.'" />';
  551.             $s_hidden_fields .= '<input type="hidden" name="install_step" value="1" />';
  552.             $s_hidden_fields .= '<input type="hidden" name="admin_pass1" value="1" />';
  553.             $s_hidden_fields .= '<input type="hidden" name="admin_pass2" value="1" />';
  554.             $s_hidden_fields .= '<input type="hidden" name="server_port" value="'.$server_port.'" />';
  555.             $s_hidden_fields .= '<input type="hidden" name="server_name" value="'.$server_name.'" />';
  556.             $s_hidden_fields .= '<input type="hidden" name="script_path" value="'.$script_path.'" />';
  557.             $s_hidden_fields .= '<input type="hidden" name="board_email" value="'.$board_email.'" />';
  558.  
  559.             page_upgrade_form();
  560.         }
  561.         else
  562.         {
  563.             page_common_form($s_hidden_fields, $lang['Download_config']);
  564.  
  565.         }
  566.  
  567.         page_footer();
  568.         exit;
  569.     }
  570.     else
  571.     {
  572.         // Write out a temp file...
  573.         $tmpfname = @tempnam('/tmp', 'cfg');
  574.  
  575.         @unlink($tmpfname); // unlink for safety on php4.0.3+
  576.  
  577.         $fp = @fopen($tmpfname, 'w');
  578.  
  579.         @fwrite($fp, stripslashes($HTTP_POST_VARS['config_data']));
  580.  
  581.         @fclose($fp);
  582.  
  583.         // Now ftp it across.
  584.         @ftp_chdir($conn_id, $ftp_dir);
  585.  
  586.         $res = ftp_put($conn_id, 'config.'.$phpEx, $tmpfname, FTP_ASCII);
  587.  
  588.         @ftp_quit($conn_id);
  589.  
  590.         unlink($tmpfname);
  591.  
  592.         if ($upgrade == 1)    
  593.         {
  594.             require('upgrade.'.$phpEx);
  595.             exit;
  596.         }
  597.  
  598.         // Ok we are basically done with the install process let's go on 
  599.         // and let the user configure their board now. We are going to do 
  600.         // this by calling the admin_board.php from the normal board admin
  601.         // section.
  602.         $s_hidden_fields = '<input type="hidden" name="username" value="' . $admin_name . '" />';
  603.         $s_hidden_fields .= '<input type="hidden" name="password" value="' . $admin_pass1 . '" />';
  604.         $s_hidden_fields .= '<input type="hidden" name="redirect" value="../admin/index.'.$phpEx.'" />';
  605.         $s_hidden_fields .= '<input type="hidden" name="submit" value="' . $lang['Login'] . '" />';
  606.  
  607.         page_header($lang['Inst_Step_2']);
  608.         page_common_form($s_hidden_fields, $lang['Finish_Install']);
  609.         page_footer();
  610.         exit();
  611.     }
  612. }
  613. else if ((empty($install_step) || $admin_pass1 != $admin_pass2 || empty($admin_pass1) || empty($dbhost)))
  614. {
  615.     // Ok we haven't installed before so lets work our way through the various
  616.     // steps of the install process.  This could turn out to be quite a lengty 
  617.     // process.
  618.  
  619.     // Step 0 gather the pertinant info for database setup...
  620.     // Namely dbms, dbhost, dbname, dbuser, and dbpasswd.
  621.     $instruction_text = $lang['Inst_Step_0'];
  622.  
  623.     if (!empty($install_step))
  624.     {
  625.         if ((($HTTP_POST_VARS['admin_pass1'] != $HTTP_POST_VARS['admin_pass2'])) ||
  626.             (empty($HTTP_POST_VARS['admin_pass1']) || empty($dbhost)) && $HTTP_POST_VARS['cur_lang'] == $language)
  627.         {
  628.             $error = $lang['Password_mismatch'];
  629.         }
  630.     }
  631.  
  632.     $dirname = $phpbb_root_path . 'language';
  633.     $dir = opendir($dirname);
  634.  
  635.     $lang_options = array();
  636.     while ($file = readdir($dir))
  637.     {
  638.         if (preg_match('#^lang_#i', $file) && !is_file(@phpbb_realpath($dirname . '/' . $file)) && !is_link(@phpbb_realpath($dirname . '/' . $file)))
  639.         {
  640.             $filename = trim(str_replace('lang_', '', $file));
  641.             $displayname = preg_replace('/^(.*?)_(.*)$/', '\1 [ \2 ]', $filename);
  642.             $displayname = preg_replace('/\[(.*?)_(.*)\]/', '[ \1 - \2 ]', $displayname);
  643.             $lang_options[$displayname] = $filename;
  644.         }
  645.     }
  646.  
  647.     closedir($dir);
  648.  
  649.     @asort($lang_options);
  650.     @reset($lang_options);
  651.  
  652.     $lang_select = '<select name="lang" onchange="this.form.submit()">';
  653.     while (list($displayname, $filename) = @each($lang_options))
  654.     {
  655.         $selected = ($language == $filename) ? ' selected="selected"' : '';
  656.         $lang_select .= '<option value="' . $filename . '"' . $selected . '>' . ucwords($displayname) . '</option>';
  657.     }
  658.     $lang_select .= '</select>';
  659.  
  660.     $dbms_select = '<select name="dbms" onchange="if(this.form.upgrade.options[this.form.upgrade.selectedIndex].value == 1){ this.selectedIndex = 0;}">';
  661.     while (list($dbms_name, $details) = @each($available_dbms))
  662.     {
  663.         $selected = ($dbms_name == $dbms) ? 'selected="selected"' : '';
  664.         $dbms_select .= '<option value="' . $dbms_name . '">' . $details['LABEL'] . '</option>';
  665.     }
  666.     $dbms_select .= '</select>';
  667.  
  668.     $upgrade_option = '<select name="upgrade"';
  669.     $upgrade_option .= 'onchange="if (this.options[this.selectedIndex].value == 1) { this.form.dbms.selectedIndex = 0; }">';
  670.     $upgrade_option .= '<option value="0">' . $lang['Install'] . '</option>';
  671.     $upgrade_option .= '<option value="1">' . $lang['Upgrade'] . '</option></select>';
  672.     
  673.     $s_hidden_fields = '<input type="hidden" name="install_step" value="1" /><input type="hidden" name="cur_lang" value="' . $language . '" />';
  674.  
  675.     page_header($instruction_text);
  676.  
  677. ?>
  678.                     <tr>
  679.                         <th colspan="2"><?php echo $lang['Initial_config']; ?></th>
  680.                     </tr>
  681.                     <tr>
  682.                         <td class="row1" align="right" width="30%"><span class="gen"><?php echo $lang['Default_lang']; ?>: </span></td>
  683.                         <td class="row2"><?php echo $lang_select; ?></td>
  684.                     </tr>
  685.                     <tr>
  686.                         <td class="row1" align="right"><span class="gen"><?php echo $lang['dbms']; ?>: </span></td>
  687.                         <td class="row2"><?php echo $dbms_select; ?></td>
  688.                     </tr>
  689.                     <tr>
  690.                         <td class="row1" align="right"><span class="gen"><?php echo $lang['Install_Method']; ?>:</span></td>
  691.                         <td class="row2"><?php echo $upgrade_option; ?></td>
  692.                     </tr>
  693.                     <tr>
  694.                         <th colspan="2"><?php echo $lang['DB_config']; ?></th>
  695.                     </tr>
  696.                     <tr>
  697.                         <td class="row1" align="right"><span class="gen"><?php echo $lang['DB_Host']; ?>: </span></td>
  698.                         <td class="row2"><input type="text" name="dbhost" value="<?php echo ($dbhost != '') ? $dbhost : ''; ?>" /></td>
  699.                     </tr>
  700.                     <tr>
  701.                         <td class="row1" align="right"><span class="gen"><?php echo $lang['DB_Name']; ?>: </span></td>
  702.                         <td class="row2"><input type="text" name="dbname" value="<?php echo ($dbname != '') ? $dbname : ''; ?>" /></td>
  703.                     </tr>
  704.                     <tr>
  705.                         <td class="row1" align="right"><span class="gen"><?php echo $lang['DB_Username']; ?>: </span></td>
  706.                         <td class="row2"><input type="text" name="dbuser" value="<?php echo ($dbuser != '') ? $dbuser : ''; ?>" /></td>
  707.                     </tr>
  708.                     <tr>
  709.                         <td class="row1" align="right"><span class="gen"><?php echo $lang['DB_Password']; ?>: </span></td>
  710.                         <td class="row2"><input type="password" name="dbpasswd" value="<?php echo ($dbpasswd != '') ? $dbpasswd : ''; ?>" /></td>
  711.                     </tr>
  712.                     <tr>
  713.                         <td class="row1" align="right"><span class="gen"><?php echo $lang['Table_Prefix']; ?>: </span></td>
  714.                         <td class="row2"><input type="text" name="prefix" value="<?php echo (!empty($table_prefix)) ? $table_prefix : "phpbb_"; ?>" /></td>
  715.                     </tr>
  716.                     <tr>
  717.                         <th colspan="2"><?php echo $lang['Admin_config']; ?></th>
  718.                     </tr>
  719. <?php
  720.  
  721.     if ($error)
  722.     {
  723. ?>
  724.                     <tr>
  725.                         <td class="row1" colspan="2" align="center"><span class="gen" style="color:red"><?php echo $error; ?></span></td>
  726.                     </tr>
  727. <?php
  728.  
  729.     }
  730. ?>
  731.                     <tr>
  732.                         <td class="row1" align="right"><span class="gen"><?php echo $lang['Admin_email']; ?>: </span></td>
  733.                         <td class="row2"><input type="text" name="board_email" value="<?php echo ($board_email != '') ? $board_email : ''; ?>" /></td>
  734.                     </tr> 
  735.                     <tr>
  736.                         <td class="row1" align="right"><span class="gen"><?php echo $lang['Server_name']; ?>: </span></td>
  737.                         <td class="row2"><input type="text" name="server_name" value="<?php echo $server_name; ?>" /></td>
  738.                     </tr> 
  739.                     <tr>
  740.                         <td class="row1" align="right"><span class="gen"><?php echo $lang['Server_port']; ?>: </span></td>
  741.                         <td class="row2"><input type="text" name="server_port" value="<?php echo $server_port; ?>" /></td>
  742.                     </tr>
  743.                     <tr>
  744.                         <td class="row1" align="right"><span class="gen"><?php echo $lang['Script_path']; ?>: </span></td>
  745.                         <td class="row2"><input type="text" name="script_path" value="<?php echo $script_path; ?>" /></td>
  746.                     </tr>
  747.                     <tr>
  748.                         <td class="row1" align="right"><span class="gen"><?php echo $lang['Admin_Username']; ?>: </span></td>
  749.                         <td class="row2"><input type="text" name="admin_name" value="<?php echo ($admin_name != '') ? $admin_name : ''; ?>" /></td>
  750.                     </tr>
  751.                     <tr>
  752.                         <td class="row1" align="right"><span class="gen"><?php echo $lang['Admin_Password']; ?>: </span></td>
  753.                         <td class="row2"><input type="password" name="admin_pass1" value="<?php echo ($admin_pass1 != '') ? $admin_pass1 : ''; ?>" /></td>
  754.                     </tr>
  755.                     <tr>
  756.                         <td class="row1" align="right"><span class="gen"><?php echo $lang['Admin_Password_confirm']; ?>: </span></td>
  757.                         <td class="row2"><input type="password" name="admin_pass2" value="<?php echo ($admin_pass2 != '') ? $admin_pass2 : ''; ?>" /></td>
  758.                     </tr>
  759. <?php
  760.  
  761.     page_common_form($s_hidden_fields, $lang['Start_Install']);
  762.     page_footer();
  763.     exit;
  764. }
  765. else
  766. {
  767.     // Go ahead and create the DB, then populate it
  768.     //
  769.     // MS Access is slightly different in that a pre-built, pre-
  770.     // populated DB is supplied, all we need do here is update
  771.     // the relevant entries
  772.     if (isset($dbms))
  773.     {
  774.         switch($dbms)
  775.         {
  776.             case 'msaccess':
  777.             case 'mssql-odbc':
  778.                 $check_exts = 'odbc';
  779.                 $check_other = 'odbc';
  780.                 break;
  781.  
  782.             case 'mssql':
  783.                 $check_exts = 'mssql';
  784.                 $check_other = 'sybase';
  785.                 break;
  786.  
  787.             case 'mysql':
  788.             case 'mysql4':
  789.                 $check_exts = 'mysql';
  790.                 $check_other = 'mysql';
  791.                 break;
  792.  
  793.             case 'postgres':
  794.                 $check_exts = 'pgsql';
  795.                 $check_other = 'pgsql';
  796.                 break;
  797.         }
  798.  
  799.         if (!extension_loaded($check_exts) && !extension_loaded($check_other))
  800.         {    
  801.             page_header($lang['Install'], '');
  802.             page_error($lang['Installer_Error'], $lang['Install_No_Ext']);
  803.             page_footer();
  804.             exit;
  805.         }
  806.  
  807.         include($phpbb_root_path.'includes/db.'.$phpEx);
  808.     }
  809.  
  810.     $dbms_schema = 'schemas/' . $available_dbms[$dbms]['SCHEMA'] . '_schema.sql';
  811.     $dbms_basic = 'schemas/' . $available_dbms[$dbms]['SCHEMA'] . '_basic.sql';
  812.  
  813.     $remove_remarks = $available_dbms[$dbms]['COMMENTS'];;
  814.     $delimiter = $available_dbms[$dbms]['DELIM']; 
  815.     $delimiter_basic = $available_dbms[$dbms]['DELIM_BASIC']; 
  816.  
  817.     if ($install_step == 1)
  818.     {
  819.         if ($upgrade != 1)
  820.         {
  821.             if ($dbms != 'msaccess')
  822.             {
  823.                 // Load in the sql parser
  824.                 include($phpbb_root_path.'includes/sql_parse.'.$phpEx);
  825.  
  826.                 // Ok we have the db info go ahead and read in the relevant schema
  827.                 // and work on building the table.. probably ought to provide some
  828.                 // kind of feedback to the user as we are working here in order
  829.                 // to let them know we are actually doing something.
  830.                 $sql_query = @fread(@fopen($dbms_schema, 'r'), @filesize($dbms_schema));
  831.                 $sql_query = preg_replace('/phpbb_/', $table_prefix, $sql_query);
  832.  
  833.                 $sql_query = $remove_remarks($sql_query);
  834.                 $sql_query = split_sql_file($sql_query, $delimiter);
  835.  
  836.                 for ($i = 0; $i < sizeof($sql_query); $i++)
  837.                 {
  838.                     if (trim($sql_query[$i]) != '')
  839.                     {
  840.                         if (!($result = $db->sql_query($sql_query[$i])))
  841.                         {
  842.                             $error = $db->sql_error();
  843.             
  844.                             page_header($lang['Install'], '');
  845.                             page_error($lang['Installer_Error'], $lang['Install_db_error'] . '<br />' . $error['message']);
  846.                             page_footer();
  847.                             exit;
  848.                         }
  849.                     }
  850.                 }
  851.         
  852.                 // Ok tables have been built, let's fill in the basic information
  853.                 $sql_query = @fread(@fopen($dbms_basic, 'r'), @filesize($dbms_basic));
  854.                 $sql_query = preg_replace('/phpbb_/', $table_prefix, $sql_query);
  855.  
  856.                 $sql_query = $remove_remarks($sql_query);
  857.                 $sql_query = split_sql_file($sql_query, $delimiter_basic);
  858.  
  859.                 for($i = 0; $i < sizeof($sql_query); $i++)
  860.                 {
  861.                     if (trim($sql_query[$i]) != '')
  862.                     {
  863.                         if (!($result = $db->sql_query($sql_query[$i])))
  864.                         {
  865.                             $error = $db->sql_error();
  866.  
  867.                             page_header($lang['Install'], '');
  868.                             page_error($lang['Installer_Error'], $lang['Install_db_error'] . '<br />' . $error['message']);
  869.                             page_footer();
  870.                             exit;
  871.                         }
  872.                     }
  873.                 }
  874.             }
  875.  
  876.             // Ok at this point they have entered their admin password, let's go 
  877.             // ahead and create the admin account with some basic default information
  878.             // that they can customize later, and write out the config file.  After
  879.             // this we are going to pass them over to the admin_forum.php script
  880.             // to set up their forum defaults.
  881.             $error = '';
  882.  
  883.             // Update the default admin user with their information.
  884.             $sql = "INSERT INTO " . $table_prefix . "config (config_name, config_value) 
  885.                 VALUES ('board_startdate', " . time() . ")";
  886.             if (!$db->sql_query($sql))
  887.             {
  888.                 $error .= "Could not insert board_startdate :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
  889.             }
  890.  
  891.             $sql = "INSERT INTO " . $table_prefix . "config (config_name, config_value) 
  892.                 VALUES ('default_lang', '" . str_replace("\'", "''", $language) . "')";
  893.             if (!$db->sql_query($sql))
  894.             {
  895.                 $error .= "Could not insert default_lang :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
  896.             }
  897.  
  898.             $update_config = array(
  899.                 'board_email'    => $board_email,
  900.                 'script_path'    => $script_path,
  901.                 'server_port'    => $server_port,
  902.                 'server_name'    => $server_name,
  903.             );
  904.  
  905.             while (list($config_name, $config_value) = each($update_config))
  906.             {
  907.                 $sql = "UPDATE " . $table_prefix . "config 
  908.                     SET config_value = '$config_value' 
  909.                     WHERE config_name = '$config_name'";
  910.                 if (!$db->sql_query($sql))
  911.                 {
  912.                     $error .= "Could not insert default_lang :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
  913.                 }
  914.             }
  915.  
  916.             $admin_pass_md5 = ($confirm && $userdata['user_level'] == ADMIN) ? $admin_pass1 : md5($admin_pass1);
  917.  
  918.             $sql = "UPDATE " . $table_prefix . "users 
  919.                 SET username = '" . str_replace("\'", "''", $admin_name) . "', user_password='" . str_replace("\'", "''", $admin_pass_md5) . "', user_lang = '" . str_replace("\'", "''", $language) . "', user_email='" . str_replace("\'", "''", $board_email) . "'
  920.                 WHERE username = 'Admin'";
  921.             if (!$db->sql_query($sql))
  922.             {
  923.                 $error .= "Could not update admin info :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
  924.             }
  925.  
  926.             $sql = "UPDATE " . $table_prefix . "users 
  927.                 SET user_regdate = " . time();
  928.             if (!$db->sql_query($sql))
  929.             {
  930.                 $error .= "Could not update user_regdate :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
  931.             }
  932.  
  933.             if ($error != '')
  934.             {
  935.                 page_header($lang['Install'], '');
  936.                 page_error($lang['Installer_Error'], $lang['Install_db_error'] . '<br /><br />' . $error);
  937.                 page_footer();
  938.                 exit;
  939.             }
  940.         }
  941.  
  942.         if (!$upgrade_now)
  943.         {
  944.             // Write out the config file.
  945.             $config_data = '<?php'."\n\n";
  946.             $config_data .= "\n// phpBB 2.x auto-generated config file\n// Do not change anything in this file!\n\n";
  947.             $config_data .= '$dbms = \'' . $dbms . '\';' . "\n\n";
  948.             $config_data .= '$dbhost = \'' . $dbhost . '\';' . "\n";
  949.             $config_data .= '$dbname = \'' . $dbname . '\';' . "\n";
  950.             $config_data .= '$dbuser = \'' . $dbuser . '\';' . "\n";
  951.             $config_data .= '$dbpasswd = \'' . $dbpasswd . '\';' . "\n\n";
  952.             $config_data .= '$table_prefix = \'' . $table_prefix . '\';' . "\n\n";
  953.             $config_data .= 'define(\'PHPBB_INSTALLED\', true);'."\n\n";    
  954.             $config_data .= '?' . '>'; // Done this to prevent highlighting editors getting confused!
  955.  
  956.             @umask(0111);
  957.             $no_open = FALSE;
  958.  
  959.             // Unable to open the file writeable do something here as an attempt
  960.             // to get around that...
  961.             if (!($fp = @fopen($phpbb_root_path . 'config.'.$phpEx, 'w')))
  962.             {
  963.                 $s_hidden_fields = '<input type="hidden" name="config_data" value="' . htmlspecialchars($config_data) . '" />';
  964.  
  965.                 if (@extension_loaded('ftp') && !defined('NO_FTP'))
  966.                 {
  967.                     page_header($lang['Unwriteable_config'] . '<p>' . $lang['ftp_option'] . '</p>');
  968.  
  969. ?>
  970.                     <tr>
  971.                         <th colspan="2"><?php echo $lang['ftp_choose']; ?></th>
  972.                     </tr>
  973.                     <tr>
  974.                         <td class="row1" align="right" width="50%"><span class="gen"><?php echo $lang['Attempt_ftp']; ?></span></td>
  975.                         <td class="row2"><input type="radio" name="send_file" value="2"></td>
  976.                     </tr>
  977.                     <tr>
  978.                         <td class="row1" align="right" width="50%"><span class="gen"><?php echo $lang['Send_file']; ?></span></td>
  979.                         <td class="row2"><input type="radio" name="send_file" value="1"></td>
  980.                     </tr>
  981. <?php 
  982.  
  983.                 }
  984.                 else
  985.                 {
  986.                     page_header($lang['Unwriteable_config']);
  987.                     $s_hidden_fields .= '<input type="hidden" name="send_file" value="1" />';
  988.                 }
  989.  
  990.                 if ($upgrade == 1)
  991.                 {
  992.                     $s_hidden_fields .= '<input type="hidden" name="upgrade" value="1" />';
  993.                     $s_hidden_fields .= '<input type="hidden" name="dbms" value="'.$dbms.'" />';
  994.                     $s_hidden_fields .= '<input type="hidden" name="prefix" value="'.$table_prefix.'" />';
  995.                     $s_hidden_fields .= '<input type="hidden" name="dbhost" value="'.$dbhost.'" />';
  996.                     $s_hidden_fields .= '<input type="hidden" name="dbname" value="'.$dbname.'" />';
  997.                     $s_hidden_fields .= '<input type="hidden" name="dbuser" value="'.$dbuser.'" />';
  998.                     $s_hidden_fields .= '<input type="hidden" name="dbpasswd" value="'.$dbpasswd.'" />';
  999.                     $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.