Spaces:
No application file
No application file
| declare(strict_types=1); | |
| namespace Mautic\LeadBundle\Validator; | |
| use Mautic\CoreBundle\Exception\InvalidValueException; | |
| use Mautic\CoreBundle\Exception\RecordNotFoundException; | |
| use Mautic\CoreBundle\Exception\RecordNotPublishedException; | |
| use Mautic\LeadBundle\Entity\LeadField; | |
| use Mautic\LeadBundle\Model\FieldModel; | |
| use Symfony\Contracts\Translation\TranslatorInterface; | |
| class CustomFieldValidator | |
| { | |
| public function __construct( | |
| private FieldModel $fieldModel, | |
| private TranslatorInterface $translator | |
| ) { | |
| } | |
| /** | |
| * @throws RecordNotFoundException | |
| * @throws RecordNotPublishedException | |
| * @throws InvalidValueException | |
| */ | |
| public function validateFieldType(string $alias, string $fieldType): void | |
| { | |
| $field = $this->getPublishedFieldByAlias($alias); | |
| if ($field->getType() !== $fieldType) { | |
| throw new InvalidValueException($this->translator->trans('mautic.lead.contact.wrong.field.type', ['%alias%' => $alias, '%fieldType%' => $field->getType(), '%expectedType%' => $fieldType], 'validators')); | |
| } | |
| } | |
| /** | |
| * @throws RecordNotFoundException | |
| * @throws RecordNotPublishedException | |
| */ | |
| private function getPublishedFieldByAlias(string $alias): LeadField | |
| { | |
| $field = $this->getFieldByAlias($alias); | |
| if (!$field->getIsPublished()) { | |
| throw new RecordNotPublishedException($this->translator->trans('mautic.lead.contact.field.not.published', ['%alias%' => $alias], 'validators')); | |
| } | |
| return $field; | |
| } | |
| /** | |
| * @throws RecordNotFoundException | |
| */ | |
| private function getFieldByAlias(string $alias): LeadField | |
| { | |
| $field = $this->fieldModel->getEntityByAlias($alias); | |
| if (!$field instanceof LeadField) { | |
| throw new RecordNotFoundException($this->translator->trans('mautic.lead.contact.field.not.found', ['%alias%' => $alias], 'validators')); | |
| } | |
| return $field; | |
| } | |
| } | |