fix bulk actions and messages

This commit is contained in:
Jonathan Labreuille
2016-09-06 17:21:15 +02:00
parent f650455a90
commit 4a72995bf4
17 changed files with 207 additions and 175 deletions

View File

@ -27,48 +27,48 @@ const columns = [
]; ];
const messages = { const messages = {
onTrash: function(response) { onTrash: (response) => {
var count = ~~response; const count = ~~response.meta.count;
var message = null; let message = null;
if(count === 1) { if (count === 1) {
message = ( message = (
MailPoet.I18n.t('oneFormTrashed') MailPoet.I18n.t('oneFormTrashed')
); );
} else { } else {
message = ( message = (
MailPoet.I18n.t('multipleFormsTrashed') MailPoet.I18n.t('multipleFormsTrashed')
).replace('%$1d', count); ).replace('%$1d', count.toLocaleString());
} }
MailPoet.Notice.success(message); MailPoet.Notice.success(message);
}, },
onDelete: function(response) { onDelete: (response) => {
var count = ~~response; const count = ~~response.meta.count;
var message = null; let message = null;
if(count === 1) { if (count === 1) {
message = ( message = (
MailPoet.I18n.t('oneFormDeleted') MailPoet.I18n.t('oneFormDeleted')
); );
} else { } else {
message = ( message = (
MailPoet.I18n.t('multipleFormsDeleted') MailPoet.I18n.t('multipleFormsDeleted')
).replace('%$1d', count); ).replace('%$1d', count.toLocaleString());
} }
MailPoet.Notice.success(message); MailPoet.Notice.success(message);
}, },
onRestore: function(response) { onRestore: (response) => {
var count = ~~response; const count = ~~response.meta.count;
var message = null; let message = null;
if(count === 1) { if (count === 1) {
message = ( message = (
MailPoet.I18n.t('oneFormRestored') MailPoet.I18n.t('oneFormRestored')
); );
} else { } else {
message = ( message = (
MailPoet.I18n.t('multipleFormsRestored') MailPoet.I18n.t('multipleFormsRestored')
).replace('%$1d', count); ).replace('%$1d', count.toLocaleString());
} }
MailPoet.Notice.success(message); MailPoet.Notice.success(message);
} }

View File

@ -53,7 +53,10 @@ function(
} }
if(data.action) { if(data.action) {
this.props.onBulkAction(selected_ids, data).then(onSuccess); const promise = this.props.onBulkAction(selected_ids, data);
if (promise !== false) {
promise.then(onSuccess);
};
} }
this.setState({ this.setState({

View File

@ -577,7 +577,7 @@ const Listing = React.createClass({
&& this.state.selected_ids.length === 0 && this.state.selected_ids.length === 0
&& selected_ids !== 'all' && selected_ids !== 'all'
) { ) {
return; return false;
} }
this.setState({ loading: true }); this.setState({ loading: true });

View File

@ -17,8 +17,8 @@ import {
} from 'newsletters/scheduling/common.jsx' } from 'newsletters/scheduling/common.jsx'
const messages = { const messages = {
onTrash(response) { onTrash: (response) => {
const count = ~~response; const count = ~~response.meta.count;
let message = null; let message = null;
if (count === 1) { if (count === 1) {
@ -28,12 +28,12 @@ const messages = {
} else { } else {
message = ( message = (
MailPoet.I18n.t('multipleNewslettersTrashed') MailPoet.I18n.t('multipleNewslettersTrashed')
).replace('%$1d', count); ).replace('%$1d', count.toLocaleString());
} }
MailPoet.Notice.success(message); MailPoet.Notice.success(message);
}, },
onDelete(response) { onDelete: (response) => {
const count = ~~response; const count = ~~response.meta.count;
let message = null; let message = null;
if (count === 1) { if (count === 1) {
@ -43,12 +43,12 @@ const messages = {
} else { } else {
message = ( message = (
MailPoet.I18n.t('multipleNewslettersDeleted') MailPoet.I18n.t('multipleNewslettersDeleted')
).replace('%$1d', count); ).replace('%$1d', count.toLocaleString());
} }
MailPoet.Notice.success(message); MailPoet.Notice.success(message);
}, },
onRestore(response) { onRestore: (response) => {
const count = ~~response; const count = ~~response.meta.count;
let message = null; let message = null;
if (count === 1) { if (count === 1) {
@ -58,7 +58,7 @@ const messages = {
} else { } else {
message = ( message = (
MailPoet.I18n.t('multipleNewslettersRestored') MailPoet.I18n.t('multipleNewslettersRestored')
).replace('%$1d', count); ).replace('%$1d', count.toLocaleString());
} }
MailPoet.Notice.success(message); MailPoet.Notice.success(message);
} }
@ -127,16 +127,23 @@ const newsletter_actions = [
return MailPoet.Ajax.post({ return MailPoet.Ajax.post({
endpoint: 'newsletters', endpoint: 'newsletters',
action: 'duplicate', action: 'duplicate',
data: newsletter.id data: {
}).done(function(response) { id: newsletter.id
if (response !== false && response.subject !== undefined) { }
MailPoet.Notice.success( }).done((response) => {
(MailPoet.I18n.t('newsletterDuplicated')).replace( MailPoet.Notice.success(
'%$1s', response.subject (MailPoet.I18n.t('newsletterDuplicated')).replace(
) '%$1s', response.data.subject
)
);
refresh();
}).fail((response) => {
if (response.errors.length > 0) {
MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }),
{ scroll: true }
); );
} }
refresh();
}); });
} }
}, },

View File

@ -12,8 +12,8 @@ import { QueueMixin, StatisticsMixin } from 'newsletters/listings/mixins.jsx'
const mailpoet_tracking_enabled = (!!(window['mailpoet_tracking_enabled'])); const mailpoet_tracking_enabled = (!!(window['mailpoet_tracking_enabled']));
const messages = { const messages = {
onTrash(response) { onTrash: (response) => {
const count = ~~response; const count = ~~response.meta.count;
let message = null; let message = null;
if (count === 1) { if (count === 1) {
@ -23,12 +23,12 @@ const messages = {
} else { } else {
message = ( message = (
MailPoet.I18n.t('multipleNewslettersTrashed') MailPoet.I18n.t('multipleNewslettersTrashed')
).replace('%$1d', count); ).replace('%$1d', count.toLocaleString());
} }
MailPoet.Notice.success(message); MailPoet.Notice.success(message);
}, },
onDelete(response) { onDelete: (response) => {
const count = ~~response; const count = ~~response.meta.count;
let message = null; let message = null;
if (count === 1) { if (count === 1) {
@ -38,12 +38,12 @@ const messages = {
} else { } else {
message = ( message = (
MailPoet.I18n.t('multipleNewslettersDeleted') MailPoet.I18n.t('multipleNewslettersDeleted')
).replace('%$1d', count); ).replace('%$1d', count.toLocaleString());
} }
MailPoet.Notice.success(message); MailPoet.Notice.success(message);
}, },
onRestore(response) { onRestore: (response) => {
const count = ~~response; const count = ~~response.meta.count;
let message = null; let message = null;
if (count === 1) { if (count === 1) {
@ -53,7 +53,7 @@ const messages = {
} else { } else {
message = ( message = (
MailPoet.I18n.t('multipleNewslettersRestored') MailPoet.I18n.t('multipleNewslettersRestored')
).replace('%$1d', count); ).replace('%$1d', count.toLocaleString());
} }
MailPoet.Notice.success(message); MailPoet.Notice.success(message);
} }
@ -122,16 +122,23 @@ const newsletter_actions = [
return MailPoet.Ajax.post({ return MailPoet.Ajax.post({
endpoint: 'newsletters', endpoint: 'newsletters',
action: 'duplicate', action: 'duplicate',
data: newsletter.id data: {
}).done(function(response) { id: newsletter.id
if (response !== false && response.subject !== undefined) { }
MailPoet.Notice.success( }).done((response) => {
(MailPoet.I18n.t('newsletterDuplicated')).replace( MailPoet.Notice.success(
'%$1s', response.subject (MailPoet.I18n.t('newsletterDuplicated')).replace(
) '%$1s', response.data.subject
)
);
refresh();
}).fail((response) => {
if (response.errors.length > 0) {
MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }),
{ scroll: true }
); );
} }
refresh();
}); });
} }
}, },

View File

@ -15,8 +15,8 @@ const mailpoet_segments = window.mailpoet_segments || {};
const mailpoet_tracking_enabled = (!!(window['mailpoet_tracking_enabled'])); const mailpoet_tracking_enabled = (!!(window['mailpoet_tracking_enabled']));
const messages = { const messages = {
onTrash(response) { onTrash: (response) => {
const count = ~~response; const count = ~~response.meta.count;
let message = null; let message = null;
if (count === 1) { if (count === 1) {
@ -26,12 +26,12 @@ const messages = {
} else { } else {
message = ( message = (
MailPoet.I18n.t('multipleNewslettersTrashed') MailPoet.I18n.t('multipleNewslettersTrashed')
).replace('%$1d', count); ).replace('%$1d', count.toLocaleString());
} }
MailPoet.Notice.success(message); MailPoet.Notice.success(message);
}, },
onDelete(response) { onDelete: (response) => {
const count = ~~response; const count = ~~response.meta.count;
let message = null; let message = null;
if (count === 1) { if (count === 1) {
@ -41,12 +41,12 @@ const messages = {
} else { } else {
message = ( message = (
MailPoet.I18n.t('multipleNewslettersDeleted') MailPoet.I18n.t('multipleNewslettersDeleted')
).replace('%$1d', count); ).replace('%$1d', count.toLocaleString());
} }
MailPoet.Notice.success(message); MailPoet.Notice.success(message);
}, },
onRestore(response) { onRestore: (response) => {
const count = ~~response; const count = ~~response.meta.count;
let message = null; let message = null;
if (count === 1) { if (count === 1) {
@ -56,7 +56,7 @@ const messages = {
} else { } else {
message = ( message = (
MailPoet.I18n.t('multipleNewslettersRestored') MailPoet.I18n.t('multipleNewslettersRestored')
).replace('%$1d', count); ).replace('%$1d', count.toLocaleString());
} }
MailPoet.Notice.success(message); MailPoet.Notice.success(message);
} }
@ -125,16 +125,23 @@ const newsletter_actions = [
return MailPoet.Ajax.post({ return MailPoet.Ajax.post({
endpoint: 'newsletters', endpoint: 'newsletters',
action: 'duplicate', action: 'duplicate',
data: newsletter.id data: {
}).done(function(response) { id: newsletter.id
if (response !== false && response.subject !== undefined) { }
MailPoet.Notice.success( }).done((response) => {
(MailPoet.I18n.t('newsletterDuplicated')).replace( MailPoet.Notice.success(
'%$1s', response.subject (MailPoet.I18n.t('newsletterDuplicated')).replace(
) '%$1s', response.data.subject
)
);
refresh();
}).fail((response) => {
if (response.errors.length > 0) {
MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }),
{ scroll: true }
); );
} }
refresh();
}); });
} }
}, },

View File

@ -113,17 +113,16 @@ const WelcomeScheduling = React.createClass({
type: 'welcome', type: 'welcome',
options: this.state options: this.state
} }
}).done(function(response) { }).done((response) => {
if (response.result && response.newsletter.id) { this.showTemplateSelection(response.data.id);
this.showTemplateSelection(response.newsletter.id); }).fail((response) => {
} else {
if (response.errors.length > 0) { if (response.errors.length > 0) {
response.errors.map(function(error) { MailPoet.Notice.error(
MailPoet.Notice.error(error); response.errors.map(function(error) { return error.message; }),
}); { scroll: true }
);
} }
} });
}.bind(this));
}, },
showTemplateSelection: function(newsletterId) { showTemplateSelection: function(newsletterId) {
this.context.router.push(`/template/${ newsletterId }`); this.context.router.push(`/template/${ newsletterId }`);

View File

@ -57,18 +57,17 @@ define(
data: _.extend({}, this.state, { data: _.extend({}, this.state, {
type: 'welcome', type: 'welcome',
subject: MailPoet.I18n.t('draftNewsletterTitle'), subject: MailPoet.I18n.t('draftNewsletterTitle'),
}), })
}).done(function(response) { }).done((response) => {
if(response.result && response.newsletter.id) { this.showTemplateSelection(response.data.id);
this.showTemplateSelection(response.newsletter.id); }).fail((response) => {
} else { if (response.errors.length > 0) {
if(response.errors.length > 0) { MailPoet.Notice.error(
response.errors.map(function(error) { response.errors.map(function(error) { return error.message; }),
MailPoet.Notice.error(error); { scroll: true }
}); );
}
} }
}.bind(this)); });
}, },
showTemplateSelection: function(newsletterId) { showTemplateSelection: function(newsletterId) {
this.context.router.push(`/template/${newsletterId}`); this.context.router.push(`/template/${newsletterId}`);

View File

@ -37,7 +37,7 @@ var columns = [
const messages = { const messages = {
onTrash: (response) => { onTrash: (response) => {
let count = ~~response.meta.count; const count = ~~response.meta.count;
let message = null; let message = null;
if (count === 1) { if (count === 1) {
@ -47,12 +47,12 @@ const messages = {
} else { } else {
message = ( message = (
MailPoet.I18n.t('multipleSegmentsTrashed') MailPoet.I18n.t('multipleSegmentsTrashed')
).replace('%$1d', count); ).replace('%$1d', count.toLocaleString());
} }
MailPoet.Notice.success(message); MailPoet.Notice.success(message);
}, },
onDelete: (response) => { onDelete: (response) => {
let count = ~~response.meta.count; const count = ~~response.meta.count;
let message = null; let message = null;
if (count === 1) { if (count === 1) {
@ -62,12 +62,12 @@ const messages = {
} else { } else {
message = ( message = (
MailPoet.I18n.t('multipleSegmentsDeleted') MailPoet.I18n.t('multipleSegmentsDeleted')
).replace('%$1d', count); ).replace('%$1d', count.toLocaleString());
} }
MailPoet.Notice.success(message); MailPoet.Notice.success(message);
}, },
onRestore: (response) => { onRestore: (response) => {
let count = ~~response.meta.count; const count = ~~response.meta.count;
let message = null; let message = null;
if (count === 1) { if (count === 1) {
@ -77,7 +77,7 @@ const messages = {
} else { } else {
message = ( message = (
MailPoet.I18n.t('multipleSegmentsRestored') MailPoet.I18n.t('multipleSegmentsRestored')
).replace('%$1d', count); ).replace('%$1d', count.toLocaleString());
} }
MailPoet.Notice.success(message); MailPoet.Notice.success(message);
} }

View File

@ -37,59 +37,50 @@ const columns = [
]; ];
const messages = { const messages = {
onTrash: function(response) { onTrash: (response) => {
if (response) { const count = ~~response.meta.count;
var message = null; let message = null;
if (~~response === 1) {
message = (
MailPoet.I18n.t('oneSubscriberTrashed')
);
} else if (~~response > 1) {
message = (
MailPoet.I18n.t('multipleSubscribersTrashed')
).replace('%$1d', (~~response).toLocaleString());
}
if (message !== null) { if (count === 1) {
MailPoet.Notice.success(message); message = (
} MailPoet.I18n.t('oneSubscriberTrashed')
);
} else {
message = (
MailPoet.I18n.t('multipleSubscribersTrashed')
).replace('%$1d', count.toLocaleString());
} }
MailPoet.Notice.success(message);
}, },
onDelete: function(response) { onDelete: (response) => {
if (response) { const count = ~~response.meta.count;
var message = null; let message = null;
if (~~response === 1) {
message = (
MailPoet.I18n.t('oneSubscriberDeleted')
);
} else if (~~response > 1) {
message = (
MailPoet.I18n.t('multipleSubscribersDeleted')
).replace('%$1d', ~~response);
}
if (message !== null) { if (count === 1) {
MailPoet.Notice.success(message); message = (
} MailPoet.I18n.t('oneSubscriberDeleted')
);
} else {
message = (
MailPoet.I18n.t('multipleSubscribersDeleted')
).replace('%$1d', count.toLocaleString());
} }
MailPoet.Notice.success(message);
}, },
onRestore: function(response) { onRestore: (response) => {
if (response) { const count = ~~response.meta.count;
var message = null; let message = null;
if (~~response === 1) {
message = (
MailPoet.I18n.t('oneSubscriberRestored')
);
} else if (~~response > 1) {
message = (
MailPoet.I18n.t('multipleSubscribersRestored')
).replace('%$1d', (~~response).toLocaleString());
}
if (message !== null) { if (count === 1) {
MailPoet.Notice.success(message); message = (
} MailPoet.I18n.t('oneSubscriberRestored')
);
} else {
message = (
MailPoet.I18n.t('multipleSubscribersRestored')
).replace('%$1d', count.toLocaleString());
} }
MailPoet.Notice.success(message);
} }
}; };
@ -120,8 +111,8 @@ const bulk_actions = [
onSuccess: function(response) { onSuccess: function(response) {
MailPoet.Notice.success( MailPoet.Notice.success(
MailPoet.I18n.t('multipleSubscribersMovedToList') MailPoet.I18n.t('multipleSubscribersMovedToList')
.replace('%$1d', (~~(response.subscribers)).toLocaleString()) .replace('%$1d', (~~(response.meta.count)).toLocaleString())
.replace('%$2s', response.segment) .replace('%$2s', response.meta.segment)
); );
} }
}, },
@ -151,8 +142,8 @@ const bulk_actions = [
onSuccess: function(response) { onSuccess: function(response) {
MailPoet.Notice.success( MailPoet.Notice.success(
MailPoet.I18n.t('multipleSubscribersAddedToList') MailPoet.I18n.t('multipleSubscribersAddedToList')
.replace('%$1d', (~~response.subscribers).toLocaleString()) .replace('%$1d', (~~response.meta.count).toLocaleString())
.replace('%$2s', response.segment) .replace('%$2s', response.meta.segment)
); );
} }
}, },
@ -182,8 +173,8 @@ const bulk_actions = [
onSuccess: function(response) { onSuccess: function(response) {
MailPoet.Notice.success( MailPoet.Notice.success(
MailPoet.I18n.t('multipleSubscribersRemovedFromList') MailPoet.I18n.t('multipleSubscribersRemovedFromList')
.replace('%$1d', (~~response.subscribers).toLocaleString()) .replace('%$1d', (~~response.meta.count).toLocaleString())
.replace('%$2s', response.segment) .replace('%$2s', response.meta.segment)
); );
} }
}, },
@ -193,7 +184,7 @@ const bulk_actions = [
onSuccess: function(response) { onSuccess: function(response) {
MailPoet.Notice.success( MailPoet.Notice.success(
MailPoet.I18n.t('multipleSubscribersRemovedFromAllLists') MailPoet.I18n.t('multipleSubscribersRemovedFromAllLists')
.replace('%$1d', (~~response).toLocaleString()) .replace('%$1d', (~~response.meta.count).toLocaleString())
); );
} }
}, },
@ -203,7 +194,7 @@ const bulk_actions = [
onSuccess: function(response) { onSuccess: function(response) {
MailPoet.Notice.success( MailPoet.Notice.success(
MailPoet.I18n.t('multipleConfirmationEmailsSent') MailPoet.I18n.t('multipleConfirmationEmailsSent')
.replace('%$1d', (~~response).toLocaleString()) .replace('%$1d', (~~response.meta.count).toLocaleString())
); );
} }
}, },

View File

@ -273,8 +273,8 @@ class Forms extends APIEndpoint {
'\MailPoet\Models\Form', '\MailPoet\Models\Form',
$data $data
); );
$count = $bulk_action->apply(); $meta = $bulk_action->apply();
return $this->successResponse(null, array('count' => $count)); return $this->successResponse(null, $meta);
} catch(\Exception $e) { } catch(\Exception $e) {
return $this->errorResponse(array( return $this->errorResponse(array(
$e->getCode() => $e->getMessage() $e->getCode() => $e->getMessage()

View File

@ -97,8 +97,6 @@ class Newsletters extends APIEndpoint {
} }
function setStatus($data = array()) { function setStatus($data = array()) {
$id = (isset($data['id'])) ? (int)$data['id'] : false;
$newsletter = Newsletter::findOne($id);
$status = (isset($data['status']) ? $data['status'] : null); $status = (isset($data['status']) ? $data['status'] : null);
if(!$status) { if(!$status) {
@ -107,6 +105,9 @@ class Newsletters extends APIEndpoint {
)); ));
} }
$id = (isset($data['id'])) ? (int)$data['id'] : false;
$newsletter = Newsletter::findOne($id);
if($newsletter === false) { if($newsletter === false) {
return $this->errorResponse(array( return $this->errorResponse(array(
APIError::NOT_FOUND => __('This newsletter does not exist.') APIError::NOT_FOUND => __('This newsletter does not exist.')
@ -120,7 +121,7 @@ class Newsletters extends APIEndpoint {
return $this->errorResponse($errors); return $this->errorResponse($errors);
} else { } else {
return $this->successResponse( return $this->successResponse(
$newsletter->asArray() Newsletter::findOne($newsletter->id)->asArray()
); );
} }
} }
@ -340,8 +341,8 @@ class Newsletters extends APIEndpoint {
'\MailPoet\Models\Newsletter', '\MailPoet\Models\Newsletter',
$data $data
); );
$count = $bulk_action->apply(); $meta = $bulk_action->apply();
return $this->successResponse(null, array('count' => $count)); return $this->successResponse(null, $meta);
} catch(\Exception $e) { } catch(\Exception $e) {
return $this->errorResponse(array( return $this->errorResponse(array(
$e->getCode() => $e->getMessage() $e->getCode() => $e->getMessage()

View File

@ -148,8 +148,8 @@ class Segments extends APIEndpoint {
'\MailPoet\Models\Segment', '\MailPoet\Models\Segment',
$data $data
); );
$count = $bulk_action->apply(); $meta = $bulk_action->apply();
return $this->successResponse(null, array('count' => $count)); return $this->successResponse(null, $meta);
} catch(\Exception $e) { } catch(\Exception $e) {
return $this->errorResponse(array( return $this->errorResponse(array(
$e->getCode() => $e->getMessage() $e->getCode() => $e->getMessage()

View File

@ -201,8 +201,8 @@ class Subscribers extends APIEndpoint {
'\MailPoet\Models\Subscriber', '\MailPoet\Models\Subscriber',
$data $data
); );
$count = $bulk_action->apply(); $meta = $bulk_action->apply();
return $this->successResponse(null, array('count' => $count)); return $this->successResponse(null, $meta);
} catch(\Exception $e) { } catch(\Exception $e) {
return $this->errorResponse(array( return $this->errorResponse(array(
$e->getCode() => $e->getMessage() $e->getCode() => $e->getMessage()

View File

@ -77,7 +77,7 @@ class Model extends \Sudzy\ValidModel {
static function bulkTrash($orm) { static function bulkTrash($orm) {
$model = get_called_class(); $model = get_called_class();
return self::bulkAction($orm, function($ids) use($model) { $count = self::bulkAction($orm, function($ids) use($model) {
self::rawExecute(join(' ', array( self::rawExecute(join(' ', array(
'UPDATE `'.$model::$_table.'`', 'UPDATE `'.$model::$_table.'`',
'SET `deleted_at` = NOW()', 'SET `deleted_at` = NOW()',
@ -86,13 +86,17 @@ class Model extends \Sudzy\ValidModel {
$ids $ids
); );
}); });
return array('count' => $count);
} }
static function bulkDelete($orm) { static function bulkDelete($orm) {
$model = get_called_class(); $model = get_called_class();
return self::bulkAction($orm, function($ids) use($model) { $count = self::bulkAction($orm, function($ids) use($model) {
$model::whereIn('id', $ids)->deleteMany(); $model::whereIn('id', $ids)->deleteMany();
}); });
return array('count' => $count);
} }
function restore() { function restore() {
@ -101,7 +105,7 @@ class Model extends \Sudzy\ValidModel {
static function bulkRestore($orm) { static function bulkRestore($orm) {
$model = get_called_class(); $model = get_called_class();
return self::bulkAction($orm, function($ids) use($model) { $count = self::bulkAction($orm, function($ids) use($model) {
self::rawExecute(join(' ', array( self::rawExecute(join(' ', array(
'UPDATE `'.$model::$_table.'`', 'UPDATE `'.$model::$_table.'`',
'SET `deleted_at` = NULL', 'SET `deleted_at` = NULL',
@ -110,6 +114,8 @@ class Model extends \Sudzy\ValidModel {
$ids $ids
); );
}); });
return array('count' => $count);
} }
static function bulkAction($orm, $callback = false) { static function bulkAction($orm, $callback = false) {

View File

@ -212,7 +212,7 @@ class Segment extends Model {
} }
static function bulkTrash($orm) { static function bulkTrash($orm) {
return parent::bulkAction($orm, function($ids) { $count = parent::bulkAction($orm, function($ids) {
parent::rawExecute(join(' ', array( parent::rawExecute(join(' ', array(
'UPDATE `'.self::$_table.'`', 'UPDATE `'.self::$_table.'`',
'SET `deleted_at` = NOW()', 'SET `deleted_at` = NOW()',
@ -220,14 +220,18 @@ class Segment extends Model {
'AND `type` = "default"' 'AND `type` = "default"'
)), $ids); )), $ids);
}); });
return array('count' => $count);
} }
static function bulkDelete($orm) { static function bulkDelete($orm) {
return parent::bulkAction($orm, function($ids) { $count = parent::bulkAction($orm, function($ids) {
// delete segments (only default) // delete segments (only default)
Segment::whereIn('id', $ids) Segment::whereIn('id', $ids)
->where('type', 'default') ->where('type', 'default')
->deleteMany(); ->deleteMany();
}); });
return array('count' => $count);
} }
} }

View File

@ -538,7 +538,7 @@ class Subscriber extends Model {
if($segment === false) return false; if($segment === false) return false;
$subscribers_count = parent::bulkAction($orm, $count = parent::bulkAction($orm,
function($subscriber_ids) use($segment) { function($subscriber_ids) use($segment) {
SubscriberSegment::subscribeManyToSegments( SubscriberSegment::subscribeManyToSegments(
$subscriber_ids, array($segment->id) $subscriber_ids, array($segment->id)
@ -547,7 +547,7 @@ class Subscriber extends Model {
); );
return array( return array(
'subscribers' => $subscribers_count, 'count' => $count,
'segment' => $segment->name 'segment' => $segment->name
); );
} }
@ -558,7 +558,7 @@ class Subscriber extends Model {
if($segment === false) return false; if($segment === false) return false;
$subscribers_count = parent::bulkAction($orm, $count = parent::bulkAction($orm,
function($subscriber_ids) use($segment) { function($subscriber_ids) use($segment) {
SubscriberSegment::deleteManySubscriptions($subscriber_ids); SubscriberSegment::deleteManySubscriptions($subscriber_ids);
SubscriberSegment::subscribeManyToSegments( SubscriberSegment::subscribeManyToSegments(
@ -568,7 +568,7 @@ class Subscriber extends Model {
); );
return array( return array(
'subscribers' => $subscribers_count, 'count' => $count,
'segment' => $segment->name 'segment' => $segment->name
); );
} }
@ -579,7 +579,7 @@ class Subscriber extends Model {
if($segment === false) return false; if($segment === false) return false;
$subscribers_count = $orm->count(); $count = $orm->count();
parent::bulkAction($orm, function($subscriber_ids) use($segment) { parent::bulkAction($orm, function($subscriber_ids) use($segment) {
SubscriberSegment::deleteManySubscriptions( SubscriberSegment::deleteManySubscriptions(
@ -588,19 +588,21 @@ class Subscriber extends Model {
}); });
return array( return array(
'subscribers' => $subscribers_count, 'count' => $count,
'segment' => $segment->name 'segment' => $segment->name
); );
} }
static function bulkRemoveFromAllLists($orm, $data = array()) { static function bulkRemoveFromAllLists($orm, $data = array()) {
$subscribers_count = $orm->count(); $count = $orm->count();
parent::bulkAction($orm, function($subscriber_ids) { parent::bulkAction($orm, function($subscriber_ids) {
SubscriberSegment::deleteManySubscriptions($subscriber_ids); SubscriberSegment::deleteManySubscriptions($subscriber_ids);
}); });
return $subscribers_count; return array(
'count' => $count
);
} }
static function bulkSendConfirmationEmail($orm) { static function bulkSendConfirmationEmail($orm) {
@ -615,13 +617,15 @@ class Subscriber extends Model {
$emails_sent++; $emails_sent++;
} }
} }
return $emails_sent;
} }
return false;
return array(
'count' => $emails_sent
);
} }
static function bulkTrash($orm) { static function bulkTrash($orm) {
return parent::bulkAction($orm, function($subscriber_ids) { $count = parent::bulkAction($orm, function($subscriber_ids) {
self::rawExecute(join(' ', array( self::rawExecute(join(' ', array(
'UPDATE `'.self::$_table.'`', 'UPDATE `'.self::$_table.'`',
'SET `deleted_at` = NOW()', 'SET `deleted_at` = NOW()',
@ -633,10 +637,12 @@ class Subscriber extends Model {
$subscriber_ids $subscriber_ids
); );
}); });
return array('count' => $count);
} }
static function bulkDelete($orm) { static function bulkDelete($orm) {
return parent::bulkAction($orm, function($subscriber_ids) { $count = parent::bulkAction($orm, function($subscriber_ids) {
// delete all subscriber/segment relationships // delete all subscriber/segment relationships
SubscriberSegment::deleteManySubscriptions($subscriber_ids); SubscriberSegment::deleteManySubscriptions($subscriber_ids);
@ -645,6 +651,8 @@ class Subscriber extends Model {
->whereNull('wp_user_id') ->whereNull('wp_user_id')
->deleteMany(); ->deleteMany();
}); });
return array('count' => $count);
} }
static function subscribed($orm) { static function subscribed($orm) {