mirror of
https://git.sekbaer.de/Friendica/friendica.git
synced 2025-06-07 15:54:26 +02:00
Create event for detect_languages hook
This commit is contained in:
parent
d48e491144
commit
84148663e2
5 changed files with 15 additions and 3 deletions
|
@ -56,6 +56,7 @@ final class HookEventBridge
|
|||
ArrayFilterEvent::NETWORK_TO_NAME => 'network_to_name',
|
||||
ArrayFilterEvent::CONVERSATION_START => 'conversation_start',
|
||||
ArrayFilterEvent::DISPLAY_ITEM => 'display_item',
|
||||
ArrayFilterEvent::DETECT_LANGUAGES => 'detect_languages',
|
||||
ArrayFilterEvent::RENDER_LOCATION => 'render_location',
|
||||
ArrayFilterEvent::ITEM_PHOTO_MENU => 'item_photo_menu',
|
||||
ArrayFilterEvent::CONTACT_PHOTO_MENU => 'contact_photo_menu',
|
||||
|
@ -118,6 +119,7 @@ final class HookEventBridge
|
|||
ArrayFilterEvent::NETWORK_TO_NAME => 'onArrayFilterEvent',
|
||||
ArrayFilterEvent::CONVERSATION_START => 'onArrayFilterEvent',
|
||||
ArrayFilterEvent::DISPLAY_ITEM => 'onArrayFilterEvent',
|
||||
ArrayFilterEvent::DETECT_LANGUAGES => 'onArrayFilterEvent',
|
||||
ArrayFilterEvent::RENDER_LOCATION => 'onArrayFilterEvent',
|
||||
ArrayFilterEvent::ITEM_PHOTO_MENU => 'onArrayFilterEvent',
|
||||
ArrayFilterEvent::CONTACT_PHOTO_MENU => 'onArrayFilterEvent',
|
||||
|
|
|
@ -62,6 +62,8 @@ final class ArrayFilterEvent extends Event
|
|||
|
||||
public const DISPLAY_ITEM = 'friendica.data.display_item';
|
||||
|
||||
public const DETECT_LANGUAGES = 'friendica.data.detect_languages';
|
||||
|
||||
public const RENDER_LOCATION = 'friendica.data.render_location';
|
||||
|
||||
public const ITEM_PHOTO_MENU = 'friendica.data.item_photo_menu';
|
||||
|
|
|
@ -1903,18 +1903,23 @@ class Item
|
|||
|
||||
$result = [];
|
||||
|
||||
$eventDispatcher = DI::eventDispatcher();
|
||||
|
||||
foreach (self::splitByBlocks($searchtext) as $block) {
|
||||
$languages = $ld->detect($block)->close() ?: [];
|
||||
|
||||
$data = [
|
||||
$hook_data = [
|
||||
'text' => $block,
|
||||
'detected' => $languages,
|
||||
'uri-id' => $uri_id,
|
||||
'author-id' => $author_id,
|
||||
];
|
||||
Hook::callAll('detect_languages', $data);
|
||||
|
||||
foreach ($data['detected'] as $language => $quality) {
|
||||
$hook_data = $eventDispatcher->dispatch(
|
||||
new ArrayFilterEvent(ArrayFilterEvent::DETECT_LANGUAGES, $hook_data),
|
||||
)->getArray();
|
||||
|
||||
foreach ($hook_data['detected'] as $language => $quality) {
|
||||
$result[$language] = max($result[$language] ?? 0, $quality * (strlen($block) / strlen($searchtext)));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,6 +45,7 @@ class HookEventBridgeTest extends TestCase
|
|||
ArrayFilterEvent::NETWORK_TO_NAME => 'onArrayFilterEvent',
|
||||
ArrayFilterEvent::CONVERSATION_START => 'onArrayFilterEvent',
|
||||
ArrayFilterEvent::DISPLAY_ITEM => 'onArrayFilterEvent',
|
||||
ArrayFilterEvent::DETECT_LANGUAGES => 'onArrayFilterEvent',
|
||||
ArrayFilterEvent::RENDER_LOCATION => 'onArrayFilterEvent',
|
||||
ArrayFilterEvent::ITEM_PHOTO_MENU => 'onArrayFilterEvent',
|
||||
ArrayFilterEvent::CONTACT_PHOTO_MENU => 'onArrayFilterEvent',
|
||||
|
@ -351,6 +352,7 @@ class HookEventBridgeTest extends TestCase
|
|||
[ArrayFilterEvent::NETWORK_TO_NAME, 'network_to_name'],
|
||||
[ArrayFilterEvent::CONVERSATION_START, 'conversation_start'],
|
||||
[ArrayFilterEvent::DISPLAY_ITEM, 'display_item'],
|
||||
[ArrayFilterEvent::DETECT_LANGUAGES, 'detect_languages'],
|
||||
[ArrayFilterEvent::RENDER_LOCATION, 'render_location'],
|
||||
[ArrayFilterEvent::ITEM_PHOTO_MENU, 'item_photo_menu'],
|
||||
[ArrayFilterEvent::CONTACT_PHOTO_MENU, 'contact_photo_menu'],
|
||||
|
|
|
@ -42,6 +42,7 @@ class ArrayFilterEventTest extends TestCase
|
|||
[ArrayFilterEvent::NETWORK_TO_NAME, 'friendica.data.network_to_name'],
|
||||
[ArrayFilterEvent::CONVERSATION_START, 'friendica.data.conversation_start'],
|
||||
[ArrayFilterEvent::DISPLAY_ITEM, 'friendica.data.display_item'],
|
||||
[ArrayFilterEvent::DETECT_LANGUAGES, 'friendica.data.detect_languages'],
|
||||
[ArrayFilterEvent::RENDER_LOCATION, 'friendica.data.render_location'],
|
||||
[ArrayFilterEvent::ITEM_PHOTO_MENU, 'friendica.data.item_photo_menu'],
|
||||
[ArrayFilterEvent::CONTACT_PHOTO_MENU, 'friendica.data.contact_photo_menu'],
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue