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(); } } }