- Fixes check for changed newsletter content
This commit is contained in:
@@ -6,8 +6,10 @@ use Cron\CronExpression as Cron;
|
|||||||
use MailPoet\Cron\CronHelper;
|
use MailPoet\Cron\CronHelper;
|
||||||
use MailPoet\Models\Newsletter;
|
use MailPoet\Models\Newsletter;
|
||||||
use MailPoet\Models\SendingQueue;
|
use MailPoet\Models\SendingQueue;
|
||||||
|
use MailPoet\Models\Setting;
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
use MailPoet\Models\SubscriberSegment;
|
use MailPoet\Models\SubscriberSegment;
|
||||||
|
use MailPoet\Newsletter\Renderer\PostProcess\OpenTracking;
|
||||||
use MailPoet\Newsletter\Renderer\Renderer;
|
use MailPoet\Newsletter\Renderer\Renderer;
|
||||||
use MailPoet\Util\Helpers;
|
use MailPoet\Util\Helpers;
|
||||||
|
|
||||||
@@ -144,11 +146,17 @@ class Scheduler {
|
|||||||
->orderByDesc('id')
|
->orderByDesc('id')
|
||||||
->findOne();
|
->findOne();
|
||||||
if(!$last_run_queue) return true;
|
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());
|
$renderer = new Renderer($newsletter->asArray());
|
||||||
$rendered_newsletter = $renderer->render();
|
$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;
|
$old_hash = $last_run_queue->newsletter_rendered_body_hash;
|
||||||
return $new_hash === $old_hash;
|
return $new_hash !== $old_hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getQueueNextRunDate($schedule) {
|
private function getQueueNextRunDate($schedule) {
|
||||||
|
@@ -86,13 +86,14 @@ class SendingQueue {
|
|||||||
// check if newsletter has been rendered, in which case return its contents
|
// check if newsletter has been rendered, in which case return its contents
|
||||||
// or render and save for future reuse
|
// or render and save for future reuse
|
||||||
if($queue->newsletter_rendered_body === null) {
|
if($queue->newsletter_rendered_body === null) {
|
||||||
|
if((boolean) Setting::getValue('tracking.enabled')) {
|
||||||
// insert tracking code
|
// insert tracking code
|
||||||
add_filter('mailpoet_rendering_post_process', function($template) {
|
add_filter('mailpoet_rendering_post_process', function($template) {
|
||||||
return OpenTracking::process($template);
|
return OpenTracking::process($template);
|
||||||
});
|
});
|
||||||
// render newsletter
|
// render newsletter
|
||||||
$rendered_newsletter = $this->renderNewsletter($newsletter);
|
list($rendered_newsletter, $queue->newsletter_rendered_body_hash) =
|
||||||
if((boolean) Setting::getValue('tracking.enabled')) {
|
$this->renderNewsletter($newsletter);
|
||||||
// extract and replace links
|
// extract and replace links
|
||||||
$processed_newsletter = $this->processLinks(
|
$processed_newsletter = $this->processLinks(
|
||||||
$this->joinObject($rendered_newsletter),
|
$this->joinObject($rendered_newsletter),
|
||||||
@@ -103,10 +104,11 @@ class SendingQueue {
|
|||||||
$this->splitObject($processed_newsletter);
|
$this->splitObject($processed_newsletter);
|
||||||
}
|
}
|
||||||
else {
|
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 = json_encode($newsletter['body']);
|
||||||
$queue->newsletter_rendered_body_hash = md5($newsletter['body']['text']);
|
|
||||||
$queue->save();
|
$queue->save();
|
||||||
} else {
|
} else {
|
||||||
$newsletter['body'] = json_decode($queue->newsletter_rendered_body);
|
$newsletter['body'] = json_decode($queue->newsletter_rendered_body);
|
||||||
@@ -195,7 +197,9 @@ class SendingQueue {
|
|||||||
|
|
||||||
function renderNewsletter($newsletter) {
|
function renderNewsletter($newsletter) {
|
||||||
$renderer = new Renderer($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) {
|
function processLinks($text, $newsletter_id, $queue_id) {
|
||||||
|
Reference in New Issue
Block a user