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\SendingQueueEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Models\Newsletter;
use MailPoet\Models\SendingQueue;
use MailPoet\Models\Subscriber;
use MailPoet\Newsletter\NewslettersRepository;
@ -13,8 +14,16 @@ use MailPoet\Newsletter\Sending\SendingQueuesRepository;
use MailPoet\Newsletter\Shortcodes\Shortcodes as NewsletterShortcodes;
use MailPoet\Subscribers\SubscribersRepository;
use MailPoet\Tasks\Sending;
use stdClass;
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) {
/** @var NewsletterShortcodes $shortcodes */
$shortcodes = ContainerWrapper::getInstance()->get(NewsletterShortcodes::class);
@ -35,7 +44,7 @@ class Shortcodes {
} else {
$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);
}
if ($newsletter instanceof NewsletterEntity) {

View File

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