aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/install/install.php
diff options
context:
space:
mode:
authorPaul S. Owen <psotfx@users.sourceforge.net>2002-07-16 12:51:51 +0000
committerPaul S. Owen <psotfx@users.sourceforge.net>2002-07-16 12:51:51 +0000
commitd1698fdeb59df9a6e0c4594b25d2cb6944381d36 (patch)
tree1b350a04b39386f1d0e5a9c74feb1ac0c5bf51ba /phpBB/install/install.php
parent8238a7cfb869049ded73d3a1650ca5b224841e84 (diff)
downloadforums-d1698fdeb59df9a6e0c4594b25d2cb6944381d36.tar
forums-d1698fdeb59df9a6e0c4594b25d2cb6944381d36.tar.gz
forums-d1698fdeb59df9a6e0c4594b25d2cb6944381d36.tar.bz2
forums-d1698fdeb59df9a6e0c4594b25d2cb6944381d36.tar.xz
forums-d1698fdeb59df9a6e0c4594b25d2cb6944381d36.zip
Centralise install/upgrade/schemas ... make for easier removal and less cluter ... I think ... install needs to have it's template hard coded
git-svn-id: file:///svn/phpbb/trunk@2692 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/install/install.php')
-rw-r--r--phpBB/install/install.php1006
1 files changed, 1006 insertions, 0 deletions
diff --git a/phpBB/install/install.php b/phpBB/install/install.php
new file mode 100644
index 0000000000..35b1373af5
--- /dev/null
+++ b/phpBB/install/install.php
@@ -0,0 +1,1006 @@
+<?php
+/***************************************************************************
+ * install.php
+ * -------------------
+ * begin : Tuesday, Sept 11, 2001
+ * copyright : (C) 2001 The phpBB Group
+ * email : supportphpbb.com
+ *
+ * $Id$
+ *
+ ***************************************************************************/
+
+/***************************************************************************
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ ***************************************************************************/
+
+error_reporting (E_ERROR | E_WARNING | E_PARSE); // This will NOT report uninitialized variables
+set_magic_quotes_runtime(0); // Disable magic_quotes_runtime
+
+define('IN_PHPBB', true);
+$phpbb_root_path='./../';
+require($phpbb_root_path.'extension.inc');
+require($phpbb_root_dir . 'includes/functions_selects.'.$phpEx);
+
+$userdata = array();
+$lang = array();
+$reinstall = false;
+
+if ( !get_magic_quotes_gpc() )
+{
+ $HTTP_GET_VARS = slash_input_data($HTTP_GET_VARS);
+ $HTTP_POST_VARS = slash_input_data($HTTP_POST_VARS);
+ $HTTP_COOKIE_VARS = slash_input_data($HTTP_COOKIE_VARS);
+}
+
+/***************************************************************************
+ * Install Customization Section
+ *
+ * This section can be modified to set up some basic default information
+ * used by the install script. Specifically the default theme data
+ * and the default template.
+ *
+ **************************************************************************/
+
+$default_language = 'english';
+$default_template = 'subSilver';
+
+$available_dbms = array(
+ "mysql" => array(
+ "LABEL" => "MySQL 3.x",
+ "SCHEMA" => "mysql",
+ "DELIM" => ";",
+ "DELIM_BASIC" => ";",
+ "COMMENTS" => "remove_remarks"
+ ),
+ "mysql4" => array(
+ "LABEL" => "MySQL 4.x",
+ "SCHEMA" => "mysql",
+ "DELIM" => ";",
+ "DELIM_BASIC" => ";",
+ "COMMENTS" => "remove_remarks"
+ ),
+ "postgres" => array(
+ "LABEL" => "PostgreSQL 7.x",
+ "SCHEMA" => "postgres",
+ "DELIM" => ";",
+ "DELIM_BASIC" => ";",
+ "COMMENTS" => "remove_comments"
+ ),
+ "mssql" => array(
+ "LABEL" => "MS SQL Server 7/2000",
+ "SCHEMA" => "mssql",
+ "DELIM" => "GO",
+ "DELIM_BASIC" => ";",
+ "COMMENTS" => "remove_comments"
+ ),
+ "msaccess" => array(
+ "LABEL" => "MS Access [ ODBC ]",
+ "SCHEMA" => "",
+ "DELIM" => "",
+ "DELIM_BASIC" => ";",
+ "COMMENTS" => ""
+ ),
+ "mssql-odbc" => array(
+ "LABEL" => "MS SQL Server [ ODBC ]",
+ "SCHEMA" => "mssql",
+ "DELIM" => "GO",
+ "DELIM_BASIC" => ";",
+ "COMMENTS" => "remove_comments"
+ )
+);
+
+//
+// drop table schema
+//
+$sql_array = array();
+
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_auth_access";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_banlist";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_categories";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_config";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_disallow";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_forum_prune";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_forums";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_groups";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_posts";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_posts_text";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_privmsgs";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_privmsgs_text";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_ranks";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_search_results";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_search_wordlist";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_search_wordmatch";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_sessions";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_smilies";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_themes";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_themes_name";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_topics";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_topics_watch";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_user_group";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_users";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_vote_desc";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_vote_results";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_vote_voters";
+$sql_array['drop_schema'][] = "DROP TABLE phpbb_words";
+
+//
+// Uncomment the following line to completely disable the ftp option...
+//
+// define('NO_FTP', true);
+
+/***************************************************************************
+*
+* End Install Customization Section
+*
+***************************************************************************/
+
+//
+// Obtain various vars
+//
+$confirm = ( isset($HTTP_POST_VARS['confirm']) ) ? true : false;
+$cancel = ( isset($HTTP_POST_VARS['cancel']) ) ? true : false;
+
+if( isset($HTTP_POST_VARS['install_step']) || isset($HTTP_GET_VARS['install_step']) )
+{
+ $install_step = ( isset($HTTP_POST_VARS['install_step']) ) ? $HTTP_POST_VARS['install_step'] : $HTTP_GET_VARS['install_step'];
+}
+else
+{
+ $install_step = "";
+}
+
+$upgrade = ( !empty($HTTP_POST_VARS['upgrade']) ) ? $HTTP_POST_VARS['upgrade']: '';
+$upgrade_now = ( !empty($HTTP_POST_VARS['upgrade_now']) ) ? $HTTP_POST_VARS['upgrade_now']:'';
+
+$dbms = isset($HTTP_POST_VARS['dbms']) ? $HTTP_POST_VARS['dbms'] : "";
+$language = ( !empty($HTTP_POST_VARS['language']) ) ? $HTTP_POST_VARS['language'] : $default_language;
+
+$dbhost = ( !empty($HTTP_POST_VARS['dbhost']) ) ? $HTTP_POST_VARS['dbhost'] : "";
+$dbuser = ( !empty($HTTP_POST_VARS['dbuser']) ) ? $HTTP_POST_VARS['dbuser'] : "";
+$dbpasswd = ( !empty($HTTP_POST_VARS['dbpasswd']) ) ? $HTTP_POST_VARS['dbpasswd'] : "";
+$dbname = ( !empty($HTTP_POST_VARS['dbname']) ) ? $HTTP_POST_VARS['dbname'] : "";
+
+$table_prefix = ( !empty($HTTP_POST_VARS['prefix']) ) ? $HTTP_POST_VARS['prefix'] : "";
+
+$admin_name = ( !empty($HTTP_POST_VARS['admin_name']) ) ? $HTTP_POST_VARS['admin_name'] : "";
+$admin_pass1 = ( !empty($HTTP_POST_VARS['admin_pass1']) ) ? $HTTP_POST_VARS['admin_pass1'] : "";
+$admin_pass2 = ( !empty($HTTP_POST_VARS['admin_pass2']) ) ? $HTTP_POST_VARS['admin_pass2'] : "";
+
+$ftp_path = ( !empty($HTTP_POST_VARS['ftp_path']) ) ? $HTTP_POST_VARS['ftp_path'] : "";
+$ftp_user = ( !empty($HTTP_POST_VARS['ftp_user']) ) ? $HTTP_POST_VARS['ftp_user'] : "";
+$ftp_pass = ( !empty($HTTP_POST_VARS['ftp_pass']) ) ? $HTTP_POST_VARS['ftp_pass'] : "";
+
+$server_name = ( !empty($HTTP_POST_VARS['server_name']) ) ? $HTTP_POST_VARS['server_name'] : "";
+$server_port = ( !empty($HTTP_POST_VARS['server_port']) ) ? $HTTP_POST_VARS['server_port'] : "";
+$board_email = ( !empty($HTTP_POST_VARS['board_email']) ) ? $HTTP_POST_VARS['board_email'] : "";
+$script_path = ( !empty($HTTP_POST_VARS['script_path']) ) ? $HTTP_POST_VARS['script_path'] : "";
+
+if( @file_exists('config.'.$phpEx) )
+{
+ include('config.'.$phpEx);
+}
+
+if( !defined("PHPBB_INSTALLED") )
+{
+ include($phpbb_root_path.'includes/sql_parse.'.$phpEx);
+ include($phpbb_root_path.'includes/constants.'.$phpEx);
+ include($phpbb_root_path.'includes/template.'.$phpEx);
+ include($phpbb_root_path.'includes/functions.'.$phpEx);
+ include($phpbb_root_path.'includes/sessions.'.$phpEx);
+
+ //
+ // Import language file, setup template ...
+ //
+ include($phpbb_root_path.'language/lang_' . $language . '/lang_main.'.$phpEx);
+ include($phpbb_root_path.'language/lang_' . $language . '/lang_admin.'.$phpEx);
+
+ $template = new Template($phpbb_root_path . "templates/" . $default_template);
+
+ //
+ // Ok for the time being I'm commenting this out whilst I'm working on
+ // better integration of the install with upgrade as per Bart's request
+ // JLH
+ //
+
+ if( $upgrade == 1 )
+ {
+ // require('upgrade.'.$phpEx);
+ $install_step = 1;
+ }
+
+ //
+ // Load default template for install
+ //
+ $template->set_filenames(array(
+ "body" => "install.tpl")
+ );
+
+ $template->assign_vars(array(
+ "L_INSTALLATION" => $lang['Welcome_install'])
+ );
+}
+else
+{
+ define("IN_ADMIN", 1);
+
+ include($phpbb_root_path.'common.'.$phpEx);
+ include($phpbb_root_path.'includes/sql_parse.'.$phpEx);
+
+ //
+ // Set page ID for session management
+ //
+ $userdata = session_pagestart($user_ip, PAGE_INDEX, $session_length);
+ init_userprefs($userdata);
+ //
+ // End session management
+ //
+
+ if( $userdata['user_level'] == ADMIN && !$cancel && $dbms != 'msaccess' )
+ {
+ if( !$confirm )
+ {
+ //
+ // Sorry this has already been installed can't do anything more with it
+ //
+ include($phpbb_root_path . 'includes/page_header.'.$phpEx);
+
+ $template->set_filenames(array(
+ "confirm" => "confirm_body.tpl")
+ );
+
+ $template->assign_vars(array(
+ "MESSAGE_TITLE" => $lang['Admin_config'],
+ "MESSAGE_TEXT" => $lang['Re_install'],
+
+ "L_YES" => $lang['Yes'],
+ "L_NO" => $lang['No'],
+
+ "S_CONFIRM_ACTION" => append_sid("install.$phpEx"),
+ "S_HIDDEN_FIELDS" => $hidden_fields)
+ );
+
+ $template->pparse("confirm");
+
+ include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
+ }
+
+ include($phpbb_root_path.'language/lang_' . $language . '/lang_main.'.$phpEx);
+ include($phpbb_root_path.'language/lang_' . $language . '/lang_admin.'.$phpEx);
+
+ $template = new Template($phpbb_root_path . "templates/" . $default_template);
+
+ $template->set_filenames(array(
+ "body" => "install.tpl")
+ );
+
+ $template->assign_vars(array(
+ "L_INSTALLATION" => $lang['Welcome_install'])
+ );
+
+ $reinstall = true;
+ }
+ else
+ {
+ header("Location: " . append_sid("index.$phpEx", true));
+ }
+}
+
+//
+//
+//
+if( !empty($HTTP_POST_VARS['send_file']) && $HTTP_POST_VARS['send_file'] == 1 && !defined("PHPBB_INSTALLED") && empty($HTTP_POST_VARS['upgrade_now']) )
+{
+ header("Content-Type: text/x-delimtext; name=\"config.$phpEx\"");
+ header("Content-disposition: attachment; filename=config.$phpEx");
+
+ //
+ // We need to stripslashes no matter what the setting of magic_quotes_gpc is
+ // because we add slahes at the top if its off, and they are added automaticlly
+ // if it is on.
+ //
+ $HTTP_POST_VARS['config_data'] = stripslashes($HTTP_POST_VARS['config_data']);
+
+ echo $HTTP_POST_VARS['config_data'];
+
+ exit;
+}
+else if( !empty($HTTP_POST_VARS['send_file']) && $HTTP_POST_VARS['send_file'] == 2 && !defined("PHPBB_INSTALLED") )
+{
+ //
+ // Ok we couldn't write the config file so let's try ftping it.
+ //
+
+ $HTTP_POST_VARS['config_data'] = stripslashes($HTTP_POST_VARS['config_data']);
+
+ $s_hidden_fields = '<input type="hidden" name="config_data" value="' . htmlspecialchars($HTTP_POST_VARS['config_data']) . '" />';
+ $s_hidden_fields .= '<input type="hidden" name="ftp_file" value="1" />';
+
+ if( $upgrade == 1 )
+ {
+ $s_hidden_fields .= '<input type="hidden" name="upgrade" value="1" />';
+ }
+
+ $template->assign_block_vars("switch_ftp_file", array());
+ $template->assign_block_vars("switch_common_install", array());
+
+ $template->assign_vars(array(
+ "L_INSTRUCTION_TEXT" => $lang['ftp_instructs'],
+ "L_FTP_INFO" => $lang['ftp_info'],
+ "L_FTP_PATH" => $lang['ftp_path'],
+ "L_FTP_PASS" => $lang['ftp_password'],
+ "L_FTP_USER" => $lang['ftp_username'],
+ "L_SUBMIT" => $lang['Transfer_config'],
+
+ "S_HIDDEN_FIELDS" => $s_hidden_fields,
+ "S_FORM_ACTION" => "install.$phpEx")
+ );
+
+ $template->pparse("body");
+
+ exit;
+
+}
+else if( !empty($HTTP_POST_VARS['ftp_file']) && !defined("PHPBB_INSTALLED") )
+{
+ //
+ // Here we'll actually send the file...
+ //
+ $HTTP_POST_VARS['config_data'] = stripslashes($HTTP_POST_VARS['config_data']);
+
+ $conn_id = @ftp_connect('localhost');
+ $login_result = @ftp_login($conn_id, "$ftp_user", "$ftp_pass");
+
+ if( !$conn_id || !$login_result )
+ {
+ //
+ // Error couldn't get connected... Go back to option to send file...
+ //
+ $s_hidden_fields = '<input type="hidden" name="config_data" value="' . htmlspecialchars($HTTP_POST_VARS['config_data']) . '" />';
+ $s_hidden_fields .= '<input type="hidden" name="send_file" value="1" />';
+ if( $upgrade == 1 )
+ {
+ $s_hidden_fields .= '<input type="hidden" name="upgrade" value="1" />';
+ $s_hidden_fields .= '<input type="hidden" name="dbms" value="'.$dmbs.'" />';
+ $s_hidden_fields .= '<input type="hidden" name="prefix" value="'.$table_prefix.'" />';
+ $s_hidden_fields .= '<input type="hidden" name="dbhost" value="'.$dbhost.'" />';
+ $s_hidden_fields .= '<input type="hidden" name="dbname" value="'.$dbname.'" />';
+ $s_hidden_fields .= '<input type="hidden" name="dbuser" value="'.$dbuser.'" />';
+ $s_hidden_fields .= '<input type="hidden" name="dbpasswd" value="'.$dbpasswd.'" />';
+ $s_hidden_fields .= '<input type="hidden" name="install_step" value="1" />';
+ $s_hidden_fields .= '<input type="hidden" name="admin_pass1" value="1" />';
+ $s_hidden_fields .= '<input type="hidden" name="admin_pass2" value="1" />';
+ $s_hidden_fields .= '<input type="hidden" name="server_port" value="'.$server_port.'" />';
+ $s_hidden_fields .= '<input type="hidden" name="server_name" value="'.$server_name.'" />';
+ $s_hidden_fields .= '<input type="hidden" name="script_path" value="'.$script_path.'" />';
+ $s_hidden_fields .= '<input type="hidden" name="board_email" value="'.$board_email.'" />';
+ $template->assign_block_vars("switch_upgrade_install", array());
+ $template->assign_vars(array(
+ "L_UPGRADE_INST" => $lang['continue_upgrade'],
+ "L_UPGRADE_SUBMIT" => $lang['upgrade_submit'])
+ );
+ }
+ $template->assign_block_vars("switch_common_install", array());
+
+ $template->assign_vars(array(
+ "L_INSTRUCTION_TEXT" => $lang['NoFTP_config'],
+ "L_SUBMIT" => $lang['Download_config'],
+
+ "S_HIDDEN_FIELDS" => $s_hidden_fields,
+ "S_FORM_ACTION" => "install.$phpEx")
+ );
+
+ $template->pparse('body');
+
+ exit;
+ }
+ else
+ {
+ //
+ // Write out a temp file...
+ //
+ $tmpfname = @tempnam('/tmp', 'cfg');
+
+ @unlink($tmpfname); // unlink for safety on php4.0.3+
+
+ $fp = @fopen($tmpfname, 'w');
+
+ @fwrite($fp, $HTTP_POST_VARS['config_data']);
+
+ @fclose($fp);
+
+ //
+ // Now ftp it across.
+ //
+ @ftp_chdir($conn_id, $ftp_dir);
+
+ $res = ftp_put($conn_id, 'config.'.$phpEx, $tmpfname, FTP_ASCII);
+
+ @ftp_quit($conn_id);
+
+ unlink($tmpfname);
+ if( $upgrade == 1 )
+ {
+ require('upgrade.'.$phpEx);
+ exit;
+ }
+ //
+ // Ok we are basically done with the install process let's go on
+ // and let the user configure their board now.
+ //
+ // We are going to do this by calling the admin_board.php from the
+ // normal board admin section.
+ //
+ $s_hidden_fields = '<input type="hidden" name="username" value="' . $admin_name . '" />';
+ $s_hidden_fields .= '<input type="hidden" name="password" value="' . $admin_pass1 . '" />';
+ $s_hidden_fields .= '<input type="hidden" name="redirect" value="admin/index.php" />';
+ $s_hidden_fields .= '<input type="hidden" name="submit" value="' . $lang['Login'] . '" />';
+
+ $template->assign_block_vars("switch_common_install", array());
+
+ $template->assign_vars(array(
+ "L_INSTRUCTION_TEXT" => $lang['Inst_Step_2'],
+ "L_SUBMIT" => $lang['Finish_Install'],
+
+ "S_HIDDEN_FIELDS" => $s_hidden_fields,
+ "S_FORM_ACTION" => "login.$phpEx")
+ );
+
+ $template->pparse('body');
+
+ exit();
+ }
+}
+else if( ( empty($install_step) || $admin_pass1 != $admin_pass2 || empty($admin_pass1) || $dbhost == "" ) && !defined("PHPBB_INSTALLED") )
+{ //
+ // Ok we haven't installed before so lets work our way through the various
+ // steps of the install process. This could turn out to be quite a lengty
+ // process.
+ //
+
+ //
+ // Step 0 gather the pertinant info for database setup...
+ // Namely dbms, dbhost, dbname, dbuser, and dbpasswd.
+ //
+
+ //
+ // Guess at some basic info used for install..
+ //
+
+ if ( !empty($HTTP_SERVER_VARS['SERVER_NAME']) || !empty($HTTP_ENV_VARS['SERVER_NAME']) )
+ {
+ $server_name = ( !empty($HTTP_SERVER_VARS['SERVER_NAME']) ) ? $HTTP_SERVER_VARS['SERVER_NAME'] : $HTTP_ENV_VARS['SERVER_NAME'];
+ }
+ else if ( !empty($HTTP_SERVER_VARS['HTTP_HOST']) || !empty($HTTP_ENV_VARS['HTTP_HOST']) )
+ {
+ $server_name = ( !empty($HTTP_SERVER_VARS['HTTP_HOST']) ) ? $HTTP_SERVER_VARS['HTTP_HOST'] : $HTTP_ENV_VARS['HTTP_HOST'];
+ }
+ else
+ {
+ $server_name = '';
+ }
+ if ( !empty($HTTP_SERVER_VARS['SERVER_PORT']) || !empty($HTTP_ENV_VARS['SERVER_PORT']) )
+ {
+ $server_port = ( !empty($HTTP_SERVER_VARS['SERVER_PORT']) ) ? $HTTP_SERVER_VARS['SERVER_PORT'] : $HTTP_ENV_VARS['SERVER_PORT'];
+ }
+ else
+ {
+ $server_port = '80';
+ }
+ $script_path = preg_replace('/install\.'.$phpEx.'/i', '', $HTTP_SERVER_VARS['PHP_SELF']);
+
+ $instruction_text = $lang['Inst_Step_0'];
+
+ if( (($HTTP_POST_VARS['admin_pass1'] != $HTTP_POST_VARS['admin_pass2']) && $install_step != '0') || (empty($HTTP_POST_VARS['admin_pass1']) && !empty($dbhost)))
+ {
+ $instruction_text = $lang['Password_mismatch'] . '<br />' . $instruction_text;
+ }
+
+ $lang_options = language_select($language, 'language');
+
+ $dbms_options = '<select name="dbms" onchange="if(document.install_form.upgrade.options[upgrade.selectedIndex].value == 1) { document.install_form.dbms.selectedIndex=0}">';
+ while( list($dbms_name, $details) = @each($available_dbms) )
+ {
+ $selected = ( $dbms_name == $dbms ) ? "selected=\"selected\"" : "";
+ $dbms_options .= '<option value="' . $dbms_name . '">' . $details['LABEL'] . '</option>';
+ }
+ $dbms_options .= '</select>';
+
+ $upgrade_option = '<select name="upgrade"';
+ $upgrade_option .= 'onchange="if( this.options[this.selectedIndex].value == 1 ) { document.install_form.dbms.selectedIndex=0; }">';
+ $upgrade_option .= '<option value="0">' . $lang['Install'] . '</option>';
+ $upgrade_option .= '<option value="1">' . $lang['Upgrade'] . '</option></select>';
+
+ $s_hidden_fields = '<input type="hidden" name="install_step" value="1" />';
+
+ $template->assign_block_vars("switch_stage_one_install", array());
+ $template->assign_block_vars("switch_common_install", array());
+
+ $template->assign_vars(array(
+ "L_INSTRUCTION_TEXT" => $instruction_text,
+ "L_INITIAL_CONFIGURATION" => $lang['Initial_config'],
+ "L_DATABASE_CONFIGURATION" => $lang['DB_config'],
+ "L_ADMIN_CONFIGURATION" => $lang['Admin_config'],
+ "L_LANGUAGE" => $lang['Default_lang'],
+ "L_DBMS" => $lang['dbms'],
+ "L_DB_HOST" => $lang['DB_Host'],
+ "L_DB_NAME" => $lang['DB_Name'],
+ "L_DB_USER" => $lang['DB_Username'],
+ "L_DB_PASSWORD" => $lang['DB_Password'],
+ "L_DB_PREFIX" => $lang['Table_Prefix'],
+ "L_UPGRADE" => $lang['Install_Method'],
+ "L_ADMIN_USERNAME" => $lang['Admin_Username'],
+ "L_ADMIN_PASSWORD" => $lang['Admin_Password'],
+ "L_ADMIN_CONFIRM_PASSWORD" => $lang['Admin_Password_confirm'],
+ "L_SUBMIT" => $lang['Start_Install'],
+ "L_ADMIN_EMAIL" => $lang['Admin_email'],
+ "L_SERVER_NAME" => $lang['Server_name'],
+ "L_SERVER_PORT" => $lang['Server_port'],
+ "L_SCRIPT_PATH" => $lang['Script_path'],
+
+ "SCRIPT_PATH" => $script_path,
+ "SERVER_PORT" => $server_port,
+ "SERVER_NAME" => $server_name,
+ "DB_PREFIX" => ( !empty($table_prefix) ) ? $table_prefix : "phpbb_",
+ "DB_HOST" => ( $dbhost != "" ) ? $dbhost : "",
+ "DB_USER" => ( $dbuser != "" ) ? $dbuser : "",
+ "DB_PASSWD" => ( $dbpasswd != "" ) ? $dbpasswd : "",
+ "ADMIN_USERNAME" => ( $admin_name != "" ) ? $admin_name : "",
+
+ "S_LANG_SELECT" => $lang_options,
+ "S_DBMS_SELECT" => $dbms_options,
+ "S_HIDDEN_FIELDS" => $s_hidden_fields,
+ "S_UPGRADE_SELECT" => $upgrade_option,
+ "S_FORM_ACTION" => "install.$phpEx")
+ );
+
+ $template->pparse("body");
+
+ exit;
+}
+else
+{
+ //
+ // Go ahead and create the DB, then populate it
+ //
+ // MS Access is slightly different in that a pre-built, pre-
+ // populated DB is supplied, all we need do here is update
+ // the relevant entries
+ //
+ if( $reinstall )
+ {
+ $sql_query = preg_replace('/phpbb_/', $table_prefix, $sql_array['drop_schema']);
+ $sql_count = count($sql_query);
+
+ for($i = 0; $i < $sql_count; $i++)
+ {
+ $result = $db->sql_query($sql_query[$i]);
+ if( !$result )
+ {
+ $error = $db->sql_error();
+
+ $template->assign_block_vars("switch_error_install", array());
+
+ $template->assign_vars(array(
+ "L_ERROR_TITLE" => $lang['Installer_Error'],
+ "L_ERROR" => $lang['Install_db_error'] . '<br /><br />' . $error)
+ );
+
+ $template->pparse('body');
+
+ exit;
+ }
+ }
+
+ $admin_name = $userdata['username'];
+ $admin_pass1 = $userdata['user_password'];
+ $language = $userdata['user_lang'];
+ }
+ else if( isset($dbms) )
+ {
+ switch( $dbms )
+ {
+ case 'msaccess':
+ case 'mssql-odbc':
+ $check_exts = 'odbc';
+ $check_other = 'odbc';
+ break;
+ case 'mssql':
+ $check_exts = 'mssql';
+ $check_other = 'sybase';
+ break;
+ case 'mysql':
+ case 'mysql4':
+ $check_exts = 'mysql';
+ $check_other = 'mysql';
+ break;
+ case 'postgres':
+ $check_exts = 'pgsql';
+ $check_other = 'pgsql';
+ break;
+ }
+ if( !extension_loaded( $check_exts ) && !extension_loaded( $check_other ) )
+ {
+ $template->assign_block_vars("switch_error_install", array());
+
+ $template->assign_vars(array(
+ "L_ERROR_TITLE" => $lang['Installer_Error'],
+ "L_ERROR" => $lang['Install_No_Ext'])
+ );
+ $template->pparse('body');
+ exit;
+ }
+ include($phpbb_root_path.'includes/db.'.$phpEx);
+ }
+
+ $dbms_schema = 'db/schemas/' . $available_dbms[$dbms]['SCHEMA'] . '_schema.sql';
+ $dbms_basic = 'db/schemas/' . $available_dbms[$dbms]['SCHEMA'] . '_basic.sql';
+
+ $remove_remarks = $available_dbms[$dbms]['COMMENTS'];;
+ $delimiter = $available_dbms[$dbms]['DELIM'];
+ $delimiter_basic = $available_dbms[$dbms]['DELIM_BASIC'];
+
+ if( $install_step == 1 || $reinstall )
+ {
+ if( $upgrade != 1 )
+ {
+ if( $dbms != 'msaccess' )
+ {
+ //
+ // Ok we have the db info go ahead and read in the relevant schema
+ // and work on building the table.. probably ought to provide some
+ // kind of feedback to the user as we are working here in order
+ // to let them know we are actually doing something.
+ //
+ $sql_query = @fread(@fopen($dbms_schema, 'r'), @filesize($dbms_schema));
+ $sql_query = preg_replace('/phpbb_/', $table_prefix, $sql_query);
+
+ $sql_query = $remove_remarks($sql_query);
+ $sql_query = split_sql_file($sql_query, $delimiter);
+
+ $sql_count = count($sql_query);
+
+ for($i = 0; $i < $sql_count; $i++)
+ {
+ $result = $db->sql_query($sql_query[$i]);
+ if( !$result )
+ {
+ $error = $db->sql_error();
+
+ $template->assign_block_vars("switch_error_install", array());
+
+ $template->assign_vars(array(
+ "L_ERROR_TITLE" => $lang['Installer_Error'],
+ "L_ERROR" => $lang['Install_db_error'] . '<br />' . $error['message'])
+ );
+
+ $template->pparse('body');
+
+ exit;
+ }
+ }
+
+ //
+ // Ok tables have been built, let's fill in the basic information
+ //
+ $sql_query = @fread(@fopen($dbms_basic, 'r'), @filesize($dbms_basic));
+ $sql_query = preg_replace('/phpbb_/', $table_prefix, $sql_query);
+
+ $sql_query = $remove_remarks($sql_query);
+ $sql_query = split_sql_file($sql_query, $delimiter_basic);
+
+ $sql_count = count($sql_query);
+
+ for($i = 0; $i < $sql_count; $i++)
+ {
+ $result = $db->sql_query($sql_query[$i]);
+ if( !$result )
+ {
+ $error = $db->sql_error();
+
+ $template->assign_block_vars("switch_error_install", array());
+
+ $template->assign_vars(array(
+ "L_ERROR_TITLE" => $lang['Installer_Error'],
+ "L_ERROR" => $lang['Install_db_error'] . "<br />" . $error["message"])
+ );
+
+ $template->pparse('body');
+
+ exit;
+ }
+ }
+ }
+
+ //
+ // Ok at this point they have entered their admin password, let's go
+ // ahead and create the admin account with some basic default information
+ // that they can customize later, and write out the config file. After
+ // this we are going to pass them over to the admin_forum.php script
+ // to set up their forum defaults.
+ //
+ $error = "";
+
+ //
+ // Update the default admin user with their information.
+ //
+ $sql = "INSERT INTO " . $table_prefix . "config (config_name, config_value)
+ VALUES ('board_startdate', " . time() . ")";
+ $result = $db->sql_query($sql);
+ if( !$result )
+ {
+ $error .= "Could not insert board_startdate :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
+ }
+
+ $sql = "INSERT INTO " . $table_prefix . "config (config_name, config_value)
+ VALUES ('default_lang', '" . str_replace("\'", "''", $language) . "')";
+ $result = $db->sql_query($sql);
+ if( !$result )
+ {
+ $error .= "Could not insert default_lang :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
+ }
+ $sql = "UPDATE " . $table_prefix . "config
+ SET config_value = '" . $server_name . "'
+ WHERE config_name = 'server_name'";
+ $result = $db->sql_query($sql);
+ if( !$result )
+ {
+ $error .= "Could not update Board info :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
+ }
+ $sql = "UPDATE " . $table_prefix . "config
+ SET config_value = '" . $server_port . "'
+ WHERE config_name = 'server_port'";
+ $result = $db->sql_query($sql);
+ if( !$result )
+ {
+ $error .= "Could not update Board info :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
+ }
+ $sql = "UPDATE " . $table_prefix . "config
+ SET config_value = '" . $script_path . "'
+ WHERE config_name = 'script_path'";
+ $result = $db->sql_query($sql);
+ if( !$result )
+ {
+ $error .= "Could not update Board info :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
+ }
+ $sql = "UPDATE " . $table_prefix . "config
+ SET config_value = '" . $board_email . "'
+ WHERE config_name = 'board_email'";
+ $result = $db->sql_query($sql);
+ if( !$result )
+ {
+ $error .= "Could not update Board info :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
+ }
+ $sql = "UPDATE " . $table_prefix . "config
+ SET config_value = '" . $server_name . "'
+ WHERE config_name = 'cookie_domain'";
+ $result = $db->sql_query($sql);
+ if( !$result )
+ {
+ $error .= "Could not update Board info :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
+ }
+
+ $sql = "UPDATE " . $table_prefix . "config
+ SET config_value = '" . $admin_name . "'
+ WHERE config_name = 'newest_username'";
+ $result = $db->sql_query($sql);
+ if( !$result )
+ {
+ $error .= "Could not update Board info :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
+ }
+
+
+
+ $admin_pass_md5 = ( $confirm && $userdata['user_level'] == ADMIN ) ? $admin_pass1 : md5($admin_pass1);
+
+ $sql = "UPDATE " . $table_prefix . "users
+ SET username = '" . str_replace("\'", "''", $admin_name) . "', user_password='" . str_replace("\'", "''", $admin_pass_md5) . "', user_lang = '" . str_replace("\'", "''", $language) . "', user_email='" . str_replace("\'", "''", $board_email) . "'
+ WHERE username = 'Admin'";
+ $result = $db->sql_query($sql);
+ if( !$result )
+ {
+ $error .= "Could not update admin info :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
+ }
+
+ $sql = "UPDATE " . $table_prefix . "users
+ SET user_regdate = " . time();
+ $result = $db->sql_query($sql);
+ if( !$result )
+ {
+ $error .= "Could not update user_regdate :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
+ }
+
+ //
+ // Change session table to HEAP if MySQL version matches
+ //
+ if( preg_match("/^mysql/", $dbms) )
+ {
+ $sql = "SELECT VERSION() AS mysql_version";
+ if($result = $db->sql_query($sql))
+ {
+ $row = $db->sql_fetchrow($result);
+ $version = $row['mysql_version'];
+
+ if( preg_match("/^(3\.23)|(4\.)/", $version) )
+ {
+ $sql = "ALTER TABLE " . $table_prefix . "sessions
+ TYPE=HEAP";
+ $db->sql_query($sql);
+ }
+ }
+ }
+
+ if( $error != "" )
+ {
+ $template->assign_block_vars("switch_error_install", array());
+
+ $template->assign_vars(array(
+ "L_ERROR_TITLE" => $lang['Installer_Error'],
+ "L_ERROR" => $lang['Install_db_error'] . '<br /><br />' . $error)
+ );
+
+ $template->pparse('body');
+
+ exit;
+ }
+ }
+
+ if( !$reinstall && !$upgrade_now )
+ {
+ $template->assign_block_vars("switch_common_install", array());
+
+ //
+ // Write out the config file.
+ //
+ $config_data = '<?php'."\n\n";
+ $config_data .= "//\n// phpBB 2.x auto-generated config file\n// Do not change anything in this file!\n//\n\n";
+ $config_data .= '$dbms = "' . $dbms . '";' . "\n\n";
+ $config_data .= '$dbhost = "' . $dbhost . '";' . "\n";
+ $config_data .= '$dbname = "' . $dbname . '";' . "\n";
+ $config_data .= '$dbuser = "' . $dbuser . '";' . "\n";
+ $config_data .= '$dbpasswd = "' . $dbpasswd . '";' . "\n\n";
+ $config_data .= '$table_prefix = "' . $table_prefix . '";' . "\n\n";
+ $config_data .= 'define(\'PHPBB_INSTALLED\', true);'."\n\n";
+ $config_data .= '?' . '>'; // Done this to prevent highlighting editors getting confused!
+
+ @umask(0111);
+ $no_open = FALSE;
+
+ $fp = @fopen('config.'.$phpEx, 'w');
+ if( !$fp )
+ {
+ //
+ // Unable to open the file writeable do something here as an attempt
+ // to get around that...
+ //
+ $s_hidden_fields = '<input type="hidden" name="config_data" value="' . htmlspecialchars($config_data) . '" />';
+
+ if( extension_loaded('ftp') && !defined('NO_FTP') )
+ {
+ $template->assign_block_vars('switch_ftp_option', array());
+
+ $lang['Unwriteable_config'] .= '<p>' . $lang['ftp_option'] . '</p>';
+
+ $template->assign_vars(array(
+ "L_CHOOSE_FTP" => $lang['ftp_choose'],
+ "L_ATTEMPT_FTP" => $lang['Attempt_ftp'],
+ "L_SEND_FILE" => $lang['Send_file'])
+ );
+ }
+ else
+ {
+ $s_hidden_fields .= '<input type="hidden" name="send_file" value="1" />';
+ }
+ if( $upgrade == 1 )
+ {
+ $s_hidden_fields .= '<input type="hidden" name="upgrade" value="1" />';
+ $s_hidden_fields .= '<input type="hidden" name="dbms" value="'.$dbms.'" />';
+ $s_hidden_fields .= '<input type="hidden" name="prefix" value="'.$table_prefix.'" />';
+ $s_hidden_fields .= '<input type="hidden" name="dbhost" value="'.$dbhost.'" />';
+ $s_hidden_fields .= '<input type="hidden" name="dbname" value="'.$dbname.'" />';
+ $s_hidden_fields .= '<input type="hidden" name="dbuser" value="'.$dbuser.'" />';
+ $s_hidden_fields .= '<input type="hidden" name="dbpasswd" value="'.$dbpasswd.'" />';
+ $s_hidden_fields .= '<input type="hidden" name="install_step" value="1" />';
+ $s_hidden_fields .= '<input type="hidden" name="admin_pass1" value="1" />';
+ $s_hidden_fields .= '<input type="hidden" name="admin_pass2" value="1" />';
+ $s_hidden_fields .= '<input type="hidden" name="server_port" value="'.$server_port.'" />';
+ $s_hidden_fields .= '<input type="hidden" name="server_name" value="'.$server_name.'" />';
+ $s_hidden_fields .= '<input type="hidden" name="script_path" value="'.$script_path.'" />';
+ $s_hidden_fields .= '<input type="hidden" name="board_email" value="'.$board_email.'" />';
+
+ $template->assign_block_vars("switch_upgrade_install", array());
+ $template->assign_vars(array(
+ "L_UPGRADE_INST" => $lang['continue_upgrade'],
+ "L_UPGRADE_SUBMIT" => $lang['upgrade_submit'])
+ );
+ }
+
+ $template->assign_vars(array(
+ "L_INSTRUCTION_TEXT" => $lang['Unwriteable_config'],
+ "L_SUBMIT" => $lang['Download_config'],
+
+ "S_HIDDEN_FIELDS" => $s_hidden_fields,
+ "S_FORM_ACTION" => "install.$phpEx")
+ );
+
+ $template->pparse('body');
+
+ exit;
+ }
+
+ $result = @fputs($fp, $config_data, strlen($config_data));
+
+ @fclose($fp);
+ $upgrade_now = $lang['upgrade_submit'];
+ }
+ else
+ {
+ $template->assign_block_vars("switch_common_install", array());
+ }
+
+ //
+ // First off let's check and see if we are supposed to be doing an upgrade.
+ //
+ if ( $upgrade == 1 && $upgrade_now == $lang['upgrade_submit'] )
+ {
+ define('INSTALLING', true);
+ require('upgrade.'.$phpEx);
+ exit;
+ }
+ //
+ // Ok we are basically done with the install process let's go on
+ // and let the user configure their board now.
+ //
+ // We are going to do this by calling the admin_board.php from the
+ // normal board admin section.
+ //
+ if( !$reinstall )
+ {
+ $s_hidden_fields = '<input type="hidden" name="username" value="' . $admin_name . '" />';
+ $s_hidden_fields .= '<input type="hidden" name="password" value="' . $admin_pass1 . '" />';
+ $s_hidden_fields .= '<input type="hidden" name="redirect" value="admin/index.php" />';
+ $s_hidden_fields .= '<input type="hidden" name="login" value="true" />';
+ }
+ else
+ {
+ $s_hidden_fields = "";
+ }
+
+ $template->assign_vars(array(
+ "L_INSTRUCTION_TEXT" => $lang['Inst_Step_2'],
+ "L_SUBMIT" => $lang['Finish_Install'],
+
+ "S_HIDDEN_FIELDS" => $s_hidden_fields,
+ "S_FORM_ACTION" => ( $reinstall ) ? append_sid("login.$phpEx") : "login.$phpEx")
+ );
+
+ $template->pparse('body');
+
+ exit;
+ }
+}
+
+//
+// addslashes to vars if magic_quotes_gpc is off this is a security precaution
+// to prevent someone trying to break out of a SQL statement.
+//
+function slash_input_data(&$data)
+{
+ if ( is_array($data) )
+ {
+ while( list($k, $v) = each($data) )
+ {
+ $data[$k] = ( is_array($v) ) ? slash_input_data($v) : addslashes($v);
+ }
+
+ @reset($data);
+ }
+ return $data;
+}
+
+?> \ No newline at end of file