MassUnsubscribe.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\Newsletter\Controller\Adminhtml\Subscriber;
  8. use Magento\Newsletter\Controller\Adminhtml\Subscriber;
  9. use Magento\Backend\App\Action\Context;
  10. use Magento\Framework\App\Response\Http\FileFactory;
  11. use Magento\Newsletter\Model\SubscriberFactory;
  12. use Magento\Framework\App\ObjectManager;
  13. class MassUnsubscribe extends Subscriber
  14. {
  15. /**
  16. * @var SubscriberFactory
  17. */
  18. private $subscriberFactory;
  19. /**
  20. * @param Context $context
  21. * @param FileFactory $fileFactory
  22. * @param SubscriberFactory $subscriberFactory
  23. */
  24. public function __construct(
  25. Context $context,
  26. FileFactory $fileFactory,
  27. SubscriberFactory $subscriberFactory = null
  28. ) {
  29. $this->subscriberFactory = $subscriberFactory ?: ObjectManager::getInstance()->get(SubscriberFactory::class);
  30. parent::__construct($context, $fileFactory);
  31. }
  32. /**
  33. * Unsubscribe one or more subscribers action
  34. *
  35. * @return void
  36. */
  37. public function execute()
  38. {
  39. $subscribersIds = $this->getRequest()->getParam('subscriber');
  40. if (!is_array($subscribersIds)) {
  41. $this->messageManager->addError(__('Please select one or more subscribers.'));
  42. } else {
  43. try {
  44. foreach ($subscribersIds as $subscriberId) {
  45. $subscriber = $this->subscriberFactory->create()->load(
  46. $subscriberId
  47. );
  48. $subscriber->unsubscribe();
  49. }
  50. $this->messageManager->addSuccess(__('A total of %1 record(s) were updated.', count($subscribersIds)));
  51. } catch (\Exception $e) {
  52. $this->messageManager->addError($e->getMessage());
  53. }
  54. }
  55. $this->_redirect('*/*/index');
  56. }
  57. }