Show notice when migration affects tracking settings
[MAILPOET-3185]
This commit is contained in:
committed by
Veljko V
parent
432b2e6ff5
commit
7b69efea13
@@ -37,6 +37,7 @@ use MailPoet\Subscribers\NewSubscriberNotificationMailer;
|
|||||||
use MailPoet\Subscribers\Source;
|
use MailPoet\Subscribers\Source;
|
||||||
use MailPoet\Subscription\Captcha;
|
use MailPoet\Subscription\Captcha;
|
||||||
use MailPoet\Util\Helpers;
|
use MailPoet\Util\Helpers;
|
||||||
|
use MailPoet\Util\Notices\ChangedTrackingNotice;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
use MailPoetVendor\Carbon\Carbon;
|
use MailPoetVendor\Carbon\Carbon;
|
||||||
use MailPoetVendor\Doctrine\ORM\EntityManager;
|
use MailPoetVendor\Doctrine\ORM\EntityManager;
|
||||||
@@ -941,6 +942,11 @@ class Populator {
|
|||||||
$trackingLevel = $emailTracking ? TrackingConfig::LEVEL_FULL : TrackingConfig::LEVEL_BASIC;
|
$trackingLevel = $emailTracking ? TrackingConfig::LEVEL_FULL : TrackingConfig::LEVEL_BASIC;
|
||||||
} elseif ($wooTrackingCookie) { // WooCommerce Cookie Tracking enabled
|
} elseif ($wooTrackingCookie) { // WooCommerce Cookie Tracking enabled
|
||||||
$trackingLevel = TrackingConfig::LEVEL_FULL;
|
$trackingLevel = TrackingConfig::LEVEL_FULL;
|
||||||
|
// Cookie was enabled but tracking disabled and we are switching to full.
|
||||||
|
// So we activate an admin notice to let the user know that we activated tracking
|
||||||
|
if (!$emailTracking) {
|
||||||
|
$this->wp->setTransient(ChangedTrackingNotice::OPTION_NAME, true);
|
||||||
|
}
|
||||||
} else { // WooCommerce Tracking Cookie Disabled
|
} else { // WooCommerce Tracking Cookie Disabled
|
||||||
$trackingLevel = $emailTracking ? TrackingConfig::LEVEL_PARTIAL : TrackingConfig::LEVEL_BASIC;
|
$trackingLevel = $emailTracking ? TrackingConfig::LEVEL_PARTIAL : TrackingConfig::LEVEL_BASIC;
|
||||||
}
|
}
|
||||||
|
39
lib/Util/Notices/ChangedTrackingNotice.php
Normal file
39
lib/Util/Notices/ChangedTrackingNotice.php
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace MailPoet\Util\Notices;
|
||||||
|
|
||||||
|
use MailPoet\Util\Helpers;
|
||||||
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
use MailPoet\WP\Notice;
|
||||||
|
|
||||||
|
class ChangedTrackingNotice {
|
||||||
|
const OPTION_NAME = 'mailpoet-changed-tracking-settings-notice';
|
||||||
|
|
||||||
|
/** @var WPFunctions */
|
||||||
|
private $wp;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
WPFunctions $wp
|
||||||
|
) {
|
||||||
|
$this->wp = $wp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function init($shouldDisplay) {
|
||||||
|
if ($shouldDisplay && $this->wp->getTransient(self::OPTION_NAME)) {
|
||||||
|
return $this->display();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function display() {
|
||||||
|
$text = __('Email open and click tracking is now enabled. You can change how MailPoet tracks your subscribers in [link]Settings[/link]', 'mailpoet');
|
||||||
|
$text = Helpers::replaceLinkTags($text, 'admin.php?page=mailpoet-settings#advanced');
|
||||||
|
$extraClasses = 'mailpoet-dismissible-notice is-dismissible';
|
||||||
|
|
||||||
|
return Notice::displayWarning($text, $extraClasses, self::OPTION_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function disable() {
|
||||||
|
$this->wp->deleteTransient(self::OPTION_NAME);
|
||||||
|
}
|
||||||
|
}
|
@@ -39,6 +39,9 @@ class PermanentNotices {
|
|||||||
/** @var EmailWithInvalidSegmentNotice */
|
/** @var EmailWithInvalidSegmentNotice */
|
||||||
private $emailWithInvalidListNotice;
|
private $emailWithInvalidListNotice;
|
||||||
|
|
||||||
|
/** @var ChangedTrackingNotice */
|
||||||
|
private $changedTrackingNotice;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
WPFunctions $wp,
|
WPFunctions $wp,
|
||||||
TrackingConfig $trackingConfig,
|
TrackingConfig $trackingConfig,
|
||||||
@@ -54,6 +57,7 @@ class PermanentNotices {
|
|||||||
$this->headersAlreadySentNotice = new HeadersAlreadySentNotice($settings, $trackingConfig, $wp);
|
$this->headersAlreadySentNotice = new HeadersAlreadySentNotice($settings, $trackingConfig, $wp);
|
||||||
$this->deprecatedShortcodeNotice = new DeprecatedShortcodeNotice($wp);
|
$this->deprecatedShortcodeNotice = new DeprecatedShortcodeNotice($wp);
|
||||||
$this->emailWithInvalidListNotice = new EmailWithInvalidSegmentNotice($wp);
|
$this->emailWithInvalidListNotice = new EmailWithInvalidSegmentNotice($wp);
|
||||||
|
$this->changedTrackingNotice = new ChangedTrackingNotice($wp);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function init() {
|
public function init() {
|
||||||
@@ -94,6 +98,9 @@ class PermanentNotices {
|
|||||||
$this->emailWithInvalidListNotice->init(
|
$this->emailWithInvalidListNotice->init(
|
||||||
Menu::isOnMailPoetAdminPage($exclude = null, $pageId = 'mailpoet-newsletters')
|
Menu::isOnMailPoetAdminPage($exclude = null, $pageId = 'mailpoet-newsletters')
|
||||||
);
|
);
|
||||||
|
$this->changedTrackingNotice->init(
|
||||||
|
Menu::isOnMailPoetAdminPage($excludeWizard)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function ajaxDismissNoticeHandler() {
|
public function ajaxDismissNoticeHandler() {
|
||||||
@@ -120,6 +127,9 @@ class PermanentNotices {
|
|||||||
case (EmailWithInvalidSegmentNotice::OPTION_NAME):
|
case (EmailWithInvalidSegmentNotice::OPTION_NAME):
|
||||||
$this->emailWithInvalidListNotice->disable();
|
$this->emailWithInvalidListNotice->disable();
|
||||||
break;
|
break;
|
||||||
|
case (ChangedTrackingNotice::OPTION_NAME):
|
||||||
|
$this->changedTrackingNotice->disable();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -4,6 +4,8 @@ namespace MailPoet\Config;
|
|||||||
|
|
||||||
use MailPoet\Settings\SettingsController;
|
use MailPoet\Settings\SettingsController;
|
||||||
use MailPoet\Settings\TrackingConfig;
|
use MailPoet\Settings\TrackingConfig;
|
||||||
|
use MailPoet\Util\Notices\ChangedTrackingNotice;
|
||||||
|
use MailPoet\WP\Functions;
|
||||||
|
|
||||||
class PopulatorTest extends \MailPoetTest {
|
class PopulatorTest extends \MailPoetTest {
|
||||||
|
|
||||||
@@ -20,36 +22,43 @@ class PopulatorTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function testItMigratesTrackingSettings() {
|
public function testItMigratesTrackingSettings() {
|
||||||
|
$wp = $this->diContainer->get(Functions::class);
|
||||||
// WooCommerce disabled and Tracking enabled
|
// WooCommerce disabled and Tracking enabled
|
||||||
$this->settings->set('db_version', '3.74.1');
|
$this->settings->set('db_version', '3.74.1');
|
||||||
$this->settings->set('tracking', ['enabled' => true]);
|
$this->settings->set('tracking', ['enabled' => true]);
|
||||||
$this->settings->set('woocommerce.accept_cookie_revenue_tracking.enabled', null);
|
$this->settings->set('woocommerce.accept_cookie_revenue_tracking.enabled', null);
|
||||||
$this->populator->up();
|
$this->populator->up();
|
||||||
expect($this->settings->get('tracking.level'))->equals(TrackingConfig::LEVEL_FULL);
|
expect($this->settings->get('tracking.level'))->equals(TrackingConfig::LEVEL_FULL);
|
||||||
|
expect($wp->getTransient(ChangedTrackingNotice::OPTION_NAME))->false();
|
||||||
// WooCommerce disabled and Tracking disabled
|
// WooCommerce disabled and Tracking disabled
|
||||||
$this->settings->set('tracking', ['enabled' => false]);
|
$this->settings->set('tracking', ['enabled' => false]);
|
||||||
$this->settings->set('woocommerce.accept_cookie_revenue_tracking.enabled', null);
|
$this->settings->set('woocommerce.accept_cookie_revenue_tracking.enabled', null);
|
||||||
$this->populator->up();
|
$this->populator->up();
|
||||||
expect($this->settings->get('tracking.level'))->equals(TrackingConfig::LEVEL_BASIC);
|
expect($this->settings->get('tracking.level'))->equals(TrackingConfig::LEVEL_BASIC);
|
||||||
|
expect($wp->getTransient(ChangedTrackingNotice::OPTION_NAME))->false();
|
||||||
// WooCommerce enabled with cookie enabled and Tracking enabled
|
// WooCommerce enabled with cookie enabled and Tracking enabled
|
||||||
$this->settings->set('tracking', ['enabled' => true]);
|
$this->settings->set('tracking', ['enabled' => true]);
|
||||||
$this->settings->set('woocommerce.accept_cookie_revenue_tracking.enabled', "1");
|
$this->settings->set('woocommerce.accept_cookie_revenue_tracking.enabled', "1");
|
||||||
$this->populator->up();
|
$this->populator->up();
|
||||||
expect($this->settings->get('tracking.level'))->equals(TrackingConfig::LEVEL_FULL);
|
expect($this->settings->get('tracking.level'))->equals(TrackingConfig::LEVEL_FULL);
|
||||||
|
expect($wp->getTransient(ChangedTrackingNotice::OPTION_NAME))->false();
|
||||||
// WooCommerce enabled with cookie disabled and Tracking enabled
|
// WooCommerce enabled with cookie disabled and Tracking enabled
|
||||||
$this->settings->set('tracking', ['enabled' => true]);
|
$this->settings->set('tracking', ['enabled' => true]);
|
||||||
$this->settings->set('woocommerce.accept_cookie_revenue_tracking.enabled', "");
|
$this->settings->set('woocommerce.accept_cookie_revenue_tracking.enabled', "");
|
||||||
$this->populator->up();
|
$this->populator->up();
|
||||||
expect($this->settings->get('tracking.level'))->equals(TrackingConfig::LEVEL_PARTIAL);
|
expect($this->settings->get('tracking.level'))->equals(TrackingConfig::LEVEL_PARTIAL);
|
||||||
|
expect($wp->getTransient(ChangedTrackingNotice::OPTION_NAME))->false();
|
||||||
// WooCommerce enabled with cookie disabled and Tracking disabled
|
// WooCommerce enabled with cookie disabled and Tracking disabled
|
||||||
$this->settings->set('tracking', ['enabled' => false]);
|
$this->settings->set('tracking', ['enabled' => false]);
|
||||||
$this->settings->set('woocommerce.accept_cookie_revenue_tracking.enabled', "");
|
$this->settings->set('woocommerce.accept_cookie_revenue_tracking.enabled', "");
|
||||||
$this->populator->up();
|
$this->populator->up();
|
||||||
expect($this->settings->get('tracking.level'))->equals(TrackingConfig::LEVEL_BASIC);
|
expect($this->settings->get('tracking.level'))->equals(TrackingConfig::LEVEL_BASIC);
|
||||||
|
expect($wp->getTransient(ChangedTrackingNotice::OPTION_NAME))->false();
|
||||||
// WooCommerce enabled with cookie enabled and Tracking disabled
|
// WooCommerce enabled with cookie enabled and Tracking disabled
|
||||||
$this->settings->set('tracking', ['enabled' => false]);
|
$this->settings->set('tracking', ['enabled' => false]);
|
||||||
$this->settings->set('woocommerce.accept_cookie_revenue_tracking.enabled', "1");
|
$this->settings->set('woocommerce.accept_cookie_revenue_tracking.enabled', "1");
|
||||||
$this->populator->up();
|
$this->populator->up();
|
||||||
expect($this->settings->get('tracking.level'))->equals(TrackingConfig::LEVEL_FULL);
|
expect($this->settings->get('tracking.level'))->equals(TrackingConfig::LEVEL_FULL);
|
||||||
|
expect($wp->getTransient(ChangedTrackingNotice::OPTION_NAME))->equals(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user