Create Event for contact_block_end hook

This commit is contained in:
Art4 2025-02-20 08:24:52 +00:00
parent 27a7735c65
commit c66588cc2a
6 changed files with 15 additions and 8 deletions

View file

@ -876,7 +876,7 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
### src/Content/ContactBlock.php ### src/Content/ContactBlock.php
Hook::callAll('contact_block_end', $arr); Hook::callAll('contact_block_end', $text);
### src/Content/Text/BBCode.php ### src/Content/Text/BBCode.php

View file

@ -362,7 +362,7 @@ Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 01-Ap
### src/Content/ContactBlock.php ### src/Content/ContactBlock.php
Hook::callAll('contact_block_end', $arr); Hook::callAll('contact_block_end', $text);
### src/Content/Text/BBCode.php ### src/Content/Text/BBCode.php

View file

@ -8,11 +8,11 @@
namespace Friendica\Content\Widget; namespace Friendica\Content\Widget;
use Friendica\Content\Text\HTML; use Friendica\Content\Text\HTML;
use Friendica\Core\Hook;
use Friendica\Core\Protocol; use Friendica\Core\Protocol;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
use Friendica\Database\DBA; use Friendica\Database\DBA;
use Friendica\DI; use Friendica\DI;
use Friendica\Event\HtmlFilterEvent;
use Friendica\Model\Contact; use Friendica\Model\Contact;
use Friendica\Model\User; use Friendica\Model\User;
@ -26,7 +26,6 @@ class ContactBlock
/** /**
* Get HTML for contact block * Get HTML for contact block
* *
* @hook contact_block_end (contacts=>array, output=>string)
* @return string Formatted HTML code or empty string * @return string Formatted HTML code or empty string
*/ */
public static function getHTML(array $profile, int $visitor_uid = null): string public static function getHTML(array $profile, int $visitor_uid = null): string
@ -113,9 +112,11 @@ class ContactBlock
'$micropro' => $micropro, '$micropro' => $micropro,
]); ]);
$arr = ['contacts' => $contacts, 'output' => $o]; $eventDispatcher = DI::eventDispatcher();
Hook::callAll('contact_block_end', $arr); $o = $eventDispatcher->dispatch(
new HtmlFilterEvent(HtmlFilterEvent::CONTACT_BLOCK_END, $o),
)->getHtml();
return $o; return $o;
} }

View file

@ -64,6 +64,7 @@ final class HookEventBridge
HtmlFilterEvent::PAGE_CONTENT_TOP => 'page_content_top', HtmlFilterEvent::PAGE_CONTENT_TOP => 'page_content_top',
HtmlFilterEvent::PAGE_END => 'page_end', HtmlFilterEvent::PAGE_END => 'page_end',
HtmlFilterEvent::JOT_TOOL => 'jot_tool', HtmlFilterEvent::JOT_TOOL => 'jot_tool',
HtmlFilterEvent::CONTACT_BLOCK_END => 'contact_block_end',
]; ];
/** /**
@ -101,6 +102,7 @@ final class HookEventBridge
HtmlFilterEvent::PAGE_CONTENT_TOP => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_CONTENT_TOP => 'onHtmlFilterEvent',
HtmlFilterEvent::PAGE_END => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_END => 'onHtmlFilterEvent',
HtmlFilterEvent::JOT_TOOL => 'onHtmlFilterEvent', HtmlFilterEvent::JOT_TOOL => 'onHtmlFilterEvent',
HtmlFilterEvent::CONTACT_BLOCK_END => 'onHtmlFilterEvent',
]; ];
} }

View file

@ -28,6 +28,8 @@ final class HtmlFilterEvent extends Event
public const JOT_TOOL = 'friendica.html.jot_tool'; public const JOT_TOOL = 'friendica.html.jot_tool';
public const CONTACT_BLOCK_END = 'friendica.html.contact_block_end';
private string $html; private string $html;
public function __construct(string $name, string $html) public function __construct(string $name, string $html)

View file

@ -53,6 +53,7 @@ class HookEventBridgeTest extends TestCase
HtmlFilterEvent::PAGE_CONTENT_TOP => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_CONTENT_TOP => 'onHtmlFilterEvent',
HtmlFilterEvent::PAGE_END => 'onHtmlFilterEvent', HtmlFilterEvent::PAGE_END => 'onHtmlFilterEvent',
HtmlFilterEvent::JOT_TOOL => 'onHtmlFilterEvent', HtmlFilterEvent::JOT_TOOL => 'onHtmlFilterEvent',
HtmlFilterEvent::CONTACT_BLOCK_END => 'onHtmlFilterEvent',
]; ];
$this->assertSame( $this->assertSame(
@ -302,6 +303,7 @@ class HookEventBridgeTest extends TestCase
[HtmlFilterEvent::PAGE_CONTENT_TOP, 'page_content_top'], [HtmlFilterEvent::PAGE_CONTENT_TOP, 'page_content_top'],
[HtmlFilterEvent::PAGE_END, 'page_end'], [HtmlFilterEvent::PAGE_END, 'page_end'],
[HtmlFilterEvent::JOT_TOOL, 'jot_tool'], [HtmlFilterEvent::JOT_TOOL, 'jot_tool'],
[HtmlFilterEvent::CONTACT_BLOCK_END, 'contact_block_end'],
]; ];
} }