Skip to content

Commit c00ad81

Browse files
committed
MAGETWO-89246: Fix out of stock filter for products resolution
- revert commit
1 parent c1ba619 commit c00ad81

File tree

26 files changed

+499
-590
lines changed

26 files changed

+499
-590
lines changed

app/code/Magento/Bundle/Model/ResourceModel/Option/Collection.php

Lines changed: 2 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,6 @@ class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\Ab
3131
*/
3232
private $productIds = [];
3333

34-
/**
35-
* @var bool
36-
*/
37-
private $hasProductJoin = false;
38-
3934
/**
4035
* Init model and resource model
4136
*
@@ -54,7 +49,6 @@ protected function _construct()
5449
*/
5550
public function joinValues($storeId)
5651
{
57-
$this->joinProductEntityTable();
5852
$this->getSelect()->joinLeft(
5953
['option_value_default' => $this->getTable('catalog_product_bundle_option_value')],
6054
implode(
@@ -107,48 +101,17 @@ public function setProductIdFilter($productId)
107101
{
108102
$this->productIds[] = $productId;
109103

110-
return $this;
111-
}
112-
113-
private function joinProductEntityTable()
114-
{
115-
if ($this->hasProductJoin || empty($this->productIds)) {
116-
return;
117-
}
118-
119-
if (count($this->productIds) === 1) {
120-
$comparedField = reset($this->productIds);
121-
$whereClause = "cpe.entity_id = ?";
122-
} else {
123-
$comparedField = $this->productIds;
124-
$whereClause = "cpe.entity_id IN (?)";
125-
}
126-
127104
$productTable = $this->getTable('catalog_product_entity');
128105
$linkField = $this->getConnection()->getAutoIncrementField($productTable);
129106
$this->getSelect()->join(
130107
['cpe' => $productTable],
131108
'cpe.'.$linkField.' = main_table.parent_id',
132109
[]
133110
)->where(
134-
$whereClause,
135-
$comparedField
111+
"cpe.entity_id = (?)",
112+
$this->productIds
136113
);
137114

138-
$this->hasProductJoin = true;
139-
}
140-
141-
/**
142-
* Add base select based off product id buffer.
143-
*
144-
* @return $this
145-
*/
146-
protected function _beforeLoad()
147-
{
148-
$this->joinProductEntityTable();
149-
150-
parent::_beforeLoad();
151-
152115
return $this;
153116
}
154117

@@ -160,7 +123,6 @@ protected function _beforeLoad()
160123
protected function _afterLoad()
161124
{
162125
$this->productIds = [];
163-
$this->hasProductJoin = false;
164126

165127
return parent::_afterLoad();
166128
}

app/code/Magento/CatalogGraphQl/Model/Resolver/Products/DataProvider/Product.php

Lines changed: 62 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,14 @@
88
namespace Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider;
99

1010
use Magento\Catalog\Model\Product\Visibility;
11+
use Magento\Catalog\Model\ResourceModel\CategoryProduct;
12+
use Magento\Framework\Api\SearchCriteriaBuilder;
1113
use Magento\Framework\Api\SearchCriteriaInterface;
1214
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;
15+
use Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface;
16+
use Magento\Framework\Api\SearchCriteria\CollectionProcessorInterface;
1317
use Magento\Catalog\Api\Data\ProductSearchResultsInterfaceFactory;
1418
use Magento\Framework\Api\SearchResultsInterface;
15-
use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessorInterface;
1619

1720
/**
1821
* Product field data provider, used for GraphQL resolver processing.
@@ -25,36 +28,73 @@ class Product
2528
private $collectionFactory;
2629

2730
/**
28-
* @var ProductSearchResultsInterfaceFactory
31+
* @var JoinProcessorInterface
2932
*/
30-
private $searchResultsFactory;
33+
private $joinProcessor;
3134

3235
/**
3336
* @var CollectionProcessorInterface
3437
*/
3538
private $collectionProcessor;
3639

40+
/**
41+
* @var ProductSearchResultsInterfaceFactory
42+
*/
43+
private $searchResultsFactory;
44+
45+
/**
46+
* @var CategoryProduct
47+
*/
48+
private $categoryProduct;
49+
50+
/**
51+
* @var SearchCriteriaBuilder
52+
*/
53+
private $searchCriteriaBuilder;
54+
55+
/**
56+
* @var \Magento\Catalog\Model\Layer\Resolver
57+
*/
58+
private $layerResolver;
59+
60+
/**
61+
* @var \Magento\Catalog\Model\ProductRepository
62+
*/
63+
private $productRepository;
64+
3765
/**
3866
* @var Visibility
3967
*/
4068
private $visibility;
4169

4270
/**
4371
* @param CollectionFactory $collectionFactory
44-
* @param ProductSearchResultsInterfaceFactory $searchResultsFactory
45-
* @param Visibility $visibility
72+
* @param JoinProcessorInterface $joinProcessor
4673
* @param CollectionProcessorInterface $collectionProcessor
74+
* @param ProductSearchResultsInterfaceFactory $searchResultsFactory
75+
* @param CategoryProduct $categoryProduct
76+
* @param SearchCriteriaBuilder $searchCriteriaBuilder
4777
*/
4878
public function __construct(
4979
CollectionFactory $collectionFactory,
80+
JoinProcessorInterface $joinProcessor,
81+
CollectionProcessorInterface $collectionProcessor,
5082
ProductSearchResultsInterfaceFactory $searchResultsFactory,
51-
Visibility $visibility,
52-
CollectionProcessorInterface $collectionProcessor
83+
CategoryProduct $categoryProduct,
84+
SearchCriteriaBuilder $searchCriteriaBuilder,
85+
\Magento\Catalog\Model\Layer\Resolver $layerResolver,
86+
\Magento\Catalog\Model\ProductRepository $productRepository,
87+
Visibility $visibility
5388
) {
5489
$this->collectionFactory = $collectionFactory;
90+
$this->joinProcessor = $joinProcessor;
91+
$this->collectionProcessor = $collectionProcessor;
5592
$this->searchResultsFactory = $searchResultsFactory;
93+
$this->categoryProduct = $categoryProduct;
94+
$this->searchCriteriaBuilder = $searchCriteriaBuilder;
5695
$this->visibility = $visibility;
57-
$this->collectionProcessor = $collectionProcessor;
96+
$this->layerResolver = $layerResolver;
97+
$this->productRepository = $productRepository;
5898
}
5999

60100
/**
@@ -74,17 +114,29 @@ public function getList(
74114
): SearchResultsInterface {
75115
/** @var \Magento\Catalog\Model\ResourceModel\Product\Collection $collection */
76116
$collection = $this->collectionFactory->create();
117+
$this->joinProcessor->process($collection);
77118

78-
$this->collectionProcessor->process($collection, $searchCriteria, $attributes);
119+
foreach ($attributes as $attributeCode) {
120+
$collection->addAttributeToSelect($attributeCode);
121+
}
122+
$collection->addAttributeToSelect('special_price');
123+
$collection->addAttributeToSelect('special_price_from');
124+
$collection->addAttributeToSelect('special_price_to');
125+
$collection->addAttributeToSelect('tax_class_id');
126+
$collection->joinAttribute('status', 'catalog_product/status', 'entity_id', null, 'inner');
127+
$collection->joinAttribute('visibility', 'catalog_product/visibility', 'entity_id', null, 'inner');
79128

80129
if (!$isChildSearch) {
81130
$visibilityIds
82131
= $isSearch ? $this->visibility->getVisibleInSearchIds() : $this->visibility->getVisibleInCatalogIds();
83132
$collection->setVisibility($visibilityIds);
84133
}
134+
135+
$this->collectionProcessor->process($searchCriteria, $collection);
136+
$collection->addWebsiteNamesToResult();
85137
$collection->load();
86138

87-
// Methods that perform extra fetches post-load
139+
// Methods that perform extra fetches
88140
$collection->addCategoryIds();
89141
$collection->addMediaGalleryData();
90142
$collection->addOptionsToResult();

app/code/Magento/CatalogGraphQl/Model/Resolver/Products/DataProvider/Product/CollectionProcessor/AttributeProcessor.php

Lines changed: 0 additions & 35 deletions
This file was deleted.

app/code/Magento/CatalogGraphQl/Model/Resolver/Products/DataProvider/Product/CollectionProcessor/ExtensibleEntityProcessor.php

Lines changed: 0 additions & 44 deletions
This file was deleted.

app/code/Magento/CatalogGraphQl/Model/Resolver/Products/DataProvider/Product/CollectionProcessor/RequiredColumnsProcessor.php

Lines changed: 0 additions & 37 deletions
This file was deleted.

app/code/Magento/CatalogGraphQl/Model/Resolver/Products/DataProvider/Product/CollectionProcessor/SearchCriteriaProcessor.php

Lines changed: 0 additions & 47 deletions
This file was deleted.

0 commit comments

Comments
 (0)