From 9a2d4e83b25c9fe999aa2c76bb7a1a9ced7a7cd6 Mon Sep 17 00:00:00 2001 From: Sam Najian Date: Mon, 23 Jan 2023 12:09:43 +0100 Subject: [PATCH] Change NewsletterCoupon::cleanupSensitiveData signature This change allows passing body array and retuning body array so that NewsletterEntity instance doesn't need to get passed around [MAILPOET-4678] --- mailpoet/lib/Newsletter/NewsletterCoupon.php | 20 ++++++++----------- .../Newsletter/NewsletterSaveController.php | 5 ++++- .../Editor/NewsletterCouponTest.php | 10 ++++------ 3 files changed, 16 insertions(+), 19 deletions(-) diff --git a/mailpoet/lib/Newsletter/NewsletterCoupon.php b/mailpoet/lib/Newsletter/NewsletterCoupon.php index ee838c0945..dac3da2137 100644 --- a/mailpoet/lib/Newsletter/NewsletterCoupon.php +++ b/mailpoet/lib/Newsletter/NewsletterCoupon.php @@ -2,28 +2,24 @@ namespace MailPoet\Newsletter; -use MailPoet\Entities\NewsletterEntity; use MailPoet\Newsletter\Renderer\Blocks\Coupon; class NewsletterCoupon { - public function cleanupSensitiveData(NewsletterEntity $newsletter): NewsletterEntity { - $body = $newsletter->getBody(); - if (!is_array($body) || empty($body['content'])) { - return $newsletter; + public function cleanupBodySensitiveData(array $newsletterBody): array { + + if (!is_array($newsletterBody) || empty($newsletterBody['content'])) { + return $newsletterBody; } - $cleanBlocks = $this->cleanupCouponBlocks($body['content']['blocks']); - $updatedBody = array_merge( - $body, + $cleanBlocks = $this->cleanupCouponBlocks($newsletterBody['content']['blocks']); + return array_merge( + $newsletterBody, [ 'content' => array_merge( - $body['content'], + $newsletterBody['content'], ['blocks' => $cleanBlocks] ), ] ); - - $newsletter->setBody($updatedBody); - return $newsletter; } private function cleanupCouponBlocks(array &$blocks): array { diff --git a/mailpoet/lib/Newsletter/NewsletterSaveController.php b/mailpoet/lib/Newsletter/NewsletterSaveController.php index fd94ca9d81..92a78d547e 100644 --- a/mailpoet/lib/Newsletter/NewsletterSaveController.php +++ b/mailpoet/lib/Newsletter/NewsletterSaveController.php @@ -187,7 +187,10 @@ class NewsletterSaveController { // reset sent at date $duplicate->setSentAt(null); - $duplicate = $this->newsletterCoupon->cleanupSensitiveData($duplicate); + $body = $duplicate->getBody(); + if ($body) { + $duplicate->setBody($this->newsletterCoupon->cleanupBodySensitiveData($body)); + } $this->newslettersRepository->persist($duplicate); $this->newslettersRepository->flush(); diff --git a/mailpoet/tests/unit/Newsletter/Editor/NewsletterCouponTest.php b/mailpoet/tests/unit/Newsletter/Editor/NewsletterCouponTest.php index 6133fd684f..bb9677625a 100644 --- a/mailpoet/tests/unit/Newsletter/Editor/NewsletterCouponTest.php +++ b/mailpoet/tests/unit/Newsletter/Editor/NewsletterCouponTest.php @@ -37,12 +37,10 @@ class NewsletterCouponTest extends \MailPoetUnitTest { 'code' => 'asdasjdkkjaskljdasd', ], ]; - $newsletter->setBody(['content' => ['blocks' => $blocks]]); - $result = $newsletterCoupon->cleanupSensitiveData($newsletter); - $body = (array)$result->getBody(); + $updatedBody = $newsletterCoupon->cleanupBodySensitiveData(['content' => ['blocks' => $blocks]]); $cleanBlock = ['type' => Coupon::TYPE, 'code' => Coupon::CODE_PLACEHOLDER]; - expect($body['content']['blocks'][0]['blocks'][0])->equals($cleanBlock); - expect($body['content']['blocks'][0]['blocks'][1]['blocks'][0])->equals($cleanBlock); - expect($body['content']['blocks'][1])->equals($cleanBlock); + expect($updatedBody['content']['blocks'][0]['blocks'][0])->equals($cleanBlock); + expect($updatedBody['content']['blocks'][0]['blocks'][1]['blocks'][0])->equals($cleanBlock); + expect($updatedBody['content']['blocks'][1])->equals($cleanBlock); } }