Skip to content

Commit a020625

Browse files
committed
Adding reviews config checking
1 parent 017da27 commit a020625

File tree

7 files changed

+114
-6
lines changed

7 files changed

+114
-6
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Review\Model\Review;
9+
10+
use Magento\Framework\App\Config\ScopeConfigInterface;
11+
use Magento\Store\Model\ScopeInterface;
12+
13+
/**
14+
* Provides reviews configuration
15+
*/
16+
class Config
17+
{
18+
const XML_PATH_WISHLIST_ACTIVE = 'catalog/review/active';
19+
20+
/**
21+
* @var ScopeConfigInterface
22+
*/
23+
private $scopeConfig;
24+
25+
/**
26+
* @param ScopeConfigInterface $scopeConfig
27+
*/
28+
public function __construct(
29+
ScopeConfigInterface $scopeConfig
30+
) {
31+
$this->scopeConfig = $scopeConfig;
32+
}
33+
34+
/**
35+
* Check whether the reviews are enabled or not
36+
*
37+
* @return bool
38+
*/
39+
public function isEnabled(): bool
40+
{
41+
return $this->scopeConfig->isSetFlag(
42+
self::XML_PATH_WISHLIST_ACTIVE,
43+
ScopeInterface::SCOPE_STORES
44+
);
45+
}
46+
}

app/code/Magento/ReviewGraphQl/Mapper/ReviewDataMapper.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ public function map(Review $review): array
2929
'text' => $review->getData('detail'),
3030
'nickname' => $review->getData('nickname'),
3131
'created_at' => $review->getData('created_at'),
32-
'rating_votes' => $review->getData('rating_votes'),
3332
'sku' => $review->getSku(),
3433
'model' => $review
3534
];

app/code/Magento/ReviewGraphQl/Model/Resolver/CreateProductReview.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Magento\Framework\GraphQl\Query\ResolverInterface;
1616
use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
1717
use Magento\Review\Helper\Data as ReviewHelper;
18+
use Magento\Review\Model\Review\Config as ReviewsConfig;
1819
use Magento\ReviewGraphQl\Mapper\ReviewDataMapper;
1920
use Magento\ReviewGraphQl\Model\Review\AddReviewToProduct;
2021
use Magento\Store\Api\Data\StoreInterface;
@@ -39,20 +40,28 @@ class CreateProductReview implements ResolverInterface
3940
*/
4041
private $reviewDataMapper;
4142

43+
/**
44+
* @var ReviewsConfig
45+
*/
46+
private $reviewsConfig;
47+
4248
/**
4349
* @param AddReviewToProduct $addReviewToProduct
4450
* @param ReviewDataMapper $reviewDataMapper
4551
* @param ReviewHelper $reviewHelper
52+
* @param ReviewsConfig $reviewsConfig
4653
*/
4754
public function __construct(
4855
AddReviewToProduct $addReviewToProduct,
4956
ReviewDataMapper $reviewDataMapper,
50-
ReviewHelper $reviewHelper
57+
ReviewHelper $reviewHelper,
58+
ReviewsConfig $reviewsConfig
5159
) {
5260

5361
$this->addReviewToProduct = $addReviewToProduct;
5462
$this->reviewDataMapper = $reviewDataMapper;
5563
$this->reviewHelper = $reviewHelper;
64+
$this->reviewsConfig = $reviewsConfig;
5665
}
5766

5867
/**
@@ -78,6 +87,10 @@ public function resolve(
7887
array $value = null,
7988
array $args = null
8089
) {
90+
if (false === $this->reviewsConfig->isEnabled()) {
91+
throw new GraphQlAuthorizationException(__('Creating product reviews are not currently available.'));
92+
}
93+
8194
$input = $args['input'];
8295
$customerId = null;
8396

app/code/Magento/ReviewGraphQl/Model/Resolver/Product/RatingSummary.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Magento\Framework\GraphQl\Query\Resolver\ContextInterface;
1515
use Magento\Framework\GraphQl\Query\ResolverInterface;
1616
use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
17+
use Magento\Review\Model\Review\Config as ReviewsConfig;
1718
use Magento\Review\Model\Review\SummaryFactory;
1819
use Magento\Store\Api\Data\StoreInterface;
1920

@@ -27,13 +28,21 @@ class RatingSummary implements ResolverInterface
2728
*/
2829
private $summaryFactory;
2930

31+
/**
32+
* @var ReviewsConfig
33+
*/
34+
private $reviewsConfig;
35+
3036
/**
3137
* @param SummaryFactory $summaryFactory
38+
* @param ReviewsConfig $reviewsConfig
3239
*/
3340
public function __construct(
34-
SummaryFactory $summaryFactory
41+
SummaryFactory $summaryFactory,
42+
ReviewsConfig $reviewsConfig
3543
) {
3644
$this->summaryFactory = $summaryFactory;
45+
$this->reviewsConfig = $reviewsConfig;
3746
}
3847

3948
/**
@@ -58,6 +67,10 @@ public function resolve(
5867
array $value = null,
5968
array $args = null
6069
): float {
70+
if (false === $this->reviewsConfig->isEnabled()) {
71+
return 0;
72+
}
73+
6174
if (!isset($value['model'])) {
6275
throw new GraphQlInputException(__('Value must contain "model" property.'));
6376
}

app/code/Magento/ReviewGraphQl/Model/Resolver/Product/ReviewCount.php

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Magento\Framework\GraphQl\Config\Element\Field;
1616
use Magento\Framework\GraphQl\Query\ResolverInterface;
1717
use Magento\Review\Model\Review;
18+
use Magento\Review\Model\Review\Config as ReviewsConfig;
1819

1920
/**
2021
* Product total review count
@@ -26,12 +27,19 @@ class ReviewCount implements ResolverInterface
2627
*/
2728
private $review;
2829

30+
/**
31+
* @var ReviewsConfig
32+
*/
33+
private $reviewsConfig;
34+
2935
/**
3036
* @param Review $review
37+
* @param ReviewsConfig $reviewsConfig
3138
*/
32-
public function __construct(Review $review)
39+
public function __construct(Review $review, ReviewsConfig $reviewsConfig)
3340
{
3441
$this->review = $review;
42+
$this->reviewsConfig = $reviewsConfig;
3543
}
3644

3745
/**
@@ -56,6 +64,10 @@ public function resolve(
5664
array $value = null,
5765
array $args = null
5866
) {
67+
if (false === $this->reviewsConfig->isEnabled()) {
68+
return 0;
69+
}
70+
5971
if (!isset($value['model'])) {
6072
throw new GraphQlInputException(__('Value must contain "model" property.'));
6173
}

app/code/Magento/ReviewGraphQl/Model/Resolver/Product/Reviews.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Magento\Framework\GraphQl\Query\ResolverInterface;
1515
use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
1616
use Magento\Framework\GraphQl\Exception\GraphQlInputException;
17+
use Magento\Review\Model\Review\Config as ReviewsConfig;
1718
use Magento\ReviewGraphQl\Model\DataProvider\AggregatedReviewsDataProvider;
1819
use Magento\ReviewGraphQl\Model\DataProvider\ProductReviewsDataProvider;
1920

@@ -32,16 +33,24 @@ class Reviews implements ResolverInterface
3233
*/
3334
private $aggregatedReviewsDataProvider;
3435

36+
/**
37+
* @var ReviewsConfig
38+
*/
39+
private $reviewsConfig;
40+
3541
/**
3642
* @param ProductReviewsDataProvider $productReviewsDataProvider
3743
* @param AggregatedReviewsDataProvider $aggregatedReviewsDataProvider
44+
* @param ReviewsConfig $reviewsConfig
3845
*/
3946
public function __construct(
4047
ProductReviewsDataProvider $productReviewsDataProvider,
41-
AggregatedReviewsDataProvider $aggregatedReviewsDataProvider
48+
AggregatedReviewsDataProvider $aggregatedReviewsDataProvider,
49+
ReviewsConfig $reviewsConfig
4250
) {
4351
$this->productReviewsDataProvider = $productReviewsDataProvider;
4452
$this->aggregatedReviewsDataProvider = $aggregatedReviewsDataProvider;
53+
$this->reviewsConfig = $reviewsConfig;
4554
}
4655

4756
/**
@@ -66,6 +75,10 @@ public function resolve(
6675
array $value = null,
6776
array $args = null
6877
) {
78+
if (false === $this->reviewsConfig->isEnabled()) {
79+
return ['items' => []];
80+
}
81+
6982
if (!isset($value['model'])) {
7083
throw new GraphQlInputException(__('Value must contain "model" property.'));
7184
}

app/code/Magento/ReviewGraphQl/Model/Resolver/ProductReviewRatingsMetadata.php

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Magento\Review\Model\ResourceModel\Rating\Collection as RatingCollection;
1616
use Magento\Review\Model\ResourceModel\Rating\CollectionFactory;
1717
use Magento\Review\Model\Review;
18+
use Magento\Review\Model\Review\Config as ReviewsConfig;
1819
use Magento\Store\Api\Data\StoreInterface;
1920

2021
/**
@@ -27,12 +28,19 @@ class ProductReviewRatingsMetadata implements ResolverInterface
2728
*/
2829
private $ratingCollectionFactory;
2930

31+
/**
32+
* @var ReviewsConfig
33+
*/
34+
private $reviewsConfig;
35+
3036
/**
3137
* @param CollectionFactory $ratingCollectionFactory
38+
* @param ReviewsConfig $reviewsConfig
3239
*/
33-
public function __construct(CollectionFactory $ratingCollectionFactory)
40+
public function __construct(CollectionFactory $ratingCollectionFactory, ReviewsConfig $reviewsConfig)
3441
{
3542
$this->ratingCollectionFactory = $ratingCollectionFactory;
43+
$this->reviewsConfig = $reviewsConfig;
3644
}
3745

3846
/**
@@ -55,6 +63,10 @@ public function resolve(
5563
array $value = null,
5664
array $args = null
5765
) {
66+
if (false === $this->reviewsConfig->isEnabled()) {
67+
return ['items' => []];
68+
}
69+
5870
$items = [];
5971
/** @var StoreInterface $store */
6072
$store = $context->getExtensionAttributes()->getStore();

0 commit comments

Comments
 (0)