diff --git a/src/Content/Nav.php b/src/Content/Nav.php index e5da7d878a..695d32ffdd 100644 --- a/src/Content/Nav.php +++ b/src/Content/Nav.php @@ -10,12 +10,12 @@ namespace Friendica\Content; use Friendica\App\BaseURL; use Friendica\App\Router; use Friendica\Core\Config\Capability\IManageConfigValues; -use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Renderer; use Friendica\Core\Session\Capability\IHandleUserSessions; use Friendica\Database\Database; use Friendica\Event\ArrayFilterEvent; +use Friendica\Event\HtmlFilterEvent; use Friendica\Model\Contact; use Friendica\Model\User; use Friendica\Module\Conversation\Community; @@ -119,7 +119,9 @@ class Nav '$search_hint' => $this->l10n->t('@name, !group, #tags, content') ]); - Hook::callAll('page_header', $nav); + $nav = $this->eventDispatcher->dispatch( + new HtmlFilterEvent(HtmlFilterEvent::PAGE_HEADER, $nav) + )->getHtml(); return $nav; } @@ -156,9 +158,11 @@ class Nav ) { $arr = ['app_menu' => $appMenu]; - $arr = $this->eventDispatcher->dispatch(new ArrayFilterEvent(ArrayFilterEvent::APP_MENU, $arr))->getArray(); + $arr = $this->eventDispatcher->dispatch( + new ArrayFilterEvent(ArrayFilterEvent::APP_MENU, $arr) + )->getArray(); - $appMenu = $arr['app_menu']; + $appMenu = $arr['app_menu'] ?? []; } return $appMenu; @@ -342,7 +346,9 @@ class Nav 'userinfo' => $userinfo, ]; - Hook::callAll('nav_info', $nav_info); + $nav_info = $this->eventDispatcher->dispatch( + new ArrayFilterEvent(ArrayFilterEvent::NAV_INFO, $nav_info) + )->getArray(); return $nav_info; } diff --git a/src/Event/ArrayFilterEvent.php b/src/Event/ArrayFilterEvent.php index 7e9063398b..4c888dcb80 100644 --- a/src/Event/ArrayFilterEvent.php +++ b/src/Event/ArrayFilterEvent.php @@ -18,6 +18,8 @@ final class ArrayFilterEvent extends Event { public const APP_MENU = 'friendica.data.app_menu'; + public const NAV_INFO = 'friendica.data.nav_info'; + private array $array; public function __construct(string $name, array $array) diff --git a/src/Event/HtmlFilterEvent.php b/src/Event/HtmlFilterEvent.php index 6b71ffb5bc..7d1bbb2b55 100644 --- a/src/Event/HtmlFilterEvent.php +++ b/src/Event/HtmlFilterEvent.php @@ -20,6 +20,8 @@ final class HtmlFilterEvent extends Event public const FOOTER = 'friendica.html.footer'; + public const PAGE_HEADER = 'friendica.html.page_header'; + public const PAGE_CONTENT_TOP = 'friendica.html.page_content_top'; public const PAGE_END = 'friendica.html.page_end'; diff --git a/src/EventSubscriber/HookEventBridge.php b/src/EventSubscriber/HookEventBridge.php index 662df204fd..c7e3280125 100644 --- a/src/EventSubscriber/HookEventBridge.php +++ b/src/EventSubscriber/HookEventBridge.php @@ -24,7 +24,7 @@ use Friendica\Event\NamedEvent; final class HookEventBridge { /** - * This allows us to mock the Hook call in tests. + * @internal This allows us to mock the Hook call in tests. * * @var \Closure|null */ @@ -37,8 +37,10 @@ final class HookEventBridge Event::INIT => 'init_1', ConfigLoadedEvent::CONFIG_LOADED => 'load_config', ArrayFilterEvent::APP_MENU => 'app_menu', + ArrayFilterEvent::NAV_INFO => 'nav_info', HtmlFilterEvent::HEAD => 'head', HtmlFilterEvent::FOOTER => 'footer', + HtmlFilterEvent::PAGE_HEADER => 'page_header', HtmlFilterEvent::PAGE_CONTENT_TOP => 'page_content_top', HtmlFilterEvent::PAGE_END => 'page_end', ]; @@ -52,8 +54,10 @@ final class HookEventBridge Event::INIT => 'onNamedEvent', ConfigLoadedEvent::CONFIG_LOADED => 'onConfigLoadedEvent', ArrayFilterEvent::APP_MENU => 'onArrayFilterEvent', + ArrayFilterEvent::NAV_INFO => 'onArrayFilterEvent', HtmlFilterEvent::HEAD => 'onHtmlFilterEvent', HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent', + HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_CONTENT_TOP => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_END => 'onHtmlFilterEvent', ]; diff --git a/tests/Unit/EventSubscriber/HookEventBridgeTest.php b/tests/Unit/EventSubscriber/HookEventBridgeTest.php index 3b9b0afba1..ce1ebc58a0 100644 --- a/tests/Unit/EventSubscriber/HookEventBridgeTest.php +++ b/tests/Unit/EventSubscriber/HookEventBridgeTest.php @@ -25,8 +25,10 @@ class HookEventBridgeTest extends TestCase Event::INIT => 'onNamedEvent', ConfigLoadedEvent::CONFIG_LOADED => 'onConfigLoadedEvent', ArrayFilterEvent::APP_MENU => 'onArrayFilterEvent', + ArrayFilterEvent::NAV_INFO => 'onArrayFilterEvent', HtmlFilterEvent::HEAD => 'onHtmlFilterEvent', HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent', + HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_CONTENT_TOP => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_END => 'onHtmlFilterEvent', ]; @@ -141,6 +143,7 @@ class HookEventBridgeTest extends TestCase ['test', 'test'], [HtmlFilterEvent::HEAD, 'head'], [HtmlFilterEvent::FOOTER, 'footer'], + [HtmlFilterEvent::PAGE_HEADER, 'page_header'], [HtmlFilterEvent::PAGE_CONTENT_TOP, 'page_content_top'], [HtmlFilterEvent::PAGE_END, 'page_end'], ];