Refactor MailPoet\Newsletter to use new settings

[MAILPOET-1757]
This commit is contained in:
Rostislav Wolny
2019-01-30 14:00:04 +01:00
parent 3a7ea60d3f
commit fce709a7fc
5 changed files with 26 additions and 14 deletions

View File

@ -2,8 +2,8 @@
namespace MailPoet\Newsletter\Shortcodes\Categories; namespace MailPoet\Newsletter\Shortcodes\Categories;
use MailPoet\Models\Setting;
use MailPoet\Newsletter\Url as NewsletterUrl; use MailPoet\Newsletter\Url as NewsletterUrl;
use MailPoet\Settings\SettingsController;
use MailPoet\Statistics\Track\Unsubscribes; use MailPoet\Statistics\Track\Unsubscribes;
use MailPoet\Subscription\Url as SubscriptionUrl; use MailPoet\Subscription\Url as SubscriptionUrl;
@ -63,7 +63,8 @@ class Link {
static function processUrl($action, $url, $queue, $wp_user_preview = false) { static function processUrl($action, $url, $queue, $wp_user_preview = false) {
if($wp_user_preview) return $url; if($wp_user_preview) return $url;
return ($queue !== false && (boolean)Setting::getValue('tracking.enabled')) ? $settings = new SettingsController();
return ($queue !== false && (boolean)$settings->get('tracking.enabled')) ?
self::getFullShortcode($action) : self::getFullShortcode($action) :
$url; $url;
} }
@ -73,8 +74,9 @@ class Link {
) { ) {
switch($shortcode_action) { switch($shortcode_action) {
case 'subscription_unsubscribe_url': case 'subscription_unsubscribe_url':
$settings = new SettingsController();
// track unsubscribe event // track unsubscribe event
if((boolean)Setting::getValue('tracking.enabled') && !$wp_user_preview) { if((boolean)$settings->get('tracking.enabled') && !$wp_user_preview) {
$unsubscribe_event = new Unsubscribes(); $unsubscribe_event = new Unsubscribes();
$unsubscribe_event->track($newsletter->id, $subscriber->id, $queue->id); $unsubscribe_event->track($newsletter->id, $subscriber->id, $queue->id);
} }

View File

@ -2,12 +2,19 @@
namespace MailPoet\Newsletter; namespace MailPoet\Newsletter;
use MailPoet\Models\Setting; use MailPoet\Models\Setting;
use MailPoet\Models\Subscriber;
use MailPoet\Newsletter\Links\Links; use MailPoet\Newsletter\Links\Links;
use MailPoet\Newsletter\Renderer\Renderer; use MailPoet\Newsletter\Renderer\Renderer;
use MailPoet\Newsletter\Shortcodes\Shortcodes; use MailPoet\Newsletter\Shortcodes\Shortcodes;
class ViewInBrowser { class ViewInBrowser {
/** @var bool */
private $is_tracking_enabled;
function __construct($is_tracking_enabled) {
$this->is_tracking_enabled = $is_tracking_enabled;
}
function view($data) { function view($data) {
$wp_user_preview = ( $wp_user_preview = (
($data->subscriber && $data->subscriber->isWPUser() && $data->preview) || ($data->subscriber && $data->subscriber->isWPUser() && $data->preview) ||
@ -48,7 +55,7 @@ class ViewInBrowser {
$wp_user_preview $wp_user_preview
); );
$rendered_newsletter = $shortcodes->replace($newsletter_body); $rendered_newsletter = $shortcodes->replace($newsletter_body);
if(!$wp_user_preview && $queue && $subscriber && (boolean)Setting::getValue('tracking.enabled')) { if(!$wp_user_preview && $queue && $subscriber && $this->is_tracking_enabled) {
$rendered_newsletter = Links::replaceSubscriberData( $rendered_newsletter = Links::replaceSubscriberData(
$subscriber->id, $subscriber->id,
$queue->id, $queue->id,

View File

@ -3,7 +3,7 @@ namespace MailPoet\Test\Newsletter\Scheduler;
use Carbon\Carbon; use Carbon\Carbon;
use Codeception\Util\Fixtures; use Codeception\Util\Fixtures;
use Mailpoet\Config\Hooks; use MailPoet\Config\Hooks;
use MailPoet\DI\ContainerWrapper; use MailPoet\DI\ContainerWrapper;
use MailPoet\Models\Newsletter; use MailPoet\Models\Newsletter;
use MailPoet\Models\NewsletterOption; use MailPoet\Models\NewsletterOption;

View File

@ -257,7 +257,7 @@ class ShortcodesTest extends \MailPoetTest {
$result = $result =
$shortcodes_object->process(array($shortcode)); $shortcodes_object->process(array($shortcode));
expect($result['0'])->regExp('/^http.*?action=unsubscribe/'); expect($result['0'])->regExp('/^http.*?action=unsubscribe/');
Setting::setValue('tracking.enabled', true); $this->settings->set('tracking.enabled', true);
$initial_shortcodes = array( $initial_shortcodes = array(
'[link:subscription_unsubscribe_url]', '[link:subscription_unsubscribe_url]',
'[link:subscription_manage_url]', '[link:subscription_manage_url]',
@ -313,7 +313,7 @@ class ShortcodesTest extends \MailPoetTest {
}, 10, 4); }, 10, 4);
$result = $shortcodes_object->process(array($shortcode)); $result = $shortcodes_object->process(array($shortcode));
expect($result[0])->equals('success'); expect($result[0])->equals('success');
Setting::setValue('tracking.enabled', true); $this->settings->set('tracking.enabled', true);
// tracking function only works during sending, so queue object must not be false // tracking function only works during sending, so queue object must not be false
$shortcodes_object->queue = true; $shortcodes_object->queue = true;
$result = $shortcodes_object->process(array($shortcode)); $result = $shortcodes_object->process(array($shortcode));

View File

@ -5,11 +5,11 @@ use MailPoet\Models\Newsletter;
use MailPoet\Models\NewsletterLink; use MailPoet\Models\NewsletterLink;
use MailPoet\Models\ScheduledTask; use MailPoet\Models\ScheduledTask;
use MailPoet\Models\SendingQueue; use MailPoet\Models\SendingQueue;
use MailPoet\Models\Setting;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
use MailPoet\Newsletter\Links\Links; use MailPoet\Newsletter\Links\Links;
use MailPoet\Newsletter\ViewInBrowser; use MailPoet\Newsletter\ViewInBrowser;
use MailPoet\Router\Router; use MailPoet\Router\Router;
use MailPoet\Settings\SettingsController;
use MailPoet\Tasks\Sending as SendingTask; use MailPoet\Tasks\Sending as SendingTask;
class ViewInBrowserTest extends \MailPoetTest { class ViewInBrowserTest extends \MailPoetTest {
@ -71,7 +71,7 @@ class ViewInBrowserTest extends \MailPoetTest {
'html' => '<p>Newsletter from queue. Hello, [subscriber:firstname | default:reader]. <a href="' . Links::DATA_TAG_CLICK . '-90e56">Unsubscribe</a> or visit <a href="' . Links::DATA_TAG_CLICK . '-i1893">Google</a><img alt="" class="" src="' . Links::DATA_TAG_OPEN . '"></p>', 'html' => '<p>Newsletter from queue. Hello, [subscriber:firstname | default:reader]. <a href="' . Links::DATA_TAG_CLICK . '-90e56">Unsubscribe</a> or visit <a href="' . Links::DATA_TAG_CLICK . '-i1893">Google</a><img alt="" class="" src="' . Links::DATA_TAG_OPEN . '"></p>',
'text' => 'test' 'text' => 'test'
); );
$this->view_in_browser = new ViewInBrowser(); $this->view_in_browser = new ViewInBrowser(false);
// create newsletter // create newsletter
$newsletter = Newsletter::create(); $newsletter = Newsletter::create();
$newsletter->hydrate($this->newsletter); $newsletter->hydrate($this->newsletter);
@ -124,7 +124,8 @@ class ViewInBrowserTest extends \MailPoetTest {
} }
function testItConvertsShortcodes() { function testItConvertsShortcodes() {
Setting::setValue('tracking.enabled', false); $settings = new SettingsController();
$settings->set('tracking.enabled', false);
$rendered_body = $this->view_in_browser->renderNewsletter( $rendered_body = $this->view_in_browser->renderNewsletter(
$this->newsletter, $this->newsletter,
$this->subscriber, $this->subscriber,
@ -136,10 +137,12 @@ class ViewInBrowserTest extends \MailPoetTest {
} }
function testItRewritesLinksToRouterEndpointWhenTrackingIsEnabled() { function testItRewritesLinksToRouterEndpointWhenTrackingIsEnabled() {
Setting::setValue('tracking.enabled', true); $settings = new SettingsController();
$settings->set('tracking.enabled', true);
$view_in_browser = new ViewInBrowser(true);
$queue = $this->queue; $queue = $this->queue;
$queue->newsletter_rendered_body = $this->queue_rendered_newsletter_with_tracking; $queue->newsletter_rendered_body = $this->queue_rendered_newsletter_with_tracking;
$rendered_body = $this->view_in_browser->renderNewsletter( $rendered_body = $view_in_browser->renderNewsletter(
$this->newsletter, $this->newsletter,
$this->subscriber, $this->subscriber,
$queue, $queue,