Save.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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\Queue;
  8. use Magento\Framework\App\Action\HttpPostActionInterface as HttpPostActionInterface;
  9. class Save extends \Magento\Newsletter\Controller\Adminhtml\Queue implements HttpPostActionInterface
  10. {
  11. /**
  12. * Save Newsletter queue
  13. *
  14. * @throws \Magento\Framework\Exception\LocalizedException
  15. * @return void
  16. * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  17. */
  18. public function execute()
  19. {
  20. try {
  21. /* @var $queue \Magento\Newsletter\Model\Queue */
  22. $queue = $this->_objectManager->create(\Magento\Newsletter\Model\Queue::class);
  23. $templateId = $this->getRequest()->getParam('template_id');
  24. if ($templateId) {
  25. /* @var $template \Magento\Newsletter\Model\Template */
  26. $template = $this->_objectManager->create(\Magento\Newsletter\Model\Template::class)->load($templateId);
  27. if (!$template->getId() || $template->getIsSystem()) {
  28. throw new \Magento\Framework\Exception\LocalizedException(
  29. __('Please correct the newsletter template and try again.')
  30. );
  31. }
  32. $queue->setTemplateId(
  33. $template->getId()
  34. )->setQueueStatus(
  35. \Magento\Newsletter\Model\Queue::STATUS_NEVER
  36. );
  37. } else {
  38. $queue->load($this->getRequest()->getParam('id'));
  39. }
  40. if (!in_array(
  41. $queue->getQueueStatus(),
  42. [\Magento\Newsletter\Model\Queue::STATUS_NEVER, \Magento\Newsletter\Model\Queue::STATUS_PAUSE]
  43. )
  44. ) {
  45. $this->_redirect('*/*');
  46. return;
  47. }
  48. if ($queue->getQueueStatus() == \Magento\Newsletter\Model\Queue::STATUS_NEVER) {
  49. $queue->setQueueStartAtByString($this->getRequest()->getParam('start_at'));
  50. }
  51. $queue->setStores(
  52. $this->getRequest()->getParam('stores', [])
  53. )->setNewsletterSubject(
  54. $this->getRequest()->getParam('subject')
  55. )->setNewsletterSenderName(
  56. $this->getRequest()->getParam('sender_name')
  57. )->setNewsletterSenderEmail(
  58. $this->getRequest()->getParam('sender_email')
  59. )->setNewsletterText(
  60. $this->getRequest()->getParam('text')
  61. )->setNewsletterStyles(
  62. $this->getRequest()->getParam('styles')
  63. );
  64. if ($queue->getQueueStatus() == \Magento\Newsletter\Model\Queue::STATUS_PAUSE
  65. && $this->getRequest()->getParam(
  66. '_resume',
  67. false
  68. )
  69. ) {
  70. $queue->setQueueStatus(\Magento\Newsletter\Model\Queue::STATUS_SENDING);
  71. }
  72. $queue->save();
  73. $this->messageManager->addSuccess(__('You saved the newsletter queue.'));
  74. $this->_getSession()->setFormData(false);
  75. $this->_getSession()->unsPreviewData();
  76. $this->_redirect('*/*');
  77. } catch (\Magento\Framework\Exception\LocalizedException $e) {
  78. $this->messageManager->addError($e->getMessage());
  79. $id = $this->getRequest()->getParam('id');
  80. if ($id) {
  81. $this->_redirect('*/*/edit', ['id' => $id]);
  82. } else {
  83. $this->getResponse()->setRedirect($this->_redirect->getRedirectUrl($this->getUrl('*')));
  84. }
  85. }
  86. }
  87. }