diff --git a/lib/Cron/Workers/Scheduler.php b/lib/Cron/Workers/Scheduler.php index 9c325828ad..83d3261e8a 100644 --- a/lib/Cron/Workers/Scheduler.php +++ b/lib/Cron/Workers/Scheduler.php @@ -6,8 +6,10 @@ use Cron\CronExpression as Cron; use MailPoet\Cron\CronHelper; use MailPoet\Models\Newsletter; use MailPoet\Models\SendingQueue; +use MailPoet\Models\Setting; use MailPoet\Models\Subscriber; use MailPoet\Models\SubscriberSegment; +use MailPoet\Newsletter\Renderer\PostProcess\OpenTracking; use MailPoet\Newsletter\Renderer\Renderer; use MailPoet\Util\Helpers; @@ -144,11 +146,17 @@ class Scheduler { ->orderByDesc('id') ->findOne(); if(!$last_run_queue) return true; + if((boolean) Setting::getValue('tracking.enabled')) { + // insert tracking code + add_filter('mailpoet_rendering_post_process', function ($template) { + return OpenTracking::process($template); + }); + } $renderer = new Renderer($newsletter->asArray()); $rendered_newsletter = $renderer->render(); - $new_hash = md5($rendered_newsletter['html']); + $new_hash = md5($rendered_newsletter['text']); $old_hash = $last_run_queue->newsletter_rendered_body_hash; - return $new_hash === $old_hash; + return $new_hash !== $old_hash; } private function getQueueNextRunDate($schedule) { diff --git a/lib/Cron/Workers/SendingQueue.php b/lib/Cron/Workers/SendingQueue.php index 88de77c3a3..275723f38b 100644 --- a/lib/Cron/Workers/SendingQueue.php +++ b/lib/Cron/Workers/SendingQueue.php @@ -86,13 +86,14 @@ class SendingQueue { // check if newsletter has been rendered, in which case return its contents // or render and save for future reuse if($queue->newsletter_rendered_body === null) { - // insert tracking code - add_filter('mailpoet_rendering_post_process', function($template) { - return OpenTracking::process($template); - }); - // render newsletter - $rendered_newsletter = $this->renderNewsletter($newsletter); if((boolean) Setting::getValue('tracking.enabled')) { + // insert tracking code + add_filter('mailpoet_rendering_post_process', function($template) { + return OpenTracking::process($template); + }); + // render newsletter + list($rendered_newsletter, $queue->newsletter_rendered_body_hash) = + $this->renderNewsletter($newsletter); // extract and replace links $processed_newsletter = $this->processLinks( $this->joinObject($rendered_newsletter), @@ -103,10 +104,11 @@ class SendingQueue { $this->splitObject($processed_newsletter); } else { - $newsletter['body'] = $rendered_newsletter; + // render newsletter + list($newsletter['body'], $queue->newsletter_rendered_body_hash) = + $this->renderNewsletter($newsletter); } $queue->newsletter_rendered_body = json_encode($newsletter['body']); - $queue->newsletter_rendered_body_hash = md5($newsletter['body']['text']); $queue->save(); } else { $newsletter['body'] = json_decode($queue->newsletter_rendered_body); @@ -195,7 +197,9 @@ class SendingQueue { function renderNewsletter($newsletter) { $renderer = new Renderer($newsletter); - return $renderer->render(); + $rendered_newsletter = $renderer->render(); + $rendered_newsletter_hash = md5($rendered_newsletter['text']); + return array($rendered_newsletter, $rendered_newsletter_hash); } function processLinks($text, $newsletter_id, $queue_id) {