From fce709a7fc3f5818eaf4282d3143e76fe88df40d Mon Sep 17 00:00:00 2001 From: Rostislav Wolny Date: Wed, 30 Jan 2019 14:00:04 +0100 Subject: [PATCH] Refactor MailPoet\Newsletter to use new settings [MAILPOET-1757] --- lib/Newsletter/Shortcodes/Categories/Link.php | 8 +++++--- lib/Newsletter/ViewInBrowser.php | 13 ++++++++++--- .../Newsletter/Scheduler/SchedulerTest.php | 2 +- tests/integration/Newsletter/ShortcodesTest.php | 4 ++-- tests/integration/Newsletter/ViewInBrowserTest.php | 13 ++++++++----- 5 files changed, 26 insertions(+), 14 deletions(-) diff --git a/lib/Newsletter/Shortcodes/Categories/Link.php b/lib/Newsletter/Shortcodes/Categories/Link.php index bd84993367..930fe04ac6 100644 --- a/lib/Newsletter/Shortcodes/Categories/Link.php +++ b/lib/Newsletter/Shortcodes/Categories/Link.php @@ -2,8 +2,8 @@ namespace MailPoet\Newsletter\Shortcodes\Categories; -use MailPoet\Models\Setting; use MailPoet\Newsletter\Url as NewsletterUrl; +use MailPoet\Settings\SettingsController; use MailPoet\Statistics\Track\Unsubscribes; use MailPoet\Subscription\Url as SubscriptionUrl; @@ -63,7 +63,8 @@ class Link { static function processUrl($action, $url, $queue, $wp_user_preview = false) { 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) : $url; } @@ -73,8 +74,9 @@ class Link { ) { switch($shortcode_action) { case 'subscription_unsubscribe_url': + $settings = new SettingsController(); // 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->track($newsletter->id, $subscriber->id, $queue->id); } diff --git a/lib/Newsletter/ViewInBrowser.php b/lib/Newsletter/ViewInBrowser.php index 1ec715ef7d..a839600007 100644 --- a/lib/Newsletter/ViewInBrowser.php +++ b/lib/Newsletter/ViewInBrowser.php @@ -2,12 +2,19 @@ namespace MailPoet\Newsletter; use MailPoet\Models\Setting; -use MailPoet\Models\Subscriber; use MailPoet\Newsletter\Links\Links; use MailPoet\Newsletter\Renderer\Renderer; use MailPoet\Newsletter\Shortcodes\Shortcodes; class ViewInBrowser { + + /** @var bool */ + private $is_tracking_enabled; + + function __construct($is_tracking_enabled) { + $this->is_tracking_enabled = $is_tracking_enabled; + } + function view($data) { $wp_user_preview = ( ($data->subscriber && $data->subscriber->isWPUser() && $data->preview) || @@ -48,7 +55,7 @@ class ViewInBrowser { $wp_user_preview ); $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( $subscriber->id, $queue->id, @@ -57,4 +64,4 @@ class ViewInBrowser { } return $rendered_newsletter; } -} \ No newline at end of file +} diff --git a/tests/integration/Newsletter/Scheduler/SchedulerTest.php b/tests/integration/Newsletter/Scheduler/SchedulerTest.php index 7069fffe3a..63843234d2 100644 --- a/tests/integration/Newsletter/Scheduler/SchedulerTest.php +++ b/tests/integration/Newsletter/Scheduler/SchedulerTest.php @@ -3,7 +3,7 @@ namespace MailPoet\Test\Newsletter\Scheduler; use Carbon\Carbon; use Codeception\Util\Fixtures; -use Mailpoet\Config\Hooks; +use MailPoet\Config\Hooks; use MailPoet\DI\ContainerWrapper; use MailPoet\Models\Newsletter; use MailPoet\Models\NewsletterOption; diff --git a/tests/integration/Newsletter/ShortcodesTest.php b/tests/integration/Newsletter/ShortcodesTest.php index 5d5e1cc76f..54c71e6e9e 100644 --- a/tests/integration/Newsletter/ShortcodesTest.php +++ b/tests/integration/Newsletter/ShortcodesTest.php @@ -257,7 +257,7 @@ class ShortcodesTest extends \MailPoetTest { $result = $shortcodes_object->process(array($shortcode)); expect($result['0'])->regExp('/^http.*?action=unsubscribe/'); - Setting::setValue('tracking.enabled', true); + $this->settings->set('tracking.enabled', true); $initial_shortcodes = array( '[link:subscription_unsubscribe_url]', '[link:subscription_manage_url]', @@ -313,7 +313,7 @@ class ShortcodesTest extends \MailPoetTest { }, 10, 4); $result = $shortcodes_object->process(array($shortcode)); 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 $shortcodes_object->queue = true; $result = $shortcodes_object->process(array($shortcode)); diff --git a/tests/integration/Newsletter/ViewInBrowserTest.php b/tests/integration/Newsletter/ViewInBrowserTest.php index 46111f04a2..495e28d598 100644 --- a/tests/integration/Newsletter/ViewInBrowserTest.php +++ b/tests/integration/Newsletter/ViewInBrowserTest.php @@ -5,11 +5,11 @@ use MailPoet\Models\Newsletter; use MailPoet\Models\NewsletterLink; use MailPoet\Models\ScheduledTask; use MailPoet\Models\SendingQueue; -use MailPoet\Models\Setting; use MailPoet\Models\Subscriber; use MailPoet\Newsletter\Links\Links; use MailPoet\Newsletter\ViewInBrowser; use MailPoet\Router\Router; +use MailPoet\Settings\SettingsController; use MailPoet\Tasks\Sending as SendingTask; class ViewInBrowserTest extends \MailPoetTest { @@ -71,7 +71,7 @@ class ViewInBrowserTest extends \MailPoetTest { 'html' => '

Newsletter from queue. Hello, [subscriber:firstname | default:reader]. Unsubscribe or visit Google

', 'text' => 'test' ); - $this->view_in_browser = new ViewInBrowser(); + $this->view_in_browser = new ViewInBrowser(false); // create newsletter $newsletter = Newsletter::create(); $newsletter->hydrate($this->newsletter); @@ -124,7 +124,8 @@ class ViewInBrowserTest extends \MailPoetTest { } function testItConvertsShortcodes() { - Setting::setValue('tracking.enabled', false); + $settings = new SettingsController(); + $settings->set('tracking.enabled', false); $rendered_body = $this->view_in_browser->renderNewsletter( $this->newsletter, $this->subscriber, @@ -136,10 +137,12 @@ class ViewInBrowserTest extends \MailPoetTest { } 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->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->subscriber, $queue,