![]() 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/LeadBundle/Provider/ |
<?php declare(strict_types=1); namespace Mautic\LeadBundle\Provider; use Mautic\LeadBundle\Event\ListFieldChoicesEvent; use Mautic\LeadBundle\Exception\ChoicesNotFoundException; use Mautic\LeadBundle\LeadEvents; use Symfony\Component\EventDispatcher\EventDispatcherInterface; final class FieldChoicesProvider implements FieldChoicesProviderInterface { /** * @var mixed[] */ private array $cachedTypeChoices = []; /** * @var mixed[] */ private array $cachedAliasChoices = []; public function __construct( private EventDispatcherInterface $dispatcher ) { } /** * @return mixed[] */ public function getChoicesForField(string $fieldType, string $fieldAlias, string $search = ''): array { $aliasChoices = $this->getAllChoicesForListFieldAliases($search); $typeChoices = $this->getAllChoicesForListFieldTypes(); if (isset($aliasChoices[$fieldAlias])) { return $aliasChoices[$fieldAlias]; } if (isset($typeChoices[$fieldType])) { return $typeChoices[$fieldType]; } throw new ChoicesNotFoundException("No choices for field type {$fieldType} nor alias {$fieldAlias} were found"); } /** * @return mixed[] */ private function getAllChoicesForListFieldTypes(): array { $this->lookForFieldChoices(); return $this->cachedTypeChoices; } /** * @return mixed[] */ private function getAllChoicesForListFieldAliases(string $search = ''): array { $this->lookForFieldChoices($search); return $this->cachedAliasChoices; } private function lookForFieldChoices(string $search = ''): void { if (empty($this->cachedTypeChoices)) { $event = new ListFieldChoicesEvent(); $event->setSearchTerm($search); $this->dispatcher->dispatch($event, LeadEvents::COLLECT_FILTER_CHOICES_FOR_LIST_FIELD_TYPE); $this->cachedTypeChoices = $event->getChoicesForAllListFieldTypes(); $this->cachedAliasChoices = $event->getChoicesForAllListFieldAliases(); } } }