diff --git a/mailpoet/lib/Newsletter/NewsletterSaveController.php b/mailpoet/lib/Newsletter/NewsletterSaveController.php index c8264e22d5..4f148010c5 100644 --- a/mailpoet/lib/Newsletter/NewsletterSaveController.php +++ b/mailpoet/lib/Newsletter/NewsletterSaveController.php @@ -76,7 +76,7 @@ class NewsletterSaveController { /*** @var NewsletterCoupon */ private $newsletterCoupon; - + public function __construct( AuthorizedEmailsController $authorizedEmailsController, Emoji $emoji, @@ -194,6 +194,16 @@ class NewsletterSaveController { $this->newslettersRepository->persist($duplicate); $this->newslettersRepository->flush(); + // duplicate wp post data + $post = $this->wp->getPost($newsletter->getWpPostId()); + if ($post instanceof \WP_Post) { + $newPostId = $this->wp->wpInsertPost([ + 'post_content' => $post->post_content, // @phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps + 'post_type' => $post->post_type, // @phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps + ]); + $duplicate->setWpPostId($newPostId); + } + // create relationships between duplicate and segments foreach ($newsletter->getNewsletterSegments() as $newsletterSegment) { $segment = $newsletterSegment->getSegment(); diff --git a/mailpoet/tests/integration/Newsletter/NewsletterSaveControllerTest.php b/mailpoet/tests/integration/Newsletter/NewsletterSaveControllerTest.php index d4f8e34a00..02e6599d70 100644 --- a/mailpoet/tests/integration/Newsletter/NewsletterSaveControllerTest.php +++ b/mailpoet/tests/integration/Newsletter/NewsletterSaveControllerTest.php @@ -15,6 +15,7 @@ use MailPoet\Newsletter\Scheduler\Scheduler; use MailPoet\Newsletter\Sending\SendingQueuesRepository; use MailPoet\Settings\SettingsController; use MailPoet\Tasks\Sending as SendingTask; +use MailPoet\WP\Functions as WPFunctions; use MailPoetVendor\Carbon\Carbon; class NewsletterSaveControllerTest extends \MailPoetTest { @@ -314,6 +315,18 @@ class NewsletterSaveControllerTest extends \MailPoetTest { expect($duplicate->getStatus())->equals(NewsletterEntity::STATUS_DRAFT); } + public function testItDuplicatesNewsletterWithAssociatedPost() { + $newsletter = $this->createNewsletter(NewsletterEntity::TYPE_STANDARD, NewsletterEntity::STATUS_SENT); + $wp = $this->diContainer->get(WPFunctions::class); + $postId = $wp->wpInsertPost(['post_content' => 'newsletter content']); + $newsletter->setWpPostId($postId); + $this->entityManager->flush(); + $duplicate = $this->saveController->duplicate($newsletter); + expect($duplicate->getWpPostId())->notEquals($postId); + $post = $wp->getPost($duplicate->getWpPostId()); + expect($post->post_content)->equals('newsletter content'); // @phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps + } + public function testItCreatesNewNewsletter() { $data = [ 'subject' => 'My First Newsletter',