Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Builder.php
Go to the documentation of this file.
1 <?php
8 
14 
15 class Builder
16 {
21 
26 
30  private $dataProviderFactory;
31 
35  private $query = null;
36 
42  public function __construct(
45  DataProviderFactory $dataProviderFactory = null
46  ) {
47  $this->dataProviderContainer = array_map(
48  function (DataProviderInterface $dataProvider) {
49  return $dataProvider;
50  },
52  );
53  $this->aggregationContainer = array_map(
54  function (BucketBuilderInterface $bucketBuilder) {
55  return $bucketBuilder;
56  },
58  );
59  $this->dataProviderFactory = $dataProviderFactory
60  ?: ObjectManager::getInstance()->get(DataProviderFactory::class);
61  }
62 
75  public function build(RequestInterface $request, array $queryResult)
76  {
77  $aggregations = [];
78  $buckets = $request->getAggregation();
79 
80  $dataProvider = $this->dataProviderFactory->create(
81  $this->dataProviderContainer[$request->getIndex()],
82  $this->query
83  );
84  foreach ($buckets as $bucket) {
85  $bucketAggregationBuilder = $this->aggregationContainer[$bucket->getType()];
86  $aggregations[$bucket->getName()] = $bucketAggregationBuilder->build(
87  $bucket,
88  $request->getDimensions(),
89  $queryResult,
90  $dataProvider
91  );
92  }
93 
94  $this->query = null;
95 
96  return $aggregations;
97  }
98 
105  public function setQuery(QueryContainer $query)
106  {
107  $this->query = $query;
108 
109  return $this;
110  }
111 }
__construct(array $dataProviderContainer, array $aggregationContainer, DataProviderFactory $dataProviderFactory=null)
Definition: Builder.php:42
build(RequestInterface $request, array $queryResult)
Definition: Builder.php:75