diff --git a/src/Core/Hooks/HookEventBridge.php b/src/Core/Hooks/HookEventBridge.php index 39198cf86c..bf2289e071 100644 --- a/src/Core/Hooks/HookEventBridge.php +++ b/src/Core/Hooks/HookEventBridge.php @@ -59,6 +59,9 @@ final class HookEventBridge ArrayFilterEvent::HTML_TO_BBCODE_END => 'html2bbcode', ArrayFilterEvent::BBCODE_TO_MARKDOWN_END => 'bb2diaspora', ArrayFilterEvent::JOT_NETWORKS => 'jot_networks', + ArrayFilterEvent::PROTOCOL_SUPPORTS_FOLLOW => 'support_follow', + ArrayFilterEvent::PROTOCOL_SUPPORTS_REVOKE_FOLLOW => 'support_revoke_follow', + ArrayFilterEvent::PROTOCOL_SUPPORTS_PROBE => 'support_probe', HtmlFilterEvent::HEAD => 'head', HtmlFilterEvent::FOOTER => 'footer', HtmlFilterEvent::PAGE_HEADER => 'page_header', @@ -98,6 +101,9 @@ final class HookEventBridge ArrayFilterEvent::HTML_TO_BBCODE_END => 'onHtmlToBbcodeEvent', ArrayFilterEvent::BBCODE_TO_MARKDOWN_END => 'onBbcodeToMarkdownEvent', ArrayFilterEvent::JOT_NETWORKS => 'onArrayFilterEvent', + ArrayFilterEvent::PROTOCOL_SUPPORTS_FOLLOW => 'onArrayFilterEvent', + ArrayFilterEvent::PROTOCOL_SUPPORTS_REVOKE_FOLLOW => 'onArrayFilterEvent', + ArrayFilterEvent::PROTOCOL_SUPPORTS_PROBE => 'onArrayFilterEvent', HtmlFilterEvent::HEAD => 'onHtmlFilterEvent', HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent', diff --git a/src/Core/Protocol.php b/src/Core/Protocol.php index 53f69bc509..1e5b7e7f21 100644 --- a/src/Core/Protocol.php +++ b/src/Core/Protocol.php @@ -9,6 +9,7 @@ namespace Friendica\Core; use Friendica\Database\DBA; use Friendica\DI; +use Friendica\Event\ArrayFilterEvent; use Friendica\Model\User; use Friendica\Network\HTTPException; use Friendica\Protocol\ActivityPub; @@ -76,7 +77,12 @@ class Protocol 'protocol' => $protocol, 'result' => null ]; - Hook::callAll('support_follow', $hook_data); + + $eventDispatcher = DI::eventDispatcher(); + + $hook_data = $eventDispatcher->dispatch( + new ArrayFilterEvent(ArrayFilterEvent::PROTOCOL_SUPPORTS_FOLLOW, $hook_data), + )->getArray(); return $hook_data['result'] === true; } @@ -98,7 +104,12 @@ class Protocol 'protocol' => $protocol, 'result' => null ]; - Hook::callAll('support_revoke_follow', $hook_data); + + $eventDispatcher = DI::eventDispatcher(); + + $hook_data = $eventDispatcher->dispatch( + new ArrayFilterEvent(ArrayFilterEvent::PROTOCOL_SUPPORTS_REVOKE_FOLLOW, $hook_data), + )->getArray(); return $hook_data['result'] === true; } @@ -311,7 +322,12 @@ class Protocol 'protocol' => $protocol, 'result' => null ]; - Hook::callAll('support_probe', $hook_data); + + $eventDispatcher = DI::eventDispatcher(); + + $hook_data = $eventDispatcher->dispatch( + new ArrayFilterEvent(ArrayFilterEvent::PROTOCOL_SUPPORTS_PROBE, $hook_data), + )->getArray(); return $hook_data['result'] === true; } diff --git a/src/Event/ArrayFilterEvent.php b/src/Event/ArrayFilterEvent.php index 43734efc95..d21c6f8d78 100644 --- a/src/Event/ArrayFilterEvent.php +++ b/src/Event/ArrayFilterEvent.php @@ -56,6 +56,12 @@ final class ArrayFilterEvent extends Event public const JOT_NETWORKS = 'friendica.data.jot_networks'; + public const PROTOCOL_SUPPORTS_FOLLOW = 'friendica.data.protocol_supports_follow'; + + public const PROTOCOL_SUPPORTS_REVOKE_FOLLOW = 'friendica.data.protocol_supports_revoke_follow'; + + public const PROTOCOL_SUPPORTS_PROBE = 'friendica.data.protocol_supports_probe'; + private array $array; public function __construct(string $name, array $array) diff --git a/tests/Unit/Core/Hooks/HookEventBridgeTest.php b/tests/Unit/Core/Hooks/HookEventBridgeTest.php index 9da695a74c..0752041604 100644 --- a/tests/Unit/Core/Hooks/HookEventBridgeTest.php +++ b/tests/Unit/Core/Hooks/HookEventBridgeTest.php @@ -48,6 +48,9 @@ class HookEventBridgeTest extends TestCase ArrayFilterEvent::HTML_TO_BBCODE_END => 'onHtmlToBbcodeEvent', ArrayFilterEvent::BBCODE_TO_MARKDOWN_END => 'onBbcodeToMarkdownEvent', ArrayFilterEvent::JOT_NETWORKS => 'onArrayFilterEvent', + ArrayFilterEvent::PROTOCOL_SUPPORTS_FOLLOW => 'onArrayFilterEvent', + ArrayFilterEvent::PROTOCOL_SUPPORTS_REVOKE_FOLLOW => 'onArrayFilterEvent', + ArrayFilterEvent::PROTOCOL_SUPPORTS_PROBE => 'onArrayFilterEvent', HtmlFilterEvent::HEAD => 'onHtmlFilterEvent', HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent', @@ -272,6 +275,9 @@ class HookEventBridgeTest extends TestCase [ArrayFilterEvent::PAGE_INFO, 'page_info_data'], [ArrayFilterEvent::SMILEY_LIST, 'smilie'], [ArrayFilterEvent::JOT_NETWORKS, 'jot_networks'], + [ArrayFilterEvent::PROTOCOL_SUPPORTS_FOLLOW, 'support_follow'], + [ArrayFilterEvent::PROTOCOL_SUPPORTS_REVOKE_FOLLOW, 'support_revoke_follow'], + [ArrayFilterEvent::PROTOCOL_SUPPORTS_PROBE, 'support_probe'], ]; } diff --git a/tests/Unit/Event/ArrayFilterEventTest.php b/tests/Unit/Event/ArrayFilterEventTest.php index ddb7cb4758..2d396e6760 100644 --- a/tests/Unit/Event/ArrayFilterEventTest.php +++ b/tests/Unit/Event/ArrayFilterEventTest.php @@ -44,6 +44,9 @@ class ArrayFilterEventTest extends TestCase [ArrayFilterEvent::BBCODE_TO_HTML_START, 'friendica.data.bbcode_to_html_start'], [ArrayFilterEvent::BBCODE_TO_MARKDOWN_END, 'friendica.data.bbcode_to_markdown_end'], [ArrayFilterEvent::JOT_NETWORKS, 'friendica.data.jot_networks'], + [ArrayFilterEvent::PROTOCOL_SUPPORTS_FOLLOW, 'friendica.data.protocol_supports_follow'], + [ArrayFilterEvent::PROTOCOL_SUPPORTS_REVOKE_FOLLOW, 'friendica.data.protocol_supports_revoke_follow'], + [ArrayFilterEvent::PROTOCOL_SUPPORTS_PROBE, 'friendica.data.protocol_supports_probe'], ]; }