Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/mautic.corals.io/app/bundles/EmailBundle/Validator/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/mautic.corals.io/app/bundles/EmailBundle/Validator/EmailListsValidator.php
<?php

declare(strict_types=1);

namespace Mautic\EmailBundle\Validator;

use Mautic\EmailBundle\Entity\Email;
use Mautic\LeadBundle\Entity\LeadList;
use Mautic\LeadBundle\Form\Validator\Constraints\LeadListAccess;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\ConstraintValidator;
use Symfony\Component\Validator\ConstraintViolationInterface;
use Symfony\Component\Validator\Exception\UnexpectedTypeException;

final class EmailListsValidator extends ConstraintValidator
{
    public function validate($value, Constraint $constraint): void
    {
        if (!$value instanceof Email) {
            throw new UnexpectedTypeException($value, Email::class);
        }

        if ('list' !== $value->getEmailType() || $value->getTranslationParent()) {
            return;
        }

        $this->validateLists($value);
        $this->validateExcludedLists($value);
        $this->validateConflictingLists($value);
    }

    private function validateLists(Email $email): void
    {
        $violations = $this->context->getValidator()->validate(
            $email->getLists(),
            [
                new LeadListAccess(),
                new NotBlank(
                    [
                        'message' => 'mautic.lead.lists.required',
                    ]
                ),
            ]
        );
        $this->addViolationsAtPath($violations, 'lists');
    }

    private function validateExcludedLists(Email $email): void
    {
        $violations = $this->context->getValidator()->validate(
            $email->getExcludedLists(),
            [
                new LeadListAccess(['allowEmpty' => true]),
            ]
        );
        $this->addViolationsAtPath($violations, 'excludedLists');
    }

    private function validateConflictingLists(Email $email): void
    {
        $listsIds         = $this->getListsIds($email->getLists());
        $excludedListsIds = $this->getListsIds($email->getExcludedLists());
        $isConflicting    = (bool) array_intersect($listsIds, $excludedListsIds);

        if ($isConflicting) {
            $this->context->buildViolation('mautic.lead.excluded_lists.conflicting')
                ->atPath('excludedLists')
                ->addViolation();
        }
    }

    /**
     * @param LeadList[] $lists
     *
     * @return string[]
     */
    private function getListsIds(iterable $lists): array
    {
        $ids = [];

        foreach ($lists as $list) {
            $ids[] = (string) $list->getId();
        }

        return $ids;
    }

    /**
     * @param ConstraintViolationInterface[] $violations
     */
    private function addViolationsAtPath(iterable $violations, string $path): void
    {
        foreach ($violations as $violation) {
            $this->context->buildViolation($violation->getMessage())
                ->atPath($path)
                ->addViolation();
        }
    }
}

Spamworldpro Mini