Spaces:
No application file
No application file
| declare(strict_types=1); | |
| namespace Mautic\LeadBundle\Validator; | |
| use Mautic\CoreBundle\Exception\RecordNotUnpublishedException; | |
| use Mautic\LeadBundle\Entity\LeadList; | |
| use Mautic\LeadBundle\Entity\LeadListRepository; | |
| use Symfony\Contracts\Translation\TranslatorInterface; | |
| class SegmentUsedInCampaignsValidator | |
| { | |
| public function __construct(private LeadListRepository $leadListRepository, private TranslatorInterface $translator) | |
| { | |
| } | |
| /** | |
| * @throws RecordNotUnpublishedException | |
| */ | |
| public function validate(LeadList $segment): void | |
| { | |
| if (!$segment->getId()) { | |
| return; | |
| } | |
| $campaignNames = $this->leadListRepository->getSegmentCampaigns($segment->getId()); | |
| if (1 > count($campaignNames)) { | |
| return; | |
| } | |
| $campaignNames = array_map(fn (string $segmentName): string => sprintf('"%s"', $segmentName), $campaignNames); | |
| $errorMessage = $this->translator->trans( | |
| 'mautic.lead.lists.used_in_campaigns', | |
| [ | |
| '%count%' => count($campaignNames), | |
| '%campaignNames%' => implode(', ', $campaignNames), | |
| ], | |
| 'validators' | |
| ); | |
| throw new RecordNotUnpublishedException($errorMessage); | |
| } | |
| } | |