From c26b967e645fea99c79b9a3289d6f35a3a71e351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Jakes=CC=8C?= Date: Wed, 18 Mar 2020 15:07:18 +0100 Subject: [PATCH] Fix segment loading for inconsistent segment/newsletter segment relations [MAILPOET-2729] --- lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php | 2 +- lib/Entities/NewsletterSegmentEntity.php | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php b/lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php index 769383c933..d8cd6a9e2f 100644 --- a/lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php +++ b/lib/API/JSON/ResponseBuilders/NewslettersResponseBuilder.php @@ -145,7 +145,7 @@ class NewslettersResponseBuilder { $output = []; foreach ($newsletter->getNewsletterSegments() as $newsletterSegment) { $segment = $newsletterSegment->getSegment(); - if ($segment->getDeletedAt()) { + if (!$segment || $segment->getDeletedAt()) { continue; } $output[] = $this->buildSegment($segment); diff --git a/lib/Entities/NewsletterSegmentEntity.php b/lib/Entities/NewsletterSegmentEntity.php index a862b54a75..040c940f8d 100644 --- a/lib/Entities/NewsletterSegmentEntity.php +++ b/lib/Entities/NewsletterSegmentEntity.php @@ -4,6 +4,7 @@ namespace MailPoet\Entities; use MailPoet\Doctrine\EntityTraits\AutoincrementedIdTrait; use MailPoet\Doctrine\EntityTraits\CreatedAtTrait; +use MailPoet\Doctrine\EntityTraits\SafeToOneAssociationLoadTrait; use MailPoet\Doctrine\EntityTraits\UpdatedAtTrait; use MailPoetVendor\Doctrine\ORM\Mapping as ORM; @@ -15,6 +16,7 @@ class NewsletterSegmentEntity { use AutoincrementedIdTrait; use CreatedAtTrait; use UpdatedAtTrait; + use SafeToOneAssociationLoadTrait; /** * @ORM\ManyToOne(targetEntity="MailPoet\Entities\NewsletterEntity", inversedBy="newsletter_segments") @@ -32,6 +34,7 @@ class NewsletterSegmentEntity { * @return NewsletterEntity */ public function getNewsletter() { + $this->safelyLoadToOneAssociation('newsletter'); return $this->newsletter; } @@ -43,6 +46,7 @@ class NewsletterSegmentEntity { * @return SegmentEntity */ public function getSegment() { + $this->safelyLoadToOneAssociation('segment'); return $this->segment; }