Author: Aurelien FOUCRET (aurelien.foucret@smile.fr)
Ejemplo n.º 1
0
 /**
  * Build sort orders from array of sort orders definition.
  *
  * @param ContainerConfigurationInterface $containerConfig Request configuration.
  * @param array                           $orders          Sort orders definitions.
  *
  * @return SortOrderInterface[]
  */
 public function buildSordOrders(ContainerConfigurationInterface $containerConfig, array $orders)
 {
     $sortOrders = [];
     $mapping = $containerConfig->getMapping();
     $orders = $this->addDefaultSortOrders($orders, $mapping);
     foreach ($orders as $fieldName => $sortOrderParams) {
         $factory = $this->standardOrderFactory;
         try {
             $sortField = $mapping->getField($fieldName);
             $sortOrderParams = $this->getSortOrderParams($sortField, $sortOrderParams);
             if (isset($sortOrderParams['nestedPath'])) {
                 $factory = $this->nestedOrderFactory;
             }
             if (isset($sortOrderParams['nestedFilter'])) {
                 $nestedFilter = $this->queryBuilder->create($containerConfig, $sortOrderParams['nestedFilter']);
                 $sortOrderParams['nestedFilter'] = $nestedFilter->getQuery();
             }
         } catch (\LogicException $e) {
             $sortOrderParams['field'] = $fieldName;
         }
         $sortOrders[] = $factory->create($sortOrderParams);
     }
     return $sortOrders;
 }
Ejemplo n.º 2
0
 /**
  * Create a query from filters passed as arguments.
  *
  * @param ContainerConfigurationInterface $containerConfiguration Search request container configuration.
  * @param array                           $filters                Filters used to build the query.
  *
  * @return QueryInterface
  */
 public function createFilters(ContainerConfigurationInterface $containerConfiguration, array $filters)
 {
     return $this->filterQueryBuilder->create($containerConfiguration, $filters);
 }