Check processed subscribers for old and new queues differently [MAILPOET-903]
This commit is contained in:
@ -65,6 +65,20 @@ class SendingQueue extends Model {
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used only for checking processed subscribers in old queues
|
||||
*/
|
||||
private function getSubscribers() {
|
||||
if(!is_serialized($this->subscribers)) {
|
||||
return $this->subscribers;
|
||||
}
|
||||
$subscribers = unserialize($this->subscribers);
|
||||
if(empty($subscribers['processed'])) {
|
||||
$subscribers['processed'] = array();
|
||||
}
|
||||
return $subscribers;
|
||||
}
|
||||
|
||||
function getNewsletterRenderedBody($type = false) {
|
||||
$rendered_newsletter = $this->decodeRenderedNewsletterBodyObject($this->newsletter_rendered_body);
|
||||
return ($type && !empty($rendered_newsletter[$type])) ?
|
||||
@ -95,8 +109,18 @@ class SendingQueue extends Model {
|
||||
}
|
||||
|
||||
function isSubscriberProcessed($subscriber_id) {
|
||||
$task_subscribers = new TaskSubscribers($this->task()->findOne());
|
||||
return $task_subscribers->isSubscriberProcessed($subscriber_id);
|
||||
if(!empty($this->subscribers)
|
||||
&& ScheduledTaskSubscriber::getTotalCount($this->task_id) === 0
|
||||
) {
|
||||
$subscribers = $this->getSubscribers();
|
||||
return in_array($subscriber_id, $subscribers['processed']);
|
||||
} else {
|
||||
if($task = $this->task()->findOne()) {
|
||||
$task_subscribers = new TaskSubscribers($task);
|
||||
return $task_subscribers->isSubscriberProcessed($subscriber_id);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function asArray() {
|
||||
|
@ -3,7 +3,10 @@
|
||||
namespace MailPoet\Test\Models;
|
||||
|
||||
use AspectMock\Test as Mock;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\ScheduledTaskSubscriber;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
use MailPoet\Util\Helpers;
|
||||
|
||||
class SendingQueueTest extends \MailPoetTest {
|
||||
@ -39,6 +42,23 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
$mock->verifyInvokedMultipleTimes('decodeEntities', 2);
|
||||
}
|
||||
|
||||
function testItChecksProcessedSubscribersForOldQueues() {
|
||||
$subscriber_id = 123;
|
||||
expect($this->queue->isSubscriberProcessed($subscriber_id))->false();
|
||||
$this->queue->subscribers = array('processed' => array($subscriber_id));
|
||||
expect($this->queue->isSubscriberProcessed($subscriber_id))->true();
|
||||
}
|
||||
|
||||
function testItChecksProcessedSubscribersForNewQueues() {
|
||||
$subscriber_id = 123;
|
||||
$queue = SendingTask::create();
|
||||
$queue->setSubscribers(array($subscriber_id));
|
||||
$queue->save();
|
||||
expect($queue->isSubscriberProcessed($subscriber_id))->false();
|
||||
$queue->updateProcessedSubscribers(array($subscriber_id));
|
||||
expect($queue->isSubscriberProcessed($subscriber_id))->true();
|
||||
}
|
||||
|
||||
function testItReadsSerializedRenderedNewsletterBody() {
|
||||
$queue = $this->queue;
|
||||
$data = array(
|
||||
@ -99,6 +119,8 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
|
||||
function _after() {
|
||||
Mock::clean();
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . ScheduledTaskSubscriber::$_table);
|
||||
\ORM::raw_execute('TRUNCATE ' . SendingQueue::$_table);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user