AgreementsValidator.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\CheckoutAgreements\Model;
  7. /**
  8. * Class AgreementsValidator
  9. */
  10. class AgreementsValidator implements \Magento\Checkout\Api\AgreementsValidatorInterface
  11. {
  12. /**
  13. * @var \Magento\CheckoutAgreements\Model\AgreementsProviderInterface[]
  14. */
  15. protected $agreementsProviders;
  16. /**
  17. * @param AgreementsProviderInterface[] $list
  18. * @codeCoverageIgnore
  19. */
  20. public function __construct($list = null)
  21. {
  22. $this->agreementsProviders = (array) $list;
  23. }
  24. /**
  25. * Validate that all required agreements is signed
  26. *
  27. * @param int[] $agreementIds
  28. * @return bool
  29. */
  30. public function isValid($agreementIds = [])
  31. {
  32. $agreementIds = $agreementIds === null ? [] : $agreementIds;
  33. $requiredAgreements = [];
  34. foreach ($this->agreementsProviders as $agreementsProvider) {
  35. $requiredAgreements = array_merge($requiredAgreements, $agreementsProvider->getRequiredAgreementIds());
  36. }
  37. $agreementsDiff = array_diff($requiredAgreements, $agreementIds);
  38. return empty($agreementsDiff);
  39. }
  40. }