diff --git a/lib/Models/ScheduledTask.php b/lib/Models/ScheduledTask.php index 388b12d1ca..a122e7b59e 100644 --- a/lib/Models/ScheduledTask.php +++ b/lib/Models/ScheduledTask.php @@ -99,7 +99,7 @@ class ScheduledTask extends Model { if (!$this->priority) { $this->priority = self::PRIORITY_MEDIUM; } - if (!Helpers::isJson($this->meta)) { + if (!is_null($this->meta) && !Helpers::isJson($this->meta)) { $this->set( 'meta', json_encode($this->meta) diff --git a/lib/Models/SendingQueue.php b/lib/Models/SendingQueue.php index 263d89ef69..cd5169b2a8 100644 --- a/lib/Models/SendingQueue.php +++ b/lib/Models/SendingQueue.php @@ -16,7 +16,7 @@ if (!defined('ABSPATH')) exit; * @property string $newsletter_rendered_subject * @property int $task_id * @property int $newsletter_id - * @property string|object $meta + * @property string|object|null $meta * @property string|array $subscribers * @property string|null $deleted_at */ @@ -77,7 +77,7 @@ class SendingQueue extends Model { json_encode($this->encodeEmojisInBody($this->newsletter_rendered_body)) ); } - if (!Helpers::isJson($this->meta)) { + if (!is_null($this->meta) && !Helpers::isJson($this->meta)) { $this->set( 'meta', json_encode($this->meta) diff --git a/tests/integration/Models/ScheduledTaskTest.php b/tests/integration/Models/ScheduledTaskTest.php index f9a3a2601f..f2b8db6255 100644 --- a/tests/integration/Models/ScheduledTaskTest.php +++ b/tests/integration/Models/ScheduledTaskTest.php @@ -125,6 +125,18 @@ class ScheduledTaskTest extends \MailPoetTest { expect(json_decode($task->meta, true))->equals($meta); } + function testItDoesNotJsonEncodesMetaEqualToNull() { + $task = ScheduledTask::create(); + $meta = null; + $task->meta = $meta; + $task->save(); + + $task = ScheduledTask::findOne($task->id); + + expect(Helpers::isJson($task->meta))->false(); + expect($task->meta)->equals($meta); + } + function _after() { \ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table); \ORM::raw_execute('TRUNCATE ' . ScheduledTaskSubscriber::$_table); diff --git a/tests/integration/Models/SendingQueueTest.php b/tests/integration/Models/SendingQueueTest.php index 76853abeeb..c55dcab457 100644 --- a/tests/integration/Models/SendingQueueTest.php +++ b/tests/integration/Models/SendingQueueTest.php @@ -113,6 +113,20 @@ class SendingQueueTest extends \MailPoetTest { expect(json_decode($queue->meta, true))->equals($meta); } + function testItDoesNotJsonEncodesMetaEqualToNull() { + $queue = SendingQueue::create(); + $meta = null; + $queue->task_id = 0; + $queue->newsletter_id = 1; + $queue->meta = $meta; + $queue->save(); + + $queue = SendingQueue::findOne($queue->id); + + expect(Helpers::isJson($queue->meta))->false(); + expect($queue->meta)->equals($meta); + } + function testItReencodesSerializedObjectToJsonEncoded() { $queue = $this->queue; $newsletter_rendered_body = $this->rendered_body;