1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\CheckoutAgreements\Model;
use Magento\Checkout\Model\ConfigProviderInterface;
use Magento\Framework\App\ObjectManager;
use Magento\Store\Model\ScopeInterface;
use Magento\CheckoutAgreements\Model\Api\SearchCriteria\ActiveStoreAgreementsFilter;
/**
* Configuration provider for GiftMessage rendering on "Shipping Method" step of checkout.
*/
class AgreementsConfigProvider implements ConfigProviderInterface
{
/**
* @var \Magento\Framework\App\Config\ScopeConfigInterface
*/
protected $scopeConfiguration;
/**
* @var \Magento\CheckoutAgreements\Api\CheckoutAgreementsRepositoryInterface
*/
protected $checkoutAgreementsRepository;
/**
* @var \Magento\Framework\Escaper
*/
protected $escaper;
/**
* @var \Magento\CheckoutAgreements\Api\CheckoutAgreementsListInterface
*/
private $checkoutAgreementsList;
/**
* @var ActiveStoreAgreementsFilter
*/
private $activeStoreAgreementsFilter;
/**
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfiguration
* @param \Magento\CheckoutAgreements\Api\CheckoutAgreementsRepositoryInterface $checkoutAgreementsRepository
* @param \Magento\Framework\Escaper $escaper
* @param \Magento\CheckoutAgreements\Api\CheckoutAgreementsListInterface|null $checkoutAgreementsList
* @param ActiveStoreAgreementsFilter|null $activeStoreAgreementsFilter
* @codeCoverageIgnore
*/
public function __construct(
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfiguration,
\Magento\CheckoutAgreements\Api\CheckoutAgreementsRepositoryInterface $checkoutAgreementsRepository,
\Magento\Framework\Escaper $escaper,
\Magento\CheckoutAgreements\Api\CheckoutAgreementsListInterface $checkoutAgreementsList = null,
ActiveStoreAgreementsFilter $activeStoreAgreementsFilter = null
) {
$this->scopeConfiguration = $scopeConfiguration;
$this->checkoutAgreementsRepository = $checkoutAgreementsRepository;
$this->escaper = $escaper;
$this->checkoutAgreementsList = $checkoutAgreementsList ?: ObjectManager::getInstance()->get(
\Magento\CheckoutAgreements\Api\CheckoutAgreementsListInterface::class
);
$this->activeStoreAgreementsFilter = $activeStoreAgreementsFilter ?: ObjectManager::getInstance()->get(
ActiveStoreAgreementsFilter::class
);
}
/**
* @inheritdoc
*/
public function getConfig()
{
$agreements = [];
$agreements['checkoutAgreements'] = $this->getAgreementsConfig();
return $agreements;
}
/**
* Returns agreements config.
*
* @return array
*/
protected function getAgreementsConfig()
{
$agreementConfiguration = [];
$isAgreementsEnabled = $this->scopeConfiguration->isSetFlag(
AgreementsProvider::PATH_ENABLED,
ScopeInterface::SCOPE_STORE
);
$agreementsList = $this->checkoutAgreementsList->getList(
$this->activeStoreAgreementsFilter->buildSearchCriteria()
);
$agreementConfiguration['isEnabled'] = (bool)($isAgreementsEnabled && count($agreementsList) > 0);
foreach ($agreementsList as $agreement) {
$agreementConfiguration['agreements'][] = [
'content' => $agreement->getIsHtml()
? $agreement->getContent()
: nl2br($this->escaper->escapeHtml($agreement->getContent())),
'checkboxText' => $this->escaper->escapeHtml($agreement->getCheckboxText()),
'mode' => $agreement->getMode(),
'agreementId' => $agreement->getAgreementId()
];
}
return $agreementConfiguration;
}
}