[ticket/17100] Move lang options HTML to template

PHPBB3-17100
This commit is contained in:
Marc Alexander 2022-02-23 22:29:13 +01:00
parent 97933380bb
commit 4846723bb6
No known key found for this signature in database
GPG key ID: 50E0D2423696F995
13 changed files with 163 additions and 58 deletions

View file

@ -31,7 +31,13 @@
</dl>
<dl>
<dt><label for="bot_lang">{L_BOT_LANG}{L_COLON}</label><br /><span>{L_BOT_LANG_EXPLAIN}</span></dt>
<dd><select id="bot_lang" name="bot_lang">{S_LANG_OPTIONS}</select></dd>
<dd>
<select id="bot_lang" name="bot_lang">
{% for option in lang_options %}
<option value="{{ option.LANG_ISO }}"{% if option.SELECTED %} selected="selected"{% endif %}>{{ option.LANG_LOCAL_NAME }}</option>
{% endfor %}
</select>
</dd>
</dl>
<dl>
<dt><label for="bot_active">{L_BOT_ACTIVE}{L_COLON}</label></dt>

View file

@ -9,47 +9,53 @@
<fieldset>
<legend>{L_UCP_PREFS_PERSONAL}</legend>
<!-- EVENT acp_users_prefs_personal_prepend -->
<dl>
<dl>
<dt><label for="viewemail">{L_SHOW_EMAIL}{L_COLON}</label></dt>
<dd><label><input type="radio" class="radio" name="viewemail" value="1"<!-- IF VIEW_EMAIL --> id="viewemail" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label><input type="radio" class="radio" name="viewemail" value="0"<!-- IF not VIEW_EMAIL --> id="viewemail" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
</dl>
<dl>
<dl>
<dt><label for="massemail">{L_ADMIN_EMAIL}{L_COLON}</label></dt>
<dd><label><input type="radio" class="radio" name="massemail" value="1"<!-- IF MASS_EMAIL --> id="massemail" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label><input type="radio" class="radio" name="massemail" value="0"<!-- IF not MASS_EMAIL --> id="massemail" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
</dl>
<dl>
<dl>
<dt><label for="allowpm">{L_ALLOW_PM}{L_COLON}</label><br /><span>{L_ALLOW_PM_EXPLAIN}</span></dt>
<dd><label><input type="radio" class="radio" name="allowpm" value="1"<!-- IF ALLOW_PM --> id="allowpm" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label><input type="radio" class="radio" name="allowpm" value="0"<!-- IF not ALLOW_PM --> id="allowpm" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
</dl>
<dl>
<dl>
<dt><label for="hideonline">{L_HIDE_ONLINE}{L_COLON}</label></dt>
<dd><label><input type="radio" class="radio" name="hideonline" value="1"<!-- IF HIDE_ONLINE --> id="hideonline" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label><input type="radio" class="radio" name="hideonline" value="0"<!-- IF not HIDE_ONLINE --> id="hideonline" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
</dl>
<dl>
<dl>
<dt><label for="notifymethod">{L_NOTIFY_METHOD}{L_COLON}</label><br /><span>{L_NOTIFY_METHOD_EXPLAIN}</span></dt>
<dd><label><input type="radio" class="radio" name="notifymethod" value="0"<!-- IF NOTIFY_EMAIL --> id="notifymethod" checked="checked"<!-- ENDIF --> /> {L_NOTIFY_METHOD_EMAIL}</label>
<label><input type="radio" class="radio" name="notifymethod" value="1"<!-- IF NOTIFY_IM --> id="notifymethod" checked="checked"<!-- ENDIF --><!-- IF S_JABBER_DISABLED --> disabled="disabled"<!-- ENDIF --> /> {L_NOTIFY_METHOD_IM}</label>
<label><input type="radio" class="radio" name="notifymethod" value="2"<!-- IF NOTIFY_BOTH --> id="notifymethod" checked="checked"<!-- ENDIF --><!-- IF S_JABBER_DISABLED --> disabled="disabled"<!-- ENDIF --> /> {L_NOTIFY_METHOD_BOTH}</label></dd>
</dl>
<dl>
<dl>
<dt><label for="notifypm">{L_NOTIFY_ON_PM}{L_COLON}</label></dt>
<dd><label><input type="radio" class="radio" name="notifypm" value="1"<!-- IF NOTIFY_PM --> id="notifypm" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label><input type="radio" class="radio" name="notifypm" value="0"<!-- IF not NOTIFY_PM --> id="notifypm" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
</dl>
<dl>
<dl>
<dt><label for="lang">{L_BOARD_LANGUAGE}{L_COLON}</label></dt>
<dd><select id="lang" name="lang">{S_LANG_OPTIONS}</select></dd>
<dd>
<select id="lang" name="lang">
{% for option in lang_options %}
<option value="{{ option.LANG_ISO }}"{% if option.SELECTED %} selected="selected"{% endif %}>{{ option.LANG_LOCAL_NAME }}</option>
{% endfor %}
</select>
</dd>
</dl>
<dl>
<dl>
<dt><label for="style">{L_BOARD_STYLE}{L_COLON}</label></dt>
<dd><select id="style" name="style">{S_STYLE_OPTIONS}</select></dd>
</dl>
<!-- INCLUDE timezone_option.html -->
<dl>
<dl>
<dt><label for="dateoptions">{L_BOARD_DATE_FORMAT}{L_COLON}</label><br /><span>{L_BOARD_DATE_FORMAT_EXPLAIN}</span></dt>
<dd><select name="dateoptions" id="dateoptions" onchange="if(this.value=='custom'){phpbb.toggleDisplay('custom_date',1);}else{phpbb.toggleDisplay('custom_date',-1);} if (this.value == 'custom') { document.getElementById('dateformat').value = default_dateformat; } else { document.getElementById('dateformat').value = this.value; }">{S_DATEFORMAT_OPTIONS}</select></dd>
<dd><div id="custom_date"<!-- IF not S_CUSTOM_DATEFORMAT --> style="display:none;"<!-- ENDIF -->><input type="text" name="dateformat" id="dateformat" value="{DATE_FORMAT}" maxlength="64" /></div></dd>
@ -60,22 +66,22 @@
<fieldset>
<legend>{L_UCP_PREFS_POST}</legend>
<!-- EVENT acp_users_prefs_post_prepend -->
<dl>
<dl>
<dt><label for="bbcode">{L_DEFAULT_BBCODE}{L_COLON}</label></dt>
<dd><label><input type="radio" class="radio" name="bbcode" value="1"<!-- IF BBCODE --> id="bbcode" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label><input type="radio" class="radio" name="bbcode" value="0"<!-- IF not BBCODE --> id="bbcode" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
</dl>
<dl>
<dl>
<dt><label for="smilies">{L_DEFAULT_SMILIES}{L_COLON}</label></dt>
<dd><label><input type="radio" class="radio" name="smilies" value="1"<!-- IF SMILIES --> id="smilies" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label><input type="radio" class="radio" name="smilies" value="0"<!-- IF not SMILIES --> id="smilies" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
</dl>
<dl>
<dl>
<dt><label for="sig">{L_DEFAULT_ADD_SIG}{L_COLON}</label></dt>
<dd><label><input type="radio" class="radio" name="sig" value="1"<!-- IF ATTACH_SIG --> id="sig" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label><input type="radio" class="radio" name="sig" value="0"<!-- IF not ATTACH_SIG --> id="sig" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
</dl>
<dl>
<dl>
<dt><label for="notify">{L_DEFAULT_NOTIFY}{L_COLON}</label></dt>
<dd><label><input type="radio" class="radio" name="notify" value="1"<!-- IF NOTIFY --> id="notify" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label><input type="radio" class="radio" name="notify" value="0"<!-- IF not NOTIFY --> id="notify" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
@ -86,52 +92,52 @@
<fieldset>
<legend>{L_UCP_PREFS_VIEW}</legend>
<!-- EVENT acp_users_prefs_view_prepend -->
<dl>
<dl>
<dt><label for="view_images">{L_VIEW_IMAGES}{L_COLON}</label></dt>
<dd><label><input type="radio" class="radio" name="view_images" value="1"<!-- IF VIEW_IMAGES --> id="view_images" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label><input type="radio" class="radio" name="view_images" value="0"<!-- IF not VIEW_IMAGES --> id="view_images" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
</dl>
<dl>
<dl>
<dt><label for="view_smilies">{L_VIEW_SMILIES}{L_COLON}</label></dt>
<dd><label><input type="radio" class="radio" name="view_smilies" value="1"<!-- IF VIEW_SMILIES --> id="view_smilies" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label><input type="radio" class="radio" name="view_smilies" value="0"<!-- IF not VIEW_SMILIES --> id="view_smilies" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
</dl>
<dl>
<dl>
<dt><label for="view_sigs">{L_VIEW_SIGS}{L_COLON}</label></dt>
<dd><label><input type="radio" class="radio" name="view_sigs" value="1"<!-- IF VIEW_SIGS --> id="view_sigs" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label><input type="radio" class="radio" name="view_sigs" value="0"<!-- IF not VIEW_SIGS --> id="view_sigss" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
</dl>
<dl>
<dl>
<dt><label for="view_avatars">{L_VIEW_AVATARS}{L_COLON}</label></dt>
<dd><label><input type="radio" class="radio" name="view_avatars" value="1"<!-- IF VIEW_AVATARS --> id="view_avatars" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label><input type="radio" class="radio" name="view_avatars" value="0"<!-- IF not VIEW_AVATARS --> id="view_avatars" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
</dl>
<dl>
<dl>
<dt><label for="view_wordcensor">{L_DISABLE_CENSORS}{L_COLON}</label></dt>
<dd><label><input type="radio" class="radio" name="view_wordcensor" value="1"<!-- IF VIEW_WORDCENSOR --> id="view_wordcensor" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label><input type="radio" class="radio" name="view_wordcensor" value="0"<!-- IF not VIEW_WORDCENSOR --> id="view_wordcensor" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
</dl>
<dl>
<dl>
<dt><label>{L_VIEW_TOPICS_DAYS}{L_COLON}</label></dt>
<dd>{S_TOPIC_SORT_DAYS}</dd>
</dl>
<dl>
<dl>
<dt><label>{L_VIEW_TOPICS_KEY}{L_COLON}</label></dt>
<dd>{S_TOPIC_SORT_KEY}</dd>
</dl>
<dl>
<dl>
<dt><label>{L_VIEW_TOPICS_DIR}{L_COLON}</label></dt>
<dd>{S_TOPIC_SORT_DIR}</dd>
</dl>
<dl>
<dl>
<dt><label>{L_VIEW_POSTS_DAYS}{L_COLON}</label></dt>
<dd>{S_POST_SORT_DAYS}</dd>
</dl>
<dl>
<dl>
<dt><label>{L_VIEW_POSTS_KEY}{L_COLON}</label></dt>
<dd>{S_POST_SORT_KEY}</dd>
</dl>
<dl>
<dl>
<dt><label>{L_VIEW_POSTS_DIR}{L_COLON}</label></dt>
<dd>{S_POST_SORT_DIR}</dd>
</dl>

View file

@ -330,7 +330,7 @@ class acp_bots
}
$style_select = style_select($bot_row['bot_style'], true);
$lang_select = language_select($bot_row['bot_lang']);
phpbb_language_select($db, $template, $bot_row['bot_lang']);
$l_title = ($action == 'edit') ? 'EDIT' : 'ADD';
@ -347,7 +347,6 @@ class acp_bots
'S_EDIT_BOT' => true,
'S_ACTIVE_OPTIONS' => $s_active_options,
'S_STYLE_OPTIONS' => $style_select,
'S_LANG_OPTIONS' => $lang_select,
'S_ERROR' => (count($error)) ? true : false,
)
);

View file

@ -1796,6 +1796,8 @@ class acp_users
}
phpbb_timezone_select($template, $user, $data['tz'], true);
phpbb_language_select($db, $template, $data['lang']);
$user_prefs_data = array(
'S_PREFS' => true,
'S_JABBER_DISABLED' => ($config['jab_enable'] && $user_row['user_jabber'] && @extension_loaded('xml')) ? false : true,
@ -1831,7 +1833,6 @@ class acp_users
'DEFAULT_DATEFORMAT' => $config['default_dateformat'],
'A_DEFAULT_DATEFORMAT' => addslashes($config['default_dateformat']),
'S_LANG_OPTIONS' => language_select($data['lang']),
'S_STYLE_OPTIONS' => style_select($data['style']),
);

View file

@ -265,15 +265,13 @@ function phpbb_version_compare(string $version1, string $version2, string $opera
/**
* Pick a language, any language ...
*
* @param \phpbb\db\driver\driver_interface $db DBAL driver
* @param \phpbb\template\template $template Template engine
* @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 = [])
function phpbb_language_select(\phpbb\db\driver\driver_interface $db, \phpbb\template\template $template, string $default = '', array $langdata = []): void
{
global $db;
if (empty($langdata))
{
$sql = 'SELECT lang_iso, lang_local_name
@ -284,14 +282,14 @@ function language_select($default = '', array $langdata = [])
$db->sql_freeresult($result);
}
$lang_options = '';
foreach ($langdata as $row)
{
$selected = ($row['lang_iso'] == $default) ? ' selected="selected"' : '';
$lang_options .= '<option value="' . $row['lang_iso'] . '"' . $selected . '>' . $row['lang_local_name'] . '</option>';
$template->assign_block_vars('lang_options', [
'SELECTED' => $row['lang_iso'] == $default,
'LANG_ISO' => $row['lang_iso'],
'LANG_LOCAL_NAME' => $row['lang_local_name']
]);
}
return $lang_options;
}
/**

View file

@ -177,6 +177,8 @@ class ucp_prefs
$db->sql_freeresult($result);
$s_more_styles = count($styles_row) > 1;
phpbb_language_select($db, $template, $data['lang'], $lang_row);
$template->assign_vars(array(
'ERROR' => (count($error)) ? implode('<br />', $error) : '',
@ -198,7 +200,6 @@ class ucp_prefs
'S_MORE_LANGUAGES' => $s_more_languages,
'S_MORE_STYLES' => $s_more_styles,
'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)

View file

@ -157,6 +157,8 @@ class ucp_register
$lang_row = (array) $db->sql_fetchrowset($result);
$db->sql_freeresult($result);
phpbb_language_select($db, $template, $user_lang, $lang_row);
if ($coppa === false && $config['coppa_enable'])
{
$now = getdate();
@ -167,7 +169,6 @@ class ucp_register
unset($now);
$template_vars = array(
'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),
@ -182,7 +183,6 @@ class ucp_register
else
{
$template_vars = array(
'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,
@ -626,6 +626,8 @@ class ucp_register
$lang_row = (array) $db->sql_fetchrowset($result);
$db->sql_freeresult($result);
phpbb_language_select($db, $template, $data['lang'], $lang_row);
$template_vars = array(
'USERNAME' => $data['username'],
'PASSWORD' => $data['new_password'],
@ -636,7 +638,6 @@ 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' => (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,

View file

@ -153,10 +153,12 @@ class topic_form extends form
parent::render($template);
$this->user->add_lang('viewtopic');
phpbb_language_select($this->db, $template, $this->recipient_lang);
$template->assign_vars(array(
'EMAIL' => $this->recipient_address,
'NAME' => $this->recipient_name,
'S_LANG_OPTIONS' => language_select($this->recipient_lang),
'MESSAGE' => $this->body,
'L_EMAIL_BODY_EXPLAIN' => $this->user->lang['EMAIL_TOPIC_EXPLAIN'],

View file

@ -71,7 +71,13 @@
<dl>
<dt><label for="lang">{L_DEST_LANG}{L_COLON}</label><br />
<span>{L_DEST_LANG_EXPLAIN}</span></dt>
<dd><select name="lang" id="lang">{S_LANG_OPTIONS}</select></dd>
<dd>
<select name="lang" id="lang">
{% for option in lang_options %}
<option value="{{ option.LANG_ISO }}"{% if option.SELECTED %} selected="selected"{% endif %}>{{ option.LANG_LOCAL_NAME }}</option>
{% endfor %}
</select>
</dd>
</dl>
<!-- ENDIF -->
<dl>

View file

@ -2,7 +2,7 @@
<!-- IF S_SHOW_COPPA or S_REGISTRATION -->
<!-- IF S_LANG_OPTIONS -->
{% if lang_options|length > 0 %}
<script>
/**
* Change language
@ -17,14 +17,19 @@
<form method="post" action="{S_UCP_ACTION}" id="register">
<p class="rightside">
<label for="lang">{L_LANGUAGE}{L_COLON}</label><select name="lang" id="lang" onchange="change_language(this.value); return false;" title="{L_LANGUAGE}">{S_LANG_OPTIONS}</select>
<label for="lang">{L_LANGUAGE}{L_COLON}</label>
<select name="lang" id="lang" onchange="change_language(this.value); return false;" title="{L_LANGUAGE}">
{% for option in lang_options %}
<option value="{{ option.LANG_ISO }}"{% if option.SELECTED %} selected="selected"{% endif %}>{{ option.LANG_LOCAL_NAME }}</option>
{% endfor %}
</select>
{S_HIDDEN_FIELDS}
</p>
</form>
<div class="clear"></div>
<!-- ENDIF -->
{% endif %}
<form method="post" action="{S_UCP_ACTION}" id="agreement">

View file

@ -53,7 +53,13 @@
<!-- IF S_MORE_LANGUAGES -->
<dl>
<dt><label for="lang">{L_BOARD_LANGUAGE}{L_COLON}</label></dt>
<dd><select name="lang" id="lang">{S_LANG_OPTIONS}</select></dd>
<dd>
<select name="lang" id="lang">
{% for option in lang_options %}
<option value="{{ option.LANG_ISO }}"{% if option.SELECTED %} selected="selected"{% endif %}>{{ option.LANG_LOCAL_NAME }}</option>
{% endfor %}
</select>
</dd>
</dl>
<!-- ENDIF -->
<!-- IF S_STYLE_OPTIONS and S_MORE_STYLES -->

View file

@ -57,10 +57,16 @@
<hr />
<!-- EVENT ucp_register_options_before -->
{% if S_LANG_OPTIONS %}
{% if lang_options|length > 0 %}
<dl>
<dt><label for="lang">{{ lang('LANGUAGE') ~ lang('COLON') }}</label></dt>
<dd><select name="lang" id="lang" onchange="change_language(this.value); return false;" tabindex="6" title="{{ lang('LANGUAGE') }}">{{ S_LANG_OPTIONS }}</select></dd>
<dd>
<select name="lang" id="lang" onchange="change_language(this.value); return false;" tabindex="6" title="{{ lang('LANGUAGE') }}">
{% for option in lang_options %}
<option value="{{ option.LANG_ISO }}"{% if option.SELECTED %} selected="selected"{% endif %}>{{ option.LANG_LOCAL_NAME }}</option>
{% endfor %}
</select>
</dd>
</dl>
{% endif %}

View file

@ -20,12 +20,68 @@ class phpbb_functions_language_select_test extends phpbb_database_test_case
public static function language_select_data()
{
return array(
array('', '<option value="cs">Čeština</option><option value="en">English</option>'),
array('en', '<option value="cs">Čeština</option><option value="en" selected="selected">English</option>'),
array('cs', '<option value="cs" selected="selected">Čeština</option><option value="en">English</option>'),
array('de', '<option value="cs">Čeština</option><option value="en">English</option>'),
);
return [
[
'',
[
[
'SELECTED' => false,
'LANG_ISO' => 'cs',
'LANG_LOCAL_NAME' => 'Čeština',
],
[
'SELECTED' => false,
'LANG_ISO' => 'en',
'LANG_LOCAL_NAME' => 'English',
],
]
],
[
'en',
[
[
'SELECTED' => false,
'LANG_ISO' => 'cs',
'LANG_LOCAL_NAME' => 'Čeština',
],
[
'SELECTED' => true,
'LANG_ISO' => 'en',
'LANG_LOCAL_NAME' => 'English',
],
]
],
[
'cs',
[
[
'SELECTED' => true,
'LANG_ISO' => 'cs',
'LANG_LOCAL_NAME' => 'Čeština',
],
[
'SELECTED' => false,
'LANG_ISO' => 'en',
'LANG_LOCAL_NAME' => 'English',
],
]
],
[
'de',
[
[
'SELECTED' => false,
'LANG_ISO' => 'cs',
'LANG_LOCAL_NAME' => 'Čeština',
],
[
'SELECTED' => false,
'LANG_ISO' => 'en',
'LANG_LOCAL_NAME' => 'English',
],
]
],
];
}
/**
@ -35,7 +91,19 @@ class phpbb_functions_language_select_test extends phpbb_database_test_case
{
global $db;
$db = $this->new_dbal();
$template = $this->getMockBuilder('\phpbb\template\base')
->disableOriginalConstructor()
->getMock();
$template_data = [];
$template->expects($this->any())
->method('assign_block_vars')
->willReturnCallback(function ($blockname, array $vararray) use (&$template_data) {
$template_data[$blockname][] = $vararray;
return null;
});
$this->assertEquals($expected, language_select($default));
phpbb_language_select($db, $template, $default);
$this->assertEquals($expected, $template_data['lang_options']);
}
}