Skip to content

Commit a12e731

Browse files
author
Oleksii Korshenko
authored
MAGETWO-83257: #4004: Newsletter Subscriber create-date not set, and change_status_at broken #11879
2 parents c896f2c + 60a698d commit a12e731

File tree

1 file changed

+28
-3
lines changed

1 file changed

+28
-3
lines changed

app/code/Magento/Newsletter/Model/Subscriber.php

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77

88
use Magento\Customer\Api\AccountManagementInterface;
99
use Magento\Customer\Api\CustomerRepositoryInterface;
10+
use Magento\Framework\App\ObjectManager;
1011
use Magento\Framework\Exception\MailException;
1112
use Magento\Framework\Exception\NoSuchEntityException;
13+
use Magento\Framework\Stdlib\DateTime\DateTime;
1214

1315
/**
1416
* Subscriber model
@@ -94,6 +96,12 @@ class Subscriber extends \Magento\Framework\Model\AbstractModel
9496
*/
9597
protected $_customerSession;
9698

99+
/**
100+
* Date
101+
* @var DateTime
102+
*/
103+
private $dateTime;
104+
97105
/**
98106
* Store manager
99107
*
@@ -134,9 +142,10 @@ class Subscriber extends \Magento\Framework\Model\AbstractModel
134142
* @param CustomerRepositoryInterface $customerRepository
135143
* @param AccountManagementInterface $customerAccountManagement
136144
* @param \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation
137-
* @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
138-
* @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
145+
* @param \Magento\Framework\Model\ResourceModel\AbstractResource|null $resource
146+
* @param \Magento\Framework\Data\Collection\AbstractDb|null $resourceCollection
139147
* @param array $data
148+
* @param DateTime|null $dateTime
140149
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
141150
*/
142151
public function __construct(
@@ -152,7 +161,8 @@ public function __construct(
152161
\Magento\Framework\Translate\Inline\StateInterface $inlineTranslation,
153162
\Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
154163
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
155-
array $data = []
164+
array $data = [],
165+
DateTime $dateTime = null
156166
) {
157167
$this->_newsletterData = $newsletterData;
158168
$this->_scopeConfig = $scopeConfig;
@@ -162,6 +172,7 @@ public function __construct(
162172
$this->customerRepository = $customerRepository;
163173
$this->customerAccountManagement = $customerAccountManagement;
164174
$this->inlineTranslation = $inlineTranslation;
175+
$this->dateTime = $dateTime ?: ObjectManager::getInstance()->get(DateTime::class);
165176
parent::__construct($context, $registry, $resource, $resourceCollection, $data);
166177
}
167178

@@ -810,4 +821,18 @@ public function getSubscriberFullName()
810821
}
811822
return $name;
812823
}
824+
825+
/**
826+
* Set date of last changed status
827+
*
828+
* @return $this
829+
*/
830+
public function beforeSave()
831+
{
832+
parent::beforeSave();
833+
if ($this->dataHasChangedFor('subscriber_status')) {
834+
$this->setChangeStatusAt($this->dateTime->gmtDate());
835+
}
836+
return $this;
837+
}
813838
}

0 commit comments

Comments
 (0)