Remove feature flag for woocommerce revenues

[MAILPOET-1990]
This commit is contained in:
Ján Mikláš
2019-07-17 14:23:19 +02:00
committed by M. Shull
parent c5ee2baaa2
commit 2b8325a738
17 changed files with 46 additions and 134 deletions

View File

@ -8,7 +8,6 @@ use MailPoet\API\JSON\Error as APIError;
use MailPoet\Config\AccessControl;
use MailPoet\Cron\CronHelper;
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterQueueTask;
use MailPoet\Features\FeaturesController;
use MailPoet\Listing;
use MailPoet\Models\Newsletter;
use MailPoet\Models\NewsletterOption;
@ -45,9 +44,6 @@ class Newsletters extends APIEndpoint {
/** @var SettingsController */
private $settings;
/** @var FeaturesController */
private $features_controller;
/** @var AuthorizedEmailsController */
private $authorized_emails_controller;
@ -61,7 +57,6 @@ class Newsletters extends APIEndpoint {
WPFunctions $wp,
WCHelper $woocommerce_helper,
SettingsController $settings,
FeaturesController $features_controller,
AuthorizedEmailsController $authorized_emails_controller
) {
$this->bulk_action = $bulk_action;
@ -69,7 +64,6 @@ class Newsletters extends APIEndpoint {
$this->wp = $wp;
$this->woocommerce_helper = $woocommerce_helper;
$this->settings = $settings;
$this->features_controller = $features_controller;
$this->authorized_emails_controller = $authorized_emails_controller;
}
@ -106,7 +100,7 @@ class Newsletters extends APIEndpoint {
->withOptions()
->withSendingQueue()
->withTotalSent()
->withStatistics($this->woocommerce_helper, $this->features_controller);
->withStatistics($this->woocommerce_helper);
$preview_url = NewsletterUrl::getViewInBrowserUrl(
NewsletterUrl::TYPE_LISTING_EDITOR,
@ -483,13 +477,13 @@ class Newsletters extends APIEndpoint {
$newsletter
->withSegments(true)
->withSendingQueue()
->withStatistics($this->woocommerce_helper, $this->features_controller);
->withStatistics($this->woocommerce_helper);
} else if ($newsletter->type === Newsletter::TYPE_WELCOME || $newsletter->type === Newsletter::TYPE_AUTOMATIC) {
$newsletter
->withOptions()
->withTotalSent()
->withScheduledToBeSent()
->withStatistics($this->woocommerce_helper, $this->features_controller);
->withStatistics($this->woocommerce_helper);
} else if ($newsletter->type === Newsletter::TYPE_NOTIFICATION) {
$newsletter
->withOptions()
@ -499,7 +493,7 @@ class Newsletters extends APIEndpoint {
$newsletter
->withSegments(true)
->withSendingQueue()
->withStatistics($this->woocommerce_helper, $this->features_controller);
->withStatistics($this->woocommerce_helper);
}
if ($newsletter->status === Newsletter::STATUS_SENT ||

View File

@ -4,7 +4,6 @@ namespace MailPoet\AdminPages\Pages;
use MailPoet\AdminPages\PageRenderer;
use MailPoet\Config\Menu;
use MailPoet\Features\FeaturesController;
use MailPoet\WP\Functions as WPFunctions;
if (!defined('ABSPATH')) exit;
@ -16,23 +15,15 @@ class RevenueTrackingPermission {
/** @var WPFunctions */
private $wp;
/** @var FeaturesController */
private $features_controller;
function __construct(
PageRenderer $page_renderer,
WPFunctions $wp,
FeaturesController $features_controller
WPFunctions $wp
) {
$this->page_renderer = $page_renderer;
$this->wp = $wp;
$this->features_controller = $features_controller;
}
function render() {
if (!$this->features_controller->isSupported(FeaturesController::FEATURE_DISPLAY_WOOCOMMERCE_REVENUES)) {
return;
}
if ((bool)(defined('DOING_AJAX') && DOING_AJAX)) return;
$data = [
'finish_wizard_url' => $this->wp->adminUrl('admin.php?page=' . Menu::MAIN_PAGE_SLUG),

View File

@ -6,7 +6,6 @@ use MailPoet\AdminPages\PageRenderer;
use MailPoet\Config\Installer;
use MailPoet\Config\ServicesChecker;
use MailPoet\Cron\CronTrigger;
use MailPoet\Features\FeaturesController;
use MailPoet\Models\Segment;
use MailPoet\Models\Subscriber;
use MailPoet\Services\Bridge;
@ -40,9 +39,6 @@ class Settings {
/** @var Captcha */
private $captcha;
/** @var FeaturesController */
private $features_controller;
/** @var Installation */
private $installation;
@ -52,7 +48,6 @@ class Settings {
WooCommerceHelper $woocommerce_helper,
WPFunctions $wp,
ServicesChecker $services_checker,
FeaturesController $features_controller,
Installation $installation,
Captcha $captcha
) {
@ -61,7 +56,6 @@ class Settings {
$this->woocommerce_helper = $woocommerce_helper;
$this->wp = $wp;
$this->services_checker = $services_checker;
$this->features_controller = $features_controller;
$this->installation = $installation;
$this->captcha = $captcha;
}
@ -89,7 +83,6 @@ class Settings {
'current_user' => $this->wp->wpGetCurrentUser(),
'linux_cron_path' => dirname(dirname(__DIR__)),
'is_woocommerce_active' => $this->woocommerce_helper->isWooCommerceActive(),
'display_revenues' => $this->features_controller->isSupported(FeaturesController::FEATURE_DISPLAY_WOOCOMMERCE_REVENUES),
'ABSPATH' => ABSPATH,
'hosts' => [
'web' => Hosts::getWebHosts(),

View File

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

View File

@ -5,7 +5,6 @@ namespace MailPoet\Cron\Workers\StatsNotifications;
use Carbon\Carbon;
use MailPoet\Config\Renderer;
use MailPoet\Cron\CronHelper;
use MailPoet\Features\FeaturesController;
use MailPoet\Mailer\Mailer;
use MailPoet\Models\Newsletter;
use MailPoet\Models\NewsletterLink;
@ -33,9 +32,6 @@ class Worker {
/** @var SettingsController */
private $settings;
/** @var FeaturesController */
private $features_controller;
/** @var WCHelper */
private $woocommerce_helper;
@ -43,7 +39,6 @@ class Worker {
Mailer $mailer,
Renderer $renderer,
SettingsController $settings,
FeaturesController $features_controller,
WCHelper $woocommerce_helper,
$timer = false
) {
@ -51,7 +46,6 @@ class Worker {
$this->renderer = $renderer;
$this->mailer = $mailer;
$this->settings = $settings;
$this->features_controller = $features_controller;
$this->woocommerce_helper = $woocommerce_helper;
}
@ -109,7 +103,7 @@ class Worker {
return $newsletter
->withSendingQueue()
->withTotalSent()
->withStatistics($this->woocommerce_helper, $this->features_controller);
->withStatistics($this->woocommerce_helper);
}
/**

View File

@ -2,7 +2,6 @@
namespace MailPoet\Cron\Workers;
use Carbon\Carbon;
use MailPoet\Features\FeaturesController;
use MailPoet\Models\ScheduledTask;
use MailPoet\Models\StatisticsClicks;
use MailPoet\Statistics\Track\WooCommercePurchases;
@ -21,25 +20,17 @@ class WooCommerceOrders extends SimpleWorker {
/** @var WooCommercePurchases */
private $woocommerce_purchases;
/** @var FeaturesController */
private $features_controller;
function __construct(
WCHelper $woocommerce_helper,
WooCommercePurchases $woocommerce_purchases,
FeaturesController $features_controller,
$timer = false
) {
$this->woocommerce_helper = $woocommerce_helper;
$this->woocommerce_purchases = $woocommerce_purchases;
$this->features_controller = $features_controller;
parent::__construct($timer);
}
function checkProcessingRequirements() {
if (!$this->features_controller->isSupported(FeaturesController::FEATURE_DISPLAY_WOOCOMMERCE_REVENUES)) {
return false;
}
return $this->woocommerce_helper->isWooCommerceActive() && empty(self::getCompletedTasks()); // run only once
}

View File

@ -14,7 +14,6 @@ use MailPoet\Cron\Workers\KeyCheck\PremiumKeyCheck as PremiumKeyCheckWorker;
use MailPoet\Cron\Workers\KeyCheck\SendingServiceKeyCheck as SendingServiceKeyCheckWorker;
use MailPoet\Cron\Workers\WooCommerceSync as WooCommerceSyncWorker;
use MailPoet\Cron\Workers\SendingQueue\SendingErrorHandler;
use MailPoet\Features\FeaturesController;
use MailPoet\Segments\SubscribersFinder;
use MailPoet\Segments\WooCommerce as WooCommerceSegment;
use MailPoet\Services\AuthorizedEmailsController;
@ -39,9 +38,6 @@ class WorkersFactory {
/** @var SettingsController */
private $settings;
/** @var FeaturesController */
private $features_controller;
/** @var WooCommerceSegment */
private $woocommerce_segment;
@ -71,7 +67,6 @@ class WorkersFactory {
Mailer $mailer,
Renderer $renderer,
SettingsController $settings,
FeaturesController $features_controller,
WooCommerceSegment $woocommerce_segment,
InactiveSubscribersController $inactive_subscribers_controller,
WooCommerceHelper $woocommerce_helper,
@ -84,7 +79,6 @@ class WorkersFactory {
$this->mailer = $mailer;
$this->renderer = $renderer;
$this->settings = $settings;
$this->features_controller = $features_controller;
$this->woocommerce_segment = $woocommerce_segment;
$this->inactive_subscribers_controller = $inactive_subscribers_controller;
$this->woocommerce_helper = $woocommerce_helper;
@ -105,7 +99,7 @@ class WorkersFactory {
/** @return StatsNotificationsWorker */
function createStatsNotificationsWorker($timer) {
return new StatsNotificationsWorker($this->mailer, $this->renderer, $this->settings, $this->features_controller, $this->woocommerce_helper, $timer);
return new StatsNotificationsWorker($this->mailer, $this->renderer, $this->settings, $this->woocommerce_helper, $timer);
}
/** @return StatsNotificationsWorkerForAutomatedEmails */
@ -160,6 +154,6 @@ class WorkersFactory {
/** @return WooCommerceOrders */
function createWooCommerceOrdersWorker($timer) {
return new WooCommerceOrders($this->woocommerce_helper, $this->woocommerce_purchases, $this->features_controller, $timer);
return new WooCommerceOrders($this->woocommerce_helper, $this->woocommerce_purchases, $timer);
}
}

View File

@ -8,12 +8,10 @@ class FeaturesController {
// Define features below in the following form:
// const FEATURE_NAME_OF_FEATURE = 'name-of-feature';
const FEATURE_DISPLAY_WOOCOMMERCE_REVENUES = 'display-woocommerce-revenues'; // may also have 'display_revenues' setting
// Define feature defaults in the array below in the following form:
// self::FEATURE_NAME_OF_FEATURE => true,
private $defaults = [
self::FEATURE_DISPLAY_WOOCOMMERCE_REVENUES => false,
];
/** @var array */

View File

@ -1,7 +1,6 @@
<?php
namespace MailPoet\Models;
use Carbon\Carbon;
use MailPoet\Features\FeaturesController;
use MailPoet\Newsletter\Renderer\Renderer;
use MailPoet\Settings\SettingsController;
use MailPoet\Tasks\Sending as SendingTask;
@ -560,8 +559,8 @@ class Newsletter extends Model {
return $this;
}
function withStatistics(WCHelper $woocommerce_helper, FeaturesController $features_controller) {
$statistics = $this->getStatistics($woocommerce_helper, $features_controller);
function withStatistics(WCHelper $woocommerce_helper) {
$statistics = $this->getStatistics($woocommerce_helper);
$this->statistics = $statistics;
return $this;
}
@ -571,7 +570,7 @@ class Newsletter extends Model {
return $renderer->render();
}
function getStatistics(WCHelper $woocommerce_helper, FeaturesController $features_controller) {
function getStatistics(WCHelper $woocommerce_helper) {
if (($this->type !== self::TYPE_WELCOME) && ($this->queue === false)) {
return false;
}
@ -600,10 +599,7 @@ class Newsletter extends Model {
}
// WooCommerce revenues
if (
$features_controller->isSupported(FeaturesController::FEATURE_DISPLAY_WOOCOMMERCE_REVENUES)
&& $woocommerce_helper->isWooCommerceActive()
) {
if ($woocommerce_helper->isWooCommerceActive()) {
$currency = $woocommerce_helper->getWoocommerceCurrency();
$row = StatisticsWooCommercePurchases::selectExpr('SUM(order_price_total) AS total')
->selectExpr('count(*)', 'count')

View File

@ -2,7 +2,6 @@
namespace MailPoet\Test\Acceptance;
class FreePlanAnnouncementCest {
const NOTICE_SELECTOR = '[data-automation-id="free-plan-announcement"]';

View File

@ -2,8 +2,6 @@
namespace MailPoet\Test\Acceptance;
use MailPoet\Features\FeaturesController;
use MailPoet\Test\DataFactories\Features;
use MailPoet\Test\DataFactories\Newsletter;
use MailPoet\Test\DataFactories\NewsletterLink;
use MailPoet\Test\DataFactories\Settings;
@ -17,17 +15,12 @@ class NewsletterStatisticsCest {
/** @var Settings */
private $settings;
/** @var Features */
private $features;
protected function _inject(Settings $settings, Features $features) {
protected function _inject(Settings $settings) {
$this->settings = $settings;
$this->features = $features;
}
function _before(\AcceptanceTester $I) {
$I->activateWooCommerce();
$this->features->withFeatureEnabled(FeaturesController::FEATURE_DISPLAY_WOOCOMMERCE_REVENUES);
$this->settings->withWooCommerceListImportPageDisplayed(true);
$this->settings->withCookieRevenueTrackingDisabled();
}

View File

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

View File

@ -8,7 +8,6 @@ use Codeception\Util\Fixtures;
use Codeception\Util\Stub;
use Helper\WordPressHooks as WPHooksHelper;
use MailPoet\API\JSON\Response as APIResponse;
use MailPoet\Features\FeaturesController;
use MailPoet\Listing\BulkActionController;
use MailPoet\Listing\Handler;
use MailPoet\API\JSON\v1\Newsletters;
@ -127,7 +126,6 @@ class NewslettersTest extends \MailPoetTest {
$wp,
$this->makeEmpty(WCHelper::class),
new SettingsController(),
new FeaturesController(),
$this->make(AuthorizedEmailsController::class, ['onNewsletterUpdate' => Expected::never()])
);
$response = $this->endpoint->get(['id' => $this->newsletter->id]);
@ -168,7 +166,6 @@ class NewslettersTest extends \MailPoetTest {
$wp,
$this->makeEmpty(WCHelper::class),
new SettingsController(),
new FeaturesController(),
$this->make(AuthorizedEmailsController::class, ['onNewsletterUpdate' => Expected::once()])
);
@ -536,7 +533,6 @@ class NewslettersTest extends \MailPoetTest {
$wp,
$this->makeEmpty(WCHelper::class),
new SettingsController(),
new FeaturesController(),
$this->make(AuthorizedEmailsController::class, ['onNewsletterUpdate' => Expected::never()])
);

View File

@ -3,7 +3,6 @@
namespace MailPoet\Cron\Workers\StatsNotifications;
use MailPoet\Config\Renderer;
use MailPoet\Features\FeaturesController;
use MailPoet\Mailer\Mailer;
use MailPoet\Models\Newsletter;
use MailPoet\Models\NewsletterLink;
@ -46,7 +45,7 @@ class WorkerTest extends \MailPoetTest {
$this->mailer = $this->createMock(Mailer::class);
$this->renderer = $this->createMock(Renderer::class);
$this->settings = new SettingsController();
$this->stats_notifications = new Worker($this->mailer, $this->renderer, $this->settings, new FeaturesController(), $this->makeEmpty(WCHelper::class));
$this->stats_notifications = new Worker($this->mailer, $this->renderer, $this->settings, $this->makeEmpty(WCHelper::class));
$this->settings->set(Worker::SETTINGS_KEY, [
'enabled' => true,
'address' => 'email@example.com',

View File

@ -4,8 +4,6 @@ namespace MailPoet\Test\Cron\Workers;
use DateTime;
use MailPoet\Cron\Workers\WooCommerceOrders;
use MailPoet\Features\FeaturesController;
use MailPoet\Models\FeatureFlag;
use MailPoet\Models\ScheduledTask;
use MailPoet\Models\StatisticsClicks;
use MailPoet\Statistics\Track\WooCommercePurchases;
@ -26,11 +24,7 @@ class WooCommerceOrdersTest extends \MailPoetTest {
$this->woocommerce_helper = $this->createMock(WooCommerceHelper::class);
$this->woocommerce_purchases = $this->createMock(WooCommercePurchases::class);
FeatureFlag::createOrUpdate([
'name' => FeaturesController::FEATURE_DISPLAY_WOOCOMMERCE_REVENUES,
'value' => true,
]);
$this->worker = new WooCommerceOrders($this->woocommerce_helper, $this->woocommerce_purchases, new FeaturesController(), microtime(true));
$this->worker = new WooCommerceOrders($this->woocommerce_helper, $this->woocommerce_purchases, microtime(true));
}
function testItDoesNotRunIfWooCommerceIsDisabled() {
@ -146,7 +140,6 @@ class WooCommerceOrdersTest extends \MailPoetTest {
}
private function cleanup() {
\ORM::raw_execute('TRUNCATE ' . FeatureFlag::$_table);
\ORM::raw_execute('TRUNCATE ' . ScheduledTask::$_table);
\ORM::raw_execute('TRUNCATE ' . StatisticsClicks::$_table);
}

View File

@ -2,7 +2,6 @@
namespace MailPoet\Test\Models;
use Carbon\Carbon;
use MailPoet\Features\FeaturesController;
use MailPoet\Models\Newsletter;
use MailPoet\Models\Segment;
use MailPoet\Models\Subscriber;
@ -171,7 +170,7 @@ class NewsletterTest extends \MailPoetTest {
$unsubscribes->save();
$newsletter->queue = $newsletter->getQueue()->asArray();
$statistics = $newsletter->getStatistics($this->makeEmpty(WCHelper::class), new FeaturesController());
$statistics = $newsletter->getStatistics($this->makeEmpty(WCHelper::class));
expect($statistics['opened'])->equals(1);
expect($statistics['clicked'])->equals(1);
expect($statistics['unsubscribed'])->equals(1);

View File

@ -80,33 +80,31 @@
</p>
</td>
</tr>
<% if display_revenues %>
<tr>
<th scope="row">
<label for="settings[mailpoet_accept_cookie_revenue_tracking]">
<%= _x('Enable browser cookies', 'Option in settings page: the user can accept or forbid MailPoet to use browser cookies') %>
</label>
<p class="description">
<%= _x('If you enable this option, MailPoet will use browser cookies for more precise WooCommerce tracking. This is practical for abandoned cart emails for example.', 'Browser cookies are data created by websites and stored in visitors web browser') %>
</p>
</th>
<td>
<p>
<input
type="checkbox"
value="1"
id="settings[mailpoet_accept_cookie_revenue_tracking]"
data-automation-id="accept_cookie_revenue_tracking"
name="woocommerce[accept_cookie_revenue_tracking][enabled]"
<% if(settings.woocommerce.accept_cookie_revenue_tracking.enabled == "1") %>checked="checked"<% endif %>
>
<input
type="hidden"
value="1"
name="woocommerce[accept_cookie_revenue_tracking][set]"
>
</p>
</td>
</tr>
<% endif %>
<tr>
<th scope="row">
<label for="settings[mailpoet_accept_cookie_revenue_tracking]">
<%= _x('Enable browser cookies', 'Option in settings page: the user can accept or forbid MailPoet to use browser cookies') %>
</label>
<p class="description">
<%= _x('If you enable this option, MailPoet will use browser cookies for more precise WooCommerce tracking. This is practical for abandoned cart emails for example.', 'Browser cookies are data created by websites and stored in visitors web browser') %>
</p>
</th>
<td>
<p>
<input
type="checkbox"
value="1"
id="settings[mailpoet_accept_cookie_revenue_tracking]"
data-automation-id="accept_cookie_revenue_tracking"
name="woocommerce[accept_cookie_revenue_tracking][enabled]"
<% if(settings.woocommerce.accept_cookie_revenue_tracking.enabled == "1") %>checked="checked"<% endif %>
>
<input
type="hidden"
value="1"
name="woocommerce[accept_cookie_revenue_tracking][set]"
>
</p>
</td>
</tr>
</table>