diff --git a/assets/js/src/forms/list.jsx b/assets/js/src/forms/list.jsx index aaf375343b..0fabf70d73 100644 --- a/assets/js/src/forms/list.jsx +++ b/assets/js/src/forms/list.jsx @@ -27,48 +27,48 @@ const columns = [ ]; const messages = { - onTrash: function(response) { - var count = ~~response; - var message = null; + onTrash: (response) => { + const count = ~~response.meta.count; + let message = null; - if(count === 1) { + if (count === 1) { message = ( MailPoet.I18n.t('oneFormTrashed') ); } else { message = ( MailPoet.I18n.t('multipleFormsTrashed') - ).replace('%$1d', count); + ).replace('%$1d', count.toLocaleString()); } MailPoet.Notice.success(message); }, - onDelete: function(response) { - var count = ~~response; - var message = null; + onDelete: (response) => { + const count = ~~response.meta.count; + let message = null; - if(count === 1) { + if (count === 1) { message = ( MailPoet.I18n.t('oneFormDeleted') ); } else { message = ( MailPoet.I18n.t('multipleFormsDeleted') - ).replace('%$1d', count); + ).replace('%$1d', count.toLocaleString()); } MailPoet.Notice.success(message); }, - onRestore: function(response) { - var count = ~~response; - var message = null; + onRestore: (response) => { + const count = ~~response.meta.count; + let message = null; - if(count === 1) { + if (count === 1) { message = ( MailPoet.I18n.t('oneFormRestored') ); } else { message = ( MailPoet.I18n.t('multipleFormsRestored') - ).replace('%$1d', count); + ).replace('%$1d', count.toLocaleString()); } MailPoet.Notice.success(message); } diff --git a/assets/js/src/listing/bulk_actions.jsx b/assets/js/src/listing/bulk_actions.jsx index 053054d1fa..b636726553 100644 --- a/assets/js/src/listing/bulk_actions.jsx +++ b/assets/js/src/listing/bulk_actions.jsx @@ -53,7 +53,10 @@ function( } 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({ diff --git a/assets/js/src/listing/listing.jsx b/assets/js/src/listing/listing.jsx index cae1c02f0c..f83ae74213 100644 --- a/assets/js/src/listing/listing.jsx +++ b/assets/js/src/listing/listing.jsx @@ -577,7 +577,7 @@ const Listing = React.createClass({ && this.state.selected_ids.length === 0 && selected_ids !== 'all' ) { - return; + return false; } this.setState({ loading: true }); diff --git a/assets/js/src/newsletters/listings/notification.jsx b/assets/js/src/newsletters/listings/notification.jsx index 7ffbcc4eda..db0c50af50 100644 --- a/assets/js/src/newsletters/listings/notification.jsx +++ b/assets/js/src/newsletters/listings/notification.jsx @@ -17,8 +17,8 @@ import { } from 'newsletters/scheduling/common.jsx' const messages = { - onTrash(response) { - const count = ~~response; + onTrash: (response) => { + const count = ~~response.meta.count; let message = null; if (count === 1) { @@ -28,12 +28,12 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersTrashed') - ).replace('%$1d', count); + ).replace('%$1d', count.toLocaleString()); } MailPoet.Notice.success(message); }, - onDelete(response) { - const count = ~~response; + onDelete: (response) => { + const count = ~~response.meta.count; let message = null; if (count === 1) { @@ -43,12 +43,12 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersDeleted') - ).replace('%$1d', count); + ).replace('%$1d', count.toLocaleString()); } MailPoet.Notice.success(message); }, - onRestore(response) { - const count = ~~response; + onRestore: (response) => { + const count = ~~response.meta.count; let message = null; if (count === 1) { @@ -58,7 +58,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersRestored') - ).replace('%$1d', count); + ).replace('%$1d', count.toLocaleString()); } MailPoet.Notice.success(message); } @@ -127,16 +127,23 @@ const newsletter_actions = [ return MailPoet.Ajax.post({ endpoint: 'newsletters', action: 'duplicate', - data: newsletter.id - }).done(function(response) { - if (response !== false && response.subject !== undefined) { - MailPoet.Notice.success( - (MailPoet.I18n.t('newsletterDuplicated')).replace( - '%$1s', response.subject - ) + data: { + id: newsletter.id + } + }).done((response) => { + MailPoet.Notice.success( + (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(); }); } }, diff --git a/assets/js/src/newsletters/listings/standard.jsx b/assets/js/src/newsletters/listings/standard.jsx index 1a4031c0f6..870ae70424 100644 --- a/assets/js/src/newsletters/listings/standard.jsx +++ b/assets/js/src/newsletters/listings/standard.jsx @@ -12,8 +12,8 @@ import { QueueMixin, StatisticsMixin } from 'newsletters/listings/mixins.jsx' const mailpoet_tracking_enabled = (!!(window['mailpoet_tracking_enabled'])); const messages = { - onTrash(response) { - const count = ~~response; + onTrash: (response) => { + const count = ~~response.meta.count; let message = null; if (count === 1) { @@ -23,12 +23,12 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersTrashed') - ).replace('%$1d', count); + ).replace('%$1d', count.toLocaleString()); } MailPoet.Notice.success(message); }, - onDelete(response) { - const count = ~~response; + onDelete: (response) => { + const count = ~~response.meta.count; let message = null; if (count === 1) { @@ -38,12 +38,12 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersDeleted') - ).replace('%$1d', count); + ).replace('%$1d', count.toLocaleString()); } MailPoet.Notice.success(message); }, - onRestore(response) { - const count = ~~response; + onRestore: (response) => { + const count = ~~response.meta.count; let message = null; if (count === 1) { @@ -53,7 +53,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersRestored') - ).replace('%$1d', count); + ).replace('%$1d', count.toLocaleString()); } MailPoet.Notice.success(message); } @@ -122,16 +122,23 @@ const newsletter_actions = [ return MailPoet.Ajax.post({ endpoint: 'newsletters', action: 'duplicate', - data: newsletter.id - }).done(function(response) { - if (response !== false && response.subject !== undefined) { - MailPoet.Notice.success( - (MailPoet.I18n.t('newsletterDuplicated')).replace( - '%$1s', response.subject - ) + data: { + id: newsletter.id + } + }).done((response) => { + MailPoet.Notice.success( + (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(); }); } }, diff --git a/assets/js/src/newsletters/listings/welcome.jsx b/assets/js/src/newsletters/listings/welcome.jsx index d5cbf851a3..86b97f302b 100644 --- a/assets/js/src/newsletters/listings/welcome.jsx +++ b/assets/js/src/newsletters/listings/welcome.jsx @@ -15,8 +15,8 @@ const mailpoet_segments = window.mailpoet_segments || {}; const mailpoet_tracking_enabled = (!!(window['mailpoet_tracking_enabled'])); const messages = { - onTrash(response) { - const count = ~~response; + onTrash: (response) => { + const count = ~~response.meta.count; let message = null; if (count === 1) { @@ -26,12 +26,12 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersTrashed') - ).replace('%$1d', count); + ).replace('%$1d', count.toLocaleString()); } MailPoet.Notice.success(message); }, - onDelete(response) { - const count = ~~response; + onDelete: (response) => { + const count = ~~response.meta.count; let message = null; if (count === 1) { @@ -41,12 +41,12 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersDeleted') - ).replace('%$1d', count); + ).replace('%$1d', count.toLocaleString()); } MailPoet.Notice.success(message); }, - onRestore(response) { - const count = ~~response; + onRestore: (response) => { + const count = ~~response.meta.count; let message = null; if (count === 1) { @@ -56,7 +56,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleNewslettersRestored') - ).replace('%$1d', count); + ).replace('%$1d', count.toLocaleString()); } MailPoet.Notice.success(message); } @@ -125,16 +125,23 @@ const newsletter_actions = [ return MailPoet.Ajax.post({ endpoint: 'newsletters', action: 'duplicate', - data: newsletter.id - }).done(function(response) { - if (response !== false && response.subject !== undefined) { - MailPoet.Notice.success( - (MailPoet.I18n.t('newsletterDuplicated')).replace( - '%$1s', response.subject - ) + data: { + id: newsletter.id + } + }).done((response) => { + MailPoet.Notice.success( + (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(); }); } }, diff --git a/assets/js/src/newsletters/types/welcome/scheduling.jsx b/assets/js/src/newsletters/types/welcome/scheduling.jsx index 849220a816..780ca82487 100644 --- a/assets/js/src/newsletters/types/welcome/scheduling.jsx +++ b/assets/js/src/newsletters/types/welcome/scheduling.jsx @@ -113,17 +113,16 @@ const WelcomeScheduling = React.createClass({ type: 'welcome', options: this.state } - }).done(function(response) { - if (response.result && response.newsletter.id) { - this.showTemplateSelection(response.newsletter.id); - } else { + }).done((response) => { + this.showTemplateSelection(response.data.id); + }).fail((response) => { if (response.errors.length > 0) { - response.errors.map(function(error) { - MailPoet.Notice.error(error); - }); + MailPoet.Notice.error( + response.errors.map(function(error) { return error.message; }), + { scroll: true } + ); } - } - }.bind(this)); + }); }, showTemplateSelection: function(newsletterId) { this.context.router.push(`/template/${ newsletterId }`); diff --git a/assets/js/src/newsletters/types/welcome/welcome.jsx b/assets/js/src/newsletters/types/welcome/welcome.jsx index 34de296d1e..18bb917065 100644 --- a/assets/js/src/newsletters/types/welcome/welcome.jsx +++ b/assets/js/src/newsletters/types/welcome/welcome.jsx @@ -57,18 +57,17 @@ define( data: _.extend({}, this.state, { type: 'welcome', subject: MailPoet.I18n.t('draftNewsletterTitle'), - }), - }).done(function(response) { - if(response.result && response.newsletter.id) { - this.showTemplateSelection(response.newsletter.id); - } else { - if(response.errors.length > 0) { - response.errors.map(function(error) { - MailPoet.Notice.error(error); - }); - } + }) + }).done((response) => { + this.showTemplateSelection(response.data.id); + }).fail((response) => { + if (response.errors.length > 0) { + MailPoet.Notice.error( + response.errors.map(function(error) { return error.message; }), + { scroll: true } + ); } - }.bind(this)); + }); }, showTemplateSelection: function(newsletterId) { this.context.router.push(`/template/${newsletterId}`); diff --git a/assets/js/src/segments/list.jsx b/assets/js/src/segments/list.jsx index ae238df263..370d444544 100644 --- a/assets/js/src/segments/list.jsx +++ b/assets/js/src/segments/list.jsx @@ -37,7 +37,7 @@ var columns = [ const messages = { onTrash: (response) => { - let count = ~~response.meta.count; + const count = ~~response.meta.count; let message = null; if (count === 1) { @@ -47,12 +47,12 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleSegmentsTrashed') - ).replace('%$1d', count); + ).replace('%$1d', count.toLocaleString()); } MailPoet.Notice.success(message); }, onDelete: (response) => { - let count = ~~response.meta.count; + const count = ~~response.meta.count; let message = null; if (count === 1) { @@ -62,12 +62,12 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleSegmentsDeleted') - ).replace('%$1d', count); + ).replace('%$1d', count.toLocaleString()); } MailPoet.Notice.success(message); }, onRestore: (response) => { - let count = ~~response.meta.count; + const count = ~~response.meta.count; let message = null; if (count === 1) { @@ -77,7 +77,7 @@ const messages = { } else { message = ( MailPoet.I18n.t('multipleSegmentsRestored') - ).replace('%$1d', count); + ).replace('%$1d', count.toLocaleString()); } MailPoet.Notice.success(message); } diff --git a/assets/js/src/subscribers/list.jsx b/assets/js/src/subscribers/list.jsx index 40cdc2ee09..4dc09ca7d8 100644 --- a/assets/js/src/subscribers/list.jsx +++ b/assets/js/src/subscribers/list.jsx @@ -37,59 +37,50 @@ const columns = [ ]; const messages = { - onTrash: function(response) { - if (response) { - var message = null; - if (~~response === 1) { - message = ( - MailPoet.I18n.t('oneSubscriberTrashed') - ); - } else if (~~response > 1) { - message = ( - MailPoet.I18n.t('multipleSubscribersTrashed') - ).replace('%$1d', (~~response).toLocaleString()); - } + onTrash: (response) => { + const count = ~~response.meta.count; + let message = null; - if (message !== null) { - MailPoet.Notice.success(message); - } + if (count === 1) { + message = ( + MailPoet.I18n.t('oneSubscriberTrashed') + ); + } else { + message = ( + MailPoet.I18n.t('multipleSubscribersTrashed') + ).replace('%$1d', count.toLocaleString()); } + MailPoet.Notice.success(message); }, - onDelete: function(response) { - if (response) { - var message = null; - if (~~response === 1) { - message = ( - MailPoet.I18n.t('oneSubscriberDeleted') - ); - } else if (~~response > 1) { - message = ( - MailPoet.I18n.t('multipleSubscribersDeleted') - ).replace('%$1d', ~~response); - } + onDelete: (response) => { + const count = ~~response.meta.count; + let message = null; - if (message !== null) { - MailPoet.Notice.success(message); - } + if (count === 1) { + message = ( + MailPoet.I18n.t('oneSubscriberDeleted') + ); + } else { + message = ( + MailPoet.I18n.t('multipleSubscribersDeleted') + ).replace('%$1d', count.toLocaleString()); } + MailPoet.Notice.success(message); }, - onRestore: function(response) { - if (response) { - var message = null; - if (~~response === 1) { - message = ( - MailPoet.I18n.t('oneSubscriberRestored') - ); - } else if (~~response > 1) { - message = ( - MailPoet.I18n.t('multipleSubscribersRestored') - ).replace('%$1d', (~~response).toLocaleString()); - } + onRestore: (response) => { + const count = ~~response.meta.count; + let message = null; - if (message !== null) { - MailPoet.Notice.success(message); - } + if (count === 1) { + 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) { MailPoet.Notice.success( MailPoet.I18n.t('multipleSubscribersMovedToList') - .replace('%$1d', (~~(response.subscribers)).toLocaleString()) - .replace('%$2s', response.segment) + .replace('%$1d', (~~(response.meta.count)).toLocaleString()) + .replace('%$2s', response.meta.segment) ); } }, @@ -151,8 +142,8 @@ const bulk_actions = [ onSuccess: function(response) { MailPoet.Notice.success( MailPoet.I18n.t('multipleSubscribersAddedToList') - .replace('%$1d', (~~response.subscribers).toLocaleString()) - .replace('%$2s', response.segment) + .replace('%$1d', (~~response.meta.count).toLocaleString()) + .replace('%$2s', response.meta.segment) ); } }, @@ -182,8 +173,8 @@ const bulk_actions = [ onSuccess: function(response) { MailPoet.Notice.success( MailPoet.I18n.t('multipleSubscribersRemovedFromList') - .replace('%$1d', (~~response.subscribers).toLocaleString()) - .replace('%$2s', response.segment) + .replace('%$1d', (~~response.meta.count).toLocaleString()) + .replace('%$2s', response.meta.segment) ); } }, @@ -193,7 +184,7 @@ const bulk_actions = [ onSuccess: function(response) { MailPoet.Notice.success( MailPoet.I18n.t('multipleSubscribersRemovedFromAllLists') - .replace('%$1d', (~~response).toLocaleString()) + .replace('%$1d', (~~response.meta.count).toLocaleString()) ); } }, @@ -203,7 +194,7 @@ const bulk_actions = [ onSuccess: function(response) { MailPoet.Notice.success( MailPoet.I18n.t('multipleConfirmationEmailsSent') - .replace('%$1d', (~~response).toLocaleString()) + .replace('%$1d', (~~response.meta.count).toLocaleString()) ); } }, diff --git a/lib/API/Endpoints/Forms.php b/lib/API/Endpoints/Forms.php index 6e55c77c4a..0c82d9d8fd 100644 --- a/lib/API/Endpoints/Forms.php +++ b/lib/API/Endpoints/Forms.php @@ -273,8 +273,8 @@ class Forms extends APIEndpoint { '\MailPoet\Models\Form', $data ); - $count = $bulk_action->apply(); - return $this->successResponse(null, array('count' => $count)); + $meta = $bulk_action->apply(); + return $this->successResponse(null, $meta); } catch(\Exception $e) { return $this->errorResponse(array( $e->getCode() => $e->getMessage() diff --git a/lib/API/Endpoints/Newsletters.php b/lib/API/Endpoints/Newsletters.php index dc467b243e..1f91d3a9c8 100644 --- a/lib/API/Endpoints/Newsletters.php +++ b/lib/API/Endpoints/Newsletters.php @@ -97,8 +97,6 @@ class Newsletters extends APIEndpoint { } function setStatus($data = array()) { - $id = (isset($data['id'])) ? (int)$data['id'] : false; - $newsletter = Newsletter::findOne($id); $status = (isset($data['status']) ? $data['status'] : null); 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) { return $this->errorResponse(array( APIError::NOT_FOUND => __('This newsletter does not exist.') @@ -120,7 +121,7 @@ class Newsletters extends APIEndpoint { return $this->errorResponse($errors); } else { return $this->successResponse( - $newsletter->asArray() + Newsletter::findOne($newsletter->id)->asArray() ); } } @@ -340,8 +341,8 @@ class Newsletters extends APIEndpoint { '\MailPoet\Models\Newsletter', $data ); - $count = $bulk_action->apply(); - return $this->successResponse(null, array('count' => $count)); + $meta = $bulk_action->apply(); + return $this->successResponse(null, $meta); } catch(\Exception $e) { return $this->errorResponse(array( $e->getCode() => $e->getMessage() diff --git a/lib/API/Endpoints/Segments.php b/lib/API/Endpoints/Segments.php index ecefd914d5..f37fe6ed5b 100644 --- a/lib/API/Endpoints/Segments.php +++ b/lib/API/Endpoints/Segments.php @@ -148,8 +148,8 @@ class Segments extends APIEndpoint { '\MailPoet\Models\Segment', $data ); - $count = $bulk_action->apply(); - return $this->successResponse(null, array('count' => $count)); + $meta = $bulk_action->apply(); + return $this->successResponse(null, $meta); } catch(\Exception $e) { return $this->errorResponse(array( $e->getCode() => $e->getMessage() diff --git a/lib/API/Endpoints/Subscribers.php b/lib/API/Endpoints/Subscribers.php index d5865b62d6..6a47c96234 100644 --- a/lib/API/Endpoints/Subscribers.php +++ b/lib/API/Endpoints/Subscribers.php @@ -201,8 +201,8 @@ class Subscribers extends APIEndpoint { '\MailPoet\Models\Subscriber', $data ); - $count = $bulk_action->apply(); - return $this->successResponse(null, array('count' => $count)); + $meta = $bulk_action->apply(); + return $this->successResponse(null, $meta); } catch(\Exception $e) { return $this->errorResponse(array( $e->getCode() => $e->getMessage() diff --git a/lib/Models/Model.php b/lib/Models/Model.php index e7a2e50469..4ccdda8633 100644 --- a/lib/Models/Model.php +++ b/lib/Models/Model.php @@ -77,7 +77,7 @@ class Model extends \Sudzy\ValidModel { static function bulkTrash($orm) { $model = get_called_class(); - return self::bulkAction($orm, function($ids) use($model) { + $count = self::bulkAction($orm, function($ids) use($model) { self::rawExecute(join(' ', array( 'UPDATE `'.$model::$_table.'`', 'SET `deleted_at` = NOW()', @@ -86,13 +86,17 @@ class Model extends \Sudzy\ValidModel { $ids ); }); + + return array('count' => $count); } static function bulkDelete($orm) { $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(); }); + + return array('count' => $count); } function restore() { @@ -101,7 +105,7 @@ class Model extends \Sudzy\ValidModel { static function bulkRestore($orm) { $model = get_called_class(); - return self::bulkAction($orm, function($ids) use($model) { + $count = self::bulkAction($orm, function($ids) use($model) { self::rawExecute(join(' ', array( 'UPDATE `'.$model::$_table.'`', 'SET `deleted_at` = NULL', @@ -110,6 +114,8 @@ class Model extends \Sudzy\ValidModel { $ids ); }); + + return array('count' => $count); } static function bulkAction($orm, $callback = false) { diff --git a/lib/Models/Segment.php b/lib/Models/Segment.php index 68253a7d0d..567cf197ec 100644 --- a/lib/Models/Segment.php +++ b/lib/Models/Segment.php @@ -212,7 +212,7 @@ class Segment extends Model { } static function bulkTrash($orm) { - return parent::bulkAction($orm, function($ids) { + $count = parent::bulkAction($orm, function($ids) { parent::rawExecute(join(' ', array( 'UPDATE `'.self::$_table.'`', 'SET `deleted_at` = NOW()', @@ -220,14 +220,18 @@ class Segment extends Model { 'AND `type` = "default"' )), $ids); }); + + return array('count' => $count); } static function bulkDelete($orm) { - return parent::bulkAction($orm, function($ids) { + $count = parent::bulkAction($orm, function($ids) { // delete segments (only default) Segment::whereIn('id', $ids) ->where('type', 'default') ->deleteMany(); }); + + return array('count' => $count); } } diff --git a/lib/Models/Subscriber.php b/lib/Models/Subscriber.php index e12f1c4fe7..f759b1bf84 100644 --- a/lib/Models/Subscriber.php +++ b/lib/Models/Subscriber.php @@ -538,7 +538,7 @@ class Subscriber extends Model { if($segment === false) return false; - $subscribers_count = parent::bulkAction($orm, + $count = parent::bulkAction($orm, function($subscriber_ids) use($segment) { SubscriberSegment::subscribeManyToSegments( $subscriber_ids, array($segment->id) @@ -547,7 +547,7 @@ class Subscriber extends Model { ); return array( - 'subscribers' => $subscribers_count, + 'count' => $count, 'segment' => $segment->name ); } @@ -558,7 +558,7 @@ class Subscriber extends Model { if($segment === false) return false; - $subscribers_count = parent::bulkAction($orm, + $count = parent::bulkAction($orm, function($subscriber_ids) use($segment) { SubscriberSegment::deleteManySubscriptions($subscriber_ids); SubscriberSegment::subscribeManyToSegments( @@ -568,7 +568,7 @@ class Subscriber extends Model { ); return array( - 'subscribers' => $subscribers_count, + 'count' => $count, 'segment' => $segment->name ); } @@ -579,7 +579,7 @@ class Subscriber extends Model { if($segment === false) return false; - $subscribers_count = $orm->count(); + $count = $orm->count(); parent::bulkAction($orm, function($subscriber_ids) use($segment) { SubscriberSegment::deleteManySubscriptions( @@ -588,19 +588,21 @@ class Subscriber extends Model { }); return array( - 'subscribers' => $subscribers_count, + 'count' => $count, 'segment' => $segment->name ); } static function bulkRemoveFromAllLists($orm, $data = array()) { - $subscribers_count = $orm->count(); + $count = $orm->count(); parent::bulkAction($orm, function($subscriber_ids) { SubscriberSegment::deleteManySubscriptions($subscriber_ids); }); - return $subscribers_count; + return array( + 'count' => $count + ); } static function bulkSendConfirmationEmail($orm) { @@ -615,13 +617,15 @@ class Subscriber extends Model { $emails_sent++; } } - return $emails_sent; } - return false; + + return array( + 'count' => $emails_sent + ); } static function bulkTrash($orm) { - return parent::bulkAction($orm, function($subscriber_ids) { + $count = parent::bulkAction($orm, function($subscriber_ids) { self::rawExecute(join(' ', array( 'UPDATE `'.self::$_table.'`', 'SET `deleted_at` = NOW()', @@ -633,10 +637,12 @@ class Subscriber extends Model { $subscriber_ids ); }); + + return array('count' => $count); } static function bulkDelete($orm) { - return parent::bulkAction($orm, function($subscriber_ids) { + $count = parent::bulkAction($orm, function($subscriber_ids) { // delete all subscriber/segment relationships SubscriberSegment::deleteManySubscriptions($subscriber_ids); @@ -645,6 +651,8 @@ class Subscriber extends Model { ->whereNull('wp_user_id') ->deleteMany(); }); + + return array('count' => $count); } static function subscribed($orm) {