This commit is contained in:
Yuri Kuznetsov
2025-07-08 10:58:59 +03:00
parent 9f918295e1
commit 335301cefd
+25 -27
View File
@@ -29,34 +29,34 @@
namespace Espo\Hooks\Common;
use Espo\Core\Hook\Hook\AfterRemove;
use Espo\Core\Hook\Hook\AfterSave;
use Espo\ORM\Entity;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\Core\ORM\Repository\Option\SaveOption;
use Espo\Core\Utils\Metadata;
use Espo\Core\Webhook\Manager as WebhookManager;
use Espo\ORM\Repository\Option\RemoveOptions;
use Espo\ORM\Repository\Option\SaveOptions;
class Webhook
/**
* @implements AfterSave<Entity>
* @implements AfterRemove<Entity>
*/
class Webhook implements AfterSave, AfterRemove
{
public static int $order = 101;
public function __construct(private Metadata $metadata, private WebhookManager $webhookManager)
{}
/**
* @param array<string, mixed> $options
*/
public function afterSave(Entity $entity, array $options): void
public function afterSave(Entity $entity, SaveOptions $options): void
{
if (!empty($options[SaveOption::SILENT])) {
return;
}
if (!$this->metadata->get(['scopes', $entity->getEntityType(), 'object'])) {
return;
}
if (!$entity instanceof CoreEntity) {
if (
$this->toSkip($options, $entity) ||
!$entity instanceof CoreEntity
) {
return;
}
@@ -67,23 +67,21 @@ class Webhook
}
}
/**
* @param array<string, mixed> $options
*/
public function afterRemove(Entity $entity, array $options): void
public function afterRemove(Entity $entity, RemoveOptions $options): void
{
if (!empty($options[SaveOption::SILENT])) {
return;
}
if (!$this->metadata->get(['scopes', $entity->getEntityType(), 'object'])) {
return;
}
if (!$entity instanceof CoreEntity) {
if (
$this->toSkip($options, $entity) ||
!$entity instanceof CoreEntity
) {
return;
}
$this->webhookManager->processDelete($entity);
}
private function toSkip(SaveOptions|RemoveOptions $options, Entity $entity): bool
{
return $options->get(SaveOption::SILENT) ||
!$this->metadata->get("scopes.{$entity->getEntityType()}.object");
}
}