Use dynamic segments for sending queue

[PREMIUM-38]
This commit is contained in:
Pavel Dohnal
2017-10-05 10:43:06 +01:00
parent b7555aa640
commit 0271675cd0
10 changed files with 101 additions and 17 deletions

View File

@ -10,6 +10,7 @@ use MailPoet\Models\Newsletter as NewsletterModel;
use MailPoet\Models\SendingQueue as SendingQueueModel;
use MailPoet\Models\StatisticsNewsletters as StatisticsNewslettersModel;
use MailPoet\Models\Subscriber as SubscriberModel;
use MailPoet\Segments\SubscribersFinder;
if(!defined('ABSPATH')) exit;
@ -51,10 +52,11 @@ class SendingQueue {
foreach($subscriber_batches as $subscribers_to_process_ids) {
if(!empty($newsletter_segments_ids[0])) {
// Check that subscribers are in segments
$found_subscribers = SubscriberModel::findSubscribersInSegments(
$subscribers_to_process_ids, $newsletter_segments_ids
)->findMany();
$found_subscribers_ids = SubscriberModel::extractSubscribersIds($found_subscribers);
$finder = new SubscribersFinder();
$found_subscribers_ids = $finder->findSubscribersInSegments($subscribers_to_process_ids, $newsletter_segments_ids);
$found_subscribers = SubscriberModel::whereIn('id', $subscribers_to_process_ids)
->whereNull('deleted_at')
->findMany();
} else {
// No segments = Welcome emails
$found_subscribers = SubscriberModel::whereIn('id', $subscribers_to_process_ids)