From 6a353853084ad7c7022f838e82ff82ff9ea11c9c Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Mon, 8 Oct 2018 15:45:21 +0200 Subject: [ticket/15833] Add core.avatar_manager_avatar_delete_after event PHPBB3-15833 --- phpBB/config/default/container/services_avatar.yml | 1 + phpBB/phpbb/avatar/manager.php | 23 +++++++++++++++++++++- tests/avatar/manager_test.php | 2 +- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/phpBB/config/default/container/services_avatar.yml b/phpBB/config/default/container/services_avatar.yml index 6cc38516ae..d96aa6239a 100644 --- a/phpBB/config/default/container/services_avatar.yml +++ b/phpBB/config/default/container/services_avatar.yml @@ -3,6 +3,7 @@ services: class: phpbb\avatar\manager arguments: - '@config' + - '@dispatcher' - '@avatar.driver_collection' # ----- Avatar drivers ----- diff --git a/phpBB/phpbb/avatar/manager.php b/phpBB/phpbb/avatar/manager.php index 26eb17c265..6d9604db04 100644 --- a/phpBB/phpbb/avatar/manager.php +++ b/phpBB/phpbb/avatar/manager.php @@ -21,6 +21,12 @@ class manager */ protected $config; + /** + * phpBB event dispatcher + * @var \phpbb\event\dispatcher_interface + */ + protected $phpbb_dispatcher; + /** * Array that contains a list of enabled drivers * @var array @@ -49,11 +55,13 @@ class manager * Construct an avatar manager object * * @param \phpbb\config\config $config phpBB configuration + * @param \phpbb\event\dispatcher_interface $phpbb_dispatcher phpBB event dispatcher * @param array $avatar_drivers Avatar drivers passed via the service container */ - public function __construct(\phpbb\config\config $config, $avatar_drivers) + public function __construct(\phpbb\config\config $config, \phpbb\event\dispatcher_interface $phpbb_dispatcher, $avatar_drivers) { $this->config = $config; + $this->phpbb_dispatcher = $phpbb_dispatcher; $this->register_avatar_drivers($avatar_drivers); } @@ -331,6 +339,19 @@ class manager WHERE user_avatar = '" . $db->sql_escape($avatar_data['avatar']) . "'"; $db->sql_query($sql); } + + /** + * Event is triggered after user avatar has been deleted + * + * @event core.avatar_manager_avatar_delete_after + * @var \phpbb\user user phpBB user object + * @var array avatar_data Normalised avatar-related user data + * @var string table Table to delete avatar from + * @var string prefix Column prefix to delete avatar from + * @since 3.2.4-RC1 + */ + $vars = array('user', 'avatar_data', 'table', 'prefix'); + extract($this->phpbb_dispatcher->trigger_event('core.avatar_manager_avatar_delete_after', compact($vars))); } /** diff --git a/tests/avatar/manager_test.php b/tests/avatar/manager_test.php index 9e826a3a59..0a64bfd69f 100644 --- a/tests/avatar/manager_test.php +++ b/tests/avatar/manager_test.php @@ -99,7 +99,7 @@ class phpbb_avatar_manager_test extends \phpbb_database_test_case $this->config['allow_avatar_' . get_class($this->avatar_barfoo)] = false; // Set up avatar manager - $this->manager = new \phpbb\avatar\manager($this->config, $avatar_drivers, $phpbb_container); + $this->manager = new \phpbb\avatar\manager($this->config, $dispatcher, $avatar_drivers); $this->db = $this->new_dbal(); $lang_loader = new \phpbb\language\language_file_loader($phpbb_root_path, $phpEx); $lang = new \phpbb\language\language($lang_loader); -- cgit v1.2.1