Create Events for protocol support hooks

This commit is contained in:
Art4 2025-02-24 08:40:07 +00:00
parent f98aee686f
commit f3a8bcff11
5 changed files with 40 additions and 3 deletions

View file

@ -59,6 +59,9 @@ final class HookEventBridge
ArrayFilterEvent::HTML_TO_BBCODE_END => 'html2bbcode', ArrayFilterEvent::HTML_TO_BBCODE_END => 'html2bbcode',
ArrayFilterEvent::BBCODE_TO_MARKDOWN_END => 'bb2diaspora', ArrayFilterEvent::BBCODE_TO_MARKDOWN_END => 'bb2diaspora',
ArrayFilterEvent::JOT_NETWORKS => 'jot_networks', 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::HEAD => 'head',
HtmlFilterEvent::FOOTER => 'footer', HtmlFilterEvent::FOOTER => 'footer',
HtmlFilterEvent::PAGE_HEADER => 'page_header', HtmlFilterEvent::PAGE_HEADER => 'page_header',
@ -98,6 +101,9 @@ final class HookEventBridge
ArrayFilterEvent::HTML_TO_BBCODE_END => 'onHtmlToBbcodeEvent', ArrayFilterEvent::HTML_TO_BBCODE_END => 'onHtmlToBbcodeEvent',
ArrayFilterEvent::BBCODE_TO_MARKDOWN_END => 'onBbcodeToMarkdownEvent', ArrayFilterEvent::BBCODE_TO_MARKDOWN_END => 'onBbcodeToMarkdownEvent',
ArrayFilterEvent::JOT_NETWORKS => 'onArrayFilterEvent', ArrayFilterEvent::JOT_NETWORKS => 'onArrayFilterEvent',
ArrayFilterEvent::PROTOCOL_SUPPORTS_FOLLOW => 'onArrayFilterEvent',
ArrayFilterEvent::PROTOCOL_SUPPORTS_REVOKE_FOLLOW => 'onArrayFilterEvent',
ArrayFilterEvent::PROTOCOL_SUPPORTS_PROBE => 'onArrayFilterEvent',
HtmlFilterEvent::HEAD => 'onHtmlFilterEvent', HtmlFilterEvent::HEAD => 'onHtmlFilterEvent',
HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent', HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent',
HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent',

View file

@ -9,6 +9,7 @@ namespace Friendica\Core;
use Friendica\Database\DBA; use Friendica\Database\DBA;
use Friendica\DI; use Friendica\DI;
use Friendica\Event\ArrayFilterEvent;
use Friendica\Model\User; use Friendica\Model\User;
use Friendica\Network\HTTPException; use Friendica\Network\HTTPException;
use Friendica\Protocol\ActivityPub; use Friendica\Protocol\ActivityPub;
@ -76,7 +77,12 @@ class Protocol
'protocol' => $protocol, 'protocol' => $protocol,
'result' => null '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; return $hook_data['result'] === true;
} }
@ -98,7 +104,12 @@ class Protocol
'protocol' => $protocol, 'protocol' => $protocol,
'result' => null '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; return $hook_data['result'] === true;
} }
@ -311,7 +322,12 @@ class Protocol
'protocol' => $protocol, 'protocol' => $protocol,
'result' => null '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; return $hook_data['result'] === true;
} }

View file

@ -56,6 +56,12 @@ final class ArrayFilterEvent extends Event
public const JOT_NETWORKS = 'friendica.data.jot_networks'; 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; private array $array;
public function __construct(string $name, array $array) public function __construct(string $name, array $array)

View file

@ -48,6 +48,9 @@ class HookEventBridgeTest extends TestCase
ArrayFilterEvent::HTML_TO_BBCODE_END => 'onHtmlToBbcodeEvent', ArrayFilterEvent::HTML_TO_BBCODE_END => 'onHtmlToBbcodeEvent',
ArrayFilterEvent::BBCODE_TO_MARKDOWN_END => 'onBbcodeToMarkdownEvent', ArrayFilterEvent::BBCODE_TO_MARKDOWN_END => 'onBbcodeToMarkdownEvent',
ArrayFilterEvent::JOT_NETWORKS => 'onArrayFilterEvent', ArrayFilterEvent::JOT_NETWORKS => 'onArrayFilterEvent',
ArrayFilterEvent::PROTOCOL_SUPPORTS_FOLLOW => 'onArrayFilterEvent',
ArrayFilterEvent::PROTOCOL_SUPPORTS_REVOKE_FOLLOW => 'onArrayFilterEvent',
ArrayFilterEvent::PROTOCOL_SUPPORTS_PROBE => 'onArrayFilterEvent',
HtmlFilterEvent::HEAD => 'onHtmlFilterEvent', HtmlFilterEvent::HEAD => 'onHtmlFilterEvent',
HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent', HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent',
HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent',
@ -272,6 +275,9 @@ class HookEventBridgeTest extends TestCase
[ArrayFilterEvent::PAGE_INFO, 'page_info_data'], [ArrayFilterEvent::PAGE_INFO, 'page_info_data'],
[ArrayFilterEvent::SMILEY_LIST, 'smilie'], [ArrayFilterEvent::SMILEY_LIST, 'smilie'],
[ArrayFilterEvent::JOT_NETWORKS, 'jot_networks'], [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'],
]; ];
} }

View file

@ -44,6 +44,9 @@ class ArrayFilterEventTest extends TestCase
[ArrayFilterEvent::BBCODE_TO_HTML_START, 'friendica.data.bbcode_to_html_start'], [ArrayFilterEvent::BBCODE_TO_HTML_START, 'friendica.data.bbcode_to_html_start'],
[ArrayFilterEvent::BBCODE_TO_MARKDOWN_END, 'friendica.data.bbcode_to_markdown_end'], [ArrayFilterEvent::BBCODE_TO_MARKDOWN_END, 'friendica.data.bbcode_to_markdown_end'],
[ArrayFilterEvent::JOT_NETWORKS, 'friendica.data.jot_networks'], [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'],
]; ];
} }