. * * 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\Tools\Pdf\Jobs; use Espo\Core\Job\Job; use Espo\Core\Job\Job\Data; use Espo\Entities\Attachment; use Espo\ORM\EntityManager; use RuntimeException; class RemoveMassFile implements Job { private const ATTACHMENT_MASS_PDF_ROLE = 'Mass Pdf'; private EntityManager $entityManager; public function __construct(EntityManager $entityManager) { $this->entityManager = $entityManager; } public function run(Data $data): void { $id = $data->getTargetId(); if (!$id) { throw new RuntimeException(); } /** @var ?Attachment $attachment */ $attachment = $this->entityManager->getEntityById(Attachment::ENTITY_TYPE, $id); if (!$attachment) { return; } if ($attachment->getRole() !== self::ATTACHMENT_MASS_PDF_ROLE) { throw new RuntimeException(); } $this->entityManager->removeEntity($attachment); } }