From 9ebee7de323eae3ac86f025f44429d2d4bc995b1 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Wed, 17 Sep 2014 14:15:16 +0200 Subject: [PATCH] [ticket/12858] Generate timezone selects with template loop PHPBB3-12858 --- phpBB/includes/acp/acp_board.php | 4 +-- phpBB/includes/acp/acp_users.php | 2 +- phpBB/includes/functions.php | 25 +++++++++++++++---- phpBB/includes/functions_compatibility.php | 4 +-- phpBB/includes/ucp/ucp_prefs.php | 4 +-- phpBB/includes/ucp/ucp_register.php | 4 +-- .../prosilver/template/timezone_option.html | 14 ++++++++--- 7 files changed, 38 insertions(+), 19 deletions(-) diff --git a/phpBB/includes/acp/acp_board.php b/phpBB/includes/acp/acp_board.php index f2707f15ca..160a52a1bf 100644 --- a/phpBB/includes/acp/acp_board.php +++ b/phpBB/includes/acp/acp_board.php @@ -904,9 +904,9 @@ class acp_board */ function timezone_select($value, $key) { - global $user; + global $template, $user; - $timezone_select = phpbb_timezone_select($user, $value, true); + $timezone_select = phpbb_timezone_select($template, $user, $value, true); $timezone_select['tz_select']; return ''; diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php index 40d8218a07..1874bca7fc 100644 --- a/phpBB/includes/acp/acp_users.php +++ b/phpBB/includes/acp/acp_users.php @@ -1661,7 +1661,7 @@ class acp_users ${'s_sort_' . $sort_option . '_dir'} .= ''; } - $timezone_selects = phpbb_timezone_select($user, $data['tz'], true); + $timezone_selects = phpbb_timezone_select($template, $user, $data['tz'], true); $user_prefs_data = array( 'S_PREFS' => true, 'S_JABBER_DISABLED' => ($config['jab_enable'] && $user_row['user_jabber'] && @extension_loaded('xml')) ? false : true, diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index 7dfaea6f48..7ee8c49161 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -1040,13 +1040,14 @@ function phpbb_get_timezone_identifiers($selected_timezone) /** * Options to pick a timezone and date/time * +* @param \phpbb\template\template $template phpBB template object * @param \phpbb\user $user Object of the current user * @param string $default A timezone to select * @param boolean $truncate Shall we truncate the options text * -* @return array Returns an array, also containing the options for the time selector. +* @return array Returns an array containing the options for the time selector. */ -function phpbb_timezone_select($user, $default = '', $truncate = false) +function phpbb_timezone_select($template, $user, $default = '', $truncate = false) { static $timezones; @@ -1078,18 +1079,26 @@ function phpbb_timezone_select($user, $default = '', $truncate = false) uksort($timezones, 'phpbb_tz_select_compare'); } - $tz_select = $tz_dates = $opt_group = ''; + $tz_select = $opt_group = ''; foreach ($timezones as $timezone) { if ($opt_group != $timezone['offset']) { + // Generate tz_select for backwards compatibility $tz_select .= ($opt_group) ? '' : ''; $tz_select .= ''; $opt_group = $timezone['offset']; + $template->assign_block_vars('tz_select', array( + 'LABEL' => $timezone['offset'] . ' - ' . $timezone['current'], + )); $selected = ($default_offset == $timezone['offset']) ? ' selected="selected"' : ''; - $tz_dates .= ''; + $template->assign_block_vars('tz_date', array( + 'VALUE' => $timezone['offset'] . ' - ' . $timezone['current'], + 'SELECTED' => $selected, + 'TITLE' => $timezone['offset'] . ' - ' . $timezone['current'], + )); } $label = $timezone['tz']; @@ -1104,14 +1113,20 @@ function phpbb_timezone_select($user, $default = '', $truncate = false) $label = truncate_string($label, 50, 255, false, '...'); } + // Also generate tz_select for backwards compatibility $selected = ($timezone['tz'] === $default) ? ' selected="selected"' : ''; $tz_select .= ''; + $template->assign_block_vars('tz_select.tz_options', array( + 'TITLE' => $title, + 'VALUE' => $timezone['tz'], + 'SELECTED' => $timezone['tz'] === $default, + 'LABEL' => $label, + )); } $tz_select .= ''; return array( 'tz_select' => $tz_select, - 'tz_dates' => $tz_dates, ); } diff --git a/phpBB/includes/functions_compatibility.php b/phpBB/includes/functions_compatibility.php index 093cb19538..6db23d9f65 100644 --- a/phpBB/includes/functions_compatibility.php +++ b/phpBB/includes/functions_compatibility.php @@ -133,9 +133,9 @@ function phpbb_clean_path($path) */ function tz_select($default = '', $truncate = false) { - global $user; + global $template, $user; - $timezone_select = phpbb_timezone_select($user, $default, $truncate); + $timezone_select = phpbb_timezone_select($template, $user, $default, $truncate); return $timezone_select['tz_select']; } diff --git a/phpBB/includes/ucp/ucp_prefs.php b/phpBB/includes/ucp/ucp_prefs.php index 3ff8fe9ada..6486ca9438 100644 --- a/phpBB/includes/ucp/ucp_prefs.php +++ b/phpBB/includes/ucp/ucp_prefs.php @@ -154,7 +154,7 @@ class ucp_prefs } $dateformat_options .= '>' . $user->lang['CUSTOM_DATEFORMAT'] . ''; - $timezone_selects = phpbb_timezone_select($user, $data['tz'], true); + $timezone_selects = phpbb_timezone_select($template, $user, $data['tz'], true); // check if there are any user-selectable languages $sql = 'SELECT COUNT(lang_id) as languages_count @@ -208,8 +208,6 @@ class ucp_prefs 'S_LANG_OPTIONS' => language_select($data['lang']), 'S_STYLE_OPTIONS' => ($config['override_user_style']) ? '' : style_select($data['user_style']), - 'S_TZ_OPTIONS' => $timezone_selects['tz_select'], - 'S_TZ_DATE_OPTIONS' => $timezone_selects['tz_dates'], '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 06baf7e5f2..9a15967bae 100644 --- a/phpBB/includes/ucp/ucp_register.php +++ b/phpBB/includes/ucp/ucp_register.php @@ -452,7 +452,7 @@ class ucp_register break; } - $timezone_selects = phpbb_timezone_select($user, $data['tz'], true); + $timezone_selects = phpbb_timezone_select($template, $user, $data['tz'], true); $template->assign_vars(array( 'ERROR' => (sizeof($error)) ? implode('
', $error) : '', 'USERNAME' => $data['username'], @@ -465,8 +465,6 @@ class ucp_register 'L_PASSWORD_EXPLAIN' => $user->lang($config['pass_complex'] . '_EXPLAIN', $user->lang('CHARACTERS', (int) $config['min_pass_chars']), $user->lang('CHARACTERS', (int) $config['max_pass_chars'])), 'S_LANG_OPTIONS' => language_select($data['lang']), - 'S_TZ_OPTIONS' => $timezone_selects['tz_select'], - 'S_TZ_DATE_OPTIONS' => $timezone_selects['tz_dates'], '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/timezone_option.html b/phpBB/styles/prosilver/template/timezone_option.html index fc0579bffd..291283c7ca 100644 --- a/phpBB/styles/prosilver/template/timezone_option.html +++ b/phpBB/styles/prosilver/template/timezone_option.html @@ -1,10 +1,12 @@
- + @@ -12,7 +14,13 @@