Remove automation feature flag

[MAILPOET-4788]
This commit is contained in:
Jan Jakes
2022-11-11 10:33:02 +03:00
committed by David Remer
parent eb71dd8a68
commit 725e0ecb00
16 changed files with 14 additions and 144 deletions

View File

@@ -5,7 +5,6 @@ namespace MailPoet\API\MP\v1;
use MailPoet\API\JSON\ResponseBuilders\SubscribersResponseBuilder;
use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Features\FeaturesController;
use MailPoet\Listing\ListingDefinition;
use MailPoet\Newsletter\Scheduler\WelcomeScheduler;
use MailPoet\Segments\SegmentsRepository;
@@ -54,9 +53,6 @@ class Subscribers {
/** @var SubscriberSaveController */
private $subscriberSaveController;
/** @var FeaturesController */
private $featuresController;
/** @var RequiredCustomFieldValidator */
private $requiredCustomFieldsValidator;
@@ -76,7 +72,6 @@ class Subscribers {
SubscriberSaveController $subscriberSaveController,
SubscribersResponseBuilder $subscribersResponseBuilder,
WelcomeScheduler $welcomeScheduler,
FeaturesController $featuresController,
RequiredCustomFieldValidator $requiredCustomFieldsValidator,
SubscriberListingRepository $subscriberListingRepository,
WPFunctions $wp
@@ -90,7 +85,6 @@ class Subscribers {
$this->subscriberSaveController = $subscriberSaveController;
$this->subscribersResponseBuilder = $subscribersResponseBuilder;
$this->welcomeScheduler = $welcomeScheduler;
$this->featuresController = $featuresController;
$this->requiredCustomFieldsValidator = $requiredCustomFieldsValidator;
$this->wp = $wp;
$this->subscriberListingRepository = $subscriberListingRepository;
@@ -202,10 +196,7 @@ class Subscribers {
}
// when global status changes to subscribed, fire subscribed hook for all subscribed segments
if (
$this->featuresController->isSupported(FeaturesController::AUTOMATION)
&& $subscriber->getStatus() === SubscriberEntity::STATUS_SUBSCRIBED
) {
if ($subscriber->getStatus() === SubscriberEntity::STATUS_SUBSCRIBED) {
$subscriberSegments = $subscriber->getSubscriberSegments();
foreach ($subscriberSegments as $subscriberSegment) {
if ($subscriberSegment->getStatus() === SubscriberEntity::STATUS_SUBSCRIBED) {

View File

@@ -8,7 +8,6 @@ use MailPoet\Automation\Engine\Storage\AutomationStorage;
use MailPoet\Config\ServicesChecker;
use MailPoet\Cron\CronTrigger;
use MailPoet\Entities\DynamicSegmentFilterData;
use MailPoet\Features\FeaturesController;
use MailPoet\Listing\ListingDefinition;
use MailPoet\Newsletter\NewslettersRepository;
use MailPoet\Segments\DynamicSegments\DynamicSegmentFilterRepository;
@@ -74,9 +73,6 @@ class Reporter {
/** @var SubscriberListingRepository */
private $subscriberListingRepository;
/** @var FeaturesController */
private $featuresController;
/** @var AutomationStorage */
private $automationStorage;
@@ -92,7 +88,6 @@ class Reporter {
SubscribersFeature $subscribersFeature,
TrackingConfig $trackingConfig,
SubscriberListingRepository $subscriberListingRepository,
FeaturesController $featuresController,
AutomationStorage $automationStorage
) {
$this->newslettersRepository = $newslettersRepository;
@@ -106,7 +101,6 @@ class Reporter {
$this->subscribersFeature = $subscribersFeature;
$this->trackingConfig = $trackingConfig;
$this->subscriberListingRepository = $subscriberListingRepository;
$this->featuresController = $featuresController;
$this->automationStorage = $automationStorage;
}
@@ -231,10 +225,6 @@ class Reporter {
}
private function automationProperties(): array {
if (!$this->featuresController->isSupported(FeaturesController::AUTOMATION)) {
return [];
}
$automations = $this->automationStorage->getAutomations();
$activeAutomations = array_filter(
$automations,

View File

@@ -10,7 +10,6 @@ use MailPoet\Automation\Engine\Hooks as AutomationHooks;
use MailPoet\Automation\Integrations\MailPoet\MailPoetIntegration;
use MailPoet\Cron\CronTrigger;
use MailPoet\Cron\DaemonActionSchedulerRunner;
use MailPoet\Features\FeaturesController;
use MailPoet\InvalidStateException;
use MailPoet\Migrator\Cli as MigratorCli;
use MailPoet\PostEditorBlocks\PostEditorBlock;
@@ -108,9 +107,6 @@ class Initializer {
/** @var MailPoetIntegration */
private $automationMailPoetIntegration;
/** @var FeaturesController */
private $featuresController;
/** @var PersonalDataExporters */
private $personalDataExporters;
@@ -146,7 +142,6 @@ class Initializer {
AssetsLoader $assetsLoader,
Engine $automationEngine,
MailPoetIntegration $automationMailPoetIntegration,
FeaturesController $featuresController,
PersonalDataExporters $personalDataExporters,
DaemonActionSchedulerRunner $actionSchedulerRunner
) {
@@ -176,7 +171,6 @@ class Initializer {
$this->assetsLoader = $assetsLoader;
$this->automationEngine = $automationEngine;
$this->automationMailPoetIntegration = $automationMailPoetIntegration;
$this->featuresController = $featuresController;
$this->personalDataExporters = $personalDataExporters;
$this->actionSchedulerRunner = $actionSchedulerRunner;
}
@@ -254,12 +248,10 @@ class Initializer {
'multisiteDropTables',
]);
if ($this->featuresController->isSupported(FeaturesController::AUTOMATION)) {
WPFunctions::get()->addAction(AutomationHooks::INITIALIZE, [
$this->automationMailPoetIntegration,
'register',
]);
}
WPFunctions::get()->addAction(AutomationHooks::INITIALIZE, [
$this->automationMailPoetIntegration,
'register',
]);
$this->hooks->initEarlyHooks();
}
@@ -315,10 +307,7 @@ class Initializer {
$this->setupWoocommerceBlocksIntegration();
$this->subscriberActivityTracker->trackActivity();
$this->postEditorBlock->init();
if ($this->featuresController->isSupported(FeaturesController::AUTOMATION)) {
$this->automationEngine->initialize();
}
$this->automationEngine->initialize();
$this->wpFunctions->doAction('mailpoet_initialized', MAILPOET_VERSION);
} catch (InvalidStateException $e) {

View File

@@ -21,7 +21,6 @@ use MailPoet\AdminPages\Pages\Upgrade;
use MailPoet\AdminPages\Pages\WelcomeWizard;
use MailPoet\AdminPages\Pages\WooCommerceSetup;
use MailPoet\DI\ContainerWrapper;
use MailPoet\Features\FeaturesController;
use MailPoet\Form\Util\CustomFonts;
use MailPoet\Util\License\License;
use MailPoet\WP\Functions as WPFunctions;
@@ -49,9 +48,6 @@ class Menu {
/** @var Router */
private $router;
/** @var FeaturesController */
private $featuresController;
/** @var CustomFonts */
private $customFonts;
@@ -61,7 +57,6 @@ class Menu {
ServicesChecker $servicesChecker,
ContainerWrapper $container,
Router $router,
FeaturesController $featuresController,
CustomFonts $customFonts
) {
$this->accessControl = $accessControl;
@@ -69,7 +64,6 @@ class Menu {
$this->servicesChecker = $servicesChecker;
$this->container = $container;
$this->router = $router;
$this->featuresController = $featuresController;
$this->customFonts = $customFonts;
}
@@ -430,11 +424,6 @@ class Menu {
}
private function registerAutomationMenu() {
if (!$this->featuresController->isSupported(FeaturesController::AUTOMATION)) {
return;
}
$automationPage = $this->wp->addSubmenuPage(
self::MAIN_PAGE_SLUG,
$this->setPageTitle(__('Automations', 'mailpoet')),

View File

@@ -5,12 +5,9 @@ namespace MailPoet\Features;
use MailPoetVendor\Doctrine\DBAL\Exception\TableNotFoundException;
class FeaturesController {
public const AUTOMATION = 'automation';
// Define feature defaults in the array below in the following form:
// self::FEATURE_NAME_OF_FEATURE => true,
private $defaults = [
self::AUTOMATION => false,
];
/** @var array|null */

View File

@@ -6,7 +6,6 @@ use MailPoet\Doctrine\Repository;
use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Entities\SubscriberSegmentEntity;
use MailPoet\Features\FeaturesController;
use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Doctrine\ORM\EntityManager;
use MailPoetVendor\Doctrine\ORM\Query\Expr\Join;
@@ -15,19 +14,14 @@ use MailPoetVendor\Doctrine\ORM\Query\Expr\Join;
* @extends Repository<SubscriberSegmentEntity>
*/
class SubscriberSegmentRepository extends Repository {
/** @var FeaturesController */
private $featuresController;
/** @var WPFunctions */
private $wp;
public function __construct(
EntityManager $entityManager,
FeaturesController $featuresController,
WPFunctions $wp
) {
parent::__construct($entityManager);
$this->featuresController = $featuresController;
$this->wp = $wp;
}
@@ -115,8 +109,7 @@ class SubscriberSegmentRepository extends Repository {
// fire subscribed hook for new subscriptions
if (
$this->featuresController->isSupported(FeaturesController::AUTOMATION)
&& $subscriber->getStatus() === SubscriberEntity::STATUS_SUBSCRIBED
$subscriber->getStatus() === SubscriberEntity::STATUS_SUBSCRIBED
&& $subscriberSegment->getStatus() === SubscriberEntity::STATUS_SUBSCRIBED
&& $oldStatus !== SubscriberEntity::STATUS_SUBSCRIBED
) {

View File

@@ -6,7 +6,6 @@ use MailPoet\Config\Renderer as TemplateRenderer;
use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\StatisticsUnsubscribeEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Features\FeaturesController;
use MailPoet\Form\AssetsController;
use MailPoet\Newsletter\Scheduler\WelcomeScheduler;
use MailPoet\Settings\TrackingConfig;
@@ -74,9 +73,6 @@ class Pages {
/** @var TrackingConfig */
private $trackingConfig;
/** @var FeaturesController */
private $featuresController;
/** @var EntityManager */
private $entityManager;
@@ -100,7 +96,6 @@ class Pages {
SubscriberHandler $subscriberHandler,
SubscribersRepository $subscribersRepository,
TrackingConfig $trackingConfig,
FeaturesController $featuresController,
EntityManager $entityManager,
SubscriberSaveController $subscriberSaveController,
SubscriberSegmentRepository $subscriberSegmentRepository
@@ -118,7 +113,6 @@ class Pages {
$this->subscriberHandler = $subscriberHandler;
$this->subscribersRepository = $subscribersRepository;
$this->trackingConfig = $trackingConfig;
$this->featuresController = $featuresController;
$this->entityManager = $entityManager;
$this->subscriberSaveController = $subscriberSaveController;
$this->subscriberSegmentRepository = $subscriberSegmentRepository;
@@ -213,13 +207,11 @@ class Pages {
}
// when global status changes to subscribed, fire subscribed hook for all subscribed segments
if ($this->featuresController->isSupported(FeaturesController::AUTOMATION)) {
$segments = $this->subscriber->getSubscriberSegments();
if ($originalStatus !== SubscriberEntity::STATUS_SUBSCRIBED) {
foreach ($segments as $subscriberSegment) {
if ($subscriberSegment->getStatus() === SubscriberEntity::STATUS_SUBSCRIBED) {
$this->wp->doAction('mailpoet_segment_subscribed', $subscriberSegment);
}
$segments = $this->subscriber->getSubscriberSegments();
if ($originalStatus !== SubscriberEntity::STATUS_SUBSCRIBED) {
foreach ($segments as $subscriberSegment) {
if ($subscriberSegment->getStatus() === SubscriberEntity::STATUS_SUBSCRIBED) {
$this->wp->doAction('mailpoet_segment_subscribed', $subscriberSegment);
}
}
}

View File

@@ -2,19 +2,7 @@
namespace MailPoet\Test\Acceptance;
use MailPoet\DI\ContainerWrapper;
use MailPoet\Features\FeaturesController;
use MailPoet\Test\DataFactories\Features;
class ConfirmLeaveWhenUnsavedChangesCest
{
public function _before() {
// @ToDo Remove once MVP is released.
$features = new Features();
$features->withFeatureEnabled(FeaturesController::AUTOMATION);
$container = ContainerWrapper::getInstance();
}
class ConfirmLeaveWhenUnsavedChangesCest {
public function confirmationIsRequiredIfAutomationNotSaved(\AcceptanceTester $i) {
$i->wantTo('Edit a new automation draft');
$i->login();

View File

@@ -2,20 +2,10 @@
namespace MailPoet\Test\Acceptance;
use Facebook\WebDriver\WebDriverKeys;
use MailPoet\DI\ContainerWrapper;
use MailPoet\Features\FeaturesController;
use MailPoet\Test\DataFactories\Features;
use MailPoet\Test\DataFactories\Settings;
class CreateEmailAutomationAndWalkThroughCest
{
class CreateEmailAutomationAndWalkThroughCest {
public function _before() {
// @ToDo Remove once MVP is released.
$features = new Features();
$features->withFeatureEnabled(FeaturesController::AUTOMATION);
$container = ContainerWrapper::getInstance();
$settings = new Settings();
$settings->withCronTriggerMethod('Action Scheduler');
}

View File

@@ -7,17 +7,10 @@ use MailPoet\Automation\Engine\Data\Step;
use MailPoet\Automation\Engine\Data\Automation;
use MailPoet\Automation\Engine\Storage\AutomationRunLogStorage;
use MailPoet\Automation\Engine\Storage\AutomationRunStorage;
use MailPoet\Automation\Engine\Storage\AutomationStatisticsStorage;
use MailPoet\Automation\Engine\Storage\AutomationStorage;
use MailPoet\Automation\Integrations\Core\Actions\DelayAction;
use MailPoet\Automation\Integrations\MailPoet\Triggers\SomeoneSubscribesTrigger;
use MailPoet\DI\ContainerWrapper;
use MailPoet\Entities\NewsletterSegmentEntity;
use MailPoet\Entities\SegmentEntity;
use MailPoet\Features\FeaturesController;
use MailPoet\Models\NewsletterSegment;
use MailPoet\Segments\SegmentsRepository;
use MailPoet\Test\DataFactories\Features;
use MailPoet\Test\DataFactories\Settings;
use MailPoet\Test\DataFactories\WooCommerceProduct;
@@ -42,13 +35,8 @@ class SomeoneSubscribesAutomationTriggeredByCheckoutCest
public function _before(\AcceptanceTester $i) {
$i->activateWooCommerce();
// @ToDo Remove once MVP is released.
$features = new Features();
$features->withFeatureEnabled(FeaturesController::AUTOMATION);
$this->container = ContainerWrapper::getInstance();
$this->settingsFactory = new Settings();
$this->settingsFactory->withCronTriggerMethod('Action Scheduler');
$this->automationStorage = $this->container->get(AutomationStorage::class);
$this->automationRunStorage = $this->container->get(AutomationRunStorage::class);

View File

@@ -12,8 +12,6 @@ use MailPoet\Automation\Engine\Storage\AutomationStorage;
use MailPoet\Automation\Integrations\Core\Actions\DelayAction;
use MailPoet\Automation\Integrations\MailPoet\Triggers\UserRegistrationTrigger;
use MailPoet\DI\ContainerWrapper;
use MailPoet\Features\FeaturesController;
use MailPoet\Test\DataFactories\Features;
use MailPoet\Test\DataFactories\Settings;
class UserRegistrationTriggerCest
@@ -34,13 +32,8 @@ class UserRegistrationTriggerCest
private $automationRunLogStorage;
public function _before(\AcceptanceTester $i) {
// @ToDo Remove once MVP is released.
$features = new Features();
$features->withFeatureEnabled(FeaturesController::AUTOMATION);
$this->container = ContainerWrapper::getInstance();
$this->settingsFactory = new Settings();
$this->settingsFactory->withCronTriggerMethod('Action Scheduler');
$this->automationStorage = $this->container->get(AutomationStorage::class);
$this->automationRunStorage = $this->container->get(AutomationRunStorage::class);

View File

@@ -9,12 +9,8 @@ use MailPoet\API\JSON\v1\Setup;
use MailPoet\Config\Activator;
use MailPoet\Config\Populator;
use MailPoet\Cron\ActionScheduler\ActionScheduler;
use MailPoet\Form\FormsRepository;
use MailPoet\Features\FeatureFlagsController;
use MailPoet\Features\FeaturesController;
use MailPoet\Migrator\Migrator;
use MailPoet\Referrals\ReferralDetector;
use MailPoet\Segments\WP;
use MailPoet\Settings\SettingsController;
use MailPoet\Settings\SettingsRepository;
use MailPoet\Subscription\Captcha;
@@ -61,9 +57,5 @@ class SetupTest extends \MailPoetTest {
public function _after() {
$this->diContainer->get(SettingsRepository::class)->truncate();
// Temporarily hotfix a side effect of this test, that is, removing automation feature flag
// and tables and not setting them back. This will be removed very soon, before MVP release.
$this->diContainer->get(FeatureFlagsController::class)->set(FeaturesController::AUTOMATION, true);
}
}

View File

@@ -16,7 +16,6 @@ use MailPoet\Entities\CustomFieldEntity;
use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Entities\SubscriberSegmentEntity;
use MailPoet\Features\FeaturesController;
use MailPoet\Models\ScheduledTask;
use MailPoet\Models\SendingQueue;
use MailPoet\Newsletter\Scheduler\WelcomeScheduler;
@@ -67,7 +66,6 @@ class SubscribersTest extends \MailPoetTest {
$this->diContainer->get(SubscriberSaveController::class),
$this->diContainer->get(SubscribersResponseBuilder::class),
Stub::makeEmpty(WelcomeScheduler::class),
$this->diContainer->get(FeaturesController::class),
$this->diContainer->get(RequiredCustomFieldValidator::class),
$this->diContainer->get(SubscriberListingRepository::class),
$this->diContainer->get(WPFunctions::class)
@@ -201,7 +199,6 @@ class SubscribersTest extends \MailPoetTest {
'subscribersSegmentRepository' => $this->diContainer->get(SubscriberSegmentRepository::class),
'subscribersResponseBuilder' => $this->diContainer->get(SubscribersResponseBuilder::class),
'settings' => SettingsController::getInstance(),
'featuresController' => $this->diContainer->get(FeaturesController::class),
]
);

View File

@@ -8,9 +8,7 @@ use MailPoet\Config\Menu;
use MailPoet\Config\Router;
use MailPoet\Config\ServicesChecker;
use MailPoet\DI\ContainerWrapper;
use MailPoet\Features\FeaturesController;
use MailPoet\Form\Util\CustomFonts;
use MailPoet\Settings\SettingsController;
use MailPoet\WP\Functions as WPFunctions;
class MenuTest extends \MailPoetTest {
@@ -72,7 +70,6 @@ class MenuTest extends \MailPoetTest {
new ServicesChecker,
ContainerWrapper::getInstance(),
$this->diContainer->get(Router::class),
$this->diContainer->get(FeaturesController::class),
$this->diContainer->get(CustomFonts::class)
);
}

View File

@@ -14,7 +14,6 @@ use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Entities\StatisticsUnsubscribeEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Entities\SubscriberSegmentEntity;
use MailPoet\Features\FeaturesController;
use MailPoet\Form\AssetsController;
use MailPoet\Newsletter\NewslettersRepository;
use MailPoet\Newsletter\Scheduler\WelcomeScheduler;
@@ -234,7 +233,6 @@ class PagesTest extends \MailPoetTest {
$container->get(SubscriberHandler::class),
$this->subscribersRepository,
$container->get(TrackingConfig::class),
$container->get(FeaturesController::class),
$container->get(EntityManager::class),
$container->get(SubscriberSaveController::class),
$container->get(SubscriberSegmentRepository::class)

View File

@@ -1,14 +1,10 @@
<?php
use Codeception\Stub;
use MailPoet\Automation\Engine\Engine;
use MailPoet\Automation\Engine\Hooks;
use MailPoet\Automation\Integrations\MailPoet\MailPoetIntegration;
use MailPoet\Cache\TransientCache;
use MailPoet\Cron\CronTrigger;
use MailPoet\DI\ContainerWrapper;
use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Features\FeatureFlagsController;
use MailPoet\Features\FeaturesController;
use MailPoet\Settings\SettingsController;
use MailPoetVendor\Doctrine\DBAL\Connection;
@@ -59,16 +55,6 @@ if (is_dir((string)getenv('WP_TEST_CACHE_PATH'))) {
// the action is called in ConflictResolverTest
remove_filter('admin_print_styles', 'wp_resource_hints', 1);
// enable & initialize automation (this is needed only when behind a feature flag)
$_SERVER['SERVER_NAME'] = '';
$container = ContainerWrapper::getInstance();
$container->get(FeatureFlagsController::class)->set(FeaturesController::AUTOMATION, true);
$action = [$container->get(MailPoetIntegration::class), 'register'];
if (!has_action(Hooks::INITIALIZE, $action) && is_callable($action)) {
add_action(Hooks::INITIALIZE, $action);
$container->get(Engine::class)->initialize();
}
/**
* @property IntegrationTester $tester
*/