File size: 1,258 Bytes
d2897cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php

namespace Mautic\FormBundle\Validator\Constraint;

use Mautic\CoreBundle\Helper\CoreParametersHelper;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;

class FileExtensionConstraintValidator extends ConstraintValidator
{
    public function __construct(
        private CoreParametersHelper $coreParametersHelper
    ) {
    }

    /**
     * Checks if the passed value is valid.
     *
     * @param mixed      $value      The value that should be validated
     * @param Constraint $constraint The constraint for the validation
     */
    public function validate($value, Constraint $constraint): void
    {
        if (!is_array($value)) {
            $this->context->buildViolation($constraint->message)
                ->setParameter('{{ forbidden }}', '')
                ->addViolation();
        }

        $blacklistedExtensions = $this->coreParametersHelper->get('blacklisted_extensions');
        $intersect             = array_intersect($value, $blacklistedExtensions);
        if ($intersect) {
            $this->context->buildViolation($constraint->message)
                ->setParameter('{{ forbidden }}', implode(', ', $intersect))
                ->addViolation();
        }
    }
}