- Fixes check for changed newsletter content

This commit is contained in:
Vlad
2016-04-22 11:54:04 -04:00
parent 31e2d5e771
commit 1ec0372c2d
2 changed files with 23 additions and 11 deletions

View File

@ -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) {

View File

@ -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) {