6
6
7
7
namespace Magento \CatalogSearch \Model \ResourceModel \Advanced ;
8
8
9
- use Magento \Catalog \Model \Category ;
10
9
use Magento \Catalog \Model \Product ;
11
- use Magento \Catalog \Model \ResourceModel \Product \Collection \ProductLimitationFactory ;
12
- use Magento \CatalogSearch \Model \ResourceModel \Advanced ;
13
10
use Magento \CatalogSearch \Model \ResourceModel \Fulltext \Collection \DefaultFilterStrategyApplyChecker ;
14
11
use Magento \CatalogSearch \Model \ResourceModel \Fulltext \Collection \DefaultFilterStrategyApplyCheckerInterface ;
15
- use Magento \CatalogSearch \Model \ResourceModel \Fulltext \Collection \SearchCriteriaResolverFactory ;
16
12
use Magento \CatalogSearch \Model \ResourceModel \Fulltext \Collection \SearchCriteriaResolverInterface ;
17
- use Magento \CatalogSearch \Model \ResourceModel \Fulltext \Collection \SearchResultApplierFactory ;
18
13
use Magento \CatalogSearch \Model \ResourceModel \Fulltext \Collection \SearchResultApplierInterface ;
19
- use Magento \CatalogSearch \ Model \ ResourceModel \ Fulltext \ Collection \ TotalRecordsResolverFactory ;
14
+ use Magento \Framework \ Search \ EngineResolverInterface ;
20
15
use Magento \CatalogSearch \Model \ResourceModel \Fulltext \Collection \TotalRecordsResolverInterface ;
21
- use Magento \Eav \Model \Entity \ Attribute \ AbstractAttribute ;
16
+ use Magento \CatalogSearch \Model \ResourceModel \ Fulltext \ Collection \ TotalRecordsResolverFactory ;
22
17
use Magento \Framework \Api \FilterBuilder ;
18
+ use Magento \Framework \DB \Select ;
23
19
use Magento \Framework \Api \Search \SearchCriteriaBuilder ;
24
20
use Magento \Framework \Api \Search \SearchResultFactory ;
25
- use Magento \Framework \Api \Search \SearchResultInterface ;
26
- use Magento \Framework \App \ObjectManager ;
27
- use Magento \Framework \DB \Select ;
28
21
use Magento \Framework \EntityManager \MetadataPool ;
29
22
use Magento \Framework \Exception \LocalizedException ;
30
- use Magento \Framework \Search \EngineResolverInterface ;
31
23
use Magento \Framework \Search \Request \EmptyRequestDataException ;
32
24
use Magento \Framework \Search \Request \NonExistingRequestNameException ;
25
+ use Magento \Catalog \Model \ResourceModel \Product \Collection \ProductLimitationFactory ;
26
+ use Magento \CatalogSearch \Model \ResourceModel \Fulltext \Collection \SearchCriteriaResolverFactory ;
27
+ use Magento \CatalogSearch \Model \ResourceModel \Fulltext \Collection \SearchResultApplierFactory ;
28
+ use Magento \Framework \App \ObjectManager ;
29
+ use Magento \Framework \Api \Search \SearchResultInterface ;
33
30
34
31
/**
35
32
* Advanced search collection
@@ -109,11 +106,6 @@ class Collection extends \Magento\Catalog\Model\ResourceModel\Product\Collection
109
106
*/
110
107
private $ defaultFilterStrategyApplyChecker ;
111
108
112
- /**
113
- * @var Advanced
114
- */
115
- private $ advancedSearchResource ;
116
-
117
109
/**
118
110
* Collection constructor
119
111
*
@@ -149,7 +141,6 @@ class Collection extends \Magento\Catalog\Model\ResourceModel\Product\Collection
149
141
* @param TotalRecordsResolverFactory|null $totalRecordsResolverFactory
150
142
* @param EngineResolverInterface|null $engineResolver
151
143
* @param DefaultFilterStrategyApplyCheckerInterface|null $defaultFilterStrategyApplyChecker
152
- * @param Advanced|null $advancedSearchResource
153
144
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
154
145
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
155
146
*/
@@ -185,8 +176,7 @@ public function __construct(
185
176
SearchResultApplierFactory $ searchResultApplierFactory = null ,
186
177
TotalRecordsResolverFactory $ totalRecordsResolverFactory = null ,
187
178
EngineResolverInterface $ engineResolver = null ,
188
- DefaultFilterStrategyApplyCheckerInterface $ defaultFilterStrategyApplyChecker = null ,
189
- Advanced $ advancedSearchResource = null
179
+ DefaultFilterStrategyApplyCheckerInterface $ defaultFilterStrategyApplyChecker = null
190
180
) {
191
181
$ this ->searchRequestName = $ searchRequestName ;
192
182
if ($ searchResultFactory === null ) {
@@ -203,8 +193,6 @@ public function __construct(
203
193
->get (EngineResolverInterface::class);
204
194
$ this ->defaultFilterStrategyApplyChecker = $ defaultFilterStrategyApplyChecker ?: ObjectManager::getInstance ()
205
195
->get (DefaultFilterStrategyApplyChecker::class);
206
- $ this ->advancedSearchResource = $ advancedSearchResource ?: ObjectManager::getInstance ()
207
- ->get (Advanced::class);
208
196
parent ::__construct (
209
197
$ entityFactory ,
210
198
$ logger ,
@@ -270,14 +258,14 @@ public function setOrder($attribute, $dir = Select::SQL_DESC)
270
258
*/
271
259
public function addCategoryFilter (\Magento \Catalog \Model \Category $ category )
272
260
{
273
- $ this ->setAttributeFilterData (Category::ENTITY , 'category_ids ' , $ category ->getId ());
274
261
/**
275
262
* This changes need in backward compatible reasons for support dynamic improved algorithm
276
263
* for price aggregation process.
277
264
*/
278
265
if ($ this ->defaultFilterStrategyApplyChecker ->isApplicable ()) {
279
266
parent ::addCategoryFilter ($ category );
280
267
} else {
268
+ $ this ->addFieldToFilter ('category_ids ' , $ category ->getId ());
281
269
$ this ->_productLimitationPrice ();
282
270
}
283
271
@@ -290,13 +278,14 @@ public function addCategoryFilter(\Magento\Catalog\Model\Category $category)
290
278
*/
291
279
public function setVisibility ($ visibility )
292
280
{
293
- $ this ->setAttributeFilterData (Product::ENTITY , 'visibility ' , $ visibility );
294
281
/**
295
282
* This changes need in backward compatible reasons for support dynamic improved algorithm
296
283
* for price aggregation process.
297
284
*/
298
285
if ($ this ->defaultFilterStrategyApplyChecker ->isApplicable ()) {
299
286
parent ::setVisibility ($ visibility );
287
+ } else {
288
+ $ this ->addFieldToFilter ('visibility ' , $ visibility );
300
289
}
301
290
302
291
return $ this ;
@@ -317,25 +306,6 @@ private function setSearchOrder($field, $direction)
317
306
$ this ->searchOrders [$ field ] = $ direction ;
318
307
}
319
308
320
- /**
321
- * Prepare attribute data to filter.
322
- *
323
- * @param string $entityType
324
- * @param string $attributeCode
325
- * @param mixed $condition
326
- * @return $this
327
- */
328
- private function setAttributeFilterData (string $ entityType , string $ attributeCode , $ condition ): self
329
- {
330
- /** @var AbstractAttribute $attribute */
331
- $ attribute = $ this ->_eavConfig ->getAttribute ($ entityType , $ attributeCode );
332
- $ table = $ attribute ->getBackend ()->getTable ();
333
- $ condition = $ this ->advancedSearchResource ->prepareCondition ($ attribute , $ condition );
334
- $ this ->addFieldsToFilter ([$ table => [$ attributeCode => $ condition ]]);
335
-
336
- return $ this ;
337
- }
338
-
339
309
/**
340
310
* @inheritdoc
341
311
*/
@@ -407,7 +377,7 @@ public function _loadEntities($printQuery = false, $logQuery = false)
407
377
$ query = $ this ->getSelect ();
408
378
$ rows = $ this ->_fetchAll ($ query );
409
379
} catch (\Exception $ e ) {
410
- $ this ->printLogQuery (false , true , $ query ?? null );
380
+ $ this ->printLogQuery (false , true , $ query );
411
381
throw $ e ;
412
382
}
413
383
0 commit comments