Merge branch '3.2.x'

This commit is contained in:
Marc Alexander 2019-04-17 09:26:16 +02:00
commit 79b8b152a6
No known key found for this signature in database
GPG key ID: 50E0D2423696F995
3 changed files with 42 additions and 17 deletions

View file

@ -37,7 +37,7 @@ function register_compatibility_globals()
{ {
global $phpbb_container; global $phpbb_container;
global $cache, $phpbb_dispatcher, $request, $user, $auth, $db, $config, $phpbb_log; global $cache, $phpbb_dispatcher, $request, $user, $auth, $db, $config, $language, $phpbb_log;
global $symfony_request, $phpbb_filesystem, $phpbb_path_helper, $phpbb_extension_manager, $template; global $symfony_request, $phpbb_filesystem, $phpbb_path_helper, $phpbb_extension_manager, $template;
// set up caching // set up caching
@ -56,6 +56,9 @@ function register_compatibility_globals()
/* @var $user \phpbb\user */ /* @var $user \phpbb\user */
$user = $phpbb_container->get('user'); $user = $phpbb_container->get('user');
/* @var \phpbb\language\language $language */
$language = $phpbb_container->get('language');
/* @var $auth \phpbb\auth\auth */ /* @var $auth \phpbb\auth\auth */
$auth = $phpbb_container->get('auth'); $auth = $phpbb_container->get('auth');

View file

@ -2131,25 +2131,29 @@ function check_form_key($form_name, $timespan = false)
/** /**
* Build Confirm box * Build Confirm box
* @param boolean $check True for checking if confirmed (without any additional parameters) and false for displaying the confirm box * @param boolean $check True for checking if confirmed (without any additional parameters) and false for displaying the confirm box
* @param string $title Title/Message used for confirm box. * @param string|array $title Title/Message used for confirm box.
* message text is _CONFIRM appended to title. * message text is _CONFIRM appended to title.
* If title cannot be found in user->lang a default one is displayed * If title cannot be found in user->lang a default one is displayed
* If title_CONFIRM cannot be found in user->lang the text given is used. * If title_CONFIRM cannot be found in user->lang the text given is used.
* If title is an array, the first array value is used as explained per above,
* all other array values are sent as parameters to the language function.
* @param string $hidden Hidden variables * @param string $hidden Hidden variables
* @param string $html_body Template used for confirm box * @param string $html_body Template used for confirm box
* @param string $u_action Custom form action * @param string $u_action Custom form action
*
* @return bool True if confirmation was successful, false if not
*/ */
function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_body.html', $u_action = '') function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_body.html', $u_action = '')
{ {
global $user, $template, $db, $request; global $user, $template, $db, $request;
global $config, $phpbb_path_helper; global $config, $language, $phpbb_path_helper;
if (isset($_POST['cancel'])) if (isset($_POST['cancel']))
{ {
return false; return false;
} }
$confirm = ($user->lang['YES'] === $request->variable('confirm', '', true, \phpbb\request\request_interface::POST)); $confirm = ($language->lang('YES') === $request->variable('confirm', '', true, \phpbb\request\request_interface::POST));
if ($check && $confirm) if ($check && $confirm)
{ {
@ -2183,13 +2187,27 @@ function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_bo
// generate activation key // generate activation key
$confirm_key = gen_rand_string(10); $confirm_key = gen_rand_string(10);
if (defined('IN_ADMIN') && isset($user->data['session_admin']) && $user->data['session_admin']) // generate language strings
if (is_array($title))
{ {
adm_page_header((!isset($user->lang[$title])) ? $user->lang['CONFIRM'] : $user->lang[$title]); $key = array_shift($title);
$count = array_shift($title);
$confirm_title = $language->is_set($key) ? $language->lang($key, $count, $title) : $language->lang('CONFIRM');
$confirm_text = $language->is_set($key . '_CONFIRM') ? $language->lang($key . '_CONFIRM', $count, $title) : $key;
} }
else else
{ {
page_header((!isset($user->lang[$title])) ? $user->lang['CONFIRM'] : $user->lang[$title]); $confirm_title = $language->is_set($title) ? $language->lang($title) : $language->lang('CONFIRM');
$confirm_text = $language->is_set($title . '_CONFIRM') ? $language->lang($title . '_CONFIRM') : $title;
}
if (defined('IN_ADMIN') && isset($user->data['session_admin']) && $user->data['session_admin'])
{
adm_page_header($confirm_title);
}
else
{
page_header($confirm_title);
} }
$template->set_filenames(array( $template->set_filenames(array(
@ -2209,10 +2227,10 @@ function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_bo
$u_action .= ((strpos($u_action, '?') === false) ? '?' : '&') . 'confirm_key=' . $confirm_key; $u_action .= ((strpos($u_action, '?') === false) ? '?' : '&') . 'confirm_key=' . $confirm_key;
$template->assign_vars(array( $template->assign_vars(array(
'MESSAGE_TITLE' => (!isset($user->lang[$title])) ? $user->lang['CONFIRM'] : $user->lang($title, 1), 'MESSAGE_TITLE' => $confirm_title,
'MESSAGE_TEXT' => (!isset($user->lang[$title . '_CONFIRM'])) ? $title : $user->lang[$title . '_CONFIRM'], 'MESSAGE_TEXT' => $confirm_text,
'YES_VALUE' => $user->lang['YES'], 'YES_VALUE' => $language->lang('YES'),
'S_CONFIRM_ACTION' => $u_action, 'S_CONFIRM_ACTION' => $u_action,
'S_HIDDEN_FIELDS' => $hidden . $s_hidden_fields, 'S_HIDDEN_FIELDS' => $hidden . $s_hidden_fields,
'S_AJAX_REQUEST' => $request->is_ajax(), 'S_AJAX_REQUEST' => $request->is_ajax(),
@ -2228,10 +2246,10 @@ function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_bo
$json_response = new \phpbb\json_response; $json_response = new \phpbb\json_response;
$json_response->send(array( $json_response->send(array(
'MESSAGE_BODY' => $template->assign_display('body'), 'MESSAGE_BODY' => $template->assign_display('body'),
'MESSAGE_TITLE' => (!isset($user->lang[$title])) ? $user->lang['CONFIRM'] : $user->lang[$title], 'MESSAGE_TITLE' => $confirm_title,
'MESSAGE_TEXT' => (!isset($user->lang[$title . '_CONFIRM'])) ? $title : $user->lang[$title . '_CONFIRM'], 'MESSAGE_TEXT' => $confirm_text,
'YES_VALUE' => $user->lang['YES'], 'YES_VALUE' => $language->lang('YES'),
'S_CONFIRM_ACTION' => str_replace('&', '&', $u_action), //inefficient, rewrite whole function 'S_CONFIRM_ACTION' => str_replace('&', '&', $u_action), //inefficient, rewrite whole function
'S_HIDDEN_FIELDS' => $hidden . $s_hidden_fields 'S_HIDDEN_FIELDS' => $hidden . $s_hidden_fields
)); ));
@ -2245,6 +2263,8 @@ function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_bo
{ {
page_footer(); page_footer();
} }
exit; // unreachable, page_footer() above will call exit()
} }
/** /**

View file

@ -974,10 +974,11 @@ function mcp_delete_topic($topic_ids, $is_soft = false, $soft_delete_reason = ''
'DELETE_TOPIC_PERMANENTLY_EXPLAIN' => $user->lang('DELETE_TOPIC_PERMANENTLY', count($topic_ids)), 'DELETE_TOPIC_PERMANENTLY_EXPLAIN' => $user->lang('DELETE_TOPIC_PERMANENTLY', count($topic_ids)),
)); ));
$l_confirm = (count($topic_ids) == 1) ? 'DELETE_TOPIC' : 'DELETE_TOPICS'; $count = count($topic_ids);
$l_confirm = $count === 1 ? 'DELETE_TOPIC' : 'DELETE_TOPICS';
if ($only_softdeleted) if ($only_softdeleted)
{ {
$l_confirm .= '_PERMANENTLY'; $l_confirm = array($l_confirm . '_PERMANENTLY', $count);
$s_hidden_fields['delete_permanent'] = '1'; $s_hidden_fields['delete_permanent'] = '1';
} }
else if ($only_shadow || !$auth->acl_get('m_softdelete', $forum_id)) else if ($only_shadow || !$auth->acl_get('m_softdelete', $forum_id))
@ -1228,10 +1229,11 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',
'DELETE_POST_PERMANENTLY_EXPLAIN' => $user->lang('DELETE_POST_PERMANENTLY', count($post_ids)), 'DELETE_POST_PERMANENTLY_EXPLAIN' => $user->lang('DELETE_POST_PERMANENTLY', count($post_ids)),
)); ));
$l_confirm = (count($post_ids) == 1) ? 'DELETE_POST' : 'DELETE_POSTS'; $count = count($post_ids);
$l_confirm = $count === 1 ? 'DELETE_POST' : 'DELETE_POSTS';
if ($only_softdeleted) if ($only_softdeleted)
{ {
$l_confirm .= '_PERMANENTLY'; $l_confirm = array($l_confirm . '_PERMANENTLY', $count);
$s_hidden_fields['delete_permanent'] = '1'; $s_hidden_fields['delete_permanent'] = '1';
} }
else if (!$auth->acl_get('m_softdelete', $forum_id)) else if (!$auth->acl_get('m_softdelete', $forum_id))