mirror of
https://git.friendi.ca/friendica/friendica.git
synced 2025-06-12 00:54:25 +02:00
Create events for bbcode hooks
This commit is contained in:
parent
81b6ed9fc2
commit
62d27de3b0
5 changed files with 104 additions and 3 deletions
|
@ -15,10 +15,10 @@ use Friendica\Content\Item;
|
|||
use Friendica\Content\OEmbed;
|
||||
use Friendica\Content\PageInfo;
|
||||
use Friendica\Content\Smilies;
|
||||
use Friendica\Core\Hook;
|
||||
use Friendica\Core\Protocol;
|
||||
use Friendica\Core\Renderer;
|
||||
use Friendica\DI;
|
||||
use Friendica\Event\ArrayFilterEvent;
|
||||
use Friendica\Model\Contact;
|
||||
use Friendica\Model\Event;
|
||||
use Friendica\Model\Post;
|
||||
|
@ -1297,7 +1297,15 @@ class BBCode
|
|||
|
||||
DI::profiler()->startRecording('rendering');
|
||||
|
||||
Hook::callAll('bbcode', $text);
|
||||
$eventDispatcher = DI::eventDispatcher();
|
||||
|
||||
$text_data = ['bbcode2html' => $text];
|
||||
|
||||
$text_data = $eventDispatcher->dispatch(
|
||||
new ArrayFilterEvent(ArrayFilterEvent::BBCODE_TO_HTML_START, $text_data),
|
||||
)->getArray();
|
||||
|
||||
$text = $text_data['bbcode2html'] ?? $text;
|
||||
|
||||
$ev = Event::fromBBCode($text);
|
||||
|
||||
|
@ -2375,9 +2383,18 @@ class BBCode
|
|||
);
|
||||
}
|
||||
|
||||
Hook::callAll('bb2diaspora', $text);
|
||||
$eventDispatcher = DI::eventDispatcher();
|
||||
|
||||
$text_data = ['bbcode2markdown' => $text];
|
||||
|
||||
$text_data = $eventDispatcher->dispatch(
|
||||
new ArrayFilterEvent(ArrayFilterEvent::BBCODE_TO_MARKDOWN_END, $text_data),
|
||||
)->getArray();
|
||||
|
||||
$text = $text_data['bbcode2markdown'] ?? $text;
|
||||
|
||||
DI::profiler()->stopRecording();
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
||||
|
|
|
@ -55,6 +55,8 @@ final class HookEventBridge
|
|||
ArrayFilterEvent::OEMBED_FETCH_END => 'oembed_fetch_url',
|
||||
ArrayFilterEvent::PAGE_INFO => 'page_info_data',
|
||||
ArrayFilterEvent::SMILEY_LIST => 'smilie',
|
||||
ArrayFilterEvent::BBCODE_TO_HTML_START => 'bbcode',
|
||||
ArrayFilterEvent::BBCODE_TO_MARKDOWN_END => 'bb2diaspora',
|
||||
HtmlFilterEvent::HEAD => 'head',
|
||||
HtmlFilterEvent::FOOTER => 'footer',
|
||||
HtmlFilterEvent::PAGE_HEADER => 'page_header',
|
||||
|
@ -89,6 +91,8 @@ final class HookEventBridge
|
|||
ArrayFilterEvent::OEMBED_FETCH_END => 'onOembedFetchEndEvent',
|
||||
ArrayFilterEvent::PAGE_INFO => 'onArrayFilterEvent',
|
||||
ArrayFilterEvent::SMILEY_LIST => 'onArrayFilterEvent',
|
||||
ArrayFilterEvent::BBCODE_TO_HTML_START => 'onBbcodeToHtmlEvent',
|
||||
ArrayFilterEvent::BBCODE_TO_MARKDOWN_END => 'onBbcodeToMarkdownEvent',
|
||||
HtmlFilterEvent::HEAD => 'onHtmlFilterEvent',
|
||||
HtmlFilterEvent::FOOTER => 'onHtmlFilterEvent',
|
||||
HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent',
|
||||
|
@ -129,6 +133,34 @@ final class HookEventBridge
|
|||
$event->setArray($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Map the BBCODE_TO_HTML_START event to `bbcode` hook
|
||||
*/
|
||||
public static function onBbcodeToHtmlEvent(ArrayFilterEvent $event): void
|
||||
{
|
||||
$data = $event->getArray();
|
||||
|
||||
$bbcode2html = (string) $data['bbcode2html'] ?? '';
|
||||
|
||||
$data['bbcode2html'] = static::callHook($event->getName(), $bbcode2html);
|
||||
|
||||
$event->setArray($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Map the BBCODE_TO_MARKDOWN_END event to `bb2diaspora` hook
|
||||
*/
|
||||
public static function onBbcodeToMarkdownEvent(ArrayFilterEvent $event): void
|
||||
{
|
||||
$data = $event->getArray();
|
||||
|
||||
$bbcode2markdown = (string) $data['bbcode2markdown'] ?? '';
|
||||
|
||||
$data['bbcode2markdown'] = static::callHook($event->getName(), $bbcode2markdown);
|
||||
|
||||
$event->setArray($data);
|
||||
}
|
||||
|
||||
public static function onArrayFilterEvent(ArrayFilterEvent $event): void
|
||||
{
|
||||
$event->setArray(
|
||||
|
|
|
@ -48,6 +48,10 @@ final class ArrayFilterEvent extends Event
|
|||
|
||||
public const SMILEY_LIST = 'friendica.data.smiley_list';
|
||||
|
||||
public const BBCODE_TO_HTML_START = 'friendica.data.bbcode_to_html_start';
|
||||
|
||||
public const BBCODE_TO_MARKDOWN_END = 'friendica.data.bbcode_to_markdown_end';
|
||||
|
||||
private array $array;
|
||||
|
||||
public function __construct(string $name, array $array)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue