Spaces:
No application file
No application file
| namespace Mautic\FormBundle\Validator; | |
| use Mautic\CoreBundle\Exception\FileInvalidException; | |
| use Mautic\CoreBundle\Validator\FileUploadValidator; | |
| use Mautic\FormBundle\Entity\Field; | |
| use Mautic\FormBundle\Exception\FileValidationException; | |
| use Mautic\FormBundle\Exception\NoFileGivenException; | |
| use Mautic\FormBundle\Form\Type\FormFieldFileType; | |
| use Symfony\Component\HttpFoundation\File\UploadedFile; | |
| use Symfony\Component\HttpFoundation\Request; | |
| class UploadFieldValidator | |
| { | |
| public function __construct( | |
| private FileUploadValidator $fileUploadValidator | |
| ) { | |
| } | |
| /** | |
| * @return UploadedFile | |
| * | |
| * @throws FileValidationException | |
| * @throws NoFileGivenException | |
| */ | |
| public function processFileValidation(Field $field, Request $request) | |
| { | |
| $files = $request->files->get('mauticform'); | |
| if (!$files || !array_key_exists($field->getAlias(), $files) || !$files[$field->getAlias()] instanceof UploadedFile) { | |
| throw new NoFileGivenException(); | |
| } | |
| $file = $files[$field->getAlias()]; | |
| $properties = $field->getProperties(); | |
| $maxUploadSize = $properties[FormFieldFileType::PROPERTY_ALLOWED_FILE_SIZE]; | |
| $allowedExtensions = $properties[FormFieldFileType::PROPERTY_ALLOWED_FILE_EXTENSIONS]; | |
| try { | |
| $this->fileUploadValidator->validate($file->getSize(), $file->getClientOriginalExtension(), $maxUploadSize, $allowedExtensions, 'mautic.form.submission.error.file.extension', 'mautic.form.submission.error.file.size'); | |
| return $file; | |
| } catch (FileInvalidException $e) { | |
| throw new FileValidationException($e->getMessage()); | |
| } | |
| } | |
| } | |