NewsletterManageIndexPlugin.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace Dotdigitalgroup\Email\Plugin;
  3. /**
  4. * Newsletter manage index plugin for customer
  5. *
  6. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  7. */
  8. class NewsletterManageIndexPlugin
  9. {
  10. /**
  11. * @var \Magento\Framework\App\Response\Http
  12. */
  13. private $response;
  14. /**
  15. * @var \Magento\Framework\UrlFactory
  16. */
  17. private $urlFactory;
  18. /**
  19. * @var \Dotdigitalgroup\Email\Helper\Data
  20. */
  21. private $helper;
  22. /**
  23. * @var \Magento\Customer\Model\Session
  24. */
  25. public $customerSession;
  26. public function __construct(
  27. \Magento\Framework\App\Response\Http $response,
  28. \Magento\Framework\UrlFactory $urlFactory,
  29. \Dotdigitalgroup\Email\Helper\Data $helper,
  30. \Magento\Customer\Model\Session $customerSession
  31. ) {
  32. $this->customerSession = $customerSession;
  33. $this->helper = $helper;
  34. $this->response = $response;
  35. $this->urlFactory = $urlFactory;
  36. }
  37. /**
  38. * @param \Magento\Newsletter\Controller\Manage\Index $subject
  39. * @param callable $proceed
  40. */
  41. public function aroundExecute(
  42. \Magento\Newsletter\Controller\Manage\Index $subject,
  43. callable $proceed
  44. ) {
  45. $websiteId = $this->customerSession->getCustomer()->getWebsiteId();
  46. $isEnabled = $this->helper->isEnabled($websiteId);
  47. $dataFields = $this->helper->getCanShowDataFields(
  48. $websiteId
  49. );
  50. $addressBooks = $this->helper->getCanShowAdditionalSubscriptions(
  51. $websiteId
  52. );
  53. $preferences = $this->helper->getWebsiteConfig(
  54. \Dotdigitalgroup\Email\Helper\Config::XML_PATH_CONNECTOR_SHOW_PREFERENCES,
  55. $websiteId
  56. );
  57. if ($isEnabled && ($dataFields || $addressBooks || $preferences)) {
  58. $this->response->setRedirect(
  59. $this->urlFactory->create()->getUrl('connector/customer/index')
  60. );
  61. } else {
  62. return $proceed();
  63. }
  64. }
  65. }