From e7698b013192c3b0c66bcbb2cafd68e93068c68c Mon Sep 17 00:00:00 2001 From: Vlad Date: Wed, 15 Feb 2017 10:02:13 -0500 Subject: [PATCH] Optimizes DB query and result processing code --- lib/API/Endpoints/SendingQueue.php | 3 +-- lib/Cron/Workers/Scheduler.php | 7 ++----- lib/Models/Subscriber.php | 3 ++- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/lib/API/Endpoints/SendingQueue.php b/lib/API/Endpoints/SendingQueue.php index 2c17b07c7b..1ec670e818 100644 --- a/lib/API/Endpoints/SendingQueue.php +++ b/lib/API/Endpoints/SendingQueue.php @@ -73,8 +73,7 @@ class SendingQueue extends APIEndpoint { return $segment['id']; }, $segments); $subscribers = Subscriber::getSubscribedInSegments($segment_ids)->findArray(); - $subscribers = Helpers::arrayColumn($subscribers, 'id'); - $subscribers = array_unique($subscribers); + $subscribers = Helpers::flattenArray($subscribers); if(!count($subscribers)) { return $this->errorResponse(array( APIError::UNKNOWN => __('There are no subscribers in that list!', 'mailpoet') diff --git a/lib/Cron/Workers/Scheduler.php b/lib/Cron/Workers/Scheduler.php index ed5bb2fee3..4f7f8929d9 100644 --- a/lib/Cron/Workers/Scheduler.php +++ b/lib/Cron/Workers/Scheduler.php @@ -77,8 +77,7 @@ class Scheduler { // ensure that subscribers are in segments $subscribers = Subscriber::getSubscribedInSegments($segment_ids)->findArray(); - $subscribers = Helpers::arrayColumn($subscribers, 'id'); - $subscribers = array_unique($subscribers); + $subscribers = Helpers::flattenArray($subscribers); if(empty($subscribers)) { return $this->deleteQueueOrUpdateNextRunDate($queue, $newsletter); @@ -107,9 +106,7 @@ class Scheduler { return $segment['id']; }, $segments); $subscribers = Subscriber::getSubscribedInSegments($segment_ids)->findArray(); - $subscribers = Helpers::arrayColumn($subscribers, 'id'); - $subscribers = array_unique($subscribers); - + $subscribers = Helpers::flattenArray($subscribers); // update current queue $queue->subscribers = serialize( array( diff --git a/lib/Models/Subscriber.php b/lib/Models/Subscriber.php index b811d3da63..895bc580d1 100644 --- a/lib/Models/Subscriber.php +++ b/lib/Models/Subscriber.php @@ -450,7 +450,8 @@ class Subscriber extends Model { ) ->select('subscribers.id') ->whereNull('subscribers.deleted_at') - ->where('subscribers.status', 'subscribed'); + ->where('subscribers.status', 'subscribed') + ->distinct(); return $subscribers; }