diff --git a/phpBB/install/install_install.php b/phpBB/install/install_install.php index 6a62c36518..4b1beb63df 100755 --- a/phpBB/install/install_install.php +++ b/phpBB/install/install_install.php @@ -474,6 +474,139 @@ class install_install extends module $submit = $lang['NEXT_STEP']; + $template->assign_vars(array( + 'L_SUBMIT' => $submit, + 'S_HIDDEN' => $s_hidden_fields, + 'U_ACTION' => $url, + )); + } + + /** + * Obtain the administrator's name, password and email address + */ + function obtain_admin_settings($mode, $sub) + { + global $lang, $template, $phpEx; + + $this->page_title = $lang['STAGE_ADMINISTRATOR']; + + // Obtain any submitted data + foreach ($this->request_vars as $var) + { + $$var = request_var($var, ''); + } + + $s_hidden_fields = ''; + $passed = false; + + if (isset($_POST['check'])) + { + $error = array(); + + // Check the entered email address and password + if ($admin_name == '' || $admin_pass1 == '' || $admin_pass2 == '' || $board_email1 = '' || $board_email2 =='') + { + $error[] = $lang['INST_ERR_MISSING_DATA']; + } + if ($admin_pass1 != $admin_pass2 && $admin_pass1 != '') + { + $error[] = $lang['INST_ERR_PASSWORD_MISMATCH']; + } + + if ($board_email1 != $board_email2 && $board_email1 != '') + { + $error[] = $lang['INST_ERR_EMAIL_MISMATCH']; + } + + $template->assign_block_vars('checks', array( + 'S_LEGEND' => true, + 'S_FIRST_ROW' => true, + 'LEGEND' => $lang['STAGE_ADMINISTRATOR'], + 'LEGEND_EXPLAIN' => false, + )); + + if (!sizeof($error)) + { + $passed = true; + $template->assign_block_vars('checks', array( + 'TITLE' => $lang['ADMIN_TEST'], + 'RESULT' => '' . $lang['TESTS_PASSED'] . '', + + 'S_EXPLAIN' => false, + 'S_LEGEND' => false, + )); + } + else + { + $template->assign_block_vars('checks', array( + 'TITLE' => $lang['ADMIN_TEST'], + 'RESULT' => '' . implode('
', $error) . '
', + + 'S_EXPLAIN' => false, + 'S_LEGEND' => false, + )); + } + } + + if (!$passed) + { + foreach ($this->admin_config_options as $config_key => $vars) + { + if (!is_array($vars) && strpos($config_key, 'legend') === false) + { + continue; + } + + if (strpos($config_key, 'legend') !== false) + { + $template->assign_block_vars('options', array( + 'S_LEGEND' => true, + 'LEGEND' => $lang[$vars]) + ); + + continue; + } + + $options = isset($vars['options']) ? $vars['options'] : ''; + + $template->assign_block_vars('options', array( + 'KEY' => $config_key, + 'TITLE' => $lang[$vars['lang']], + 'S_EXPLAIN' => $vars['explain'], + 'S_LEGEND' => false, + 'TITLE_EXPLAIN' => ($vars['explain']) ? $lang[$vars['lang'] . '_EXPLAIN'] : '', + 'CONTENT' => $this->p_master->input_field($config_key, $vars['type'], $$config_key, $options), + ) + ); + } + } + else + { + foreach ($this->admin_config_options as $config_key => $vars) + { + if (!is_array($vars)) + { + continue; + } + $s_hidden_fields .= ''; + } + } + + $s_hidden_fields .= ($img_imagick) ? '' : ''; + + foreach ($this->db_config_options as $config_key => $vars) + { + if (!is_array($vars)) + { + continue; + } + $s_hidden_fields .= ''; + } + + $submit = $lang['NEXT_STEP']; + + $url = ($passed) ? $this->p_master->module_url . "?mode=$mode&sub=config" : $this->p_master->module_url . "?mode=$mode&sub=administrator"; + $s_hidden_fields .= ($passed) ? '' : ''; $template->assign_vars(array( 'L_SUBMIT' => $submit, @@ -600,6 +733,45 @@ class install_install extends module return $dbms_options; } + /** + * Generate the drop down of available language packs + */ + function inst_language_select($default = '') + { + global $phpbb_root_path, $phpEx; + + $dir = @opendir($phpbb_root_path . 'language'); + + while ($file = readdir($dir)) + { + $path = $phpbb_root_path . 'language/' . $file; + + if (is_file($path) || is_link($path) || $file == '.' || $file == '..') + { + continue; + } + + if (file_exists($path . '/iso.txt')) + { + list($displayname) = @file($path . '/iso.txt'); + $lang[$displayname] = $file; + } + } + @closedir($dir); + + @asort($lang); + @reset($lang); + + $user_select = ''; + foreach ($lang as $displayname => $filename) + { + $selected = (strtolower($default) == strtolower($filename)) ? ' selected="selected"' : ''; + $user_select .= ''; + } + + return $user_select; + } + /** * The variables that we will be passing between pages * Used to retrieve data quickly on each page @@ -619,6 +791,15 @@ class install_install extends module 'dbpasswd' => array('lang' => 'DB_PASSWORD', 'type' => 'password:25:100', 'explain' => false), 'table_prefix' => array('lang' => 'TABLE_PREFIX', 'type' => 'text:25:100', 'explain' => false), ); + var $admin_config_options = array( + 'legend' => 'ADMIN_CONFIG', + 'language' => array('lang' => 'DEFAULT_LANG', 'type' => 'select', 'options' => '$this->module->inst_language_select(\'{VALUE}\')', 'explain' => false), + 'admin_name' => array('lang' => 'ADMIN_USERNAME', 'type' => 'text:25:100', 'explain' => false), + 'admin_pass1' => array('lang' => 'ADMIN_PASSWORD', 'type' => 'password:25:100', 'explain' => false), + 'admin_pass2' => array('lang' => 'ADMIN_PASSWORD_CONFIRM', 'type' => 'password:25:100', 'explain' => false), + 'board_email1' => array('lang' => 'CONTACT_EMAIL', 'type' => 'text:25:100', 'explain' => false), + 'board_email2' => array('lang' => 'CONTACT_EMAIL_CONFIRM', 'type' => 'text:25:100', 'explain' => false), + ); /** * Specific PHP modules we may require for certain optional or extended features diff --git a/phpBB/language/en/install.php b/phpBB/language/en/install.php index 48118e244f..e49e126904 100755 --- a/phpBB/language/en/install.php +++ b/phpBB/language/en/install.php @@ -32,6 +32,7 @@ $lang = array_merge($lang, array( 'ADMIN_CONFIG' => 'Admin Configuration', 'ADMIN_PASSWORD' => 'Administrator password', 'ADMIN_PASSWORD_CONFIRM' => 'Confirm administrator password', + 'ADMIN_TEST' => 'Check administrator settings', 'ADMIN_USERNAME' => 'Administrator username', 'APP_MAGICK' => 'Imagemagick support [ Attachments ]', 'AVAILABLE' => 'Available', @@ -64,7 +65,7 @@ $lang = array_merge($lang, array( 'DLL_MSSQL' => 'MSSQL Server 2000', 'DLL_MSSQL_ODBC' => 'MSSQL Server 2000 via ODBC', 'DLL_MYSQL' => 'MySQL 3.23.x/4.x', - 'DLL_MYSQL4' => 'MySQL 4.1+', + 'DLL_MYSQL4' => 'MySQL 4.0+', 'DLL_MYSQLI' => 'MySQL 4.1+ with MySQLi Extension', 'DLL_ORACLE' => 'Oracle', 'DLL_POSTGRES' => 'PostgreSQL 7.x',