added segment stats in listing
This commit is contained in:
@@ -160,7 +160,7 @@ define(
|
|||||||
<Listing
|
<Listing
|
||||||
messages={ messages }
|
messages={ messages }
|
||||||
search={ false }
|
search={ false }
|
||||||
limit={ 0 }
|
limit={ 1000 }
|
||||||
endpoint="segments"
|
endpoint="segments"
|
||||||
onRenderItem={ this.renderItem }
|
onRenderItem={ this.renderItem }
|
||||||
columns={ columns }
|
columns={ columns }
|
||||||
|
@@ -71,10 +71,6 @@ class Handler {
|
|||||||
return $this->model;
|
return $this->model;
|
||||||
}
|
}
|
||||||
|
|
||||||
function count() {
|
|
||||||
return (int)$this->model->count();
|
|
||||||
}
|
|
||||||
|
|
||||||
function getSelectionIds() {
|
function getSelectionIds() {
|
||||||
$models = $this->getSelection()
|
$models = $this->getSelection()
|
||||||
->select('id')
|
->select('id')
|
||||||
@@ -86,18 +82,15 @@ class Handler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function get() {
|
function get() {
|
||||||
$items = $this->model;
|
$count = $this->model->count();
|
||||||
if($this->data['limit'] > 0) {
|
|
||||||
$items = $items
|
$items = $this->model
|
||||||
->offset($this->data['offset'])
|
->offset($this->data['offset'])
|
||||||
->limit($this->data['limit'])
|
->limit($this->data['limit'])
|
||||||
->findArray();
|
->findArray();
|
||||||
} else {
|
|
||||||
$items = $items->findArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
'count' => $this->model->count(),
|
'count' => $count,
|
||||||
'filters' => $this->model->filter('filters'),
|
'filters' => $this->model->filter('filters'),
|
||||||
'groups' => $this->model->filter('groups'),
|
'groups' => $this->model->filter('groups'),
|
||||||
'items' => $items
|
'items' => $items
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace MailPoet\Router;
|
namespace MailPoet\Router;
|
||||||
use \MailPoet\Models\Segment;
|
use \MailPoet\Models\Segment;
|
||||||
|
use \MailPoet\Models\SubscriberSegment;
|
||||||
use \MailPoet\Listing;
|
use \MailPoet\Listing;
|
||||||
|
|
||||||
if(!defined('ABSPATH')) exit;
|
if(!defined('ABSPATH')) exit;
|
||||||
@@ -25,7 +26,39 @@ class Segments {
|
|||||||
'\MailPoet\Models\Segment',
|
'\MailPoet\Models\Segment',
|
||||||
$data
|
$data
|
||||||
);
|
);
|
||||||
wp_send_json($listing->get());
|
|
||||||
|
$listing_data = $listing->get();
|
||||||
|
|
||||||
|
// fetch segments relations for each returned item
|
||||||
|
foreach($listing_data['items'] as &$item) {
|
||||||
|
$stats = SubscriberSegment::table_alias('relation')
|
||||||
|
->where(
|
||||||
|
'relation.segment_id',
|
||||||
|
$item['id']
|
||||||
|
)
|
||||||
|
->join(
|
||||||
|
MP_SUBSCRIBERS_TABLE,
|
||||||
|
'subscribers.id = relation.subscriber_id',
|
||||||
|
'subscribers'
|
||||||
|
)
|
||||||
|
->select_expr(
|
||||||
|
'SUM(CASE status WHEN "subscribed" THEN 1 ELSE 0 END)',
|
||||||
|
'subscribed'
|
||||||
|
)
|
||||||
|
->select_expr(
|
||||||
|
'SUM(CASE status WHEN "unsubscribed" THEN 1 ELSE 0 END)',
|
||||||
|
'unsubscribed'
|
||||||
|
)
|
||||||
|
->select_expr(
|
||||||
|
'SUM(CASE status WHEN "unconfirmed" THEN 1 ELSE 0 END)',
|
||||||
|
'unconfirmed'
|
||||||
|
)
|
||||||
|
->findOne()->asArray();
|
||||||
|
|
||||||
|
$item = array_merge($item, $stats);
|
||||||
|
}
|
||||||
|
|
||||||
|
wp_send_json($listing_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getAll() {
|
function getAll() {
|
||||||
|
@@ -32,12 +32,12 @@ class Subscribers {
|
|||||||
|
|
||||||
// fetch segments relations for each returned item
|
// fetch segments relations for each returned item
|
||||||
foreach($listing_data['items'] as &$item) {
|
foreach($listing_data['items'] as &$item) {
|
||||||
$segments = SubscriberSegment::select('segment_id')
|
$relations = SubscriberSegment::select('segment_id')
|
||||||
->where('subscriber_id', $item['id'])
|
->where('subscriber_id', $item['id'])
|
||||||
->findMany();
|
->findMany();
|
||||||
$item['segments'] = array_map(function($relation) {
|
$item['segments'] = array_map(function($relation) {
|
||||||
return $relation->segment_id;
|
return $relation->segment_id;
|
||||||
}, $segments);
|
}, $relations);
|
||||||
}
|
}
|
||||||
|
|
||||||
wp_send_json($listing_data);
|
wp_send_json($listing_data);
|
||||||
|
Reference in New Issue
Block a user