Fix checking if post notification email contains any ALC posts
[MAILPOET-2029]
This commit is contained in:
@ -97,10 +97,9 @@ class Newsletter {
|
||||
$newsletter
|
||||
);
|
||||
}
|
||||
// check if this is a post notification and if it contains posts
|
||||
$newsletter_contains_posts = strpos($rendered_newsletter['html'], 'data-post-id');
|
||||
// check if this is a post notification and if it contains at least 1 ALC post
|
||||
if ($newsletter->type === NewsletterModel::TYPE_NOTIFICATION_HISTORY &&
|
||||
!$newsletter_contains_posts
|
||||
$this->posts_task->getAlcPostsCount($rendered_newsletter, $newsletter) === 0
|
||||
) {
|
||||
// delete notification history record since it will never be sent
|
||||
$newsletter->delete();
|
||||
|
@ -28,4 +28,10 @@ class Posts {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function getAlcPostsCount($rendered_newsletter, \MailPoet\Models\Newsletter $newsletter) {
|
||||
$template_posts_count = substr_count($newsletter->body, 'data-post-id');
|
||||
$newsletter_posts_count = substr_count($rendered_newsletter['html'], 'data-post-id');
|
||||
return $newsletter_posts_count - $template_posts_count;
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ use AspectMock\Test as Mock;
|
||||
use Codeception\Util\Fixtures;
|
||||
use Helper\WordPressHooks as WPHooksHelper;
|
||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask;
|
||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Posts as PostsTask;
|
||||
use MailPoet\Mailer\MailerLog;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\NewsletterLink;
|
||||
@ -192,7 +193,11 @@ class NewsletterTest extends \MailPoetTest {
|
||||
function testItSavesNewsletterPosts() {
|
||||
$this->newsletter->type = Newsletter::TYPE_NOTIFICATION_HISTORY;
|
||||
$this->newsletter->parent_id = $this->newsletter->id;
|
||||
$result = $this->newsletter_task->preProcessNewsletter($this->newsletter, $this->queue);
|
||||
$posts_task = $this->make(PostsTask::class, [
|
||||
'getAlcPostsCount' => 1
|
||||
]);
|
||||
$newsletter_task = new NewsletterTask(new WPFunctions, $posts_task);
|
||||
$result = $newsletter_task->preProcessNewsletter($this->newsletter, $this->queue);
|
||||
$newsletter_post = NewsletterPost::where('newsletter_id', $this->newsletter->id)
|
||||
->findOne();
|
||||
expect($result)->notEquals(false);
|
||||
|
Reference in New Issue
Block a user