Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
SelectContainerBuilder.php
Go to the documentation of this file.
1 <?php
7 
16 
25 {
29  private $selectContainerFactory;
30 
34  private $fullTextSearchCheck;
35 
39  private $customAttributeFilterCheck;
40 
44  private $filtersExtractor;
45 
49  private $scopeConfig;
50 
54  private $resource;
55 
64  public function __construct(
65  SelectContainerFactory $selectContainerFactory,
66  FullTextSearchCheck $fullTextSearchCheck,
67  CustomAttributeFilterCheck $customAttributeFilterCheck,
68  FiltersExtractor $filtersExtractor,
69  ScopeConfigInterface $scopeConfig,
70  ResourceConnection $resource
71  ) {
72  $this->selectContainerFactory = $selectContainerFactory;
73  $this->fullTextSearchCheck = $fullTextSearchCheck;
74  $this->customAttributeFilterCheck = $customAttributeFilterCheck;
75  $this->filtersExtractor = $filtersExtractor;
76  $this->scopeConfig = $scopeConfig;
77  $this->resource = $resource;
78  }
79 
90  {
91  $nonCustomAttributesFilters = [];
92  $customAttributesFilters = [];
93  $visibilityFilter = null;
94 
95  foreach ($this->filtersExtractor->extractFiltersFromQuery($request->getQuery()) as $filter) {
96  if ($this->customAttributeFilterCheck->isCustom($filter)) {
97  if ($filter->getField() === VisibilityFilter::VISIBILITY_FILTER_FIELD) {
98  $visibilityFilter = clone $filter;
99  } else {
100  $customAttributesFilters[] = clone $filter;
101  }
102  } else {
103  $nonCustomAttributesFilters[] = clone $filter;
104  }
105  }
106 
107  $data = [
108  'select' => $this->resource->getConnection()->select(),
109  'nonCustomAttributesFilters' => $nonCustomAttributesFilters,
110  'customAttributesFilters' => $customAttributesFilters,
111  'dimensions' => $request->getDimensions(),
112  'isFullTextSearchRequired' => $this->fullTextSearchCheck->isRequiredForQuery($request->getQuery()),
113  'isShowOutOfStockEnabled' => $this->isSetShowOutOfStockFlag(),
114  'usedIndex' => $request->getIndex()
115  ];
116 
117  if ($visibilityFilter !== null) {
118  $data['visibilityFilter'] = $visibilityFilter;
119  }
120 
121  return $this->selectContainerFactory->create($data);
122  }
123 
129  private function isSetShowOutOfStockFlag()
130  {
131  return $this->scopeConfig->isSetFlag(
132  'cataloginventory/options/show_out_of_stock',
134  );
135  }
136 }
$resource
Definition: bulk.php:12
__construct(SelectContainerFactory $selectContainerFactory, FullTextSearchCheck $fullTextSearchCheck, CustomAttributeFilterCheck $customAttributeFilterCheck, FiltersExtractor $filtersExtractor, ScopeConfigInterface $scopeConfig, ResourceConnection $resource)