diff --git a/src/Core/Hooks/HookEventBridge.php b/src/Core/Hooks/HookEventBridge.php index 6f61c58c72..cc2e8be225 100644 --- a/src/Core/Hooks/HookEventBridge.php +++ b/src/Core/Hooks/HookEventBridge.php @@ -68,6 +68,7 @@ final class HookEventBridge ArrayFilterEvent::REVOKE_FOLLOW_CONTACT => 'revoke_follow', ArrayFilterEvent::BLOCK_CONTACT => 'block', ArrayFilterEvent::UNBLOCK_CONTACT => 'unblock', + ArrayFilterEvent::AVATAR_LOOKUP => 'avatar_lookup', ArrayFilterEvent::ADD_WORKER_TASK => 'proc_run', ArrayFilterEvent::STORAGE_CONFIG => 'storage_config', ArrayFilterEvent::STORAGE_INSTANCE => 'storage_instance', @@ -121,6 +122,7 @@ final class HookEventBridge ArrayFilterEvent::REVOKE_FOLLOW_CONTACT => 'onArrayFilterEvent', ArrayFilterEvent::BLOCK_CONTACT => 'onArrayFilterEvent', ArrayFilterEvent::UNBLOCK_CONTACT => 'onArrayFilterEvent', + ArrayFilterEvent::AVATAR_LOOKUP => 'onArrayFilterEvent', ArrayFilterEvent::ADD_WORKER_TASK => 'onArrayFilterEvent', ArrayFilterEvent::STORAGE_CONFIG => 'onArrayFilterEvent', ArrayFilterEvent::STORAGE_INSTANCE => 'onArrayFilterEvent', diff --git a/src/Event/ArrayFilterEvent.php b/src/Event/ArrayFilterEvent.php index 056cdec470..ac72f3d29a 100644 --- a/src/Event/ArrayFilterEvent.php +++ b/src/Event/ArrayFilterEvent.php @@ -74,6 +74,8 @@ final class ArrayFilterEvent extends Event public const UNBLOCK_CONTACT = 'friendica.data.unblock_contact'; + public const AVATAR_LOOKUP = 'friendica.data.avatar_lookup'; + public const ADD_WORKER_TASK = 'friendica.data.add_worker_task'; public const STORAGE_CONFIG = 'friendica.data.storage_config'; diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 845c8be4ee..4684317e76 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -14,7 +14,6 @@ use Friendica\Contact\Introduction\Exception\IntroductionNotFoundException; use Friendica\Content\Conversation as ConversationContent; use Friendica\Content\Pager; use Friendica\Content\Text\HTML; -use Friendica\Core\Hook; use Friendica\Core\Protocol; use Friendica\Core\Renderer; use Friendica\Core\System; @@ -2205,7 +2204,11 @@ class Contact $avatar['url'] = ''; $avatar['success'] = false; - Hook::callAll('avatar_lookup', $avatar); + $eventDispatcher = DI::eventDispatcher(); + + $avatar = $eventDispatcher->dispatch( + new ArrayFilterEvent(ArrayFilterEvent::AVATAR_LOOKUP, $avatar), + )->getArray(); if ($avatar['success'] && !empty($avatar['url'])) { return $avatar['url']; diff --git a/src/Util/Network.php b/src/Util/Network.php index 1584faea3f..2172c5a177 100644 --- a/src/Util/Network.php +++ b/src/Util/Network.php @@ -7,8 +7,8 @@ namespace Friendica\Util; -use Friendica\Core\Hook; use Friendica\DI; +use Friendica\Event\ArrayFilterEvent; use Friendica\Model\Contact; use Friendica\Network\HTTPClient\Client\HttpClientAccept; use Friendica\Network\HTTPClient\Client\HttpClientOptions; @@ -302,7 +302,11 @@ class Network $avatar['url'] = ''; $avatar['success'] = false; - Hook::callAll('avatar_lookup', $avatar); + $eventDispatcher = DI::eventDispatcher(); + + $avatar = $eventDispatcher->dispatch( + new ArrayFilterEvent(ArrayFilterEvent::AVATAR_LOOKUP, $avatar), + )->getArray(); if (! $avatar['success']) { $avatar['url'] = DI::baseUrl() . Contact::DEFAULT_AVATAR_PHOTO; diff --git a/tests/Unit/Core/Hooks/HookEventBridgeTest.php b/tests/Unit/Core/Hooks/HookEventBridgeTest.php index 949401f364..77e0b1ecfc 100644 --- a/tests/Unit/Core/Hooks/HookEventBridgeTest.php +++ b/tests/Unit/Core/Hooks/HookEventBridgeTest.php @@ -57,6 +57,7 @@ class HookEventBridgeTest extends TestCase ArrayFilterEvent::REVOKE_FOLLOW_CONTACT => 'onArrayFilterEvent', ArrayFilterEvent::BLOCK_CONTACT => 'onArrayFilterEvent', ArrayFilterEvent::UNBLOCK_CONTACT => 'onArrayFilterEvent', + ArrayFilterEvent::AVATAR_LOOKUP => 'onArrayFilterEvent', ArrayFilterEvent::ADD_WORKER_TASK => 'onArrayFilterEvent', ArrayFilterEvent::STORAGE_CONFIG => 'onArrayFilterEvent', ArrayFilterEvent::STORAGE_INSTANCE => 'onArrayFilterEvent', @@ -295,6 +296,7 @@ class HookEventBridgeTest extends TestCase [ArrayFilterEvent::REVOKE_FOLLOW_CONTACT, 'revoke_follow'], [ArrayFilterEvent::BLOCK_CONTACT, 'block'], [ArrayFilterEvent::UNBLOCK_CONTACT, 'unblock'], + [ArrayFilterEvent::AVATAR_LOOKUP, 'avatar_lookup'], [ArrayFilterEvent::ADD_WORKER_TASK, 'proc_run'], [ArrayFilterEvent::STORAGE_CONFIG, 'storage_config'], [ArrayFilterEvent::STORAGE_INSTANCE, 'storage_instance'], diff --git a/tests/Unit/Event/ArrayFilterEventTest.php b/tests/Unit/Event/ArrayFilterEventTest.php index 2e539e290e..0e0c147216 100644 --- a/tests/Unit/Event/ArrayFilterEventTest.php +++ b/tests/Unit/Event/ArrayFilterEventTest.php @@ -54,6 +54,7 @@ class ArrayFilterEventTest extends TestCase [ArrayFilterEvent::REVOKE_FOLLOW_CONTACT, 'friendica.data.revoke_follow_contact'], [ArrayFilterEvent::BLOCK_CONTACT, 'friendica.data.block_contact'], [ArrayFilterEvent::UNBLOCK_CONTACT, 'friendica.data.unblock_contact'], + [ArrayFilterEvent::AVATAR_LOOKUP, 'friendica.data.avatar_lookup'], [ArrayFilterEvent::ADD_WORKER_TASK, 'friendica.data.add_worker_task'], [ArrayFilterEvent::STORAGE_CONFIG, 'friendica.data.storage_config'], [ArrayFilterEvent::STORAGE_INSTANCE, 'friendica.data.storage_instance'],