mirror of
https://github.com/friendica/friendica
synced 2025-05-20 00:24:12 +02:00
Wrap item in INSERT_POST_LOCAL in separate array
This commit is contained in:
parent
59359f7d9d
commit
1ddd5674e1
5 changed files with 54 additions and 7 deletions
10
mod/item.php
10
mod/item.php
|
@ -281,10 +281,16 @@ function item_process(array $post, array $request, bool $preview, string $return
|
||||||
|
|
||||||
$eventDispatcher = DI::eventDispatcher();
|
$eventDispatcher = DI::eventDispatcher();
|
||||||
|
|
||||||
$post = $eventDispatcher->dispatch(
|
$hook_data = [
|
||||||
new ArrayFilterEvent(ArrayFilterEvent::INSERT_POST_LOCAL, $post)
|
'item' => $post,
|
||||||
|
];
|
||||||
|
|
||||||
|
$hook_data = $eventDispatcher->dispatch(
|
||||||
|
new ArrayFilterEvent(ArrayFilterEvent::INSERT_POST_LOCAL, $hook_data)
|
||||||
)->getArray();
|
)->getArray();
|
||||||
|
|
||||||
|
$post = $hook_data['item'] ?? $post;
|
||||||
|
|
||||||
unset($post['edit']);
|
unset($post['edit']);
|
||||||
unset($post['self']);
|
unset($post['self']);
|
||||||
unset($post['api_source']);
|
unset($post['api_source']);
|
||||||
|
|
|
@ -112,7 +112,7 @@ final class HookEventBridge
|
||||||
ArrayFilterEvent::FEATURE_ENABLED => 'onArrayFilterEvent',
|
ArrayFilterEvent::FEATURE_ENABLED => 'onArrayFilterEvent',
|
||||||
ArrayFilterEvent::FEATURE_GET => 'onArrayFilterEvent',
|
ArrayFilterEvent::FEATURE_GET => 'onArrayFilterEvent',
|
||||||
ArrayFilterEvent::INSERT_POST_LOCAL_START => 'onArrayFilterEvent',
|
ArrayFilterEvent::INSERT_POST_LOCAL_START => 'onArrayFilterEvent',
|
||||||
ArrayFilterEvent::INSERT_POST_LOCAL => 'onArrayFilterEvent',
|
ArrayFilterEvent::INSERT_POST_LOCAL => 'onInsertPostLocalEvent',
|
||||||
ArrayFilterEvent::INSERT_POST_LOCAL_END => 'onArrayFilterEvent',
|
ArrayFilterEvent::INSERT_POST_LOCAL_END => 'onArrayFilterEvent',
|
||||||
ArrayFilterEvent::INSERT_POST_REMOTE => 'onArrayFilterEvent',
|
ArrayFilterEvent::INSERT_POST_REMOTE => 'onArrayFilterEvent',
|
||||||
ArrayFilterEvent::INSERT_POST_REMOTE_END => 'onArrayFilterEvent',
|
ArrayFilterEvent::INSERT_POST_REMOTE_END => 'onArrayFilterEvent',
|
||||||
|
@ -183,6 +183,20 @@ final class HookEventBridge
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Map the INSERT_POST_LOCAL event to `post_local` hook
|
||||||
|
*/
|
||||||
|
public static function onInsertPostLocalEvent(ArrayFilterEvent $event): void
|
||||||
|
{
|
||||||
|
$data = $event->getArray();
|
||||||
|
|
||||||
|
$item = (array) $data['item'] ?? [];
|
||||||
|
|
||||||
|
$data['item'] = static::callHook($event->getName(), $item);
|
||||||
|
|
||||||
|
$event->setArray($data);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Map the PREPARE_POST_START event to `prepare_body_init` hook
|
* Map the PREPARE_POST_START event to `prepare_body_init` hook
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -845,10 +845,16 @@ class Item
|
||||||
$dummy_session = false;
|
$dummy_session = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$item = $eventDispatcher->dispatch(
|
$hook_data = [
|
||||||
new ArrayFilterEvent(ArrayFilterEvent::INSERT_POST_LOCAL, $item)
|
'item' => $item,
|
||||||
|
];
|
||||||
|
|
||||||
|
$hook_data = $eventDispatcher->dispatch(
|
||||||
|
new ArrayFilterEvent(ArrayFilterEvent::INSERT_POST_LOCAL, $hook_data)
|
||||||
)->getArray();
|
)->getArray();
|
||||||
|
|
||||||
|
$item = $hook_data['item'] ?? $item;
|
||||||
|
|
||||||
if ($dummy_session) {
|
if ($dummy_session) {
|
||||||
unset($_SESSION['authenticated']);
|
unset($_SESSION['authenticated']);
|
||||||
unset($_SESSION['uid']);
|
unset($_SESSION['uid']);
|
||||||
|
|
|
@ -12,7 +12,6 @@ use Friendica\AppHelper;
|
||||||
use Friendica\Content\Text\BBCode;
|
use Friendica\Content\Text\BBCode;
|
||||||
use Friendica\Content\Widget\ContactBlock;
|
use Friendica\Content\Widget\ContactBlock;
|
||||||
use Friendica\Core\Cache\Enum\Duration;
|
use Friendica\Core\Cache\Enum\Duration;
|
||||||
use Friendica\Core\Hook;
|
|
||||||
use Friendica\Core\Protocol;
|
use Friendica\Core\Protocol;
|
||||||
use Friendica\Core\Renderer;
|
use Friendica\Core\Renderer;
|
||||||
use Friendica\Core\Search;
|
use Friendica\Core\Search;
|
||||||
|
|
|
@ -33,7 +33,7 @@ class HookEventBridgeTest extends TestCase
|
||||||
ArrayFilterEvent::FEATURE_ENABLED => 'onArrayFilterEvent',
|
ArrayFilterEvent::FEATURE_ENABLED => 'onArrayFilterEvent',
|
||||||
ArrayFilterEvent::FEATURE_GET => 'onArrayFilterEvent',
|
ArrayFilterEvent::FEATURE_GET => 'onArrayFilterEvent',
|
||||||
ArrayFilterEvent::INSERT_POST_LOCAL_START => 'onArrayFilterEvent',
|
ArrayFilterEvent::INSERT_POST_LOCAL_START => 'onArrayFilterEvent',
|
||||||
ArrayFilterEvent::INSERT_POST_LOCAL => 'onArrayFilterEvent',
|
ArrayFilterEvent::INSERT_POST_LOCAL => 'onInsertPostLocalEvent',
|
||||||
ArrayFilterEvent::INSERT_POST_LOCAL_END => 'onArrayFilterEvent',
|
ArrayFilterEvent::INSERT_POST_LOCAL_END => 'onArrayFilterEvent',
|
||||||
ArrayFilterEvent::INSERT_POST_REMOTE => 'onArrayFilterEvent',
|
ArrayFilterEvent::INSERT_POST_REMOTE => 'onArrayFilterEvent',
|
||||||
ArrayFilterEvent::INSERT_POST_REMOTE_END => 'onArrayFilterEvent',
|
ArrayFilterEvent::INSERT_POST_REMOTE_END => 'onArrayFilterEvent',
|
||||||
|
@ -193,6 +193,28 @@ class HookEventBridgeTest extends TestCase
|
||||||
HookEventBridge::onCollectRoutesEvent($event);
|
HookEventBridge::onCollectRoutesEvent($event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testOnInsertPostLocalEventCallsHookWithCorrectValue(): void
|
||||||
|
{
|
||||||
|
$event = new ArrayFilterEvent(ArrayFilterEvent::INSERT_POST_LOCAL, ['item' => ['id' => -1]]);
|
||||||
|
|
||||||
|
$reflectionProperty = new \ReflectionProperty(HookEventBridge::class, 'mockedCallHook');
|
||||||
|
$reflectionProperty->setAccessible(true);
|
||||||
|
|
||||||
|
$reflectionProperty->setValue(null, function (string $name, array $data): array {
|
||||||
|
$this->assertSame('post_local', $name);
|
||||||
|
$this->assertSame(['id' => -1], $data);
|
||||||
|
|
||||||
|
return ['id' => 123];
|
||||||
|
});
|
||||||
|
|
||||||
|
HookEventBridge::onInsertPostLocalEvent($event);
|
||||||
|
|
||||||
|
$this->assertSame(
|
||||||
|
['item' => ['id' => 123]],
|
||||||
|
$event->getArray(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public function testOnPreparePostStartEventCallsHookWithCorrectValue(): void
|
public function testOnPreparePostStartEventCallsHookWithCorrectValue(): void
|
||||||
{
|
{
|
||||||
$event = new ArrayFilterEvent(ArrayFilterEvent::PREPARE_POST_START, ['item' => ['id' => -1]]);
|
$event = new ArrayFilterEvent(ArrayFilterEvent::PREPARE_POST_START, ['item' => ['id' => -1]]);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue