vendor/doctrine/doctrine-bundle/src/ManagerConfigurator.php line 32

Open in your IDE?
  1. <?php
  2. namespace Doctrine\Bundle\DoctrineBundle;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Doctrine\ORM\Query\Filter\SQLFilter;
  5. /**
  6.  * Configurator for an EntityManager
  7.  */
  8. class ManagerConfigurator
  9. {
  10.     /** @var string[] */
  11.     private array $enabledFilters = [];
  12.     /** @var array<string,array<string,string>> */
  13.     private array $filtersParameters = [];
  14.     /**
  15.      * @param string[]                           $enabledFilters
  16.      * @param array<string,array<string,string>> $filtersParameters
  17.      */
  18.     public function __construct(array $enabledFilters, array $filtersParameters)
  19.     {
  20.         $this->enabledFilters    $enabledFilters;
  21.         $this->filtersParameters $filtersParameters;
  22.     }
  23.     /**
  24.      * Create a connection by name.
  25.      */
  26.     public function configure(EntityManagerInterface $entityManager)
  27.     {
  28.         $this->enableFilters($entityManager);
  29.     }
  30.     /**
  31.      * Enables filters for a given entity manager
  32.      */
  33.     private function enableFilters(EntityManagerInterface $entityManager): void
  34.     {
  35.         if (empty($this->enabledFilters)) {
  36.             return;
  37.         }
  38.         $filterCollection $entityManager->getFilters();
  39.         foreach ($this->enabledFilters as $filter) {
  40.             $this->setFilterParameters($filter$filterCollection->enable($filter));
  41.         }
  42.     }
  43.     /**
  44.      * Sets default parameters for a given filter
  45.      */
  46.     private function setFilterParameters(string $nameSQLFilter $filter): void
  47.     {
  48.         if (empty($this->filtersParameters[$name])) {
  49.             return;
  50.         }
  51.         $parameters $this->filtersParameters[$name];
  52.         foreach ($parameters as $paramName => $paramValue) {
  53.             $filter->setParameter($paramName$paramValue);
  54.         }
  55.     }
  56. }