'ar([_-][a-z]+)?',
'bulgarian' => 'bg',
'catalan' => 'ca',
'czech' => 'cs',
'danish' => 'da',
'german' => 'de([_-][a-z]+)?',
'english' => 'en([_-][a-z]+)?',
'estonian' => 'et',
'finnish' => 'fi',
'french' => 'fr([_-][a-z]+)?',
'greek' => 'el',
'spanish_argentina' => 'es[_-]ar',
'spanish' => 'es([_-][a-z]+)?',
'gaelic' => 'gd',
'galego' => 'gl',
'gujarati' => 'gu',
'hebrew' => 'he',
'hindi' => 'hi',
'croatian' => 'hr',
'hungarian' => 'hu',
'icelandic' => 'is',
'indonesian' => 'id([_-][a-z]+)?',
'italian' => 'it([_-][a-z]+)?',
'japanese' => 'ja([_-][a-z]+)?',
'korean' => 'ko([_-][a-z]+)?',
'latvian' => 'lv',
'lithuanian' => 'lt',
'macedonian' => 'mk',
'dutch' => 'nl([_-][a-z]+)?',
'norwegian' => 'no',
'punjabi' => 'pa',
'polish' => 'pl',
'portuguese_brazil' => 'pt[_-]br',
'portuguese' => 'pt([_-][a-z]+)?',
'romanian' => 'ro([_-][a-z]+)?',
'russian' => 'ru([_-][a-z]+)?',
'slovenian' => 'sl([_-][a-z]+)?',
'albanian' => 'sq',
'serbian' => 'sr([_-][a-z]+)?',
'slovak' => 'sv([_-][a-z]+)?',
'swedish' => 'sv([_-][a-z]+)?',
'thai' => 'th([_-][a-z]+)?',
'turkish' => 'tr([_-][a-z]+)?',
'ukranian' => 'uk([_-][a-z]+)?',
'urdu' => 'ur',
'viatnamese' => 'vi',
'chinese_traditional_taiwan'=> 'zh[_-]tw',
'chinese_simplified' => 'zh',
);
if (isset($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE']))
{
$accept_lang_ary = explode(',', $HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE']);
for ($i = 0; $i < sizeof($accept_lang_ary); $i++)
{
@reset($match_lang);
while (list($lang, $match) = each($match_lang))
{
if (preg_match('#' . $match . '#i', trim($accept_lang_ary[$i])))
{
if (file_exists(@phpbb_realpath($phpbb_root_path . 'language/lang_' . $lang)))
{
return $lang;
}
}
}
}
}
return 'english';
}
//
// FUNCTIONS
// ---------
// Begin
error_reporting (E_ERROR | E_WARNING | E_PARSE); // This will NOT report uninitialized variables
set_magic_quotes_runtime(0); // Disable magic_quotes_runtime
// Slash data if it isn't slashed
if (!get_magic_quotes_gpc())
{
if (is_array($HTTP_GET_VARS))
{
while (list($k, $v) = each($HTTP_GET_VARS))
{
if (is_array($HTTP_GET_VARS[$k]))
{
while (list($k2, $v2) = each($HTTP_GET_VARS[$k]))
{
$HTTP_GET_VARS[$k][$k2] = addslashes($v2);
}
@reset($HTTP_GET_VARS[$k]);
}
else
{
$HTTP_GET_VARS[$k] = addslashes($v);
}
}
@reset($HTTP_GET_VARS);
}
if (is_array($HTTP_POST_VARS))
{
while (list($k, $v) = each($HTTP_POST_VARS))
{
if (is_array($HTTP_POST_VARS[$k]))
{
while (list($k2, $v2) = each($HTTP_POST_VARS[$k]))
{
$HTTP_POST_VARS[$k][$k2] = addslashes($v2);
}
@reset($HTTP_POST_VARS[$k]);
}
else
{
$HTTP_POST_VARS[$k] = addslashes($v);
}
}
@reset($HTTP_POST_VARS);
}
if (is_array($HTTP_COOKIE_VARS))
{
while (list($k, $v) = each($HTTP_COOKIE_VARS))
{
if (is_array($HTTP_COOKIE_VARS[$k]))
{
while (list($k2, $v2) = each($HTTP_COOKIE_VARS[$k]))
{
$HTTP_COOKIE_VARS[$k][$k2] = addslashes($v2);
}
@reset($HTTP_COOKIE_VARS[$k]);
}
else
{
$HTTP_COOKIE_VARS[$k] = addslashes($v);
}
}
@reset($HTTP_COOKIE_VARS);
}
}
// Begin main prog
define('IN_PHPBB', true);
// Uncomment the following line to completely disable the ftp option...
// define('NO_FTP', true);
$phpbb_root_path = './../';
include($phpbb_root_path.'extension.inc');
// Initialise some basic arrays
$userdata = array();
$lang = array();
$error = false;
// Include some required functions
include($phpbb_root_path.'includes/constants.'.$phpEx);
include($phpbb_root_path.'includes/functions.'.$phpEx);
include($phpbb_root_path.'includes/sessions.'.$phpEx);
// Define schema info
$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'
)
);
// 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'] : '';
$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'] : '';
if (isset($HTTP_POST_VARS['lang']) && preg_match('#^[a-z_]+$#', $HTTP_POST_VARS['lang']))
{
$language = strip_tags($HTTP_POST_VARS['lang']);
}
else
{
$language = guess_lang();
}
$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'] : str_replace('install', '', dirname($HTTP_SERVER_VARS['PHP_SELF']));
if (!empty($HTTP_POST_VARS['server_name']))
{
$server_name = $HTTP_POST_VARS['server_name'];
}
else
{
// 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_POST_VARS['server_port']))
{
$server_port = $HTTP_POST_VARS['server_port'];
}
else
{
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';
}
}
// Open config.php ... if it exists
if (@file_exists(@phpbb_realpath('config.'.$phpEx)))
{
include($phpbb_root_path.'config.'.$phpEx);
}
// Is phpBB already installed? Yes? Redirect to the index
if (defined("PHPBB_INSTALLED"))
{
redirect('index.'.$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);
// 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;
}
// What do we need to do?
if (!empty($HTTP_POST_VARS['send_file']) && $HTTP_POST_VARS['send_file'] == 1 && 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 slashes at the top if its off, and they are added automaticlly
// if it is on.
echo stripslashes($HTTP_POST_VARS['config_data']);
exit;
}
else if (!empty($HTTP_POST_VARS['send_file']) && $HTTP_POST_VARS['send_file'] == 2)
{
$s_hidden_fields = '';
$s_hidden_fields .= '';
if ($upgrade == 1)
{
$s_hidden_fields .= '';
}
page_header($lang['ftp_instructs']);
?>
';
$s_hidden_fields .= '';
// If we're upgrading ...
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']);
}
page_footer();
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, stripslashes($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 = '';
$s_hidden_fields .= '';
$s_hidden_fields .= '';
$s_hidden_fields .= '';
page_header($lang['Inst_Step_2']);
page_common_form($s_hidden_fields, $lang['Finish_Install']);
page_footer();
exit();
}
}
else if ((empty($install_step) || $admin_pass1 != $admin_pass2 || empty($admin_pass1) || empty($dbhost)))
{
// 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.
$instruction_text = $lang['Inst_Step_0'];
if (!empty($install_step))
{
if ((($HTTP_POST_VARS['admin_pass1'] != $HTTP_POST_VARS['admin_pass2'])) ||
(empty($HTTP_POST_VARS['admin_pass1']) || empty($dbhost)) && $HTTP_POST_VARS['cur_lang'] == $language)
{
$error = $lang['Password_mismatch'];
}
}
$dirname = $phpbb_root_path . 'language';
$dir = opendir($dirname);
$lang_options = array();
while ($file = readdir($dir))
{
if (preg_match('#^lang_#i', $file) && !is_file(@phpbb_realpath($dirname . '/' . $file)) && !is_link(@phpbb_realpath($dirname . '/' . $file)))
{
$filename = trim(str_replace('lang_', '', $file));
$displayname = preg_replace('/^(.*?)_(.*)$/', '\1 [ \2 ]', $filename);
$displayname = preg_replace('/\[(.*?)_(.*)\]/', '[ \1 - \2 ]', $displayname);
$lang_options[$displayname] = $filename;
}
}
closedir($dir);
@asort($lang_options);
@reset($lang_options);
$lang_select = '';
$dbms_select = '';
$upgrade_option = '';
$s_hidden_fields = '';
page_header($instruction_text);
?>
:
:
:
:
:
:
:
:
" />
:
:
:
:
:
:
:
sql_query($sql_query[$i])))
{
$error = $db->sql_error();
page_header($lang['Install'], '');
page_error($lang['Installer_Error'], $lang['Install_db_error'] . ' ' . $error['message']);
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);
for($i = 0; $i < sizeof($sql_query); $i++)
{
if (trim($sql_query[$i]) != '')
{
if (!($result = $db->sql_query($sql_query[$i])))
{
$error = $db->sql_error();
page_header($lang['Install'], '');
page_error($lang['Installer_Error'], $lang['Install_db_error'] . ' ' . $error['message']);
page_footer();
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() . ")";
if (!$db->sql_query($sql))
{
$error .= "Could not insert board_startdate :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "
' . $error);
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;
// Unable to open the file writeable do something here as an attempt
// to get around that...
if (!($fp = @fopen($phpbb_root_path . 'config.'.$phpEx, 'w')))
{
$s_hidden_fields = '';
if (@extension_loaded('ftp') && !defined('NO_FTP'))
{
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']);
}
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 == 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.
$s_hidden_fields = '';
$s_hidden_fields .= '';
$s_hidden_fields .= '';
$s_hidden_fields .= '';
page_header($lang['Inst_Step_2'], '../login.'.$phpEx);
page_common_form($s_hidden_fields, $lang['Finish_Install']);
page_footer();
exit;
}
}