From 7493a11d665cadf5ea232376a2d56d444c743d06 Mon Sep 17 00:00:00 2001 From: wxa Date: Thu, 9 May 2019 17:43:50 +0300 Subject: [PATCH] Skip deleted segments in SubscribersFinder [MAILPOET-2026] --- lib/Segments/SubscribersFinder.php | 3 +++ tests/integration/Segments/SubscribersFinderTest.php | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/Segments/SubscribersFinder.php b/lib/Segments/SubscribersFinder.php index 5500a4c142..3b8ecc52ba 100644 --- a/lib/Segments/SubscribersFinder.php +++ b/lib/Segments/SubscribersFinder.php @@ -21,6 +21,9 @@ class SubscribersFinder { $result = array(); foreach ($newsletter_segments_ids as $segment_id) { $segment = Segment::findOne($segment_id); + if (!$segment instanceof Segment) { + continue; // skip deleted segments + } $result = array_merge($result, $this->findSubscribersInSegment($segment, $subscribers_to_process_ids)); } return $this->unique($result); diff --git a/tests/integration/Segments/SubscribersFinderTest.php b/tests/integration/Segments/SubscribersFinderTest.php index f3ddc7c837..9a7d0e3d37 100644 --- a/tests/integration/Segments/SubscribersFinderTest.php +++ b/tests/integration/Segments/SubscribersFinderTest.php @@ -56,7 +56,8 @@ class SubscribersFinderTest extends \MailPoetTest { function testFindSubscribersInSegmentInSegmentDefaultSegment() { $finder = new SubscribersFinder(); - $subscribers = $finder->findSubscribersInSegments(array($this->subscriber_2->id), array($this->segment_1->id)); + $deleted_segment_id = 1000; // non-existent segment + $subscribers = $finder->findSubscribersInSegments(array($this->subscriber_2->id), array($this->segment_1->id, $deleted_segment_id)); expect($subscribers)->count(1); expect($subscribers[$this->subscriber_2->id])->equals($this->subscriber_2->id); }