ref
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user