Don't track sent ALC posts for welcome and standard emails (always send the latest posts) [MAILPOET-1069]

This commit is contained in:
stoletniy
2017-08-25 15:51:45 +03:00
parent d92b1f57bd
commit cc5227ca0d
3 changed files with 23 additions and 24 deletions

View File

@@ -8,6 +8,9 @@ if(!defined('ABSPATH')) exit;
class Posts {
static function extractAndSave($rendered_newsletter, $newsletter) {
if($newsletter->type !== NewsletterModel::TYPE_NOTIFICATION_HISTORY) {
return false;
}
preg_match_all(
'/data-post-id="(\d+)"/ism',
$rendered_newsletter['html'],
@@ -16,9 +19,7 @@ class Posts {
if(!count($matched_posts_ids)) {
return false;
}
$newsletter_id = ($newsletter->type === NewsletterModel::TYPE_NOTIFICATION_HISTORY) ?
$newsletter->parent_id :
$newsletter->id;
$newsletter_id = $newsletter->parent_id; // parent post notification
foreach($matched_posts_ids as $post_id) {
$newsletter_post = NewsletterPost::create();
$newsletter_post->newsletter_id = $newsletter_id;
@@ -27,4 +28,4 @@ class Posts {
}
return true;
}
}
}

View File

@@ -23,11 +23,8 @@ class Renderer {
$parent = Newsletter::findOne($newsletter_id);
$newer_than_timestamp = $parent->created_at;
}
} else if($preview) {
$newsletter_id = false;
$newer_than_timestamp = false;
} else {
$newsletter_id = $newsletter['id'];
$newsletter_id = false;
$newer_than_timestamp = false;
}
$this->ALC = new \MailPoet\Newsletter\AutomatedLatestContent(

View File

@@ -11,6 +11,7 @@ class PostsTest extends \MailPoetTest {
function testItFailsWhenNoPostsArePresent() {
$newsletter = (object)array(
'id' => 1,
'type' => Newsletter::TYPE_NOTIFICATION_HISTORY
);
$rendered_newsletter = array(
'html' => 'Sample newsletter'
@@ -19,21 +20,6 @@ class PostsTest extends \MailPoetTest {
}
function testItCanExtractAndSavePosts() {
$post_id = 10;
$newsletter = (object)array(
'id' => 1,
'type' => Newsletter::TYPE_STANDARD
);
$rendered_newsletter = array(
'html' => '<a data-post-id="' . $post_id . '" href="#">sample post</a>'
);
expect(PostsTask::extractAndSave($rendered_newsletter, $newsletter))->equals(true);
$newsletter_post = NewsletterPost::where('newsletter_id', $newsletter->id)
->findOne();
expect($newsletter_post->post_id)->equals($post_id);
}
function testItSetsNewsletterIdToParentIdWhenNewsletterIsANotificationHistory() {
$post_id = 10;
$newsletter = (object)array(
'id' => 2,
@@ -49,7 +35,22 @@ class PostsTest extends \MailPoetTest {
expect($newsletter_post->post_id)->equals($post_id);
}
function testItDoesNotSavePostsWhenNewsletterIsNotANotificationHistory() {
$post_id = 10;
$newsletter = (object)array(
'id' => 2,
'parent_id' => 1,
'type' => Newsletter::TYPE_WELCOME
);
$rendered_newsletter = array(
'html' => '<a data-post-id="' . $post_id . '" href="#">sample post</a>'
);
expect(PostsTask::extractAndSave($rendered_newsletter, $newsletter))->equals(false);
$newsletter->type = Newsletter::TYPE_STANDARD;
expect(PostsTask::extractAndSave($rendered_newsletter, $newsletter))->equals(false);
}
function _after() {
\ORM::raw_execute('TRUNCATE ' . NewsletterPost::$_table);
}
}
}