Skip to content

Commit dfcf474

Browse files
committed
MC-32278: Position sort does not work in GraphQl.
- add category collection handling
1 parent ab2f9d2 commit dfcf474

File tree

4 files changed

+7
-38
lines changed

4 files changed

+7
-38
lines changed

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

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
namespace Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessor;
99

10-
use Magento\Catalog\Model\Product\Visibility;
1110
use Magento\Catalog\Model\ResourceModel\Product\Collection;
1211
use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessorInterface;
1312
use Magento\Framework\Api\SearchCriteriaInterface;
@@ -19,20 +18,6 @@
1918
*/
2019
class VisibilityStatusProcessor implements CollectionProcessorInterface
2120
{
22-
/**
23-
* @var Visibility
24-
*/
25-
private $visibility;
26-
27-
/**
28-
* @param Visibility $visibility
29-
*/
30-
public function __construct(Visibility $visibility)
31-
{
32-
$this->visibility = $visibility;
33-
34-
}
35-
3621
/**
3722
* {@inheritdoc}
3823
*/
@@ -42,8 +27,7 @@ public function process(
4227
array $attributeNames
4328
): Collection {
4429
$collection->joinAttribute('status', 'catalog_product/status', 'entity_id', null, 'inner');
45-
$collection->joinAttribute('visibility', 'catalog_product/visibility', 'entity_id', null, 'inner');
46-
$collection->setVisibility($this->visibility->getVisibleInSiteIds());
30+
//$collection->joinAttribute('visibility', 'catalog_product/visibility', 'entity_id', null, 'inner');
4731

4832
return $collection;
4933
}

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

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -88,16 +88,6 @@ public function getList(
8888
//Join search results
8989
$this->getSearchResultsApplier($searchResult, $collection, $this->getSortOrderArray($searchCriteria))->apply();
9090

91-
//Additional applier to keep sorting from search
92-
// if (!empty($searchResult->getItems())) {
93-
// $items = [];
94-
// foreach ($searchResult->getItems() as $item) {
95-
// $items[] = $item->getId();
96-
// }
97-
// $orderList = join(',', $items);
98-
// $collection->getSelect()->order(new \Zend_Db_Expr("FIELD(e.entity_id,$orderList)"));
99-
// }
100-
10191
$this->collectionPreProcessor->process($collection, $searchCriteria, $attributes);
10292
$collection->load();
10393
$this->collectionPostProcessor->process($collection, $attributes);

app/code/Magento/CatalogGraphQl/Model/Resolver/Products/Query/Search.php

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99

1010
use Magento\CatalogGraphQl\DataProvider\Product\SearchCriteriaBuilder;
1111
use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\ProductSearch;
12-
use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
13-
use Magento\Framework\Api\Search\SearchCriteriaInterface;
1412
use Magento\CatalogGraphQl\Model\Resolver\Products\SearchResult;
1513
use Magento\CatalogGraphQl\Model\Resolver\Products\SearchResultFactory;
16-
use Magento\Search\Api\SearchInterface;
14+
use Magento\Framework\Api\Search\SearchCriteriaInterface;
1715
use Magento\Framework\Api\Search\SearchCriteriaInterfaceFactory;
16+
use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
17+
use Magento\Search\Api\SearchInterface;
1818
use Magento\Search\Model\Search\PageSizeProvider;
1919

2020
/**
@@ -107,22 +107,16 @@ public function getResult(
107107
$searchCriteria->setCurrentPage(0);
108108
$itemsResults = $this->search->search($searchCriteria);
109109

110-
//Create copy of search criteria without conditions (conditions will be applied by joining search result)
111-
$searchCriteriaCopy = $this->searchCriteriaFactory->create()
112-
->setSortOrders($searchCriteria->getSortOrders())
113-
->setPageSize($realPageSize)
114-
->setCurrentPage($realCurrentPage);
110+
$searchCriteria->setPageSize($realPageSize)->setCurrentPage($realCurrentPage);
115111

116-
$searchResults = $this->productsProvider->getList($searchCriteriaCopy, $itemsResults, $queryFields);
112+
$searchResults = $this->productsProvider->getList($searchCriteria, $itemsResults, $queryFields);
117113

118114
//possible division by 0
119115
if ($realPageSize) {
120116
$maxPages = (int)ceil($searchResults->getTotalCount() / $realPageSize);
121117
} else {
122118
$maxPages = 0;
123119
}
124-
$searchCriteria->setPageSize($realPageSize);
125-
$searchCriteria->setCurrentPage($realCurrentPage);
126120

127121
$productArray = [];
128122
/** @var \Magento\Catalog\Model\Product $product */

app/code/Magento/CatalogGraphQl/Model/Resolver/Products/SearchCriteria/CollectionProcessor/FilterProcessor/CategoryFilter.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ public function apply(Filter $filter, AbstractDb $collection)
6161
$category = $this->categoryFactory->create();
6262
$this->categoryResourceModel->load($category, $categoryId);
6363
$categoryProducts[$categoryId] = $category->getProductCollection()->getAllIds();
64+
$collection->addCategoryFilter($category);
6465
}
6566

6667
$categoryProductIds = array_unique(array_merge(...$categoryProducts));

0 commit comments

Comments
 (0)