Fixed Subscribers' bulk actions when filtering by a segment
- filter by segment is now affected by the selected group (all, trash,...) - updated relationship methods between subscribers & segments (to account for subsegment status)
This commit is contained in:
@ -135,7 +135,7 @@ define(
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
renderStatus: function(item) {
|
renderStatus: function(item) {
|
||||||
if(item.queue === null) {
|
if(item.queue === false) {
|
||||||
return (
|
return (
|
||||||
<span>Not sent yet.</span>
|
<span>Not sent yet.</span>
|
||||||
);
|
);
|
||||||
@ -208,10 +208,8 @@ define(
|
|||||||
'has-row-actions'
|
'has-row-actions'
|
||||||
);
|
);
|
||||||
|
|
||||||
var segments = mailpoet_segments.filter(function(segment) {
|
var segments = newsletter.segments.map(function(segment) {
|
||||||
return (jQuery.inArray(segment.id, newsletter.segments) !== -1);
|
return segment.name
|
||||||
}).map(function(segment) {
|
|
||||||
return segment.name;
|
|
||||||
}).join(', ');
|
}).join(', ');
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -56,6 +56,9 @@ class Initializer {
|
|||||||
\ORM::configure('username', Env::$db_username);
|
\ORM::configure('username', Env::$db_username);
|
||||||
\ORM::configure('password', Env::$db_password);
|
\ORM::configure('password', Env::$db_password);
|
||||||
\ORM::configure('logging', WP_DEBUG);
|
\ORM::configure('logging', WP_DEBUG);
|
||||||
|
\ORM::configure('logger', function($query, $time) {
|
||||||
|
// error_log("\n".$query."\n");
|
||||||
|
});
|
||||||
|
|
||||||
\ORM::configure('driver_options', array(
|
\ORM::configure('driver_options', array(
|
||||||
\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
|
\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
|
||||||
|
@ -93,7 +93,7 @@ class Handler {
|
|||||||
|
|
||||||
return array(
|
return array(
|
||||||
'count' => $count,
|
'count' => $count,
|
||||||
'filters' => $this->model->filter('filters'),
|
'filters' => $this->model->filter('filters', $this->data['group']),
|
||||||
'groups' => $this->model->filter('groups'),
|
'groups' => $this->model->filter('groups'),
|
||||||
'items' => $items
|
'items' => $items
|
||||||
);
|
);
|
||||||
|
@ -110,7 +110,7 @@ class Model extends \Sudzy\ValidModel {
|
|||||||
$total = $orm->count();
|
$total = $orm->count();
|
||||||
|
|
||||||
if($total > 0) {
|
if($total > 0) {
|
||||||
$models = $orm->select('id')
|
$models = $orm->select(static::$_table.'.id')
|
||||||
->offset(null)
|
->offset(null)
|
||||||
->limit(null)
|
->limit(null)
|
||||||
->findArray();
|
->findArray();
|
||||||
|
@ -82,7 +82,7 @@ class Newsletter extends Model {
|
|||||||
return $orm->where_like('subject', '%' . $search . '%');
|
return $orm->where_like('subject', '%' . $search . '%');
|
||||||
}
|
}
|
||||||
|
|
||||||
static function filters() {
|
static function filters($orm, $group = 'all') {
|
||||||
$segments = Segment::orderByAsc('name')->findMany();
|
$segments = Segment::orderByAsc('name')->findMany();
|
||||||
$segment_list = array();
|
$segment_list = array();
|
||||||
$segment_list[] = array(
|
$segment_list[] = array(
|
||||||
@ -91,7 +91,9 @@ class Newsletter extends Model {
|
|||||||
);
|
);
|
||||||
|
|
||||||
foreach($segments as $segment) {
|
foreach($segments as $segment) {
|
||||||
$newsletters_count = $segment->newsletters()->count();
|
$newsletters_count = $segment->newsletters()
|
||||||
|
->filter('groupBy', $group)
|
||||||
|
->count();
|
||||||
if($newsletters_count > 0) {
|
if($newsletters_count > 0) {
|
||||||
$segment_list[] = array(
|
$segment_list[] = array(
|
||||||
'label' => sprintf('%s (%d)', $segment->name, $newsletters_count),
|
'label' => sprintf('%s (%d)', $segment->name, $newsletters_count),
|
||||||
|
@ -35,7 +35,7 @@ class Segment extends Model {
|
|||||||
__NAMESPACE__.'\SubscriberSegment',
|
__NAMESPACE__.'\SubscriberSegment',
|
||||||
'segment_id',
|
'segment_id',
|
||||||
'subscriber_id'
|
'subscriber_id'
|
||||||
);
|
)->where(MP_SUBSCRIBER_SEGMENT_TABLE.'.status', 'subscribed');
|
||||||
}
|
}
|
||||||
|
|
||||||
function duplicate($data = array()) {
|
function duplicate($data = array()) {
|
||||||
|
@ -22,7 +22,7 @@ class Subscriber extends Model {
|
|||||||
__NAMESPACE__.'\SubscriberSegment',
|
__NAMESPACE__.'\SubscriberSegment',
|
||||||
'subscriber_id',
|
'subscriber_id',
|
||||||
'segment_id'
|
'segment_id'
|
||||||
);
|
)->where(MP_SUBSCRIBER_SEGMENT_TABLE.'.status', 'subscribed');
|
||||||
}
|
}
|
||||||
|
|
||||||
function delete() {
|
function delete() {
|
||||||
@ -102,7 +102,7 @@ class Subscriber extends Model {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
static function filters() {
|
static function filters($orm, $group = 'all') {
|
||||||
$segments = Segment::orderByAsc('name')->findMany();
|
$segments = Segment::orderByAsc('name')->findMany();
|
||||||
$segment_list = array();
|
$segment_list = array();
|
||||||
$segment_list[] = array(
|
$segment_list[] = array(
|
||||||
@ -119,8 +119,9 @@ class Subscriber extends Model {
|
|||||||
|
|
||||||
foreach($segments as $segment) {
|
foreach($segments as $segment) {
|
||||||
$subscribers_count = $segment->subscribers()
|
$subscribers_count = $segment->subscribers()
|
||||||
->whereNull('deleted_at')
|
->filter('groupBy', $group)
|
||||||
->count();
|
->count();
|
||||||
|
|
||||||
$segment_list[] = array(
|
$segment_list[] = array(
|
||||||
'label' => sprintf('%s (%d)', $segment->name, $subscribers_count),
|
'label' => sprintf('%s (%d)', $segment->name, $subscribers_count),
|
||||||
'value' => $segment->id()
|
'value' => $segment->id()
|
||||||
|
@ -34,27 +34,6 @@ class SubscriberSegment extends Model {
|
|||||||
return $subscriber;
|
return $subscriber;
|
||||||
}
|
}
|
||||||
|
|
||||||
static function filterWithCustomFields($orm) {
|
|
||||||
$orm = $orm->select(MP_SUBSCRIBERS_TABLE.'.*');
|
|
||||||
$customFields = CustomField::findArray();
|
|
||||||
foreach ($customFields as $customField) {
|
|
||||||
$orm = $orm->select_expr(
|
|
||||||
'CASE WHEN ' .
|
|
||||||
MP_CUSTOM_FIELDS_TABLE . '.id=' . $customField['id'] . ' THEN ' .
|
|
||||||
MP_SUBSCRIBER_CUSTOM_FIELD_TABLE . '.value END as "' . $customField['name'].'"');
|
|
||||||
}
|
|
||||||
$orm = $orm
|
|
||||||
->left_outer_join(
|
|
||||||
MP_SUBSCRIBER_CUSTOM_FIELD_TABLE,
|
|
||||||
array(MP_SUBSCRIBERS_TABLE.'.id', '=',
|
|
||||||
MP_SUBSCRIBER_CUSTOM_FIELD_TABLE.'.subscriber_id'))
|
|
||||||
->left_outer_join(
|
|
||||||
MP_CUSTOM_FIELDS_TABLE,
|
|
||||||
array(MP_CUSTOM_FIELDS_TABLE.'.id','=',
|
|
||||||
MP_SUBSCRIBER_CUSTOM_FIELD_TABLE.'.custom_field_id'));
|
|
||||||
return $orm;
|
|
||||||
}
|
|
||||||
|
|
||||||
static function subscribed($orm) {
|
static function subscribed($orm) {
|
||||||
return $orm->where('status', 'subscribed');
|
return $orm->where('status', 'subscribed');
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user