From 08a8ca4969e037b7c6f20dd97891e556655e17ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tautvidas=20Sipavi=C4=8Dius?= Date: Wed, 18 May 2016 21:27:58 +0300 Subject: [PATCH] Change segments handling for notification newsletters --- lib/Config/Populator.php | 4 ---- lib/Cron/Workers/Scheduler.php | 7 +++++-- lib/Router/SendingQueue.php | 6 +++++- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/lib/Config/Populator.php b/lib/Config/Populator.php index 47729ee726..be4782e318 100644 --- a/lib/Config/Populator.php +++ b/lib/Config/Populator.php @@ -192,10 +192,6 @@ class Populator { array( 'name' => 'schedule', 'newsletter_type' => 'notification', - ), - array( - 'name' => 'segments', - 'newsletter_type' => 'notification', ) ); } diff --git a/lib/Cron/Workers/Scheduler.php b/lib/Cron/Workers/Scheduler.php index cfde202aac..b1d9e069fa 100644 --- a/lib/Cron/Workers/Scheduler.php +++ b/lib/Cron/Workers/Scheduler.php @@ -66,12 +66,15 @@ class Scheduler { } function processPostNotificationNewsletter($newsletter, $queue) { - $segments = unserialize($newsletter->segments); + $segments = $newsletter->segments()->findArray(); if(empty($segments)) { $queue->delete(); return; } - $subscribers = Subscriber::getSubscribedInSegments($segments) + $segment_ids = array_map(function($segment) { + return $segment['id']; + }, $segments); + $subscribers = Subscriber::getSubscribedInSegments($segment_ids) ->findArray(); $subscribers = Helpers::arrayColumn($subscribers, 'subscriber_id'); $subscribers = array_unique($subscribers); diff --git a/lib/Router/SendingQueue.php b/lib/Router/SendingQueue.php index 13837ede49..eefe9fd046 100644 --- a/lib/Router/SendingQueue.php +++ b/lib/Router/SendingQueue.php @@ -88,7 +88,11 @@ class SendingQueue { $message = __('The newsletter has been scheduled.'); } else { - $subscribers = Subscriber::getSubscribedInSegments($data['segments']) + $segments = $newsletter->segments()->findArray(); + $segment_ids = array_map(function($segment) { + return $segment['id']; + }, $segments); + $subscribers = Subscriber::getSubscribedInSegments($segment_ids) ->findArray(); $subscribers = Helpers::arrayColumn($subscribers, 'subscriber_id'); $subscribers = array_unique($subscribers);