From a640a455f35ccec26a80e9f9de5693dbb9e71c85 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Fri, 9 May 2014 00:07:56 +0200 Subject: [PATCH 1/3] [ticket/12074] Managing extensions doesn't produce any log entry PHPBB3-12074 --- phpBB/config/console.yml | 3 ++ phpBB/includes/acp/acp_extensions.php | 34 ++++++++++++++++++- phpBB/language/en/acp/common.php | 18 ++++++++++ .../console/command/extension/command.php | 6 +++- .../console/command/extension/disable.php | 2 ++ .../console/command/extension/enable.php | 2 ++ .../phpbb/console/command/extension/purge.php | 2 ++ 7 files changed, 65 insertions(+), 2 deletions(-) diff --git a/phpBB/config/console.yml b/phpBB/config/console.yml index 1340d9c0d7..ac6f4ecef1 100644 --- a/phpBB/config/console.yml +++ b/phpBB/config/console.yml @@ -61,6 +61,7 @@ services: class: phpbb\console\command\extension\disable arguments: - @ext.manager + - @log tags: - { name: console.command } @@ -68,6 +69,7 @@ services: class: phpbb\console\command\extension\enable arguments: - @ext.manager + - @log tags: - { name: console.command } @@ -75,6 +77,7 @@ services: class: phpbb\console\command\extension\purge arguments: - @ext.manager + - @log tags: - { name: console.command } diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index 21a1909ac1..f0133bc648 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -26,16 +26,18 @@ class acp_extensions private $config; private $template; private $user; + private $log; function main() { // Start the page - global $config, $user, $template, $request, $phpbb_extension_manager, $db, $phpbb_root_path, $phpEx; + global $config, $user, $template, $request, $phpbb_extension_manager, $db, $phpbb_root_path, $phpEx, $phpbb_log; $this->db = $db; $this->config = $config; $this->template = $template; $this->user = $user; + $this->log = $phpbb_log; $user->add_lang(array('install', 'acp/extensions', 'migrator')); @@ -90,16 +92,19 @@ class acp_extensions case 'enable_pre': if (!$md_manager->validate_dir()) { + $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_ENABLE_DIR_INVALID_ERROR', time(), array($ext_name)); trigger_error($user->lang['EXTENSION_DIR_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING); } if (!$md_manager->validate_enable()) { + $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_ENABLE_NOT_AVAILABLE_ERROR', time(), array($ext_name)); trigger_error($user->lang['EXTENSION_NOT_AVAILABLE'] . adm_back_link($this->u_action), E_USER_WARNING); } if ($phpbb_extension_manager->enabled($ext_name)) { + $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_ENABLE_ALREADY_ENABLED_ERROR', time(), array($ext_name)); redirect($this->u_action); } @@ -115,14 +120,22 @@ class acp_extensions case 'enable': if (!$md_manager->validate_dir()) { + $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_ENABLE_DIR_INVALID_ERROR', time(), array($ext_name)); trigger_error($user->lang['EXTENSION_DIR_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING); } if (!$md_manager->validate_enable()) { + $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_ENABLE_NOT_AVAILABLE_ERROR', time(), array($ext_name)); trigger_error($user->lang['EXTENSION_NOT_AVAILABLE'] . adm_back_link($this->u_action), E_USER_WARNING); } + if ($phpbb_extension_manager->enabled($ext_name)) + { + $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_ENABLE_ALREADY_ENABLED_ERROR', time(), array($ext_name)); + redirect($this->u_action); + } + try { while ($phpbb_extension_manager->enable_step($ext_name)) @@ -135,9 +148,11 @@ class acp_extensions meta_refresh(0, $this->u_action . '&action=enable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('enable.' . $ext_name)); } } + $this->log->add('admin', $user->data['user_id'], $user->ip, 'LOG_EXT_ENABLE', time(), array($ext_name)); } catch (\phpbb\db\migration\exception $e) { + $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_ENABLE_MIGRATION_ERROR', time(), array($ext_name)); $template->assign_var('MIGRATOR_ERROR', $e->getLocalisedMessage($user)); } @@ -151,6 +166,7 @@ class acp_extensions case 'disable_pre': if (!$phpbb_extension_manager->enabled($ext_name)) { + $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_DISABLE_NOT_ENABLED_ERROR', time(), array($ext_name)); redirect($this->u_action); } @@ -164,6 +180,12 @@ class acp_extensions break; case 'disable': + if (!$phpbb_extension_manager->enabled($ext_name)) + { + $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_DISABLE_NOT_ENABLED_ERROR', time(), array($ext_name)); + redirect($this->u_action); + } + while ($phpbb_extension_manager->disable_step($ext_name)) { // Are we approaching the time limit? If so we want to pause the update and continue after refreshing @@ -174,6 +196,7 @@ class acp_extensions meta_refresh(0, $this->u_action . '&action=disable&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('disable.' . $ext_name)); } } + $this->log->add('admin', $user->data['user_id'], $user->ip, 'LOG_EXT_DISABLE', time(), array($ext_name)); $this->tpl_name = 'acp_ext_disable'; @@ -185,6 +208,7 @@ class acp_extensions case 'delete_data_pre': if ($phpbb_extension_manager->enabled($ext_name)) { + $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_PURGE_ENABLED_ERROR', time(), array($ext_name)); redirect($this->u_action); } $this->tpl_name = 'acp_ext_delete_data'; @@ -197,6 +221,12 @@ class acp_extensions break; case 'delete_data': + if ($phpbb_extension_manager->enabled($ext_name)) + { + $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_PURGE_ENABLED_ERROR', time(), array($ext_name)); + redirect($this->u_action); + } + try { while ($phpbb_extension_manager->purge_step($ext_name)) @@ -209,9 +239,11 @@ class acp_extensions meta_refresh(0, $this->u_action . '&action=delete_data&ext_name=' . urlencode($ext_name) . '&hash=' . generate_link_hash('delete_data.' . $ext_name)); } } + $this->log->add('admin', $user->data['user_id'], $user->ip, 'LOG_EXT_PURGE', time(), array($ext_name)); } catch (\phpbb\db\migration\exception $e) { + $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_PURGE_MIGRATION_ERROR', time(), array($ext_name)); $template->assign_var('MIGRATOR_ERROR', $e->getLocalisedMessage($user)); } diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php index 6f6a5f901f..2896ab4e36 100644 --- a/phpBB/language/en/acp/common.php +++ b/phpBB/language/en/acp/common.php @@ -777,4 +777,22 @@ $lang = array_merge($lang, array( 'LOG_WORD_ADD' => 'Added word censor
» %s', 'LOG_WORD_DELETE' => 'Deleted word censor
» %s', 'LOG_WORD_EDIT' => 'Edited word censor
» %s', + + 'LOG_EXT_ENABLE' => 'Extension enabled
» %s', + 'LOG_EXT_DISABLE' => 'Extension disabled
» %s', + 'LOG_EXT_PURGE' => 'Extension’s data deleted
» %s', + + 'LOG_EXT_ENABLE_ERROR' => 'Error while enabling an extension
» %s', + 'LOG_EXT_DISABLE_ERROR' => 'Error while disabling an extension
» %s', + 'LOG_EXT_PURGE_ERROR' => 'Error while deleted the data of an extension
» %s', + + 'LOG_EXT_ENABLE_DIR_INVALID_ERROR' => 'Error while enabling the extension "%s"
» Invalid directory structure.', + 'LOG_EXT_ENABLE_NOT_AVAILABLE_ERROR' => 'Error while enabling the extension "%s"
» Extension unavailable for this board.', + 'LOG_EXT_ENABLE_ALREADY_ENABLED_ERROR' => 'Error while enabling the extension "%s"
» Extension already enabled.', + 'LOG_EXT_ENABLE_MIGRATION_ERROR' => 'Error while enabling the extension "%s"
» Migration error.', + + 'LOG_EXT_DISABLE_NOT_ENABLED_ERROR' => 'Error while disabling the extension "%s"
» Extension not enabled.', + + 'LOG_EXT_PURGE_ENABLED_ERROR' => 'Error while deleting the data of the extension "%s"
» Extension enabled.', + 'LOG_EXT_PURGE_MIGRATION_ERROR' => 'Error while deleting the data of the extension "%s"
» Migration error.', )); diff --git a/phpBB/phpbb/console/command/extension/command.php b/phpBB/phpbb/console/command/extension/command.php index edde7ce2e2..d133c2224f 100644 --- a/phpBB/phpbb/console/command/extension/command.php +++ b/phpBB/phpbb/console/command/extension/command.php @@ -13,9 +13,13 @@ abstract class command extends \phpbb\console\command\command /** @var \phpbb\extension\manager */ protected $manager; - function __construct(\phpbb\extension\manager $manager) + /** @var \phpbb\log\log */ + protected $log; + + function __construct(\phpbb\extension\manager $manager, \phpbb\log\log $log) { $this->manager = $manager; + $this->log = $log; parent::__construct(); } diff --git a/phpBB/phpbb/console/command/extension/disable.php b/phpBB/phpbb/console/command/extension/disable.php index e4de70ca34..fb0c23762f 100644 --- a/phpBB/phpbb/console/command/extension/disable.php +++ b/phpBB/phpbb/console/command/extension/disable.php @@ -35,11 +35,13 @@ class disable extends command if ($this->manager->enabled($name)) { + $this->log->add('critical', ANONYMOUS, '', 'LOG_EXT_DISABLE_ERROR', time(), array($name)); $output->writeln("Could not disable extension $name"); return 1; } else { + $this->log->add('admin', ANONYMOUS, '', 'LOG_EXT_DISABLE', time(), array($name)); $output->writeln("Successfully disabled extension $name"); return 0; } diff --git a/phpBB/phpbb/console/command/extension/enable.php b/phpBB/phpbb/console/command/extension/enable.php index ee7dae76aa..e20a5ba81d 100644 --- a/phpBB/phpbb/console/command/extension/enable.php +++ b/phpBB/phpbb/console/command/extension/enable.php @@ -35,11 +35,13 @@ class enable extends command if ($this->manager->enabled($name)) { + $this->log->add('admin', ANONYMOUS, '', 'LOG_EXTENSION_ENABLE', time(), array($name)); $output->writeln("Successfully enabled extension $name"); return 0; } else { + $this->log->add('critical', ANONYMOUS, '', 'LOG_EXT_ENABLE_ERROR', time(), array($name)); $output->writeln("Could not enable extension $name"); return 1; } diff --git a/phpBB/phpbb/console/command/extension/purge.php b/phpBB/phpbb/console/command/extension/purge.php index c2e1d2928c..234d32f302 100644 --- a/phpBB/phpbb/console/command/extension/purge.php +++ b/phpBB/phpbb/console/command/extension/purge.php @@ -35,11 +35,13 @@ class purge extends command if ($this->manager->enabled($name)) { + $this->log->add('critical', ANONYMOUS, '', 'LOG_EXT_PURGE_ERROR', time(), array($name)); $output->writeln("Could not purge extension $name"); return 1; } else { + $this->log->add('admin', ANONYMOUS, '', 'LOG_EXT_PURGE', time(), array($name)); $output->writeln("Successfully purge extension $name"); return 0; } From 3029f93000198908bddacb0079aae2d0ecda0c5d Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Fri, 9 May 2014 00:26:07 +0200 Subject: [PATCH 2/3] [ticket/12074] Don't log errors PHPBB3-12074 --- phpBB/includes/acp/acp_extensions.php | 12 ------------ phpBB/language/en/acp/common.php | 16 +--------------- .../phpbb/console/command/extension/disable.php | 1 - phpBB/phpbb/console/command/extension/enable.php | 1 - phpBB/phpbb/console/command/extension/purge.php | 1 - 5 files changed, 1 insertion(+), 30 deletions(-) diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index f0133bc648..1fb2d2df26 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -92,19 +92,16 @@ class acp_extensions case 'enable_pre': if (!$md_manager->validate_dir()) { - $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_ENABLE_DIR_INVALID_ERROR', time(), array($ext_name)); trigger_error($user->lang['EXTENSION_DIR_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING); } if (!$md_manager->validate_enable()) { - $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_ENABLE_NOT_AVAILABLE_ERROR', time(), array($ext_name)); trigger_error($user->lang['EXTENSION_NOT_AVAILABLE'] . adm_back_link($this->u_action), E_USER_WARNING); } if ($phpbb_extension_manager->enabled($ext_name)) { - $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_ENABLE_ALREADY_ENABLED_ERROR', time(), array($ext_name)); redirect($this->u_action); } @@ -120,19 +117,16 @@ class acp_extensions case 'enable': if (!$md_manager->validate_dir()) { - $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_ENABLE_DIR_INVALID_ERROR', time(), array($ext_name)); trigger_error($user->lang['EXTENSION_DIR_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING); } if (!$md_manager->validate_enable()) { - $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_ENABLE_NOT_AVAILABLE_ERROR', time(), array($ext_name)); trigger_error($user->lang['EXTENSION_NOT_AVAILABLE'] . adm_back_link($this->u_action), E_USER_WARNING); } if ($phpbb_extension_manager->enabled($ext_name)) { - $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_ENABLE_ALREADY_ENABLED_ERROR', time(), array($ext_name)); redirect($this->u_action); } @@ -152,7 +146,6 @@ class acp_extensions } catch (\phpbb\db\migration\exception $e) { - $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_ENABLE_MIGRATION_ERROR', time(), array($ext_name)); $template->assign_var('MIGRATOR_ERROR', $e->getLocalisedMessage($user)); } @@ -166,7 +159,6 @@ class acp_extensions case 'disable_pre': if (!$phpbb_extension_manager->enabled($ext_name)) { - $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_DISABLE_NOT_ENABLED_ERROR', time(), array($ext_name)); redirect($this->u_action); } @@ -182,7 +174,6 @@ class acp_extensions case 'disable': if (!$phpbb_extension_manager->enabled($ext_name)) { - $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_DISABLE_NOT_ENABLED_ERROR', time(), array($ext_name)); redirect($this->u_action); } @@ -208,7 +199,6 @@ class acp_extensions case 'delete_data_pre': if ($phpbb_extension_manager->enabled($ext_name)) { - $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_PURGE_ENABLED_ERROR', time(), array($ext_name)); redirect($this->u_action); } $this->tpl_name = 'acp_ext_delete_data'; @@ -223,7 +213,6 @@ class acp_extensions case 'delete_data': if ($phpbb_extension_manager->enabled($ext_name)) { - $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_PURGE_ENABLED_ERROR', time(), array($ext_name)); redirect($this->u_action); } @@ -243,7 +232,6 @@ class acp_extensions } catch (\phpbb\db\migration\exception $e) { - $this->log->add('critical', $user->data['user_id'], $user->ip, 'LOG_EXT_PURGE_MIGRATION_ERROR', time(), array($ext_name)); $template->assign_var('MIGRATOR_ERROR', $e->getLocalisedMessage($user)); } diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php index 2896ab4e36..8014ee64f1 100644 --- a/phpBB/language/en/acp/common.php +++ b/phpBB/language/en/acp/common.php @@ -780,19 +780,5 @@ $lang = array_merge($lang, array( 'LOG_EXT_ENABLE' => 'Extension enabled
» %s', 'LOG_EXT_DISABLE' => 'Extension disabled
» %s', - 'LOG_EXT_PURGE' => 'Extension’s data deleted
» %s', - - 'LOG_EXT_ENABLE_ERROR' => 'Error while enabling an extension
» %s', - 'LOG_EXT_DISABLE_ERROR' => 'Error while disabling an extension
» %s', - 'LOG_EXT_PURGE_ERROR' => 'Error while deleted the data of an extension
» %s', - - 'LOG_EXT_ENABLE_DIR_INVALID_ERROR' => 'Error while enabling the extension "%s"
» Invalid directory structure.', - 'LOG_EXT_ENABLE_NOT_AVAILABLE_ERROR' => 'Error while enabling the extension "%s"
» Extension unavailable for this board.', - 'LOG_EXT_ENABLE_ALREADY_ENABLED_ERROR' => 'Error while enabling the extension "%s"
» Extension already enabled.', - 'LOG_EXT_ENABLE_MIGRATION_ERROR' => 'Error while enabling the extension "%s"
» Migration error.', - - 'LOG_EXT_DISABLE_NOT_ENABLED_ERROR' => 'Error while disabling the extension "%s"
» Extension not enabled.', - - 'LOG_EXT_PURGE_ENABLED_ERROR' => 'Error while deleting the data of the extension "%s"
» Extension enabled.', - 'LOG_EXT_PURGE_MIGRATION_ERROR' => 'Error while deleting the data of the extension "%s"
» Migration error.', + 'LOG_EXT_PURGE' => 'Extension’s data deleted
» %s', )); diff --git a/phpBB/phpbb/console/command/extension/disable.php b/phpBB/phpbb/console/command/extension/disable.php index fb0c23762f..ceaf168108 100644 --- a/phpBB/phpbb/console/command/extension/disable.php +++ b/phpBB/phpbb/console/command/extension/disable.php @@ -35,7 +35,6 @@ class disable extends command if ($this->manager->enabled($name)) { - $this->log->add('critical', ANONYMOUS, '', 'LOG_EXT_DISABLE_ERROR', time(), array($name)); $output->writeln("Could not disable extension $name"); return 1; } diff --git a/phpBB/phpbb/console/command/extension/enable.php b/phpBB/phpbb/console/command/extension/enable.php index e20a5ba81d..757f19005e 100644 --- a/phpBB/phpbb/console/command/extension/enable.php +++ b/phpBB/phpbb/console/command/extension/enable.php @@ -41,7 +41,6 @@ class enable extends command } else { - $this->log->add('critical', ANONYMOUS, '', 'LOG_EXT_ENABLE_ERROR', time(), array($name)); $output->writeln("Could not enable extension $name"); return 1; } diff --git a/phpBB/phpbb/console/command/extension/purge.php b/phpBB/phpbb/console/command/extension/purge.php index 234d32f302..0342d116f5 100644 --- a/phpBB/phpbb/console/command/extension/purge.php +++ b/phpBB/phpbb/console/command/extension/purge.php @@ -35,7 +35,6 @@ class purge extends command if ($this->manager->enabled($name)) { - $this->log->add('critical', ANONYMOUS, '', 'LOG_EXT_PURGE_ERROR', time(), array($name)); $output->writeln("Could not purge extension $name"); return 1; } From 93d3c517e3aac385e5ce8adb7e20592abf8b4b14 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Fri, 9 May 2014 00:48:34 +0200 Subject: [PATCH 3/3] [ticket/12074] Update the visibility of the constructor PHPBB3-12074 --- phpBB/phpbb/console/command/extension/command.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/phpbb/console/command/extension/command.php b/phpBB/phpbb/console/command/extension/command.php index d133c2224f..72325ce768 100644 --- a/phpBB/phpbb/console/command/extension/command.php +++ b/phpBB/phpbb/console/command/extension/command.php @@ -16,7 +16,7 @@ abstract class command extends \phpbb\console\command\command /** @var \phpbb\log\log */ protected $log; - function __construct(\phpbb\extension\manager $manager, \phpbb\log\log $log) + public function __construct(\phpbb\extension\manager $manager, \phpbb\log\log $log) { $this->manager = $manager; $this->log = $log;