Tentative de régler le bordel

This commit is contained in:
Gauvain Boiché
2020-03-31 15:58:31 +02:00
parent a1864c0414
commit 459b46df7b
345 changed files with 10758 additions and 4066 deletions

View File

@@ -38,7 +38,7 @@ class acp_extensions
private $phpbb_container;
private $php_ini;
function main()
function main($id, $mode)
{
// Start the page
global $config, $user, $template, $request, $phpbb_extension_manager, $phpbb_root_path, $phpbb_log, $phpbb_dispatcher, $phpbb_container;
@@ -172,23 +172,27 @@ class acp_extensions
}
$extension = $this->ext_manager->get_extension($ext_name);
if (!$extension->is_enableable())
{
trigger_error($this->user->lang['EXTENSION_NOT_ENABLEABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
}
$this->check_is_enableable($extension);
if ($this->ext_manager->is_enabled($ext_name))
{
redirect($this->u_action);
}
$this->tpl_name = 'acp_ext_enable';
$this->template->assign_vars(array(
'PRE' => true,
'L_CONFIRM_MESSAGE' => $this->user->lang('EXTENSION_ENABLE_CONFIRM', $md_manager->get_metadata('display-name')),
'U_ENABLE' => $this->u_action . '&action=enable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('enable.' . $ext_name),
));
if (confirm_box(true))
{
redirect($this->u_action . '&action=enable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('enable.' . $ext_name));
}
else
{
confirm_box(false, $this->user->lang('EXTENSION_ENABLE_CONFIRM', $md_manager->get_metadata('display-name')), build_hidden_fields(array(
'i' => $id,
'mode' => $mode,
'action' => 'enable_pre',
'ext_name' => $ext_name,
)));
}
break;
case 'enable':
@@ -203,10 +207,8 @@ class acp_extensions
}
$extension = $this->ext_manager->get_extension($ext_name);
if (!$extension->is_enableable())
{
trigger_error($this->user->lang['EXTENSION_NOT_ENABLEABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
}
$this->check_is_enableable($extension);
try
{
@@ -215,9 +217,8 @@ class acp_extensions
// Are we approaching the time limit? If so we want to pause the update and continue after refreshing
if ((time() - $start_time) >= $safe_time_limit)
{
$this->template->assign_var('S_NEXT_STEP', true);
meta_refresh(0, $this->u_action . '&action=enable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('enable.' . $ext_name));
trigger_error('EXTENSION_ENABLE_IN_PROGRESS', E_USER_NOTICE);
}
}
@@ -233,14 +234,29 @@ class acp_extensions
}
catch (\phpbb\db\migration\exception $e)
{
$this->template->assign_var('MIGRATOR_ERROR', $e->getLocalisedMessage($this->user));
trigger_error($this->user->lang('MIGRATION_EXCEPTION_ERROR', $e->getLocalisedMessage($this->user)), E_USER_WARNING);
}
$this->tpl_name = 'acp_ext_enable';
if ($this->request->is_ajax())
{
$actions = $this->output_actions('enabled', [
'DISABLE' => $this->u_action . '&action=disable_pre&ext_name=' . urlencode($ext_name),
]);
$this->template->assign_vars(array(
'U_RETURN' => $this->u_action . '&action=list',
));
$data = [
'EXT_ENABLE_SUCCESS' => true,
'ACTIONS' => $actions,
'REFRESH_DATA' => [
'url' => '',
'time' => 0,
],
];
$json_response = new \phpbb\json_response;
$json_response->send($data);
}
trigger_error($this->user->lang('EXTENSION_ENABLE_SUCCESS') . adm_back_link($this->u_action), E_USER_NOTICE);
break;
case 'disable_pre':
@@ -249,13 +265,19 @@ class acp_extensions
redirect($this->u_action);
}
$this->tpl_name = 'acp_ext_disable';
$this->template->assign_vars(array(
'PRE' => true,
'L_CONFIRM_MESSAGE' => $this->user->lang('EXTENSION_DISABLE_CONFIRM', $md_manager->get_metadata('display-name')),
'U_DISABLE' => $this->u_action . '&action=disable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('disable.' . $ext_name),
));
if (confirm_box(true))
{
redirect($this->u_action . '&action=disable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('disable.' . $ext_name));
}
else
{
confirm_box(false, $this->user->lang('EXTENSION_DISABLE_CONFIRM', $md_manager->get_metadata('display-name')), build_hidden_fields(array(
'i' => $id,
'mode' => $mode,
'action' => 'disable_pre',
'ext_name' => $ext_name,
)));
}
break;
case 'disable':
@@ -272,15 +294,32 @@ class acp_extensions
$this->template->assign_var('S_NEXT_STEP', true);
meta_refresh(0, $this->u_action . '&action=disable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('disable.' . $ext_name));
trigger_error('EXTENSION_DISABLE_IN_PROGRESS', E_USER_NOTICE);
}
}
$this->log->add('admin', $this->user->data['user_id'], $this->user->ip, 'LOG_EXT_DISABLE', time(), array($ext_name));
$this->tpl_name = 'acp_ext_disable';
if ($this->request->is_ajax())
{
$actions = $this->output_actions('disabled', [
'ENABLE' => $this->u_action . '&action=enable_pre&ext_name=' . urlencode($ext_name),
'DELETE_DATA' => $this->u_action . '&action=delete_data_pre&ext_name=' . urlencode($ext_name),
]);
$this->template->assign_vars(array(
'U_RETURN' => $this->u_action . '&action=list',
));
$data = [
'EXT_DISABLE_SUCCESS' => true,
'ACTIONS' => $actions,
'REFRESH_DATA' => [
'url' => '',
'time' => 0,
],
];
$json_response = new \phpbb\json_response;
$json_response->send($data);
}
trigger_error($this->user->lang('EXTENSION_DISABLE_SUCCESS') . adm_back_link($this->u_action), E_USER_NOTICE);
break;
case 'delete_data_pre':
@@ -288,13 +327,20 @@ class acp_extensions
{
redirect($this->u_action);
}
$this->tpl_name = 'acp_ext_delete_data';
$this->template->assign_vars(array(
'PRE' => true,
'L_CONFIRM_MESSAGE' => $this->user->lang('EXTENSION_DELETE_DATA_CONFIRM', $md_manager->get_metadata('display-name')),
'U_PURGE' => $this->u_action . '&action=delete_data&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('delete_data.' . $ext_name),
));
if (confirm_box(true))
{
redirect($this->u_action . '&action=delete_data&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('delete_data.' . $ext_name));
}
else
{
confirm_box(false, $this->user->lang('EXTENSION_DELETE_DATA_CONFIRM', $md_manager->get_metadata('display-name')), build_hidden_fields(array(
'i' => $id,
'mode' => $mode,
'action' => 'delete_data_pre',
'ext_name' => $ext_name,
)));
}
break;
case 'delete_data':
@@ -313,20 +359,36 @@ class acp_extensions
$this->template->assign_var('S_NEXT_STEP', true);
meta_refresh(0, $this->u_action . '&action=delete_data&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('delete_data.' . $ext_name));
trigger_error('EXTENSION_DELETE_DATA_IN_PROGRESS', E_USER_NOTICE);
}
}
$this->log->add('admin', $this->user->data['user_id'], $this->user->ip, 'LOG_EXT_PURGE', time(), array($ext_name));
}
catch (\phpbb\db\migration\exception $e)
{
$this->template->assign_var('MIGRATOR_ERROR', $e->getLocalisedMessage($this->user));
trigger_error($this->user->lang('MIGRATION_EXCEPTION_ERROR', $e->getLocalisedMessage($this->user)), E_USER_WARNING);
}
$this->tpl_name = 'acp_ext_delete_data';
if ($this->request->is_ajax())
{
$actions = $this->output_actions('disabled', [
'ENABLE' => $this->u_action . '&action=enable_pre&ext_name=' . urlencode($ext_name),
]);
$this->template->assign_vars(array(
'U_RETURN' => $this->u_action . '&action=list',
));
$data = [
'EXT_DELETE_DATA_SUCCESS' => true,
'ACTIONS' => $actions,
'REFRESH_DATA' => [
'url' => '',
'time' => 0,
],
];
$json_response = new \phpbb\json_response;
$json_response->send($data);
}
trigger_error($this->user->lang('EXTENSION_DELETE_DATA_SUCCESS') . adm_back_link($this->u_action), E_USER_NOTICE);
break;
case 'details':
@@ -605,17 +667,37 @@ class acp_extensions
*
* @param string $block
* @param array $actions
* @return array List of actions to be performed on the extension
*/
private function output_actions($block, $actions)
{
foreach ($actions as $lang => $url)
$vars_ary = array();
foreach ($actions as $lang => $options)
{
$this->template->assign_block_vars($block . '.actions', array(
$url = $options;
if (is_array($options))
{
$url = $options['url'];
}
$vars = array(
'L_ACTION' => $this->user->lang('EXTENSION_' . $lang),
'L_ACTION_EXPLAIN' => (isset($this->user->lang['EXTENSION_' . $lang . '_EXPLAIN'])) ? $this->user->lang('EXTENSION_' . $lang . '_EXPLAIN') : '',
'U_ACTION' => $url,
));
'ACTION_AJAX' => 'ext_' . strtolower($lang),
);
if (isset($options['color']))
{
$vars['COLOR'] = $options['color'];
}
$this->template->assign_block_vars($block . '.actions', $vars);
$vars_ary[] = $vars;
}
return $vars_ary;
}
/**
@@ -662,4 +744,28 @@ class acp_extensions
));
}
}
/**
* Checks whether the extension can be enabled. Triggers error if not.
* Error message can be set by the extension.
*
* @param \phpbb\extension\extension_interface $extension Extension to check
*/
protected function check_is_enableable(\phpbb\extension\extension_interface $extension)
{
$message = $extension->is_enableable();
if ($message !== true)
{
if (empty($message))
{
$message = $this->user->lang('EXTENSION_NOT_ENABLEABLE');
}
else if (is_array($message))
{
$message = implode('<br>', $message);
}
trigger_error($message . adm_back_link($this->u_action), E_USER_WARNING);
}
}
}