From 1f5e7c0daa2207652739b742dc2b5968f5f13f6e Mon Sep 17 00:00:00 2001 From: Matt April Date: Fri, 15 May 2020 15:49:15 -0400 Subject: [PATCH] Fix for missing or invalid sort direction --- packages/Webkul/Product/src/Helpers/Toolbar.php | 3 ++- .../src/Repositories/ProductRepository.php | 16 +++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/Webkul/Product/src/Helpers/Toolbar.php b/packages/Webkul/Product/src/Helpers/Toolbar.php index 7784b9fc8..42b52dc56 100755 --- a/packages/Webkul/Product/src/Helpers/Toolbar.php +++ b/packages/Webkul/Product/src/Helpers/Toolbar.php @@ -83,8 +83,9 @@ class Toolbar extends AbstractProduct public function isOrderCurrent($key) { $params = request()->input(); + $orderDirection = $params['order'] ?? 'asc'; - if (isset($params['sort']) && $key == $params['sort'] . '-' . $params['order']) { + if (isset($params['sort']) && $key == $params['sort'] . '-' . $orderDirection) { return true; } elseif (! isset($params['sort'])) { $sortBy = core()->getConfigData('catalog.products.storefront.sort_by') diff --git a/packages/Webkul/Product/src/Repositories/ProductRepository.php b/packages/Webkul/Product/src/Repositories/ProductRepository.php index 75c19a6e7..8838fd94d 100755 --- a/packages/Webkul/Product/src/Repositories/ProductRepository.php +++ b/packages/Webkul/Product/src/Repositories/ProductRepository.php @@ -140,18 +140,20 @@ class ProductRepository extends Repository if (isset($params['search'])) $qb->where('product_flat.name', 'like', '%' . urldecode($params['search']) . '%'); + # sort direction + $orderDirection = 'asc'; + if( isset($params['order']) && in_array($params['order'], ['desc', 'asc']) ){ + $orderDirection = $params['order']; + } + if (isset($params['sort'])) { $attribute = $this->attributeRepository->findOneByField('code', $params['sort']); if ($attribute) { - if ($params['sort'] == 'price') { - if ($attribute->code == 'price') { - $qb->orderBy('min_price', $params['order']); - } else { - $qb->orderBy($attribute->code, $params['order']); - } + if ($attribute->code == 'price') { + $qb->orderBy('min_price', $orderDirection); } else { - $qb->orderBy($params['sort'] == 'created_at' ? 'product_flat.created_at' : $attribute->code, $params['order']); + $qb->orderBy($params['sort'] == 'created_at' ? 'product_flat.created_at' : $attribute->code, $orderDirection); } } }