AgreementsConfigProvider.php 3.8 KB

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