Use WP currentTime when newsletter is duplicated

[MAILPOET-2946]
This commit is contained in:
Jan Lysý
2020-10-22 19:28:14 +02:00
committed by Veljko V
parent 8569d4a86f
commit 3479783588
2 changed files with 13 additions and 6 deletions

View File

@@ -2,7 +2,6 @@
namespace MailPoet\Entities; namespace MailPoet\Entities;
use DateTimeImmutable;
use DateTimeInterface; use DateTimeInterface;
use MailPoet\Doctrine\EntityTraits\AutoincrementedIdTrait; use MailPoet\Doctrine\EntityTraits\AutoincrementedIdTrait;
use MailPoet\Doctrine\EntityTraits\CreatedAtTrait; use MailPoet\Doctrine\EntityTraits\CreatedAtTrait;
@@ -161,10 +160,6 @@ class NewsletterEntity {
public function __clone() { public function __clone() {
// reset ID // reset ID
$this->id = null; $this->id = null;
// reset timestamps
$this->setCreatedAt(new DateTimeImmutable());
$this->setUpdatedAt(new DateTimeImmutable());
$this->setDeletedAt(null);
} }
/** /**

View File

@@ -24,6 +24,7 @@ use MailPoet\Settings\SettingsController;
use MailPoet\UnexpectedValueException; use MailPoet\UnexpectedValueException;
use MailPoet\Util\Security; use MailPoet\Util\Security;
use MailPoet\WP\Emoji; use MailPoet\WP\Emoji;
use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Carbon\Carbon; use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Doctrine\ORM\EntityManager; use MailPoetVendor\Doctrine\ORM\EntityManager;
@@ -64,6 +65,9 @@ class NewsletterSaveController {
/** @var Security */ /** @var Security */
private $security; private $security;
/** @var WPFunctions */
private $wp;
public function __construct( public function __construct(
AuthorizedEmailsController $authorizedEmailsController, AuthorizedEmailsController $authorizedEmailsController,
Emoji $emoji, Emoji $emoji,
@@ -76,7 +80,8 @@ class NewsletterSaveController {
PostNotificationScheduler $postNotificationScheduler, PostNotificationScheduler $postNotificationScheduler,
ScheduledTasksRepository $scheduledTasksRepository, ScheduledTasksRepository $scheduledTasksRepository,
SettingsController $settings, SettingsController $settings,
Security $security Security $security,
WPFunctions $wp
) { ) {
$this->authorizedEmailsController = $authorizedEmailsController; $this->authorizedEmailsController = $authorizedEmailsController;
$this->emoji = $emoji; $this->emoji = $emoji;
@@ -90,6 +95,7 @@ class NewsletterSaveController {
$this->scheduledTasksRepository = $scheduledTasksRepository; $this->scheduledTasksRepository = $scheduledTasksRepository;
$this->settings = $settings; $this->settings = $settings;
$this->security = $security; $this->security = $security;
$this->wp = $wp;
} }
public function save(array $data = []): NewsletterEntity { public function save(array $data = []): NewsletterEntity {
@@ -139,6 +145,12 @@ class NewsletterSaveController {
public function duplicate(NewsletterEntity $newsletter): NewsletterEntity { public function duplicate(NewsletterEntity $newsletter): NewsletterEntity {
$duplicate = clone $newsletter; $duplicate = clone $newsletter;
// reset timestamps
$createdAt = Carbon::createFromTimestamp($this->wp->currentTime('timestamp'));
$duplicate->setCreatedAt($createdAt);
$duplicate->setUpdatedAt($createdAt);
$duplicate->setDeletedAt(null);
$duplicate->setSubject(sprintf(__('Copy of %s', 'mailpoet'), $newsletter->getSubject())); $duplicate->setSubject(sprintf(__('Copy of %s', 'mailpoet'), $newsletter->getSubject()));
// generate new unsubscribe token // generate new unsubscribe token
$duplicate->setUnsubscribeToken($this->security->generateUnsubscribeTokenByEntity($duplicate)); $duplicate->setUnsubscribeToken($this->security->generateUnsubscribeTokenByEntity($duplicate));