provider = $provider; } public function processBeforeCreate(Entity $entity, CreateParams $params): void { foreach ($this->getBeforeCreateHookList($entity->getEntityType()) as $hook) { $hook->process($entity, $params); } } public function processBeforeRead(Entity $entity, ReadParams $params): void { foreach ($this->getBeforeReadHookList($entity->getEntityType()) as $hook) { $hook->process($entity, $params); } } public function processBeforeUpdate(Entity $entity, UpdateParams $params): void { foreach ($this->getBeforeUpdateHookList($entity->getEntityType()) as $hook) { $hook->process($entity, $params); } } public function processBeforeDelete(Entity $entity, DeleteParams $params): void { foreach ($this->getBeforeDeleteHookList($entity->getEntityType()) as $hook) { $hook->process($entity, $params); } } public function processBeforeLink(Entity $entity, string $link, Entity $foreignEntity): void { foreach ($this->getBeforeLinkHookList($entity->getEntityType()) as $hook) { $hook->process($entity, $link, $foreignEntity); } } public function processBeforeUnlink(Entity $entity, string $link, Entity $foreignEntity): void { foreach ($this->getBeforeUnlinkHookList($entity->getEntityType()) as $hook) { $hook->process($entity, $link, $foreignEntity); } } /** * @return \Espo\Core\Record\Hook\ReadHook[] */ private function getBeforeReadHookList(string $entityType): array { /** @var \Espo\Core\Record\Hook\ReadHook[] */ return $this->provider->getList($entityType, Type::BEFORE_READ); } /** * @return \Espo\Core\Record\Hook\CreateHook[] */ private function getBeforeCreateHookList(string $entityType): array { /** @var \Espo\Core\Record\Hook\CreateHook[] */ return $this->provider->getList($entityType, Type::BEFORE_CREATE); } /** * @return \Espo\Core\Record\Hook\UpdateHook[] */ private function getBeforeUpdateHookList(string $entityType): array { /** @var \Espo\Core\Record\Hook\UpdateHook[] */ return $this->provider->getList($entityType, Type::BEFORE_UPDATE); } /** * @return \Espo\Core\Record\Hook\DeleteHook[] */ private function getBeforeDeleteHookList(string $entityType): array { /** @var \Espo\Core\Record\Hook\DeleteHook[] */ return $this->provider->getList($entityType, Type::BEFORE_DELETE); } /** * @return \Espo\Core\Record\Hook\LinkHook[] */ private function getBeforeLinkHookList(string $entityType): array { /** @var \Espo\Core\Record\Hook\LinkHook[] */ return $this->provider->getList($entityType, Type::BEFORE_LINK); } /** * @return \Espo\Core\Record\Hook\UnlinkHook[] */ private function getBeforeUnlinkHookList(string $entityType): array { /** @var \Espo\Core\Record\Hook\UnlinkHook[] */ return $this->provider->getList($entityType, Type::BEFORE_UNLINK); } }