Replace Hook with EventDispatcher in Content Nav class

This commit is contained in:
Art4 2025-01-29 07:46:56 +00:00 committed by Hypolite Petovan
parent 715248d6a2
commit b9a191f6d8
5 changed files with 23 additions and 6 deletions

View file

@ -10,12 +10,12 @@ namespace Friendica\Content;
use Friendica\App\BaseURL; use Friendica\App\BaseURL;
use Friendica\App\Router; use Friendica\App\Router;
use Friendica\Core\Config\Capability\IManageConfigValues; use Friendica\Core\Config\Capability\IManageConfigValues;
use Friendica\Core\Hook;
use Friendica\Core\L10n; use Friendica\Core\L10n;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
use Friendica\Core\Session\Capability\IHandleUserSessions; use Friendica\Core\Session\Capability\IHandleUserSessions;
use Friendica\Database\Database; use Friendica\Database\Database;
use Friendica\Event\ArrayFilterEvent; use Friendica\Event\ArrayFilterEvent;
use Friendica\Event\HtmlFilterEvent;
use Friendica\Model\Contact; use Friendica\Model\Contact;
use Friendica\Model\User; use Friendica\Model\User;
use Friendica\Module\Conversation\Community; use Friendica\Module\Conversation\Community;
@ -119,7 +119,9 @@ class Nav
'$search_hint' => $this->l10n->t('@name, !group, #tags, content') '$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; return $nav;
} }
@ -156,9 +158,11 @@ class Nav
) { ) {
$arr = ['app_menu' => $appMenu]; $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; return $appMenu;
@ -342,7 +346,9 @@ class Nav
'userinfo' => $userinfo, 'userinfo' => $userinfo,
]; ];
Hook::callAll('nav_info', $nav_info); $nav_info = $this->eventDispatcher->dispatch(
new ArrayFilterEvent(ArrayFilterEvent::NAV_INFO, $nav_info)
)->getArray();
return $nav_info; return $nav_info;
} }

View file

@ -18,6 +18,8 @@ final class ArrayFilterEvent extends Event
{ {
public const APP_MENU = 'friendica.data.app_menu'; public const APP_MENU = 'friendica.data.app_menu';
public const NAV_INFO = 'friendica.data.nav_info';
private array $array; private array $array;
public function __construct(string $name, array $array) public function __construct(string $name, array $array)

View file

@ -20,6 +20,8 @@ final class HtmlFilterEvent extends Event
public const FOOTER = 'friendica.html.footer'; 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_CONTENT_TOP = 'friendica.html.page_content_top';
public const PAGE_END = 'friendica.html.page_end'; public const PAGE_END = 'friendica.html.page_end';

View file

@ -24,7 +24,7 @@ use Friendica\Event\NamedEvent;
final class HookEventBridge 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 * @var \Closure|null
*/ */
@ -37,8 +37,10 @@ final class HookEventBridge
Event::INIT => 'init_1', Event::INIT => 'init_1',
ConfigLoadedEvent::CONFIG_LOADED => 'load_config', ConfigLoadedEvent::CONFIG_LOADED => 'load_config',
ArrayFilterEvent::APP_MENU => 'app_menu', ArrayFilterEvent::APP_MENU => 'app_menu',
ArrayFilterEvent::NAV_INFO => 'nav_info',
HtmlFilterEvent::HEAD => 'head', HtmlFilterEvent::HEAD => 'head',
HtmlFilterEvent::FOOTER => 'footer', HtmlFilterEvent::FOOTER => 'footer',
HtmlFilterEvent::PAGE_HEADER => 'page_header',
HtmlFilterEvent::PAGE_CONTENT_TOP => 'page_content_top', HtmlFilterEvent::PAGE_CONTENT_TOP => 'page_content_top',
HtmlFilterEvent::PAGE_END => 'page_end', HtmlFilterEvent::PAGE_END => 'page_end',
]; ];
@ -52,8 +54,10 @@ final class HookEventBridge
Event::INIT => 'onNamedEvent', Event::INIT => 'onNamedEvent',
ConfigLoadedEvent::CONFIG_LOADED => 'onConfigLoadedEvent', ConfigLoadedEvent::CONFIG_LOADED => 'onConfigLoadedEvent',
ArrayFilterEvent::APP_MENU => 'onArrayFilterEvent', ArrayFilterEvent::APP_MENU => 'onArrayFilterEvent',
ArrayFilterEvent::NAV_INFO => 'onArrayFilterEvent',
HtmlFilterEvent::HEAD => 'onHtmlFilterEvent', HtmlFilterEvent::HEAD => 'onHtmlFilterEvent',
HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent', HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent',
HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent',
HtmlFilterEvent::PAGE_CONTENT_TOP => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_CONTENT_TOP => 'onHtmlFilterEvent',
HtmlFilterEvent::PAGE_END => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_END => 'onHtmlFilterEvent',
]; ];

View file

@ -25,8 +25,10 @@ class HookEventBridgeTest extends TestCase
Event::INIT => 'onNamedEvent', Event::INIT => 'onNamedEvent',
ConfigLoadedEvent::CONFIG_LOADED => 'onConfigLoadedEvent', ConfigLoadedEvent::CONFIG_LOADED => 'onConfigLoadedEvent',
ArrayFilterEvent::APP_MENU => 'onArrayFilterEvent', ArrayFilterEvent::APP_MENU => 'onArrayFilterEvent',
ArrayFilterEvent::NAV_INFO => 'onArrayFilterEvent',
HtmlFilterEvent::HEAD => 'onHtmlFilterEvent', HtmlFilterEvent::HEAD => 'onHtmlFilterEvent',
HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent', HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent',
HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent',
HtmlFilterEvent::PAGE_CONTENT_TOP => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_CONTENT_TOP => 'onHtmlFilterEvent',
HtmlFilterEvent::PAGE_END => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_END => 'onHtmlFilterEvent',
]; ];
@ -141,6 +143,7 @@ class HookEventBridgeTest extends TestCase
['test', 'test'], ['test', 'test'],
[HtmlFilterEvent::HEAD, 'head'], [HtmlFilterEvent::HEAD, 'head'],
[HtmlFilterEvent::FOOTER, 'footer'], [HtmlFilterEvent::FOOTER, 'footer'],
[HtmlFilterEvent::PAGE_HEADER, 'page_header'],
[HtmlFilterEvent::PAGE_CONTENT_TOP, 'page_content_top'], [HtmlFilterEvent::PAGE_CONTENT_TOP, 'page_content_top'],
[HtmlFilterEvent::PAGE_END, 'page_end'], [HtmlFilterEvent::PAGE_END, 'page_end'],
]; ];