![]() 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/CoreBundle/Controller/ |
<?php declare(strict_types=1); namespace Mautic\CoreBundle\Controller; use Mautic\CoreBundle\Helper\InputHelper; use Mautic\CoreBundle\Model\AjaxLookupModelInterface; use Symfony\Component\HttpFoundation\Exception\BadRequestException; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; trait AjaxLookupControllerTrait { public function getLookupChoiceListAction(Request $request): JsonResponse { $dataArray = []; $modelName = InputHelper::clean($request->query->get('searchKey')); $search = $request->query->get(str_replace('.', '_', $modelName)); $limit = (int) $request->query->get('limit', '0'); $start = (int) $request->query->get('start', '0'); if (!$modelName) { throw new BadRequestException('The searchKey parameter is required.'); } if (!$search) { return new JsonResponse($dataArray); } $model = $this->getModel($modelName); if (!$model instanceof AjaxLookupModelInterface) { throw new BadRequestException("The model {$modelName} must implement the AjaxLookupModelInterface."); } $results = $model->getLookupResults($modelName, $search, $limit, $start); foreach ($results as $group => $result) { $option = []; if (is_array($result)) { if (!isset($result['value'])) { // Grouped options $option = [ 'group' => true, 'text' => $group, 'items' => $result, ]; foreach ($result as $value => $label) { if (is_array($label) && isset($label['label'])) { $option['items'][$value]['text'] = $label['label']; } } } else { if (isset($result['label'])) { $option['text'] = $result['label']; } $option['value'] = $result['value']; } } else { $option[$group] = $result; } $dataArray[] = $option; } return new JsonResponse($dataArray); } /** * Get a model instance from the service container. * * @param string $modelNameKey * * @return AbstractCommonModel<object> */ abstract protected function getModel($modelNameKey); /** * Get's the content of error page. * * @return Response */ abstract public function renderException(\Exception $e); }