Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public function resolve(
'eq' => $value['id']
]
];
$searchResult = $this->searchQuery->getResult($args, $info);
$searchResult = $this->searchQuery->getResult($args, $info, $context);

//possible division by 0
if ($searchResult->getPageSize()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public function resolve(
);
}

$searchResult = $this->searchQuery->getResult($args, $info);
$searchResult = $this->searchQuery->getResult($args, $info, $context);

if ($searchResult->getCurrentPage() > $searchResult->getTotalPages() && $searchResult->getTotalCount() > 0) {
throw new GraphQlInputException(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use Magento\Catalog\Api\Data\ProductInterface;
use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product as ProductDataProvider;
use Magento\Framework\Api\SearchCriteriaBuilder;
use Magento\GraphQl\Model\Query\ContextInterface;

/**
* Deferred resolver for product data.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
use Magento\Catalog\Api\Data\ProductSearchResultsInterfaceFactory;
use Magento\Framework\Api\SearchResultsInterface;
use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessorInterface;
use Magento\GraphQl\Model\Query\ContextInterface;

/**
* Product field data provider, used for GraphQL resolver processing.
Expand Down Expand Up @@ -73,18 +74,20 @@ public function __construct(
* @param string[] $attributes
* @param bool $isSearch
* @param bool $isChildSearch
* @param ContextInterface|null $context
* @return SearchResultsInterface
*/
public function getList(
SearchCriteriaInterface $searchCriteria,
array $attributes = [],
bool $isSearch = false,
bool $isChildSearch = false
bool $isChildSearch = false,
ContextInterface $context = null
): SearchResultsInterface {
/** @var \Magento\Catalog\Model\ResourceModel\Product\Collection $collection */
$collection = $this->collectionFactory->create();

$this->collectionPreProcessor->process($collection, $searchCriteria, $attributes);
$this->collectionPreProcessor->process($collection, $searchCriteria, $attributes, $context);

if (!$isChildSearch) {
$visibilityIds = $isSearch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use Magento\Catalog\Model\ResourceModel\Product\Collection;
use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessorInterface;
use Magento\Framework\Api\SearchCriteriaInterface;
use Magento\GraphQl\Model\Query\ContextInterface;

/**
* Adds passed in attributes to product collection results
Expand All @@ -34,12 +35,20 @@ public function __construct($fieldToAttributeMap = [])
}

/**
* @inheritdoc
* Process collection to add additional joins, attributes, and clauses to a product collection.
*
* @param Collection $collection
* @param SearchCriteriaInterface $searchCriteria
* @param array $attributeNames
* @param ContextInterface|null $context
* @return Collection
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function process(
Collection $collection,
SearchCriteriaInterface $searchCriteria,
array $attributeNames
array $attributeNames,
ContextInterface $context = null
): Collection {
foreach ($attributeNames as $name) {
$this->addAttribute($collection, $name);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessorInterface;
use Magento\Framework\Api\SearchCriteriaInterface;
use Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface;
use Magento\GraphQl\Model\Query\ContextInterface;

/**
* Add necessary joins for extensible entities.
Expand All @@ -33,16 +34,20 @@ public function __construct(JoinProcessorInterface $joinProcessor)
}

/**
* Process collection to add additional joins, attributes, and clauses to a product collection.
*
* @param Collection $collection
* @param SearchCriteriaInterface $searchCriteria
* @param array $attributeNames
* @param ContextInterface|null $context
* @return Collection
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function process(
Collection $collection,
SearchCriteriaInterface $searchCriteria,
array $attributeNames
array $attributeNames,
ContextInterface $context = null
): Collection {
$this->joinProcessor->process($collection);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessorInterface;
use Magento\Framework\Api\SearchCriteriaInterface;
use Magento\Catalog\Model\Product\Media\Config as MediaConfig;
use Magento\GraphQl\Model\Query\ContextInterface;

/**
* Add attributes required for every GraphQL product resolution process.
Expand All @@ -35,12 +36,20 @@ public function __construct(MediaConfig $mediaConfig)
}

/**
* @inheritdoc
* Process collection to add additional joins, attributes, and clauses to a product collection.
*
* @param Collection $collection
* @param SearchCriteriaInterface $searchCriteria
* @param array $attributeNames
* @param ContextInterface|null $context
* @return Collection
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function process(
Collection $collection,
SearchCriteriaInterface $searchCriteria,
array $attributeNames
array $attributeNames,
ContextInterface $context = null
): Collection {
if (in_array('media_gallery_entries', $attributeNames)) {
$mediaAttributes = $this->mediaConfig->getMediaAttributeCodes();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use Magento\Catalog\Model\ResourceModel\Product\Collection;
use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessorInterface;
use Magento\Framework\Api\SearchCriteriaInterface;
use Magento\GraphQl\Model\Query\ContextInterface;

/**
* Add attributes required for every GraphQL product resolution process.
Expand All @@ -19,12 +20,20 @@
class RequiredColumnsProcessor implements CollectionProcessorInterface
{
/**
* {@inheritdoc}
* Process collection to add additional joins, attributes, and clauses to a product collection.
*
* @param Collection $collection
* @param SearchCriteriaInterface $searchCriteria
* @param array $attributeNames
* @param ContextInterface|null $context
* @return Collection
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function process(
Collection $collection,
SearchCriteriaInterface $searchCriteria,
array $attributeNames
array $attributeNames,
ContextInterface $context = null
): Collection {
$collection->addAttributeToSelect('special_price');
$collection->addAttributeToSelect('special_price_from');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessorInterface;
use Magento\Framework\Api\SearchCriteriaInterface;
use Magento\Framework\Api\SearchCriteria\CollectionProcessorInterface as SearchCriteriaApplier;
use Magento\GraphQl\Model\Query\ContextInterface;

/**
* Apply search criteria data to passed in collection.
Expand All @@ -33,12 +34,20 @@ public function __construct(SearchCriteriaApplier $searchCriteriaApplier)
}

/**
* {@inheritdoc}
* Process collection to add additional joins, attributes, and clauses to a product collection.
*
* @param Collection $collection
* @param SearchCriteriaInterface $searchCriteria
* @param array $attributeNames
* @param ContextInterface|null $context
* @return Collection
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function process(
Collection $collection,
SearchCriteriaInterface $searchCriteria,
array $attributeNames
array $attributeNames,
ContextInterface $context = null
): Collection {
$this->searchCriteriaApplier->process($searchCriteria, $collection);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
use Magento\Framework\Api\SearchCriteriaInterface;
use Magento\CatalogInventory\Api\StockConfigurationInterface;
use Magento\CatalogInventory\Model\ResourceModel\Stock\Status as StockStatusResource;
use Magento\GraphQl\Model\Query\ContextInterface;

/**
* Add stock filtering if configuration requires it.
Expand Down Expand Up @@ -41,12 +42,20 @@ public function __construct(StockConfigurationInterface $stockConfig, StockStatu
}

/**
* {@inheritdoc}
* Process collection to add additional joins, attributes, and clauses to a product collection.
*
* @param Collection $collection
* @param SearchCriteriaInterface $searchCriteria
* @param array $attributeNames
* @param ContextInterface|null $context
* @return Collection
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function process(
Collection $collection,
SearchCriteriaInterface $searchCriteria,
array $attributeNames
array $attributeNames,
ContextInterface $context = null
): Collection {
if (!$this->stockConfig->isShowOutOfStock()) {
$this->stockStatusResource->addIsInStockFilterToCollection($collection);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use Magento\Catalog\Model\ResourceModel\Product\Collection;
use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessorInterface;
use Magento\Framework\Api\SearchCriteriaInterface;
use Magento\GraphQl\Model\Query\ContextInterface;

/**
* Join visibility and status tables to product collection
Expand All @@ -19,12 +20,20 @@
class VisibilityStatusProcessor implements CollectionProcessorInterface
{
/**
* {@inheritdoc}
* Process collection to add additional joins, attributes, and clauses to a product collection.
*
* @param Collection $collection
* @param SearchCriteriaInterface $searchCriteria
* @param array $attributeNames
* @param ContextInterface|null $context
* @return Collection
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function process(
Collection $collection,
SearchCriteriaInterface $searchCriteria,
array $attributeNames
array $attributeNames,
ContextInterface $context = null
): Collection {
$collection->joinAttribute('status', 'catalog_product/status', 'entity_id', null, 'inner');
$collection->joinAttribute('visibility', 'catalog_product/visibility', 'entity_id', null, 'inner');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

use Magento\Catalog\Model\ResourceModel\Product\Collection;
use Magento\Framework\Api\SearchCriteriaInterface;
use Magento\GraphQl\Model\Query\ContextInterface;

/**
* Add additional joins, attributes, and clauses to a product collection.
Expand All @@ -21,11 +22,13 @@ interface CollectionProcessorInterface
* @param Collection $collection
* @param SearchCriteriaInterface $searchCriteria
* @param array $attributeNames
* @param ContextInterface|null $context
* @return Collection
*/
public function process(
Collection $collection,
SearchCriteriaInterface $searchCriteria,
array $attributeNames
array $attributeNames,
ContextInterface $context = null
): Collection;
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

use Magento\Catalog\Model\ResourceModel\Product\Collection;
use Magento\Framework\Api\SearchCriteriaInterface;
use Magento\GraphQl\Model\Query\ContextInterface;

/**
* {@inheritdoc}
Expand All @@ -29,15 +30,22 @@ public function __construct(array $collectionProcessors = [])
}

/**
* {@inheritdoc}
* Process collection to add additional joins, attributes, and clauses to a product collection.
*
* @param Collection $collection
* @param SearchCriteriaInterface $searchCriteria
* @param array $attributeNames
* @param ContextInterface|null $context
* @return Collection
*/
public function process(
Collection $collection,
SearchCriteriaInterface $searchCriteria,
array $attributeNames
array $attributeNames,
ContextInterface $context = null
): Collection {
foreach ($this->collectionProcessors as $collectionProcessor) {
$collection = $collectionProcessor->process($collection, $searchCriteria, $attributeNames);
$collection = $collectionProcessor->process($collection, $searchCriteria, $attributeNames, $context);
}

return $collection;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
use Magento\Framework\Api\Search\SearchResultInterface;
use Magento\Framework\Api\SearchCriteriaInterface;
use Magento\Framework\Api\SearchResultsInterface;
use Magento\GraphQl\Model\Query\ContextInterface;

/**
* Product field data provider for product search, used for GraphQL resolver processing.
Expand Down Expand Up @@ -84,12 +85,14 @@ public function __construct(
* @param SearchCriteriaInterface $searchCriteria
* @param SearchResultInterface $searchResult
* @param array $attributes
* @param ContextInterface|null $context
* @return SearchResultsInterface
*/
public function getList(
SearchCriteriaInterface $searchCriteria,
SearchResultInterface $searchResult,
array $attributes = []
array $attributes = [],
ContextInterface $context = null
): SearchResultsInterface {
/** @var Collection $collection */
$collection = $this->collectionFactory->create();
Expand All @@ -103,7 +106,7 @@ public function getList(
$this->getSortOrderArray($searchCriteriaForCollection)
)->apply();

$this->collectionPreProcessor->process($collection, $searchCriteriaForCollection, $attributes);
$this->collectionPreProcessor->process($collection, $searchCriteriaForCollection, $attributes, $context);
$collection->load();
$this->collectionPostProcessor->process($collection, $attributes);

Expand Down
Loading