1
1
diff -Nuar a/vendor/magento/module-shared-catalog/Model/SearchAdapter/Aggregation/Builder/DataProvider.php b/vendor/magento/module-shared-catalog/Model/SearchAdapter/Aggregation/Builder/DataProvider.php
2
+ index 86f4fd48e9..a6061fca6f 100644
2
3
--- a/vendor/magento/module-shared-catalog/Model/SearchAdapter/Aggregation/Builder/DataProvider.php
3
4
+++ b/vendor/magento/module-shared-catalog/Model/SearchAdapter/Aggregation/Builder/DataProvider.php
4
- @@ -103,18 +103,16 @@ public function __construct(
5
+ @@ -7,6 +7,8 @@ declare(strict_types=1);
6
+
7
+ namespace Magento\SharedCatalog\Model\SearchAdapter\Aggregation\Builder;
8
+
9
+ + use Magento\Catalog\Model\Layer;
10
+ + use Magento\Catalog\Model\Layer\Resolver;
11
+ use Magento\Catalog\Model\Product;
12
+ use Magento\Catalog\Model\ResourceModel\Product as ProductResource;
13
+ use Magento\CatalogInventory\Model\Configuration;
14
+ @@ -14,6 +16,7 @@ use Magento\CatalogInventory\Model\Stock;
15
+ use Magento\Customer\Model\Session;
16
+ use Magento\Eav\Model\Config as EavConfig;
17
+ use Magento\Framework\App\Config\ScopeConfigInterface;
18
+ + use Magento\Framework\App\ObjectManager;
19
+ use Magento\Framework\App\ResourceConnection;
20
+ use Magento\Framework\App\ScopeResolverInterface;
21
+ use Magento\Framework\DB\Adapter\AdapterInterface;
22
+ @@ -70,6 +73,11 @@ class DataProvider
23
+ */
24
+ private $productItem;
25
+
26
+ + /**
27
+ + * @var Layer
28
+ + */
29
+ + private $searchLayer;
30
+ +
31
+ /**
32
+ * @param ResourceConnection $resource
33
+ * @param Session $session
34
+ @@ -78,6 +86,7 @@ class DataProvider
35
+ * @param EavConfig $eavConfig
36
+ * @param ProductResource $product
37
+ * @param ProductItemResource $productItem
38
+ + * @param Resolver|null $layerResolver
39
+ */
40
+ public function __construct(
41
+ ResourceConnection $resource,
42
+ @@ -86,7 +95,8 @@ class DataProvider
43
+ ScopeConfigInterface $scopeConfig,
44
+ EavConfig $eavConfig,
45
+ ProductResource $product,
46
+ - ProductItemResource $productItem
47
+ + ProductItemResource $productItem,
48
+ + ?Resolver $layerResolver = null
49
+ ) {
50
+ $this->resource = $resource;
51
+ $this->connection = $resource->getConnection();
52
+ @@ -96,6 +106,8 @@ class DataProvider
53
+ $this->eavConfig = $eavConfig;
54
+ $this->product = $product;
55
+ $this->productItem = $productItem;
56
+ + $layerResolver = $layerResolver ?? ObjectManager::getInstance()->get(Resolver::class);
57
+ + $this->searchLayer = $layerResolver->get();
58
+ }
59
+
60
+ /**
61
+ @@ -103,18 +115,16 @@ class DataProvider
5
62
*
6
63
* @param BucketInterface $bucket
7
64
* @param array $dimensions
@@ -20,9 +77,9 @@ diff -Nuar a/vendor/magento/module-shared-catalog/Model/SearchAdapter/Aggregatio
20
77
- $select = $this->getSelect($bucket, $dimensions, $documentIds);
21
78
+ $select = $this->getSelect($bucket, $dimensions);
22
79
$query = $this->connection->query($select);
23
-
80
+
24
81
while ($row = $query->fetch()) {
25
- @@ -134,11 +132,10 @@ public function getAggregation(
82
+ @@ -134,15 +144,15 @@ class DataProvider
26
83
*
27
84
* @param BucketInterface $bucket
28
85
* @param array $dimensions
@@ -35,24 +92,39 @@ diff -Nuar a/vendor/magento/module-shared-catalog/Model/SearchAdapter/Aggregatio
35
92
{
36
93
$attribute = $this->eavConfig->getAttribute(Product::ENTITY, $bucket->getField());
37
94
$currentScope = $this->scopeResolver->getScope($dimensions['scope']->getValue());
38
- @@ -161,7 +158,6 @@ private function getSelect(BucketInterface $bucket, array $dimensions, array $do
95
+ $customerGroupId = $this->session->getCustomerGroupId();
96
+ + $categoryId = $this->searchLayer->getCurrentCategory()->getId();
97
+
98
+ $eavIndexTable = $this->resource->getTableName(
99
+ 'catalog_product_index_eav' . ($attribute->getBackendType() === 'decimal' ? '_decimal' : '')
100
+ @@ -160,11 +170,14 @@ class DataProvider
101
+ ['shared_catalog_item' => $this->productItem->getMainTable()],
39
102
'source_entity.sku = shared_catalog_item.sku',
40
103
[]
104
+ + )->joinInner(
105
+ + ['catalog_category_product' => $this->resource->getTableName('catalog_category_product')],
106
+ + 'eav.entity_id = catalog_category_product.product_id',
107
+ + []
41
108
)
42
109
- ->where('eav.entity_id IN (?)', $documentIds)
43
110
->where('eav.attribute_id = ?', $attribute->getId())
44
111
->where('eav.store_id = ? ', $currentScope->getId())
45
- ->where('source_entity.type_id <> ?', 'configurable')
46
- diff -Nuar a/vendor/magento/module-shared-catalog/Plugin/Elasticsearch/SearchAdapter/Aggregation/Builder/UpdateTermBucketBuilderPlugin.php b/vendor/magento/module-shared-catalog/Plugin/Elasticsearch/SearchAdapter/Aggregation/Builder/UpdateTermBucketBuilderPlugin.php
112
+ - ->where('source_entity.type_id <> ?', 'configurable')
113
+ + ->where('catalog_category_product.category_id = ?', $categoryId)
114
+ ->where('shared_catalog_item.customer_group_id = ?', $customerGroupId);
115
+
116
+ $this->addStockFilterToSelect($subSelect);
117
+ diff --git a/vendor/magento/module-shared-catalog/Plugin/Elasticsearch/SearchAdapter/Aggregation/Builder/UpdateTermBucketBuilderPlugin.php b/vendor/magento/module-shared-catalog/Plugin/Elasticsearch/SearchAdapter/Aggregation/Builder/UpdateTermBucketBuilderPlugin.php
118
+ index fdc811dbeb..28b1cd4ee4 100644
47
119
--- a/vendor/magento/module-shared-catalog/Plugin/Elasticsearch/SearchAdapter/Aggregation/Builder/UpdateTermBucketBuilderPlugin.php
48
120
+++ b/vendor/magento/module-shared-catalog/Plugin/Elasticsearch/SearchAdapter/Aggregation/Builder/UpdateTermBucketBuilderPlugin.php
49
- @@ -65,8 +65,7 @@ public function afterBuild(
121
+ @@ -65,8 +65,7 @@ class UpdateTermBucketBuilderPlugin
50
122
$shouldAggregate = ($bucket->getField() !== 'category_ids');
51
-
123
+
52
124
if ($sharedCatalogIsEnabled && $shouldAggregate) {
53
125
- $documentIds = array_column($queryResult['hits']['hits'], '_id');
54
126
- $values = $this->dataProvider->getAggregation($bucket, $dimensions, $documentIds);
55
127
+ $values = $this->dataProvider->getAggregation($bucket, $dimensions);
56
128
}
57
-
129
+
58
130
return $values;
0 commit comments