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); }