diff --git a/mailpoet/README.md b/mailpoet/README.md index 57cffbdcf3..350c0cecde 100644 --- a/mailpoet/README.md +++ b/mailpoet/README.md @@ -147,7 +147,7 @@ which will create a `storybook-static` folder with all necessary files. Don't fo ### DI -We use Symfony/dependency-injection container. Container configuration can be found in `libs/DI/ContainerFactory.php` +We use Symfony/dependency-injection container. Container configuration can be found in `lib/DI/ContainerFactory.php` The container is configured and used with minimum sub-dependencies to keep final package size small. You can check [the docs](https://symfony.com/doc/3.4/components/dependency_injection.html) to learn more about Symfony Container. diff --git a/mailpoet/lib/Config/Activator.php b/mailpoet/lib/Config/Activator.php index cfa943f4de..dd31edf4cf 100644 --- a/mailpoet/lib/Config/Activator.php +++ b/mailpoet/lib/Config/Activator.php @@ -19,14 +19,19 @@ class Activator { /** @var WPFunctions */ private $wp; + /** @var Migrator */ + private $migrator; + public function __construct( SettingsController $settings, Populator $populator, - WPFunctions $wp + WPFunctions $wp, + Migrator $migrator ) { $this->settings = $settings; $this->populator = $populator; $this->wp = $wp; + $this->migrator = $migrator; } public function activate() { @@ -44,8 +49,7 @@ class Activator { } private function processActivate(): void { - $migrator = new Migrator(); - $migrator->up(); + $this->migrator->up(); $this->populator->up(); $this->updateDbVersion(); @@ -55,8 +59,7 @@ class Activator { } public function deactivate() { - $migrator = new Migrator(); - $migrator->down(); + $this->migrator->down(); $caps = new Capabilities(); $caps->removeWPCapabilities(); diff --git a/mailpoet/lib/Config/Migrator.php b/mailpoet/lib/Config/Migrator.php index 791b646a2c..b7dd86a660 100644 --- a/mailpoet/lib/Config/Migrator.php +++ b/mailpoet/lib/Config/Migrator.php @@ -24,10 +24,14 @@ class Migrator { public $prefix; private $charsetCollate; private $models; + + /** @var SettingsController */ private $settings; - public function __construct() { - $this->settings = SettingsController::getInstance(); + public function __construct( + SettingsController $settings + ) { + $this->settings = $settings; $this->prefix = Env::$dbPrefix; $this->charsetCollate = Env::$dbCharsetCollate; $this->models = [ diff --git a/mailpoet/lib/DI/ContainerConfigurator.php b/mailpoet/lib/DI/ContainerConfigurator.php index 8877112ea2..a475ecc1b2 100644 --- a/mailpoet/lib/DI/ContainerConfigurator.php +++ b/mailpoet/lib/DI/ContainerConfigurator.php @@ -111,6 +111,7 @@ class ContainerConfigurator implements IContainerConfigurator { $container->autowire(\MailPoet\Config\Initializer::class)->setPublic(true); $container->autowire(\MailPoet\Config\Localizer::class); $container->autowire(\MailPoet\Config\Menu::class)->setPublic(true); + $container->autowire(\MailPoet\Config\Migrator::class)->setPublic(true); $container->autowire(\MailPoet\Config\MP2Migrator::class); $container->autowire(\MailPoet\Config\RendererFactory::class)->setPublic(true); $container->autowire(\MailPoet\Config\ServicesChecker::class)->setPublic(true); diff --git a/mailpoet/tests/integration/API/JSON/v1/SetupTest.php b/mailpoet/tests/integration/API/JSON/v1/SetupTest.php index ac5729e1d8..7d0d498d9c 100644 --- a/mailpoet/tests/integration/API/JSON/v1/SetupTest.php +++ b/mailpoet/tests/integration/API/JSON/v1/SetupTest.php @@ -7,6 +7,7 @@ use Helper\WordPressHooks as WPHooksHelper; use MailPoet\API\JSON\Response as APIResponse; use MailPoet\API\JSON\v1\Setup; use MailPoet\Config\Activator; +use MailPoet\Config\Migrator; use MailPoet\Config\Populator; use MailPoet\Form\FormsRepository; use MailPoet\Referrals\ReferralDetector; @@ -40,7 +41,8 @@ class SetupTest extends \MailPoetTest { $this->entityManager, $this->diContainer->get(WP::class) ); - $router = new Setup($wpStub, new Activator($settings, $populator, $wpStub)); + $migrator = $this->diContainer->get(Migrator::class); + $router = new Setup($wpStub, new Activator($settings, $populator, $wpStub, $migrator)); $response = $router->reset(); expect($response->status)->equals(APIResponse::STATUS_OK); diff --git a/mailpoet/tests/integration/Config/MigratorTest.php b/mailpoet/tests/integration/Config/MigratorTest.php index ab8e5d2a4e..52ab6fcf65 100644 --- a/mailpoet/tests/integration/Config/MigratorTest.php +++ b/mailpoet/tests/integration/Config/MigratorTest.php @@ -16,7 +16,7 @@ class MigratorTest extends \MailPoetTest { public function _before() { parent::_before(); - $this->migrator = new Migrator(); + $this->migrator = $this->diContainer->get(Migrator::class); $this->settings = $this->diContainer->get(SettingsController::class); $this->truncateEntity(DynamicSegmentFilterEntity::class); }