From c2072ec107dff431edcb6c2181947e26e967f110 Mon Sep 17 00:00:00 2001 From: Rostislav Wolny Date: Thu, 3 Oct 2019 10:49:35 +0200 Subject: [PATCH] Use latest newsletter sending queue in API response [MAILPOET-2428] --- .../ResponseBuilders/NewslettersResponseBuilder.php | 2 +- lib/Entities/NewsletterEntity.php | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php b/lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php index b262952b20..9c7352a831 100644 --- a/lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php +++ b/lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php @@ -29,7 +29,7 @@ class NewslettersResponseBuilder { 'parent_id' => ($parent = $newsletter->getParent()) ? $parent->getId() : null, 'segments' => $this->buildSegments($newsletter), 'options' => $this->buildOptions($newsletter), - 'queue' => ($queue = $newsletter->getQueue()) ? $this->buildQueue($queue) : false, // false for BC + 'queue' => ($queue = $newsletter->getLatestQueue()) ? $this->buildQueue($queue) : false, // false for BC 'unsubscribe_token' => $newsletter->getUnsubscribeToken(), ]; } diff --git a/lib/Entities/NewsletterEntity.php b/lib/Entities/NewsletterEntity.php index bd43634216..084c8c277a 100644 --- a/lib/Entities/NewsletterEntity.php +++ b/lib/Entities/NewsletterEntity.php @@ -9,6 +9,7 @@ use MailPoet\Doctrine\EntityTraits\DeletedAtTrait; use MailPoet\Doctrine\EntityTraits\UpdatedAtTrait; use MailPoetVendor\Doctrine\Common\Collections\ArrayCollection; use MailPoetVendor\Doctrine\Common\Collections\Collection; +use MailPoetVendor\Doctrine\Common\Collections\Criteria; use MailPoetVendor\Doctrine\ORM\EntityNotFoundException; use MailPoetVendor\Doctrine\ORM\Mapping\Column; @@ -352,9 +353,12 @@ class NewsletterEntity { } /** - * @param SendingQueueEntity|null $queue + * @return SendingQueueEntity|null */ - function setQueue($queue) { - $this->queue = $queue; + function getLatestQueue() { + $criteria = new Criteria(); + $criteria->orderBy(['id' => Criteria::DESC]); + $criteria->setMaxResults(1); + return $this->queues->matching($criteria)->first() ?: null; } }