Set newsletter Entity when stdClass instance given

[MAILPOET-3356]
This commit is contained in:
Jan Lysý
2021-01-07 11:12:35 +01:00
committed by Veljko V
parent 7938c65cda
commit e66ad88146
2 changed files with 15 additions and 2 deletions

View File

@ -6,6 +6,7 @@ use MailPoet\DI\ContainerWrapper;
use MailPoet\Entities\NewsletterEntity; use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\SendingQueueEntity; use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Entities\SubscriberEntity; use MailPoet\Entities\SubscriberEntity;
use MailPoet\Models\Newsletter;
use MailPoet\Models\SendingQueue; use MailPoet\Models\SendingQueue;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
use MailPoet\Newsletter\NewslettersRepository; use MailPoet\Newsletter\NewslettersRepository;
@ -13,8 +14,16 @@ use MailPoet\Newsletter\Sending\SendingQueuesRepository;
use MailPoet\Newsletter\Shortcodes\Shortcodes as NewsletterShortcodes; use MailPoet\Newsletter\Shortcodes\Shortcodes as NewsletterShortcodes;
use MailPoet\Subscribers\SubscribersRepository; use MailPoet\Subscribers\SubscribersRepository;
use MailPoet\Tasks\Sending; use MailPoet\Tasks\Sending;
use stdClass;
class Shortcodes { class Shortcodes {
/**
* @param string $content
* @param string|null $contentSource
* @param stdClass|Newsletter|null $newsletter
* @param Subscriber|null $subscriber
* @param Sending|SendingQueue|null $queue
*/
public static function process($content, $contentSource = null, $newsletter = null, $subscriber = null, $queue = null) { public static function process($content, $contentSource = null, $newsletter = null, $subscriber = null, $queue = null) {
/** @var NewsletterShortcodes $shortcodes */ /** @var NewsletterShortcodes $shortcodes */
$shortcodes = ContainerWrapper::getInstance()->get(NewsletterShortcodes::class); $shortcodes = ContainerWrapper::getInstance()->get(NewsletterShortcodes::class);
@ -35,7 +44,7 @@ class Shortcodes {
} else { } else {
$shortcodes->setQueue(null); $shortcodes->setQueue(null);
} }
if ($newsletter instanceof \MailPoet\Models\Newsletter && $newsletter->id) { if (($newsletter instanceof Newsletter || $newsletter instanceof stdClass) && $newsletter->id) {
$newsletter = $newsletterRepository->findOneById($newsletter->id); $newsletter = $newsletterRepository->findOneById($newsletter->id);
} }
if ($newsletter instanceof NewsletterEntity) { if ($newsletter instanceof NewsletterEntity) {

View File

@ -23,9 +23,13 @@ class ShortcodesTest extends \MailPoetTest {
} }
public function testItCanReplaceShortcodes() { public function testItCanReplaceShortcodes() {
$queue = $newsletter = (object)[ $newsletter = (object)[
'id' => 1, 'id' => 1,
]; ];
$queue = SendingQueue::createOrUpdate([
'task_id' => 1,
'newsletter_id' => 1,
]);
$subscriber = Subscriber::createOrUpdate([ $subscriber = Subscriber::createOrUpdate([
'email' => 'test@xample.com', 'email' => 'test@xample.com',
'first_name' => 'John', 'first_name' => 'John',