diff --git a/lib/Router/Endpoints/ViewInBrowser.php b/lib/Router/Endpoints/ViewInBrowser.php index b15d297b06..24939a37fd 100644 --- a/lib/Router/Endpoints/ViewInBrowser.php +++ b/lib/Router/Endpoints/ViewInBrowser.php @@ -8,6 +8,7 @@ use MailPoet\Models\SendingQueue; use MailPoet\Models\Subscriber; use MailPoet\Newsletter\Url as NewsletterUrl; use MailPoet\Newsletter\ViewInBrowser as NewsletterViewInBrowser; +use MailPoet\Settings\SettingsController; if(!defined('ABSPATH')) exit; @@ -18,15 +19,20 @@ class ViewInBrowser { public $permissions = array( 'global' => AccessControl::NO_ACCESS_RESTRICTION ); + /** @var AccessControl */ private $access_control; - function __construct(AccessControl $access_control) { + /** @var SettingsController */ + private $settings; + + function __construct(AccessControl $access_control, SettingsController $settings) { $this->access_control = $access_control; + $this->settings = $settings; } function view($data) { $data = $this->_processBrowserPreviewData($data); - $view_in_browser = new NewsletterViewInBrowser(); + $view_in_browser = new NewsletterViewInBrowser((bool)$this->settings->get('tracking.enabled')); return $this->_displayNewsletter($view_in_browser->view($data)); } diff --git a/lib/Services/Bridge.php b/lib/Services/Bridge.php index d4d3b21e02..3cbc92c496 100644 --- a/lib/Services/Bridge.php +++ b/lib/Services/Bridge.php @@ -3,8 +3,8 @@ namespace MailPoet\Services; use MailPoet\Mailer\Mailer; -use MailPoet\Models\Setting; use MailPoet\Models\Subscriber; +use MailPoet\Settings\SettingsController; use MailPoet\WP\Functions as WPFunctions; if(!defined('ABSPATH')) exit; @@ -31,6 +31,13 @@ class Bridge { public $api; + /** @var SettingsController */ + private $settings; + + function __construct() { + $this->settings = new SettingsController(); + } + static function isMPSendingServiceEnabled() { try { $mailer_config = Mailer::getMailerConfig(); @@ -42,12 +49,14 @@ class Bridge { } static function isMSSKeySpecified() { - $key = Setting::getValue(self::API_KEY_SETTING_NAME); + $settings = new SettingsController(); + $key = $settings->get(self::API_KEY_SETTING_NAME); return !empty($key); } static function isPremiumKeySpecified() { - $key = Setting::getValue(self::PREMIUM_KEY_SETTING_NAME); + $settings = new SettingsController(); + $key = $settings->get(self::PREMIUM_KEY_SETTING_NAME); return !empty($key); } @@ -83,13 +92,13 @@ class Bridge { } // store the key itself - Setting::setValue( + $this->settings->set( self::API_KEY_SETTING_NAME, $key ); // store the key state - Setting::setValue( + $this->settings->set( self::API_KEY_STATE_SETTING_NAME, $state ); @@ -135,13 +144,13 @@ class Bridge { } // store the key itself - Setting::setValue( + $this->settings->set( self::PREMIUM_KEY_SETTING_NAME, $key ); // store the key state - Setting::setValue( + $this->settings->set( self::PREMIUM_KEY_STATE_SETTING_NAME, $state ); @@ -168,7 +177,8 @@ class Bridge { } static function invalidateKey() { - Setting::setValue( + $settings = new SettingsController(); + $settings->set( self::API_KEY_STATE_SETTING_NAME, array('state' => self::KEY_INVALID) ); diff --git a/tests/integration/Router/Endpoints/ViewInBrowserTest.php b/tests/integration/Router/Endpoints/ViewInBrowserTest.php index ee6980137b..27fd852afe 100644 --- a/tests/integration/Router/Endpoints/ViewInBrowserTest.php +++ b/tests/integration/Router/Endpoints/ViewInBrowserTest.php @@ -10,6 +10,7 @@ use MailPoet\Models\ScheduledTask; use MailPoet\Models\SendingQueue; use MailPoet\Models\Subscriber; use MailPoet\Router\Endpoints\ViewInBrowser; +use MailPoet\Settings\SettingsController; use MailPoet\Tasks\Sending as SendingTask; class ViewInBrowserTest extends \MailPoetTest { @@ -40,7 +41,7 @@ class ViewInBrowserTest extends \MailPoetTest { 'preview' => false ); // instantiate class - $this->view_in_browser = new ViewInBrowser(new AccessControl()); + $this->view_in_browser = new ViewInBrowser(new AccessControl(), new SettingsController()); } function testItAbortsWhenBrowserPreviewDataIsMissing() { @@ -148,12 +149,12 @@ class ViewInBrowserTest extends \MailPoetTest { $wp_user = wp_set_current_user(0); // when WP user does not have 'manage options' permission, false should be returned $wp_user->remove_role('administrator'); - $view_in_browser = new ViewInBrowser(new AccessControl()); - expect($this->view_in_browser->_validateBrowserPreviewData($data))->false(); + $view_in_browser = new ViewInBrowser(new AccessControl(), new SettingsController()); + expect($view_in_browser->_validateBrowserPreviewData($data))->false(); // when WP has 'manage options' permission, data should be returned $wp_user->add_role('administrator'); - $view_in_browser = new ViewInBrowser(new AccessControl()); + $view_in_browser = new ViewInBrowser(new AccessControl(), new SettingsController()); expect($view_in_browser->_validateBrowserPreviewData($data))->equals($data); } @@ -169,7 +170,7 @@ class ViewInBrowserTest extends \MailPoetTest { ); $data->preview = true; wp_set_current_user(1); - $view_in_browser = new ViewInBrowser(new AccessControl()); + $view_in_browser = new ViewInBrowser(new AccessControl(), new SettingsController()); $result = $view_in_browser->_validateBrowserPreviewData($data); expect($result->subscriber->id)->equals(1); } @@ -202,7 +203,8 @@ class ViewInBrowserTest extends \MailPoetTest { function testItReturnsViewActionResult() { $view_in_browser = Stub::make($this->view_in_browser, array( - '_displayNewsletter' => Expected::exactly(1) + '_displayNewsletter' => Expected::exactly(1), + 'settings' => new SettingsController() ), $this); $view_in_browser->view($this->browser_preview_data); } diff --git a/tests/integration/Services/BridgeTest.php b/tests/integration/Services/BridgeTest.php index 212572b9f0..56bca1b4a0 100644 --- a/tests/integration/Services/BridgeTest.php +++ b/tests/integration/Services/BridgeTest.php @@ -8,11 +8,16 @@ use MailPoet\Models\Setting; use MailPoet\Services\Bridge; use MailPoet\Services\Bridge\API; use MailPoet\Services\Bridge\BridgeTestMockAPI as MockAPI; +use MailPoet\Settings\SettingsController; use MailPoet\WP\Functions as WPFunctions; require_once('BridgeTestMockAPI.php'); class BridgeTest extends \MailPoetTest { + + /** @var SettingsController */ + private $settings; + function _before() { parent::_before(); $this->valid_key = 'abcdefghijklmnopqrstuvwxyz'; @@ -28,6 +33,7 @@ class BridgeTest extends \MailPoetTest { $this->bridge = new Bridge(); $this->bridge->api = new MockAPI('key'); + $this->settings = new SettingsController(); } function testItChecksIfCurrentSendingMethodIsMailpoet() { @@ -37,7 +43,7 @@ class BridgeTest extends \MailPoetTest { } function testMPCheckReturnsFalseWhenMailerThrowsException() { - Setting::setValue(Mailer::MAILER_CONFIG_SETTING_NAME, ''); + $this->settings->set(Mailer::MAILER_CONFIG_SETTING_NAME, ''); expect(Bridge::isMPSendingServiceEnabled())->false(); } @@ -200,7 +206,7 @@ class BridgeTest extends \MailPoetTest { } function testItInvalidatesMSSKey() { - Setting::setValue( + $this->settings->set( Bridge::API_KEY_STATE_SETTING_NAME, array('state' => Bridge::KEY_VALID) ); @@ -281,7 +287,7 @@ class BridgeTest extends \MailPoetTest { } private function setMailPoetSendingMethod() { - Setting::setValue( + $this->settings->set( Mailer::MAILER_CONFIG_SETTING_NAME, array( 'method' => 'MailPoet', @@ -291,26 +297,26 @@ class BridgeTest extends \MailPoetTest { } private function getMSSKey() { - return Setting::getValue(Bridge::API_KEY_SETTING_NAME); + return $this->settings->get(Bridge::API_KEY_SETTING_NAME); } private function getMSSKeyState() { - return Setting::getValue(Bridge::API_KEY_STATE_SETTING_NAME); + return $this->settings->get(Bridge::API_KEY_STATE_SETTING_NAME); } private function fillPremiumKey() { - Setting::setValue( + $this->settings->set( Bridge::PREMIUM_KEY_SETTING_NAME, '123457890abcdef' ); } private function getPremiumKey() { - return Setting::getValue(Bridge::PREMIUM_KEY_SETTING_NAME); + return $this->settings->get(Bridge::PREMIUM_KEY_SETTING_NAME); } private function getPremiumKeyState() { - return Setting::getValue(Bridge::PREMIUM_KEY_STATE_SETTING_NAME); + return $this->settings->get(Bridge::PREMIUM_KEY_STATE_SETTING_NAME); } function _after() {