diff --git a/.github/workflows/coding-standard.yml b/.github/workflows/coding-standard.yml index 885022d..c8424b1 100644 --- a/.github/workflows/coding-standard.yml +++ b/.github/workflows/coding-standard.yml @@ -8,7 +8,7 @@ on: jobs: static: name: M2 Coding Standard - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@v2 - - uses: extdn/github-actions-m2/magento-coding-standard@master + - uses: actions/checkout@v7 + - uses: extdn/github-actions-m2/magento-coding-standard/8.4@master diff --git a/Plugin/DataProvider/Product/SearchCriteriaBuilder/AddDefaultOrders.php b/Plugin/DataProvider/Product/SearchCriteriaBuilder/AddDefaultOrders.php index 636035e..6b929fd 100644 --- a/Plugin/DataProvider/Product/SearchCriteriaBuilder/AddDefaultOrders.php +++ b/Plugin/DataProvider/Product/SearchCriteriaBuilder/AddDefaultOrders.php @@ -2,34 +2,60 @@ namespace GhoSter\OutOfStockAtLast\Plugin\DataProvider\Product\SearchCriteriaBuilder; use GhoSter\OutOfStockAtLast\Model\AdditionalAttribute; +use Magento\CatalogGraphQl\DataProvider\Product\SearchCriteriaBuilder; +use Magento\Framework\Api\Search\SearchCriteriaInterface; +use Magento\Framework\Api\SortOrder; +use Magento\Framework\Api\SortOrderBuilder; class AddDefaultOrders { /** - * Add default sorting - * - * phpcs:disable Magento2.Annotation.MethodArguments.NoTypeSpecified + * @var SortOrderBuilder + */ + private $sortOrderBuilder; + + /** + * @param SortOrderBuilder $sortOrderBuilder + */ + public function __construct( + SortOrderBuilder $sortOrderBuilder + ) { + $this->sortOrderBuilder = $sortOrderBuilder; + } + + /** + * Add default sorting. * - * @param $subject + * @param SearchCriteriaBuilder $subject + * @param SearchCriteriaInterface $searchCriteria * @param array $args * @param bool $includeAggregation - * @return array + * + * @return SearchCriteriaInterface + * @see \Magento\CatalogGraphQl\DataProvider\Product\SearchCriteriaBuilder::build * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ - public function beforeBuild( - $subject, + public function afterBuild( + SearchCriteriaBuilder $subject, + SearchCriteriaInterface $searchCriteria, array $args, bool $includeAggregation - ): array { - if (!isset($args['sort'])) { - $args['sort'] = []; - } + ): SearchCriteriaInterface { + $sortOrders = $searchCriteria->getSortOrders(); - if (!isset($args['sort'][AdditionalAttribute::ATTRIBUTE_CODE]) - ) { - $args['sort'][AdditionalAttribute::ATTRIBUTE_CODE] = 'DESC'; + if (empty($sortOrders)) { + return $searchCriteria; } - return [$args, $includeAggregation]; + $sortOrder = $this->sortOrderBuilder + ->setField(AdditionalAttribute::ATTRIBUTE_CODE) + ->setDirection(SortOrder::SORT_DESC) + ->create(); + + array_splice($sortOrders, -1, 0, [$sortOrder]); + + $searchCriteria->setSortOrders($sortOrders); + + return $searchCriteria; } }