- Moves queue subscriber handling logic to the queu model

This commit is contained in:
Vlad
2016-06-30 10:21:21 -04:00
parent 0fe975f614
commit 46dda84012
3 changed files with 34 additions and 18 deletions

View File

@ -41,7 +41,7 @@ class SendingQueue {
$queue->save();
}
// get subscribers
$queue->subscribers = SubscribersTask::get($queue->subscribers);
$queue->subscribers = $queue->getSubscribers();
foreach(array_chunk($queue->subscribers['to_process'], self::BATCH_SIZE)
as $subscribers_to_process_ids
) {
@ -163,7 +163,7 @@ class SendingQueue {
return SendingQueueModel::orderByDesc('priority')
->whereNull('deleted_at')
->whereNull('status')
->findResultSet();
->findMany();
}
function updateQueue($queue) {
@ -183,10 +183,6 @@ class SendingQueue {
$newsletter->setStatus(NewsletterModel::STATUS_SENT);
}
}
$subscribers = $queue->subscribers;
$queue->subscribers = serialize((array) $subscribers);
$queue->save();
$queue->subscribers = $subscribers;
return $queue;
return $queue->save();
}
}

View File

@ -4,17 +4,6 @@ namespace MailPoet\Cron\Workers\SendingQueue\Tasks;
if(!defined('ABSPATH')) exit;
class Subscribers {
static function get($subscribers) {
$subscribers = unserialize($subscribers);
if(empty($subscribers['processed'])) {
$subscribers['processed'] = array();
}
if(empty($subscribers['failed'])) {
$subscribers['failed'] = array();
}
return $subscribers;
}
static function updateToProcessList(
array $found_subscribers_ids,
array $subscribers_to_process_ids,

View File

@ -39,4 +39,35 @@ class SendingQueue extends Model {
$this->save();
return ($this->getErrors() === false && $this->id() > 0);
}
function save() {
if(!is_serialized($this->subscribers)) {
$this->set('subscribers', serialize($this->subscribers));
}
parent::save();
$this->subscribers = $this->getSubscribers();
return $this;
}
function getSubscribers() {
if(!is_serialized($this->subscribers)) {
return $this->subscribers;
}
$subscribers = unserialize($this->subscribers);
if(empty($subscribers['processed'])) {
$subscribers['processed'] = array();
}
if(empty($subscribers['failed'])) {
$subscribers['failed'] = array();
}
return $subscribers;
}
function asArray() {
$model = parent::asArray();
$model['subscribers'] = (is_serialized($this->subscribers))
? unserialize($this->subscribers)
: $this->subscribers;
return $model;
}
}