Emailcapture.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. namespace Dotdigitalgroup\Email\Controller\Ajax;
  3. class Emailcapture extends \Magento\Framework\App\Action\Action
  4. {
  5. /**
  6. * @var \Magento\Quote\Model\ResourceModel\Quote
  7. */
  8. private $quoteResource;
  9. /**
  10. * @var \Dotdigitalgroup\Email\Helper\Data
  11. */
  12. private $helper;
  13. /**
  14. * @var \Magento\Checkout\Model\Session
  15. */
  16. private $checkoutSession;
  17. /**
  18. * Emailcapture constructor.
  19. * @param \Dotdigitalgroup\Email\Helper\Data $data
  20. * @param \Magento\Quote\Model\ResourceModel\Quote $quoteResource
  21. * @param \Magento\Checkout\Model\Session $session
  22. * @param \Magento\Framework\App\Action\Context $context
  23. */
  24. public function __construct(
  25. \Dotdigitalgroup\Email\Helper\Data $data,
  26. \Magento\Quote\Model\ResourceModel\Quote $quoteResource,
  27. \Magento\Checkout\Model\Session $session,
  28. \Magento\Framework\App\Action\Context $context
  29. ) {
  30. $this->helper = $data;
  31. $this->quoteResource = $quoteResource;
  32. $this->checkoutSession = $session;
  33. parent::__construct($context);
  34. }
  35. /**
  36. * Easy email capture for Newsletter and Checkout.
  37. *
  38. * @return null
  39. */
  40. public function execute()
  41. {
  42. $email = $this->getRequest()->getParam('email');
  43. if ($email && $quote = $this->checkoutSession->getQuote()) {
  44. if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
  45. return null;
  46. }
  47. if ($quote->hasItems()) {
  48. try {
  49. $quote->setCustomerEmail($email);
  50. $this->quoteResource->save($quote);
  51. } catch (\Exception $e) {
  52. $this->helper->debug((string)$e, []);
  53. }
  54. }
  55. }
  56. }
  57. }