Process personalization tags in rendered subject
[MAILPOET-6385]
This commit is contained in:
@@ -113,7 +113,10 @@ class NewslettersResponseBuilder {
|
||||
return $data;
|
||||
}
|
||||
|
||||
private function processPersonalizationTags(string $content): string {
|
||||
private function processPersonalizationTags(?string $content): ?string {
|
||||
if (is_null($content) || strlen($content) === 0) {
|
||||
return $content;
|
||||
}
|
||||
if (strpos($content, '<!--') === false) {
|
||||
// we don't need to parse anything if there are no personalization tags
|
||||
return $content;
|
||||
@@ -278,7 +281,7 @@ class NewslettersResponseBuilder {
|
||||
'meta' => $queue->getMeta(),
|
||||
'task_id' => (string)$task->getId(), // (string) for BC
|
||||
'newsletter_id' => ($newsletter = $queue->getNewsletter()) ? (string)$newsletter->getId() : null, // (string) for BC
|
||||
'newsletter_rendered_subject' => $queue->getNewsletterRenderedSubject(),
|
||||
'newsletter_rendered_subject' => $this->processPersonalizationTags($queue->getNewsletterRenderedSubject()),
|
||||
'count_total' => (string)$queue->getCountTotal(), // (string) for BC
|
||||
'count_processed' => (string)$queue->getCountProcessed(), // (string) for BC
|
||||
'count_to_process' => (string)$queue->getCountToProcess(), // (string) for BC
|
||||
|
@@ -5,6 +5,8 @@ namespace MailPoet\API\JSON\ResponseBuilders;
|
||||
use Codeception\Util\Stub;
|
||||
use MailPoet\DI\ContainerWrapper;
|
||||
use MailPoet\Entities\NewsletterEntity;
|
||||
use MailPoet\Entities\ScheduledTaskEntity;
|
||||
use MailPoet\Entities\SendingQueueEntity;
|
||||
use MailPoet\Logging\LogRepository;
|
||||
use MailPoet\Newsletter\NewslettersRepository;
|
||||
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
|
||||
@@ -75,4 +77,23 @@ class NewslettersResponseBuilderTest extends \MailPoetTest {
|
||||
$response = $responseBuilder->buildForListing([$newsletter]);
|
||||
verify($response[0]['subject'])->equals('Hello [mailpoet/subscriber-firstname default="subscriber"]!');
|
||||
}
|
||||
|
||||
public function testItReplacesPersonalizationTagsInSentEmail() {
|
||||
$em = $this->diContainer->get(EntityManager::class);
|
||||
$responseBuilder = $this->diContainer->get(NewslettersResponseBuilder::class);
|
||||
$em->persist($newsletter = new NewsletterEntity);
|
||||
$newsletter->setType(NewsletterEntity::TYPE_STANDARD);
|
||||
$newsletter->setStatus(NewsletterEntity::STATUS_SENT);
|
||||
$newsletter->setSubject('Subject');
|
||||
$em->persist($task = new ScheduledTaskEntity());
|
||||
$em->persist($queue = new SendingQueueEntity());
|
||||
$queue->setNewsletter($newsletter);
|
||||
$queue->setTask($task);
|
||||
$queue->setNewsletterRenderedSubject('Hello <!--[mailpoet/subscriber-firstname default="subscriber"]-->!');
|
||||
$em->flush();
|
||||
$response = $responseBuilder->buildForListing([$newsletter]);
|
||||
/** @var string[] $renderedQueue */
|
||||
$renderedQueue = $response[0]['queue'];
|
||||
verify($renderedQueue['newsletter_rendered_subject'])->equals('Hello [mailpoet/subscriber-firstname default="subscriber"]!');
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user