Problem.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Newsletter\Model;
  7. /**
  8. * Newsletter problem model
  9. *
  10. * @method int getSubscriberId()
  11. * @method \Magento\Newsletter\Model\Problem setSubscriberId(int $value)
  12. * @method int getQueueId()
  13. * @method \Magento\Newsletter\Model\Problem setQueueId(int $value)
  14. * @method int getProblemErrorCode()
  15. * @method \Magento\Newsletter\Model\Problem setProblemErrorCode(int $value)
  16. * @method string getProblemErrorText()
  17. * @method \Magento\Newsletter\Model\Problem setProblemErrorText(string $value)
  18. *
  19. * @author Magento Core Team <core@magentocommerce.com>
  20. *
  21. * @api
  22. * @since 100.0.2
  23. */
  24. class Problem extends \Magento\Framework\Model\AbstractModel
  25. {
  26. /**
  27. * Current Subscriber
  28. *
  29. * @var \Magento\Newsletter\Model\Subscriber
  30. */
  31. protected $_subscriber = null;
  32. /**
  33. * Subscriber factory
  34. *
  35. * @var \Magento\Newsletter\Model\SubscriberFactory
  36. */
  37. protected $_subscriberFactory;
  38. /**
  39. * Construct
  40. *
  41. * @param \Magento\Framework\Model\Context $context
  42. * @param \Magento\Framework\Registry $registry
  43. * @param \Magento\Newsletter\Model\SubscriberFactory $subscriberFactory
  44. * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
  45. * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
  46. * @param array $data
  47. */
  48. public function __construct(
  49. \Magento\Framework\Model\Context $context,
  50. \Magento\Framework\Registry $registry,
  51. \Magento\Newsletter\Model\SubscriberFactory $subscriberFactory,
  52. \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
  53. \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
  54. array $data = []
  55. ) {
  56. parent::__construct($context, $registry, $resource, $resourceCollection, $data);
  57. $this->_subscriberFactory = $subscriberFactory;
  58. }
  59. /**
  60. * Initialize Newsletter Problem Model
  61. *
  62. * @return void
  63. */
  64. protected function _construct()
  65. {
  66. $this->_init(\Magento\Newsletter\Model\ResourceModel\Problem::class);
  67. }
  68. /**
  69. * Add Subscriber Data
  70. *
  71. * @param \Magento\Newsletter\Model\Subscriber $subscriber
  72. * @return $this
  73. */
  74. public function addSubscriberData(\Magento\Newsletter\Model\Subscriber $subscriber)
  75. {
  76. $this->setSubscriberId($subscriber->getId());
  77. return $this;
  78. }
  79. /**
  80. * Add Queue Data
  81. *
  82. * @param \Magento\Newsletter\Model\Queue $queue
  83. * @return $this
  84. */
  85. public function addQueueData(\Magento\Newsletter\Model\Queue $queue)
  86. {
  87. $this->setQueueId($queue->getId());
  88. return $this;
  89. }
  90. /**
  91. * Add Error Data
  92. *
  93. * @param \Exception $e
  94. * @return $this
  95. */
  96. public function addErrorData(\Exception $e)
  97. {
  98. $this->setProblemErrorCode($e->getCode());
  99. $this->setProblemErrorText($e->getMessage());
  100. return $this;
  101. }
  102. /**
  103. * Retrieve Subscriber
  104. *
  105. * @return \Magento\Newsletter\Model\Subscriber
  106. */
  107. public function getSubscriber()
  108. {
  109. if (!$this->getSubscriberId()) {
  110. return null;
  111. }
  112. if ($this->_subscriber === null) {
  113. $this->_subscriber = $this->_subscriberFactory->create()->load($this->getSubscriberId());
  114. }
  115. return $this->_subscriber;
  116. }
  117. /**
  118. * Unsubscribe Subscriber
  119. *
  120. * @return $this
  121. */
  122. public function unsubscribe()
  123. {
  124. if ($this->getSubscriber()) {
  125. $this->getSubscriber()->setSubscriberStatus(
  126. \Magento\Newsletter\Model\Subscriber::STATUS_UNSUBSCRIBED
  127. )->setIsStatusChanged(
  128. true
  129. )->save();
  130. }
  131. return $this;
  132. }
  133. }