array(
		'LABEL' => 'FireBird',
		'SCHEMA' => 'firebird',
		'DELIM' => ';',
		'DELIM_BASIC' => ';',
		'COMMENTS' => 'remove_remarks'
	),
	'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'
	),
	'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'
	), 
	'postgres' => array(
		'LABEL' => 'PostgreSQL 7.x',
		'SCHEMA' => 'postgres',
		'DELIM' => ';',
		'DELIM_BASIC' => ';',
		'COMMENTS' => 'remove_comments'
	),
);
// Try and load an appropriate language
if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
	$accept_lang_ary = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	foreach ($accept_lang_ary as $accept_lang)
	{
		// Set correct format ... guess full xx_YY form
		$accept_lang = substr($accept_lang, 0, 2) . '_' . strtoupper(substr($accept_lang, 3, 2));
		if (file_exists($phpbb_root_path . 'language/' . $accept_lang))
		{
			$default_language = $accept_lang;
			break;
		}
		else
		{
			// No match on xx_YY so try xx
			$accept_lang = substr($accept_lang, 0, 2);
			if (file_exists($phpbb_root_path . 'language/' . $accept_lang))
			{
				$default_language = $accept_lang;
				break;
			}
		}
	}
}
// Obtain various vars
$confirm = (isset($_POST['confirm'])) ? true : false;
$cancel = (isset($_POST['cancel'])) ? true : false;
$install_step = (isset($_REQUEST['install_step'])) ? $_REQUEST['install_step'] : '';
$upgrade = (!empty($_POST['upgrade'])) ? $_POST['upgrade']: '';
$upgrade_now = (!empty($_POST['upgrade_now'])) ? $_POST['upgrade_now']:'';
$language = (!empty($_POST['language'])) ? htmlspecialchars($_POST['language']) : $default_language;
$dbms = isset($_POST['dbms']) ? $_POST['dbms'] : '';
$dbhost = (!empty($_POST['dbhost'])) ? $_POST['dbhost'] : '';
$dbuser = (!empty($_POST['dbuser'])) ? $_POST['dbuser'] : '';
$dbpasswd = (!empty($_POST['dbpasswd'])) ? $_POST['dbpasswd'] : '';
$dbname = (!empty($_POST['dbname'])) ? $_POST['dbname'] : '';
$table_prefix = (!empty($_POST['prefix'])) ? $_POST['prefix'] : '';
$admin_name = (!empty($_POST['admin_name'])) ? htmlspecialchars($_POST['admin_name']) : '';
$admin_pass1 = (!empty($_POST['admin_pass1'])) ? htmlspecialchars($_POST['admin_pass1']) : '';
$admin_pass2 = (!empty($_POST['admin_pass2'])) ? htmlspecialchars($_POST['admin_pass2']) : '';
$board_email1 = (!empty($_POST['board_email1'])) ? htmlspecialchars($_POST['board_email1']) : '';
$board_email2 = (!empty($_POST['board_email2'])) ? htmlspecialchars($_POST['board_email2']) : '';
$server_name = (!empty($_POST['server_name'])) ? htmlspecialchars($_POST['server_name']) : '';
$server_port = (!empty($_POST['server_port'])) ? htmlspecialchars($_POST['server_port']) : '';
$script_path = (!empty($_POST['script_path'])) ? htmlspecialchars($_POST['script_path']) : '';
$ftp_path = (!empty($_POST['ftp_path'])) ? $_POST['ftp_path'] : '';
$ftp_user = (!empty($_POST['ftp_user'])) ? $_POST['ftp_user'] : '';
$ftp_pass = (!empty($_POST['ftp_pass'])) ? $_POST['ftp_pass'] : '';
// Try opening config file
if (@file_exists('../config.'.$phpEx))
{
//	include('../config.'.$phpEx);
}
// Do we install/upgrade/update or quit back to index?
if (defined('PHPBB_INSTALLED'))
{
//	redirect("../index.$phpEx");
}
// Include essential scripts
include($phpbb_root_path . 'includes/session.'.$phpEx);
include($phpbb_root_path . 'includes/acm/acm_file.'.$phpEx);
include($phpbb_root_path . 'includes/functions_admin.'.$phpEx);
// Import language file, setup template ...
include($phpbb_root_path . 'language/' . $language . '/lang_main.'.$phpEx);
include($phpbb_root_path . 'language/' . $language . '/lang_admin.'.$phpEx);
// If we're upgrading include that script
if ($upgrade)
{
	require('upgrade.' . $phpEx);
	$install_step = 1;
}
// Instantiate classes for future use
$user = new user();
$auth = new auth();
$cache = new acm();
// What shall we do?
if (!empty($_POST['send_file']) && $_POST['send_file'] == 1  && !defined('PHPBB_INSTALLED') && empty($_POST['upgrade_now']))
{
	// 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.
	$_POST['config_data'] = stripslashes($_POST['config_data']);
	header("Content-Type: text/x-delimtext; name=\"config.$phpEx\"");
	header("Content-disposition: attachment; filename=config.$phpEx");
	echo $_POST['config_data'];
	exit;
}
else if (!empty($_POST['send_file']) && $_POST['send_file'] == 2 && !defined("PHPBB_INSTALLED"))
{
	// Ok we couldn't write the config file so let's try ftping it.
	$_POST['config_data'] = stripslashes($_POST['config_data']);
	$s_hidden_fields = '';
	$s_hidden_fields .= '';
	if ($upgrade == 1)
	{
		$s_hidden_fields .= '';
	}
	inst_page_header($lang['FTP_INSTRUCTS']);
?>
	
		|  | 
	
		|  |  | 
	
		|  |  | 
	
		|  |  | 
';
		$s_hidden_fields .= '';
		inst_page_header($lang['NO_FTP_CONFIG'], "install.$phpEx");
		if ($upgrade)
		{
			$s_hidden_fields .= '';
			$s_hidden_fields .= '';
			$s_hidden_fields .= '';
			$s_hidden_fields .= '';
			$s_hidden_fields .= '';
			$s_hidden_fields .= '';
			$s_hidden_fields .= '';
			$s_hidden_fields .= '';
			$s_hidden_fields .= '';
			$s_hidden_fields .= '';
			$s_hidden_fields .= '';
			$s_hidden_fields .= '';
			$s_hidden_fields .= '';
			$s_hidden_fields .= '';
			$s_hidden_fields .= '';
			page_upgrade_form();
		}
		else
		{
			page_common_form($s_hidden_fields, $lang['DOWNLOAD_CONFIG']);
		}
		inst_page_footer($lang['DOWNLOAD_CONFIG'], $s_hidden_fields);
		exit;
	}
	else
	{
		// Write out a temp file...
		$tmpfname = @tempnam('/tmp', 'cfg');
		@unlink($tmpfname); 
		$fp = @fopen($tmpfname, 'w');
		@fwrite($fp, $_POST['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)
		{
			require('upgrade.'.$phpEx);
			exit;
		}
		$sql = "SELECT * 
			FROM {$table_prefix}config";
		$result = $db->sql_query($sql);
		$config = array();
		while ($row = $db->sql_fetchrow($result))
		{
			$config[$row['config_name']] = $row['config_value'];
		}
		$db->sql_freeresult($result);
		// Log user in
		$auth->login($admin_name, $admin_pass1);
		inst_page_header($lang['INST_STEP_2'], "../adm/index.$phpEx$SID");
		inst_page_footer($lang['FINISH_INSTALL'], $s_hidden_fields);
		exit;
	}
}
else if ((empty($install_step) || $admin_pass1 != $admin_pass2 || $board_email1 != $board_email2 || 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($_SERVER['SERVER_NAME']) || !empty($_ENV['SERVER_NAME']))
	{
		$server_name = (!empty($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : $_ENV['SERVER_NAME'];
	}
	else if (!empty($_SERVER['HTTP_HOST']) || !empty($_ENV['HTTP_HOST']))
	{
		$server_name = (!empty($_SERVER['HTTP_HOST'])) ? $_SERVER['HTTP_HOST'] : $_ENV['HTTP_HOST'];
	}
	else
	{
		$server_name = '';
	}
	if (!empty($_SERVER['SERVER_PORT']) || !empty($_ENV['SERVER_PORT']))
	{
		$server_port = (!empty($_SERVER['SERVER_PORT'])) ? $_SERVER['SERVER_PORT'] : $_ENV['SERVER_PORT'];
	}
	else
	{
		$server_port = '80';
	}
	$script_path = preg_replace('#install\/install\.'.$phpEx.'#i', '', $_SERVER['PHP_SELF']);
	// Generate installation form
	$instruction_text = $lang['INST_STEP_0'];
	if (!empty($install_step))
	{
		if ((($_POST['admin_pass1'] != $_POST['admin_pass2'])) ||
			(empty($_POST['admin_pass1']) || empty($dbhost)) && $_POST['cur_lang'] == $language)
		{
			$error = $lang['PASSWORD_MISMATCH'];
		}
		if ((($_POST['board_email1'] != $_POST['board_email2'])) ||
			(empty($_POST['board_email1']) || empty($dbhost)) && $_POST['cur_lang'] == $language)
		{
			$error = $lang['INSTALL_EMAIL_MISMATCH'];
		}
	}
	$lang_options = inst_language_select($language);
	foreach($available_dbms as $dbms_name => $details)
	{
		$selected = ($dbms_name == $dbms) ? ' selected="selected' : '';
		$dbms_options .= '';
	}
	$upgrade_option = '';
	$upgrade_option .= '';
	$upgrade_option .= '';
	$s_hidden_fields = '';
	inst_page_header($instruction_text, "install.$phpEx");
?>
	
		|  | 
	
		| : |  | 
	
		| : |  | 
	
		| : |  | 
	
		|  | 
	
		| : |  | 
	
		| : |  | 
	
		| : |  | 
	
		| : |  | 
	
		| : |  | 
	
		|  | 
	
		|  | 
	
		| : |  | 
	
		| : |  | 
	
		| : |  | 
	
		| : |  | 
	
		| : |  | 
	
		| : |  | 
 
	
		| : |  | 
	
		| : |  | 
return_on_error = true;
				// 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_#is', $table_prefix, $sql_query);
				$sql_query = $remove_remarks($sql_query);
				$sql_query = split_sql_file($sql_query, $delimiter);
				$sql_count = count($sql_query);
				foreach ($sql_query as $sql)
				{
					$sql = str_replace('|', ';', $sql);
					if (!$db->sql_query($sql))
					{
						$error = $db->sql_error();
						inst_page_header($lang['INSTALL'], '');
						page_error($lang['INSTALLER_ERROR'], $lang['INSTALL_DB_ERROR'] . '
' . $error['message']);
						inst_page_footer();
						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);
				foreach ($sql_query as $sql)
				{
					if (!$db->sql_query($sql))
					{
						$error = $db->sql_error();
						inst_page_header($lang['INSTALL'], '');
						page_error($lang['INSTALLER_ERROR'], $lang['INSTALL_DB_ERROR'] . '
' . $error['message']);
						inst_page_footer();
						exit;
					}
				}
			}
			// Set default config and post data 
			$sql_ary = array(
				"INSERT INTO " . $table_prefix . "config (config_name, config_value)
				VALUES ('board_startdate', " . time() . ")", 
				"INSERT INTO " . $table_prefix . "config (config_name, config_value)
				VALUES ('default_lang', '" . $db->sql_escape($language) . "')", 
				"UPDATE " . $table_prefix . "config
				SET config_value = '" . $db->sql_escape($server_name) . "'
				WHERE config_name = 'server_name'", 
				"UPDATE " . $table_prefix . "config
				SET config_value = '" . $db->sql_escape($server_port) . "'
				WHERE config_name = 'server_port'", 
				"UPDATE " . $table_prefix . "config
				SET config_value = '" . $db->sql_escape($script_path) . "'
				WHERE config_name = 'script_path'", 
				"UPDATE " . $table_prefix . "config
				SET config_value = '" . $db->sql_escape($board_email) . "'
				WHERE config_name = 'board_email'", 
				"UPDATE " . $table_prefix . "config
				SET config_value = '" . $db->sql_escape($server_name) . "'
				WHERE config_name = 'cookie_domain'", 
				"UPDATE " . $table_prefix . "config
				SET config_value = '" . $db->sql_escape($admin_name) . "'
				WHERE config_name = 'newest_username'", 
				"UPDATE " . $table_prefix . "users
				SET username = '" . $db->sql_escape($admin_name) . "', user_password='" . $db->sql_escape(md5($admin_pass1)) . "', user_lang = '" . $db->sql_escape($language) . "', user_email='" . $db->sql_escape($board_email) . "'
				WHERE username = 'Admin'", 
				"UPDATE " . $table_prefix . "moderator_cache
				SET username = '" . $db->sql_escape($admin_name) . "'
				WHERE username = 'Admin'", 
				"UPDATE " . $table_prefix . "forums
				SET forum_last_poster_name = '" . $db->sql_escape($admin_name) . "'
				WHERE forum_last_poster_name = 'Admin'", 
				"UPDATE " . $table_prefix . "topics
				SET topic_first_poster_name = '" . $db->sql_escape($admin_name) . "', topic_last_poster_name = '" . $db->sql_escape($admin_name) . "'
				WHERE topic_first_poster_name = 'Admin'
					OR topic_last_poster_name = 'Admin'", 
				"UPDATE " . $table_prefix . "users
				SET user_regdate = " . time()
			);
			foreach ($sql_ary as $sql)
			{
				if (!$db->sql_query($sql))
				{
					$error = $db->sql_error();
					inst_page_header($lang['INSTALL'], '');
					page_error($lang['INSTALLER_ERROR'], $lang['INSTALL_DB_ERROR'] . '
' . $error['message']);
					inst_page_footer();
					exit;
				}
			}
		}
		if (!$upgrade_now)
		{
			// Write out the config file.
			$config_data = "'; // Done this to prevent highlighting editors getting confused!
			@umask(0111);
			$no_open = FALSE;
			if (!($fp = @fopen('../config.'.$phpEx, 'w')))
			{
				// Unable to open the file writeable do something here as an attempt
				// to get around that...
				$s_hidden_fields = '';
				if (extension_loaded('ftp') && !defined('NO_FTP'))
				{
					inst_page_header($lang['UNWRITEABLE_CONFIG'] . '' . $lang['FTP_OPTION'] . '
');
?>
					
						|  | 
					
						|  |  | 
					
						|  |  | 
';
				}
				if ($upgrade == 1)
				{
					$s_hidden_fields .= '';
					$s_hidden_fields .= '';
					$s_hidden_fields .= '';
					$s_hidden_fields .= '';
					$s_hidden_fields .= '';
					$s_hidden_fields .= '';
					$s_hidden_fields .= '';
					$s_hidden_fields .= '';
					$s_hidden_fields .= '';
					$s_hidden_fields .= '';
					$s_hidden_fields .= '';
					$s_hidden_fields .= '';
					$s_hidden_fields .= '';
					$s_hidden_fields .= '';
					page_upgrade_form();
				}
				else
				{
					page_common_form($s_hidden_fields, $lang['DOWNLOAD_CONFIG']);
				}
				inst_page_footer();
				exit;
			}
			$result = @fputs($fp, $config_data, strlen($config_data));
			@fclose($fp);
			$upgrade_now = $lang['UPGRADE_SUBMIT'];
		}
		// First off let's check and see if we are supposed to be doing an upgrade.
		if ($upgrade && $upgrade_now == $lang['UPGRADE_SUBMIT'])
		{
			define('INSTALLING', true);
			require('upgrade.'.$phpEx);
			exit;
		}
		// Load the basic configuration data
		define('SESSIONS_TABLE', $table_prefix . 'sessions');
		define('USERS_TABLE', $table_prefix . 'users');
		$sql = "SELECT * 
			FROM {$table_prefix}config";
		$result = $db->sql_query($sql);
		$config = array();
		while ($row = $db->sql_fetchrow($result))
		{
			$config[$row['config_name']] = $row['config_value'];
		}
		$db->sql_freeresult($result);
		// Log user in
		$auth->login($admin_name, $admin_pass1);
		inst_page_header($lang['INST_STEP_2'], "../adm/index.$phpEx$SID");
		inst_page_footer($lang['FINISH_INSTALL'], $s_hidden_fields);
		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))
	{
		foreach ($data as $k => $v)
		{
			$data[$k] = (is_array($v)) ? slash_input_data($v) : addslashes($v);
		}
	}
	return $data;
}
// Output page -> header
function inst_page_header($l_instructions, $s_action)
{
	global $phpEx, $lang;
?>