. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Hooks\Email; use Espo\Core\Hook\Hook\AfterRemove; use Espo\Entities\Email; use Espo\Entities\Note; use Espo\ORM\Entity; use Espo\ORM\EntityManager; use Espo\ORM\Repository\Option\RemoveOptions; /** * @implements AfterRemove */ class NoteRemove implements AfterRemove { private const int LIMIT = 5; public function __construct( private EntityManager $entityManager, ) {} public function afterRemove(Entity $entity, RemoveOptions $options): void { $notes = $this->entityManager ->getRDBRepositoryByClass(Note::class) ->sth() ->where([ 'relatedId' => $entity->getId(), 'relatedType' => $entity->getEntityType(), 'type' => [ Note::TYPE_EMAIL_RECEIVED, Note::TYPE_EMAIL_SENT, ], ]) ->limit(self::LIMIT) ->find(); foreach ($notes as $note) { $this->entityManager->removeEntity($note); } } }