From 2d45ab2e8891ea0707416f751669e37d6229e8b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tautvidas=20Sipavi=C4=8Dius?= Date: Tue, 14 Jun 2016 17:52:12 +0300 Subject: [PATCH] Add WP user segment selection to Notification and Standard newsletters --- .../src/newsletters/types/welcome/scheduling.jsx | 9 +++++++-- lib/Config/Menu.php | 2 +- lib/Models/Segment.php | 16 ++++++++++------ 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/assets/js/src/newsletters/types/welcome/scheduling.jsx b/assets/js/src/newsletters/types/welcome/scheduling.jsx index 8c789878c9..f552e2f3d0 100644 --- a/assets/js/src/newsletters/types/welcome/scheduling.jsx +++ b/assets/js/src/newsletters/types/welcome/scheduling.jsx @@ -9,7 +9,12 @@ import { } from 'newsletters/scheduling/common.jsx' const availableRoles = window.mailpoet_roles || {}; -const availableSegments = window.mailpoet_segments || {}; +const availableSegments = _.filter( + window.mailpoet_segments || [], + function (segment) { + return segment.type === 'default'; + } +); const events = { name: 'event', @@ -171,4 +176,4 @@ const WelcomeScheduling = React.createClass({ }, }); -module.exports = WelcomeScheduling; \ No newline at end of file +module.exports = WelcomeScheduling; diff --git a/lib/Config/Menu.php b/lib/Config/Menu.php index 9f437970d8..bd115dd044 100644 --- a/lib/Config/Menu.php +++ b/lib/Config/Menu.php @@ -383,7 +383,7 @@ class Menu { $data = array(); $data['items_per_page'] = $this->getLimitPerPage('newsletters'); - $data['segments'] = Segment::getPublished()->findArray(); + $data['segments'] = Segment::getSegmentsWithSubscriberCount($type = false); $data['settings'] = Setting::getAll(); $data['roles'] = $wp_roles->get_names(); $data['roles']['mailpoet_all'] = __('In any WordPress role'); diff --git a/lib/Models/Segment.php b/lib/Models/Segment.php index eec5569300..f161e5f637 100644 --- a/lib/Models/Segment.php +++ b/lib/Models/Segment.php @@ -139,8 +139,8 @@ class Segment extends Model { return $orm; } - static function getSegmentsWithSubscriberCount() { - return self::selectMany(array(self::$_table.'.id', self::$_table.'.name')) + static function getSegmentsWithSubscriberCount($type = 'default') { + $query = self::selectMany(array(self::$_table.'.id', self::$_table.'.name')) ->selectExpr( self::$_table.'.*, ' . 'COUNT(IF('.MP_SUBSCRIBER_SEGMENT_TABLE.'.status="' . Subscriber::STATUS_SUBSCRIBED .'" AND '.MP_SUBSCRIBERS_TABLE.'.deleted_at IS NULL,1,NULL)) `subscribers`' @@ -154,9 +154,13 @@ class Segment extends Model { ->groupBy(self::$_table.'.id') ->groupBy(self::$_table.'.name') ->orderByAsc(self::$_table.'.name') - ->where(self::$_table.'.type', 'default') - ->whereNull(self::$_table.'.deleted_at') - ->findArray(); + ->whereNull(self::$_table.'.deleted_at'); + + if (!empty($type)) { + $query->where(self::$_table.'.type', $type); + } + + return $query->findArray(); } static function getSegmentsForExport($withConfirmedSubscribers = false) { @@ -226,4 +230,4 @@ class Segment extends Model { ->deleteMany(); }); } -} \ No newline at end of file +}