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.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

install.php

Zuletzt modifiziert: 09.10.2024, 12:51 - Dateigröße: 34.33 KiB


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