diff --git a/mailpoet/lib/Models/ScheduledTaskSubscriber.php b/mailpoet/lib/Models/ScheduledTaskSubscriber.php index 38f4baae04..29a26030ca 100644 --- a/mailpoet/lib/Models/ScheduledTaskSubscriber.php +++ b/mailpoet/lib/Models/ScheduledTaskSubscriber.php @@ -3,8 +3,6 @@ namespace MailPoet\Models; use MailPoet\Entities\ScheduledTaskSubscriberEntity; -use MailPoet\Util\Helpers; -use MailPoet\WP\Functions as WPFunctions; /** * @property int $taskId @@ -72,84 +70,6 @@ class ScheduledTaskSubscriber extends Model { return self::getCount($taskId, self::STATUS_PROCESSED); } - public static function getTotalCount($taskId) { - return self::getCount($taskId); - } - - public static function listingQuery($data) { - $group = isset($data['group']) ? $data['group'] : 'all'; - $query = self::join(Subscriber::$_table, ["subscriber_id", "=", "subscribers.id"], "subscribers") - ->filter($group, $data['params']) - ->select('error', 'error') - ->select('failed', 'failed') - ->select('task_id', 'taskId') - ->select('processed', 'processed') - ->select('subscribers.email', 'email') - ->select('subscribers.id', 'subscriberId') - ->select('subscribers.last_name', 'lastName') - ->select('subscribers.first_name', 'firstName'); - if (isset($data['search'])) { - $search = trim($data['search']); - $search = Helpers::escapeSearch($search); - if (strlen($search) === 0) { - return $query; - } - $search = '%' . $search . '%'; - return $query->whereRaw( - '(`subscribers`.`email` LIKE ? OR `subscribers`.`first_name` LIKE ? OR `subscribers`.`last_name` LIKE ?)', - [$search, $search, $search] - ); - } - return $query; - } - - public static function groups($data) { - $params = $data['params']; - return [ - [ - 'name' => 'all', - 'label' => WPFunctions::get()->__('All', 'mailpoet'), - 'count' => self::filter('all', $params)->count(), - ], - [ - 'name' => self::SENDING_STATUS_SENT, - 'label' => WPFunctions::get()->_x('Sent', 'status when a newsletter has been sent', 'mailpoet'), - 'count' => self::filter(self::SENDING_STATUS_SENT, $params)->count(), - ], - [ - 'name' => self::SENDING_STATUS_FAILED, - 'label' => WPFunctions::get()->_x('Failed', 'status when the sending of a newsletter has failed', 'mailpoet'), - 'count' => self::filter(self::SENDING_STATUS_FAILED, $params)->count(), - ], - [ - 'name' => self::SENDING_STATUS_UNPROCESSED, - 'label' => WPFunctions::get()->_x('Unprocessed', 'status when the sending of a newsletter has not been processed', 'mailpoet'), - 'count' => self::filter(self::SENDING_STATUS_UNPROCESSED, $params)->count(), - ], - ]; - } - - public static function all($orm, $params) { - return $orm->whereIn('task_id', $params['task_ids']); - } - - public static function sent($orm, $params) { - return $orm->filter('all', $params) - ->where('processed', self::STATUS_PROCESSED) - ->where('failed', self::FAIL_STATUS_OK); - } - - public static function failed($orm, $params) { - return $orm->filter('all', $params) - ->where('processed', self::STATUS_PROCESSED) - ->where('failed', self::FAIL_STATUS_FAILED); - } - - public static function unprocessed($orm, $params) { - return $orm->filter('all', $params) - ->where('processed', self::STATUS_UNPROCESSED); - } - private static function getCount($taskId, $processed = null) { $orm = self::where('task_id', $taskId); if (!is_null($processed)) { diff --git a/mailpoet/tests/integration/Models/ScheduledTaskSubscriberTest.php b/mailpoet/tests/integration/Models/ScheduledTaskSubscriberTest.php index 587c23b690..c13e4ab542 100644 --- a/mailpoet/tests/integration/Models/ScheduledTaskSubscriberTest.php +++ b/mailpoet/tests/integration/Models/ScheduledTaskSubscriberTest.php @@ -79,133 +79,6 @@ class ScheduledTaskSubscriberTest extends \MailPoetTest { expect($count)->equals(1); } - public function testItCanGetTotalCount() { - ScheduledTaskSubscriber::createOrUpdate([ - 'task_id' => $this->task->id, - 'subscriber_id' => 555, // random new ID - 'processed' => ScheduledTaskSubscriber::STATUS_PROCESSED, - ]); - $count = ScheduledTaskSubscriber::getTotalCount($this->task->id); - expect($count)->equals(2); - } - - public function testItCanQueryListing() { - $taskIds = $this->makeTasksWithSubscribers(); - - $all = ScheduledTaskSubscriber::listingQuery([ - 'params' => ['task_ids' => $taskIds], - ])->findMany(); - expect(count($all))->equals(12); - - $sent = ScheduledTaskSubscriber::listingQuery([ - 'group' => ScheduledTaskSubscriber::SENDING_STATUS_SENT, - 'params' => ['task_ids' => $taskIds], - ])->findMany(); - expect(count($sent))->equals(4); - foreach ($sent as $task) { - expect($task->processed)->equals(1); - expect($task->failed)->equals(0); - } - - $unprocessed = ScheduledTaskSubscriber::listingQuery([ - 'group' => ScheduledTaskSubscriber::SENDING_STATUS_UNPROCESSED, - 'params' => ['task_ids' => $taskIds], - ])->findMany(); - expect(count($unprocessed))->equals(4); - foreach ($unprocessed as $task) { - expect($task->processed)->equals(0); - expect($task->failed)->equals(0); - } - - $failed = ScheduledTaskSubscriber::listingQuery([ - 'group' => ScheduledTaskSubscriber::SENDING_STATUS_FAILED, - 'params' => ['task_ids' => $taskIds], - ])->findMany(); - expect(count($failed))->equals(4); - foreach ($failed as $task) { - expect($task->processed)->equals(1); - expect($task->failed)->equals(1); - } - - } - - public function testItCanGetGroupsWithCounts() { - $taskIds = $this->makeTasksWithSubscribers(); - $groups = ScheduledTaskSubscriber::groups([ - 'params' => ['task_ids' => $taskIds], - ]); - expect($groups)->equals([ - [ - 'name' => 'all', - 'label' => 'All', - 'count' => 12, - ], - [ - 'name' => ScheduledTaskSubscriber::SENDING_STATUS_SENT, - 'label' => 'Sent', - 'count' => 4, - ], - [ - 'name' => ScheduledTaskSubscriber::SENDING_STATUS_FAILED, - 'label' => 'Failed', - 'count' => 4, - ], - [ - 'name' => ScheduledTaskSubscriber::SENDING_STATUS_UNPROCESSED, - 'label' => 'Unprocessed', - 'count' => 4, - ], - ]); - } - - /** - * Creates completed, scheduled, paued and running tasks. - * Each one with unprocessed, sent and failed subscriber tasks. - * @return array the ids of the 4 tasks. - */ - private function makeTasksWithSubscribers() { - $tasks = [ - ScheduledTask::createOrUpdate(['status' => ScheduledTask::STATUS_COMPLETED]), - ScheduledTask::createOrUpdate(['status' => ScheduledTask::STATUS_SCHEDULED]), - ScheduledTask::createOrUpdate(['status' => ScheduledTask::STATUS_PAUSED]), - ScheduledTask::createOrUpdate(['status' => null]), // running - ]; - foreach ($tasks as $task) { - ScheduledTaskSubscriber::createOrUpdate([ - 'task_id' => $task->id, - 'subscriber_id' => $this->makeSubscriber()->id, - 'processed' => 0, - 'failed' => 0, - ]); - ScheduledTaskSubscriber::createOrUpdate([ - 'task_id' => $task->id, - 'subscriber_id' => $this->makeSubscriber()->id, - 'processed' => 1, - 'failed' => 0, - ]); - ScheduledTaskSubscriber::createOrUpdate([ - 'task_id' => $task->id, - 'subscriber_id' => $this->makeSubscriber()->id, - 'processed' => 1, - 'failed' => 1, - 'error' => 'Something went wrong!', - ]); - } - - return array_map(function($task) { - return $task->id; - }, $tasks); - } - - private function makeSubscriber() { - $number = $this->subscribersCounter ++; - return $subscriber = Subscriber::createOrUpdate([ - 'last_name' => 'Last Name ' . $number, - 'first_name' => 'First Name ' . $number, - 'email' => 'john.doe.' . $number . '@example.com', - ]); - } - public function _after() { ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table); ORM::raw_execute('TRUNCATE ' . ScheduledTaskSubscriber::$_table);