Merge pull request #579 from mailpoet/notification_history_preview

Enables preview of notification history newsletters
This commit is contained in:
Tautvidas Sipavičius
2016-08-04 18:12:50 +03:00
committed by GitHub
6 changed files with 35 additions and 16 deletions

View File

@@ -178,11 +178,10 @@ class Newsletters {
}
$newsletter->body = $data['body'];
$newsletter->save();
$wp_user = wp_get_current_user();
$subscriber = Subscriber::where('email', $wp_user->data->user_email)
->findOne();
$subscriber = ($subscriber) ? $subscriber->asArray() : $subscriber;
$preview_url = NewsletterUrl::getViewInBrowserUrl($data, $subscriber);
$subscriber = Subscriber::getCurrentWPUser();
$preview_url = NewsletterUrl::getViewInBrowserUrl(
$data, $subscriber, $queue = false, $preview = true
);
return array(
'result' => true,
'data' => array('url' => $preview_url)
@@ -207,15 +206,14 @@ class Newsletters {
$newsletter = $newsletter->asArray();
$renderer = new Renderer($newsletter);
$renderer = new Renderer($newsletter, $preview = true);
$rendered_newsletter = $renderer->render();
$divider = '***MailPoet***';
$data_for_shortcodes =
array_merge(array($newsletter['subject']), $rendered_newsletter);
$body = implode($divider, $data_for_shortcodes);
$wp_user = wp_get_current_user();
$subscriber = Subscriber::findOne($wp_user->data->user_email);
$subscriber = Subscriber::getCurrentWPUser();
$subscriber = ($subscriber) ? $subscriber->asArray() : false;
$shortcodes = new \MailPoet\Newsletter\Shortcodes\Shortcodes(

View File

@@ -66,6 +66,11 @@ class Subscriber extends Model {
return ($this->wp_user_id !== null);
}
static function getCurrentWPUser() {
$wp_user = wp_get_current_user();
return self::where('wp_user_id', $wp_user->ID)->findOne();
}
function sendConfirmationEmail() {
if($this->status === self::STATUS_UNCONFIRMED) {
$signup_confirmation = Setting::getValue('signup_confirmation');

View File

@@ -7,13 +7,18 @@ use MailPoet\Newsletter\Renderer\StylesHelper;
class Renderer {
public $newsletter;
public $posts;
public $ALC;
function __construct(array $newsletter, $posts = false) {
function __construct(array $newsletter, $preview) {
$this->newsletter = $newsletter;
$this->posts = array();
$newsletter_id = ($newsletter['type'] === Newsletter::TYPE_NOTIFICATION_HISTORY) ?
$newsletter['parent_id'] :
$newsletter['id'];
if($newsletter['type'] === Newsletter::TYPE_NOTIFICATION_HISTORY) {
$newsletter_id = $newsletter['parent_id'];
} else if($preview) {
$newsletter_id = false;
} else {
$newsletter_id = $newsletter['id'];
}
$this->ALC = new \MailPoet\Newsletter\AutomatedLatestContent($newsletter_id);
}

View File

@@ -9,12 +9,14 @@ class Renderer {
public $DOM_parser;
public $CSS_inliner;
public $newsletter;
public $preview;
const NEWSLETTER_TEMPLATE = 'Template.html';
const POST_PROCESS_FILTER = 'mailpoet_rendering_post_process';
function __construct(array $newsletter) {
function __construct(array $newsletter, $preview = false) {
$this->newsletter = $newsletter;
$this->blocks_renderer = new Blocks\Renderer($this->newsletter);
$this->preview = $preview;
$this->blocks_renderer = new Blocks\Renderer($this->newsletter, $this->preview);
$this->columns_renderer = new Columns\Renderer();
$this->DOM_parser = new \pQuery();
$this->CSS_inliner = new \MailPoet\Util\CSS();

View File

@@ -1,6 +1,8 @@
<?php
namespace MailPoet\Newsletter;
use MailPoet\Models\Newsletter;
use MailPoet\Models\SendingQueue;
use MailPoet\Router\Front as FrontRouter;
use MailPoet\Router\Endpoints\ViewInBrowser as ViewInBrowserEndpoint;
use MailPoet\Models\Subscriber;
@@ -9,16 +11,23 @@ class Url {
static function getViewInBrowserUrl(
$newsletter,
$subscriber = false,
$queue = false
$queue = false,
$preview = false
) {
if(is_object($newsletter)) {
$newsletter = $newsletter->asArray();
}
if(is_object($subscriber)) {
$subscriber = $subscriber->asArray();
} else if(!$subscriber) {
$subscriber = Subscriber::getCurrentWPUser();
$subscriber = ($subscriber) ? $subscriber->asArray() : false;
}
if(is_object($queue)) {
$queue = $queue->asArray();
} else if(!$preview && !empty($newsletter['id'])) {
$queue = SendingQueue::where('newsletter_id', $newsletter['id'])->findOne();
$queue = ($queue) ? $queue->asArray() : false;
}
$data = array(
'newsletter' => (!empty($newsletter['id'])) ?

View File

@@ -49,7 +49,7 @@ class ViewInBrowser {
if($queue) {
$newsletter_body = json_decode($queue->newsletter_rendered_body, true);
} else {
$renderer = new Renderer($newsletter->asArray());
$renderer = new Renderer($newsletter->asArray(), $preview = true);
$newsletter_body = $renderer->render();
}
$shortcodes = new Shortcodes(