diff --git a/lib/Config/Migrator.php b/lib/Config/Migrator.php index 7038655b5e..6489590f3d 100644 --- a/lib/Config/Migrator.php +++ b/lib/Config/Migrator.php @@ -148,6 +148,7 @@ class Migrator { 'count_total int(11) unsigned NOT NULL DEFAULT 0,', 'count_processed int(11) unsigned NOT NULL DEFAULT 0,', 'count_to_process int(11) unsigned NOT NULL DEFAULT 0,', + 'meta longtext,', 'created_at TIMESTAMP NULL,', 'updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,', 'deleted_at TIMESTAMP NULL,', diff --git a/lib/Models/SendingQueue.php b/lib/Models/SendingQueue.php index 21d67bb423..f443aaeb73 100644 --- a/lib/Models/SendingQueue.php +++ b/lib/Models/SendingQueue.php @@ -60,6 +60,12 @@ class SendingQueue extends Model { json_encode($this->encodeEmojisInBody($this->newsletter_rendered_body)) ); } + if(!Helpers::isJson($this->meta)) { + $this->set( + 'meta', + json_encode($this->meta) + ); + } parent::save(); $this->newsletter_rendered_body = $this->getNewsletterRenderedBody(); return $this; @@ -86,6 +92,10 @@ class SendingQueue extends Model { $rendered_newsletter; } + function getMeta() { + return (Helpers::isJson($this->meta)) ? json_decode($this->meta, true) : $this->meta; + } + function encodeEmojisInBody($newsletter_rendered_body) { if(is_array($newsletter_rendered_body)) { foreach($newsletter_rendered_body as $key => $value) { @@ -126,6 +136,7 @@ class SendingQueue extends Model { function asArray() { $model = parent::asArray(); $model['newsletter_rendered_body'] = $this->getNewsletterRenderedBody(); + $model['meta'] = $this->getMeta(); return $model; } diff --git a/lib/Tasks/Sending.php b/lib/Tasks/Sending.php index 8baa9e4f82..632267d9f6 100644 --- a/lib/Tasks/Sending.php +++ b/lib/Tasks/Sending.php @@ -30,7 +30,8 @@ class Sending { 'newsletter_rendered_body', 'count_total', 'count_processed', - 'count_to_process' + 'count_to_process', + 'meta' ); private $common_fields = array( diff --git a/tests/unit/Models/SendingQueueTest.php b/tests/unit/Models/SendingQueueTest.php index eac1833017..572c97ff72 100644 --- a/tests/unit/Models/SendingQueueTest.php +++ b/tests/unit/Models/SendingQueueTest.php @@ -96,6 +96,22 @@ class SendingQueueTest extends \MailPoetTest { expect(json_decode($queue->newsletter_rendered_body, true))->equals($data); } + function testItJsonEncodesMetaWhenSaving() { + $queue = SendingQueue::create(); + $meta = array( + 'some' => 'value' + ); + $queue->task_id = 0; + $queue->newsletter_id = 1; + $queue->meta = $meta; + $queue->save(); + + $queue = SendingQueue::findOne($queue->id); + + expect(Helpers::isJson($queue->meta))->true(); + expect(json_decode($queue->meta, true))->equals($meta); + } + function testItReencodesSerializedObjectToJsonEncoded() { $queue = $this->queue; $newsletter_rendered_body = $this->rendered_body;