/** * @param AttachmentOro $attachmentOro * * @return AttachmentEntity */ public function oroToEntity(AttachmentOro $attachmentOro) { $emailAttachmentEntity = new AttachmentEntity(); $emailAttachmentEntity->setFileName($attachmentOro->getFile()->getFilename()); $emailAttachmentContent = new EmailAttachmentContent(); $emailAttachmentContent->setContent(base64_encode($this->filesystem->get($attachmentOro->getFile()->getFilename())->getContent())); $emailAttachmentContent->setContentTransferEncoding('base64'); $emailAttachmentContent->setEmailAttachment($emailAttachmentEntity); $emailAttachmentEntity->setContent($emailAttachmentContent); $emailAttachmentEntity->setContentType($attachmentOro->getFile()->getMimeType()); $emailAttachmentEntity->setFile($attachmentOro->getFile()); $emailAttachmentEntity->setFileName($attachmentOro->getFile()->getOriginalFilename()); return $emailAttachmentEntity; }
/** * @param string $dataClass Parent entity class name * @param File|Attachment $entity File entity * @param string $fieldName Field name where new file/image field was added * * @return \Symfony\Component\Validator\ConstraintViolationListInterface */ public function validate($dataClass, $entity, $fieldName = '') { /** @var Config $entityAttachmentConfig */ if ($fieldName === '') { $entityAttachmentConfig = $this->attachmentConfigProvider->getConfig($dataClass); $mimeTypes = $this->getMimeArray($entityAttachmentConfig->get('mimetypes')); if (!$mimeTypes) { $mimeTypes = array_merge($this->getMimeArray($this->config->get('oro_attachment.upload_file_mime_types')), $this->getMimeArray($this->config->get('oro_attachment.upload_image_mime_types'))); } } else { $entityAttachmentConfig = $this->attachmentConfigProvider->getConfig($dataClass, $fieldName); /** @var FieldConfigId $fieldConfigId */ $fieldConfigId = $entityAttachmentConfig->getId(); if ($fieldConfigId->getFieldType() === 'file') { $configValue = 'upload_file_mime_types'; } else { $configValue = 'upload_image_mime_types'; } $mimeTypes = $this->getMimeArray($this->config->get('oro_attachment.' . $configValue)); } $fileSize = $entityAttachmentConfig->get('maxsize') * 1024 * 1024; foreach ($mimeTypes as $id => $value) { $mimeTypes[$id] = trim($value); } return $this->validator->validate($entity->getFile(), [new FileConstraint(['maxSize' => $fileSize, 'mimeTypes' => $mimeTypes])]); }