From dd0a19a314153a0810697d0d3272b0508bbe7bd4 Mon Sep 17 00:00:00 2001 From: Rostislav Wolny Date: Wed, 20 Oct 2021 13:41:00 +0200 Subject: [PATCH] Add BC for importing older exported templates We allow exporting templates as JSON and templates exported from the older plugin versions use thumbnail key for storing the image data. [MAILPOET-2686] --- .../NewsletterTemplatesRepository.php | 7 ++++++- .../NewsletterTemplatesRepositoryTest.php | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/NewsletterTemplates/NewsletterTemplatesRepository.php b/lib/NewsletterTemplates/NewsletterTemplatesRepository.php index 5115bc8c26..7c2a50d8e4 100644 --- a/lib/NewsletterTemplates/NewsletterTemplatesRepository.php +++ b/lib/NewsletterTemplates/NewsletterTemplatesRepository.php @@ -49,7 +49,12 @@ class NewsletterTemplatesRepository extends Repository { } if (isset($data['thumbnail'])) { - $template->setThumbnail($data['thumbnail']); + // Backward compatibility for importing templates exported from older versions + if (strpos($data['thumbnail'], 'data:image') === 0) { + $data['thumbnail_data'] = $data['thumbnail']; + } else { + $template->setThumbnail($data['thumbnail']); + } } if (isset($data['thumbnail_data'])) { diff --git a/tests/integration/NewsletterTemplates/NewsletterTemplatesRepositoryTest.php b/tests/integration/NewsletterTemplates/NewsletterTemplatesRepositoryTest.php index ddee1659fe..9a61427a3b 100644 --- a/tests/integration/NewsletterTemplates/NewsletterTemplatesRepositoryTest.php +++ b/tests/integration/NewsletterTemplates/NewsletterTemplatesRepositoryTest.php @@ -54,6 +54,17 @@ class NewsletterTemplatesRepositoryTest extends \MailPoetTest { expect($templates[0]->getName())->equals('Testing template 5'); } + public function testItCanCreateFromOldDataFormat() { + $createdTemplate = $this->newsletterTemplatesRepository->createOrUpdate([ + 'name' => 'Another template', + 'body' => '{"content": {}, "globalStyles": {}}', + 'thumbnail' => 'data:image/gif;base64,R0lGODlhAQABAAAAACw=', + ]); + expect($createdTemplate->getName())->equals('Another template'); + expect($createdTemplate->getBody())->equals(['content' => [], 'globalStyles' => []]); + expect($createdTemplate->getThumbnailData())->equals('data:image/gif;base64,R0lGODlhAQABAAAAACw='); + } + public function _after() { $this->truncateEntity(NewsletterTemplateEntity::class); }