diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index 4bf654978b..ba95c21e5f 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -263,49 +263,68 @@ function phpbb_version_compare($version1, $version2, $operator = null) // functions used for building option fields /** -* Pick a language, any language ... -*/ -function language_select($default = '') + * Pick a language, any language ... + * + * @param string $default Language ISO code to be selected by default in the dropdown list + * @param array $langdata Language data in format of array(array('lang_iso' => string, lang_local_name => string), ...) + * + * @return string HTML options for language selection dropdown list. + */ +function language_select($default = '', array $langdata = []) { global $db; - $sql = 'SELECT lang_iso, lang_local_name - FROM ' . LANG_TABLE . ' - ORDER BY lang_english_name'; - $result = $db->sql_query($sql); + if (empty($langdata)) + { + $sql = 'SELECT lang_iso, lang_local_name + FROM ' . LANG_TABLE . ' + ORDER BY lang_english_name'; + $result = $db->sql_query($sql); + $langdata = (array) $db->sql_fetchrowset($result); + $db->sql_freeresult($result); + } $lang_options = ''; - while ($row = $db->sql_fetchrow($result)) + foreach ($langdata as $row) { $selected = ($row['lang_iso'] == $default) ? ' selected="selected"' : ''; $lang_options .= ''; } - $db->sql_freeresult($result); return $lang_options; } /** -* Pick a template/theme combo, -*/ -function style_select($default = '', $all = false) + * Pick a template/theme combo + * + * @param string $default Style ID to be selected by default in the dropdown list + * @param bool $all Flag indicating if all styles data including inactive ones should be fetched + * @param array $styledata Style data in format of array(array('style_id' => int, style_name => string), ...) + * + * @return string HTML options for style selection dropdown list. + */ +function style_select($default = '', $all = false, array $styledata = []) { global $db; - $sql_where = (!$all) ? 'WHERE style_active = 1 ' : ''; - $sql = 'SELECT style_id, style_name - FROM ' . STYLES_TABLE . " - $sql_where - ORDER BY style_name"; - $result = $db->sql_query($sql); + if (empty($styledata)) + { + $sql_where = (!$all) ? 'WHERE style_active = 1 ' : ''; + $sql = 'SELECT style_id, style_name + FROM ' . STYLES_TABLE . " + $sql_where + ORDER BY style_name"; + $result = $db->sql_query($sql); + $styledata = (array) $db->sql_fetchrowset($result); + $db->sql_freeresult($result); + } $style_options = ''; - while ($row = $db->sql_fetchrow($result)) + foreach ($styledata as $row) { $selected = ($row['style_id'] == $default) ? ' selected="selected"' : ''; $style_options .= ''; } - $db->sql_freeresult($result); return $style_options; } diff --git a/phpBB/includes/ucp/ucp_prefs.php b/phpBB/includes/ucp/ucp_prefs.php index 7c64e9a54c..a1fa086b52 100644 --- a/phpBB/includes/ucp/ucp_prefs.php +++ b/phpBB/includes/ucp/ucp_prefs.php @@ -159,33 +159,23 @@ class ucp_prefs phpbb_timezone_select($template, $user, $data['tz'], true); // check if there are any user-selectable languages - $sql = 'SELECT COUNT(lang_id) as languages_count - FROM ' . LANG_TABLE; + $sql = 'SELECT lang_iso, lang_local_name + FROM ' . LANG_TABLE . ' + ORDER BY lang_english_name'; $result = $db->sql_query($sql); - if ($db->sql_fetchfield('languages_count') > 1) - { - $s_more_languages = true; - } - else - { - $s_more_languages = false; - } + $lang_row = (array) $db->sql_fetchrowset($result); $db->sql_freeresult($result); + $s_more_languages = count($lang_row) > 1; // check if there are any user-selectable styles - $sql = 'SELECT COUNT(style_id) as styles_count - FROM ' . STYLES_TABLE . ' - WHERE style_active = 1'; + $sql = 'SELECT style_id, style_name + FROM ' . STYLES_TABLE . ' + WHERE style_active = 1 + ORDER BY style_name'; $result = $db->sql_query($sql); - if ($db->sql_fetchfield('styles_count') > 1) - { - $s_more_styles = true; - } - else - { - $s_more_styles = false; - } + $styles_row = (array) $db->sql_fetchrowset($result); $db->sql_freeresult($result); + $s_more_styles = count($styles_row) > 1; $template->assign_vars(array( 'ERROR' => (count($error)) ? implode('
', $error) : '', @@ -205,11 +195,11 @@ class ucp_prefs 'DEFAULT_DATEFORMAT' => $config['default_dateformat'], 'A_DEFAULT_DATEFORMAT' => addslashes($config['default_dateformat']), - 'S_MORE_LANGUAGES' => $s_more_languages, + 'S_MORE_LANGUAGES' => $s_more_languages, 'S_MORE_STYLES' => $s_more_styles, - 'S_LANG_OPTIONS' => language_select($data['lang']), - 'S_STYLE_OPTIONS' => ($config['override_user_style']) ? '' : style_select($data['user_style']), + 'S_LANG_OPTIONS' => language_select($data['lang'], $lang_row), + 'S_STYLE_OPTIONS' => ($config['override_user_style']) ? '' : style_select($data['user_style'], false, $styles_row), 'S_CAN_HIDE_ONLINE' => ($auth->acl_get('u_hideonline')) ? true : false, 'S_SELECT_NOTIFY' => ($config['jab_enable'] && $user->data['user_jabber'] && @extension_loaded('xml')) ? true : false) ); diff --git a/phpBB/includes/ucp/ucp_register.php b/phpBB/includes/ucp/ucp_register.php index 38a2bd4fc5..bba99974db 100644 --- a/phpBB/includes/ucp/ucp_register.php +++ b/phpBB/includes/ucp/ucp_register.php @@ -150,15 +150,11 @@ class ucp_register } // Checking amount of available languages - $sql = 'SELECT lang_id - FROM ' . LANG_TABLE; + $sql = 'SELECT lang_iso, lang_local_name + FROM ' . LANG_TABLE . ' + ORDER BY lang_english_name'; $result = $db->sql_query($sql); - - $lang_row = array(); - while ($row = $db->sql_fetchrow($result)) - { - $lang_row[] = $row; - } + $lang_row = (array) $db->sql_fetchrowset($result); $db->sql_freeresult($result); if ($coppa === false && $config['coppa_enable']) @@ -171,7 +167,7 @@ class ucp_register unset($now); $template_vars = array( - 'S_LANG_OPTIONS' => (count($lang_row) > 1) ? language_select($user_lang) : '', + 'S_LANG_OPTIONS' => (count($lang_row) > 1) ? language_select($user_lang, $lang_row) : '', 'L_COPPA_NO' => $user->lang('UCP_COPPA_BEFORE', $coppa_birthday), 'L_COPPA_YES' => $user->lang('UCP_COPPA_ON_AFTER', $coppa_birthday), @@ -186,7 +182,7 @@ class ucp_register else { $template_vars = array( - 'S_LANG_OPTIONS' => (count($lang_row) > 1) ? language_select($user_lang) : '', + 'S_LANG_OPTIONS' => (count($lang_row) > 1) ? language_select($user_lang, $lang_row) : '', 'L_TERMS_OF_USE' => sprintf($user->lang['TERMS_OF_USE_CONTENT'], $config['sitename'], generate_board_url()), 'S_SHOW_COPPA' => false, @@ -622,6 +618,14 @@ class ucp_register // Assign template vars for timezone select phpbb_timezone_select($template, $user, $data['tz'], true); + // Checking amount of available languages + $sql = 'SELECT lang_iso, lang_local_name + FROM ' . LANG_TABLE . ' + ORDER BY lang_english_name'; + $result = $db->sql_query($sql); + $lang_row = (array) $db->sql_fetchrowset($result); + $db->sql_freeresult($result); + $template_vars = array( 'USERNAME' => $data['username'], 'PASSWORD' => $data['new_password'], @@ -632,7 +636,7 @@ class ucp_register 'L_USERNAME_EXPLAIN' => $user->lang($config['allow_name_chars'] . '_EXPLAIN', $user->lang('CHARACTERS', (int) $config['min_name_chars']), $user->lang('CHARACTERS', (int) $config['max_name_chars'])), 'L_PASSWORD_EXPLAIN' => $user->lang($config['pass_complex'] . '_EXPLAIN', $user->lang('CHARACTERS', (int) $config['min_pass_chars'])), - 'S_LANG_OPTIONS' => language_select($data['lang']), + 'S_LANG_OPTIONS' => (count($lang_row) > 1) ? language_select($data['lang'], $lang_row) : '', 'S_TZ_PRESELECT' => !$submit, 'S_CONFIRM_REFRESH' => ($config['enable_confirm'] && $config['confirm_refresh']) ? true : false, 'S_REGISTRATION' => true, diff --git a/phpBB/styles/prosilver/template/ucp_register.html b/phpBB/styles/prosilver/template/ucp_register.html index f0a3adeade..7c61ae24d3 100644 --- a/phpBB/styles/prosilver/template/ucp_register.html +++ b/phpBB/styles/prosilver/template/ucp_register.html @@ -57,10 +57,12 @@
+ {% if S_LANG_OPTIONS %}
-
-
+
+
+ {% endif %}