Don't track sent ALC posts for welcome and standard emails (always send the latest posts) [MAILPOET-1069]
This commit is contained in:
@@ -8,6 +8,9 @@ if(!defined('ABSPATH')) exit;
|
|||||||
|
|
||||||
class Posts {
|
class Posts {
|
||||||
static function extractAndSave($rendered_newsletter, $newsletter) {
|
static function extractAndSave($rendered_newsletter, $newsletter) {
|
||||||
|
if($newsletter->type !== NewsletterModel::TYPE_NOTIFICATION_HISTORY) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
preg_match_all(
|
preg_match_all(
|
||||||
'/data-post-id="(\d+)"/ism',
|
'/data-post-id="(\d+)"/ism',
|
||||||
$rendered_newsletter['html'],
|
$rendered_newsletter['html'],
|
||||||
@@ -16,9 +19,7 @@ class Posts {
|
|||||||
if(!count($matched_posts_ids)) {
|
if(!count($matched_posts_ids)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$newsletter_id = ($newsletter->type === NewsletterModel::TYPE_NOTIFICATION_HISTORY) ?
|
$newsletter_id = $newsletter->parent_id; // parent post notification
|
||||||
$newsletter->parent_id :
|
|
||||||
$newsletter->id;
|
|
||||||
foreach($matched_posts_ids as $post_id) {
|
foreach($matched_posts_ids as $post_id) {
|
||||||
$newsletter_post = NewsletterPost::create();
|
$newsletter_post = NewsletterPost::create();
|
||||||
$newsletter_post->newsletter_id = $newsletter_id;
|
$newsletter_post->newsletter_id = $newsletter_id;
|
||||||
|
@@ -23,11 +23,8 @@ class Renderer {
|
|||||||
$parent = Newsletter::findOne($newsletter_id);
|
$parent = Newsletter::findOne($newsletter_id);
|
||||||
$newer_than_timestamp = $parent->created_at;
|
$newer_than_timestamp = $parent->created_at;
|
||||||
}
|
}
|
||||||
} else if($preview) {
|
|
||||||
$newsletter_id = false;
|
|
||||||
$newer_than_timestamp = false;
|
|
||||||
} else {
|
} else {
|
||||||
$newsletter_id = $newsletter['id'];
|
$newsletter_id = false;
|
||||||
$newer_than_timestamp = false;
|
$newer_than_timestamp = false;
|
||||||
}
|
}
|
||||||
$this->ALC = new \MailPoet\Newsletter\AutomatedLatestContent(
|
$this->ALC = new \MailPoet\Newsletter\AutomatedLatestContent(
|
||||||
|
@@ -11,6 +11,7 @@ class PostsTest extends \MailPoetTest {
|
|||||||
function testItFailsWhenNoPostsArePresent() {
|
function testItFailsWhenNoPostsArePresent() {
|
||||||
$newsletter = (object)array(
|
$newsletter = (object)array(
|
||||||
'id' => 1,
|
'id' => 1,
|
||||||
|
'type' => Newsletter::TYPE_NOTIFICATION_HISTORY
|
||||||
);
|
);
|
||||||
$rendered_newsletter = array(
|
$rendered_newsletter = array(
|
||||||
'html' => 'Sample newsletter'
|
'html' => 'Sample newsletter'
|
||||||
@@ -19,21 +20,6 @@ class PostsTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function testItCanExtractAndSavePosts() {
|
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;
|
$post_id = 10;
|
||||||
$newsletter = (object)array(
|
$newsletter = (object)array(
|
||||||
'id' => 2,
|
'id' => 2,
|
||||||
@@ -49,6 +35,21 @@ class PostsTest extends \MailPoetTest {
|
|||||||
expect($newsletter_post->post_id)->equals($post_id);
|
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() {
|
function _after() {
|
||||||
\ORM::raw_execute('TRUNCATE ' . NewsletterPost::$_table);
|
\ORM::raw_execute('TRUNCATE ' . NewsletterPost::$_table);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user