Use feature flags instead of settings

[MAILPOET-1856]
This commit is contained in:
Pavel Dohnal
2019-05-20 15:31:47 +02:00
committed by M. Shull
parent a81c12ecc1
commit 875a54eb3d
4 changed files with 23 additions and 9 deletions

View File

@@ -2,6 +2,7 @@
namespace MailPoet\Config; namespace MailPoet\Config;
use MailPoet\Features\FeaturesController;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\Util\Url; use MailPoet\Util\Url;
use MailPoet\WooCommerce\Helper; use MailPoet\WooCommerce\Helper;
@@ -20,16 +21,21 @@ class Changelog {
/** @var Url */ /** @var Url */
private $url_helper; private $url_helper;
/** @var FeaturesController */
private $features_controller;
function __construct( function __construct(
SettingsController $settings, SettingsController $settings,
WPFunctions $wp, WPFunctions $wp,
Helper $wooCommerceHelper, Helper $wooCommerceHelper,
Url $url_helper Url $url_helper,
FeaturesController $features_controller
) { ) {
$this->wooCommerceHelper = $wooCommerceHelper; $this->wooCommerceHelper = $wooCommerceHelper;
$this->settings = $settings; $this->settings = $settings;
$this->wp = $wp; $this->wp = $wp;
$this->url_helper = $url_helper; $this->url_helper = $url_helper;
$this->features_controller = $features_controller;
} }
function init() { function init() {
@@ -63,7 +69,7 @@ class Changelog {
$this->checkWelcomeWizard(); $this->checkWelcomeWizard();
} }
$this->checkWooCommerceListImportPage(); $this->checkWooCommerceListImportPage();
if ($this->settings->get('display_revenues')) { if ($this->features_controller->isSupported(FeaturesController::FEATURE_DISPLAY_WOOCOMMERCE_REVENUES)) {
$this->checkRevenueTrackingPermissionPage(); $this->checkRevenueTrackingPermissionPage();
} }
} }

View File

@@ -367,10 +367,10 @@ class Menu {
$this->wp->__('Track WooCommerce revenues with cookies', 'mailpoet'), $this->wp->__('Track WooCommerce revenues with cookies', 'mailpoet'),
AccessControl::PERMISSION_ACCESS_PLUGIN_ADMIN, AccessControl::PERMISSION_ACCESS_PLUGIN_ADMIN,
'mailpoet-revenue-tracking-permission', 'mailpoet-revenue-tracking-permission',
array( [
$this, $this,
'revenueTrackingPermission' 'revenueTrackingPermission',
) ]
); );
// Update page // Update page
@@ -446,7 +446,7 @@ class Menu {
} }
function revenueTrackingPermission() { function revenueTrackingPermission() {
if (!$this->settings->get('display_revenues')) { if (!$this->features_controller->isSupported(FeaturesController::FEATURE_DISPLAY_WOOCOMMERCE_REVENUES)) {
return; return;
} }
if ((bool)(defined('DOING_AJAX') && DOING_AJAX)) return; if ((bool)(defined('DOING_AJAX') && DOING_AJAX)) return;
@@ -533,6 +533,7 @@ class Menu {
'current_user' => $this->wp->wpGetCurrentUser(), 'current_user' => $this->wp->wpGetCurrentUser(),
'linux_cron_path' => dirname(dirname(__DIR__)), 'linux_cron_path' => dirname(dirname(__DIR__)),
'is_woocommerce_active' => $this->woocommerce_helper->isWooCommerceActive(), 'is_woocommerce_active' => $this->woocommerce_helper->isWooCommerceActive(),
'display_revenues' => $this->features_controller->isSupported(FeaturesController::FEATURE_DISPLAY_WOOCOMMERCE_REVENUES),
'ABSPATH' => ABSPATH, 'ABSPATH' => ABSPATH,
'hosts' => [ 'hosts' => [
'web' => Hosts::getWebHosts(), 'web' => Hosts::getWebHosts(),

View File

@@ -3,9 +3,12 @@
namespace MailPoet\Test\Acceptance; namespace MailPoet\Test\Acceptance;
use Codeception\Util\Locator; use Codeception\Util\Locator;
use MailPoet\Features\FeaturesController;
use MailPoet\Test\DataFactories\Features;
use MailPoet\Test\DataFactories\Newsletter; use MailPoet\Test\DataFactories\Newsletter;
use MailPoet\Test\DataFactories\Settings; use MailPoet\Test\DataFactories\Settings;
require_once __DIR__ . '/../DataFactories/Features.php';
require_once __DIR__ . '/../DataFactories/Newsletter.php'; require_once __DIR__ . '/../DataFactories/Newsletter.php';
require_once __DIR__ . '/../DataFactories/Settings.php'; require_once __DIR__ . '/../DataFactories/Settings.php';
@@ -14,13 +17,17 @@ class RevenueTrackingCookieCest {
/** @var Settings */ /** @var Settings */
private $settings; private $settings;
protected function _inject(Settings $settings) { /** @var Features */
private $features;
protected function _inject(Settings $settings, Features $features) {
$this->settings = $settings; $this->settings = $settings;
$this->features = $features;
} }
function _before(\AcceptanceTester $I) { function _before(\AcceptanceTester $I) {
$I->activateWooCommerce(); $I->activateWooCommerce();
$this->settings->withDisplayRevenuesEnabled(); $this->features->withFeatureEnabled(FeaturesController::FEATURE_DISPLAY_WOOCOMMERCE_REVENUES);
} }
function _after(\AcceptanceTester $I) { function _after(\AcceptanceTester $I) {

View File

@@ -80,7 +80,7 @@
</p> </p>
</td> </td>
</tr> </tr>
<% if settings.display_revenues %> <% if display_revenues %>
<tr> <tr>
<th scope="row"> <th scope="row">
<label for="settings[mailpoet_accept_cookie_revenue_tracking]"> <label for="settings[mailpoet_accept_cookie_revenue_tracking]">