Inject dependencies to hooks directly

[MAILPOET-1689]
This commit is contained in:
Rostislav Wolny
2018-12-17 15:16:27 +01:00
parent 66a05e1b19
commit f13c340d87
4 changed files with 10 additions and 19 deletions

View File

@ -3,15 +3,15 @@
namespace MailPoet\Config; namespace MailPoet\Config;
use MailPoet\Models\Setting; use MailPoet\Models\Setting;
use MailPoetVendor\Psr\Container\ContainerInterface; use MailPoet\Subscription\Form;
class Hooks { class Hooks {
/** @var ContainerInterface */ /** @var Form */
private $container; private $subscription_form;
function __construct(ContainerInterface $container) { function __construct(Form $subscription_form) {
$this->container = $container; $this->subscription_form = $subscription_form;
} }
function init() { function init() {
@ -101,11 +101,11 @@ class Hooks {
// Subscription form // Subscription form
add_action( add_action(
'admin_post_mailpoet_subscription_form', 'admin_post_mailpoet_subscription_form',
[$this, 'subscriptionFormOnSubmit'] [$this->subscription_form, 'onSubmit']
); );
add_action( add_action(
'admin_post_nopriv_mailpoet_subscription_form', 'admin_post_nopriv_mailpoet_subscription_form',
[$this, 'subscriptionFormOnSubmit'] [$this->subscription_form, 'onSubmit']
); );
} }
@ -181,9 +181,4 @@ class Hooks {
10, 3 10, 3
); );
} }
// Callbacks
function subscriptionFormOnSubmit($data = false) {
$this->container->get(\MailPoet\Subscription\Form::class)->onSubmit($data);
}
} }

View File

@ -50,10 +50,7 @@ class ContainerConfigurator implements IContainerConfigurator {
$container->autowire(\MailPoet\API\JSON\v1\Subscribers::class)->setPublic(true); $container->autowire(\MailPoet\API\JSON\v1\Subscribers::class)->setPublic(true);
// Config // Config
$container->autowire(\MailPoet\Config\AccessControl::class)->setPublic(true); $container->autowire(\MailPoet\Config\AccessControl::class)->setPublic(true);
$container->autowire(\MailPoet\Config\Hooks::class) $container->autowire(\MailPoet\Config\Hooks::class)->setPublic(true);
->addArgument(new Reference(ContainerWrapper::class))
->setPublic(true);
// Cron // Cron
$container->autowire(\MailPoet\Cron\Daemon::class)->setPublic(true); $container->autowire(\MailPoet\Cron\Daemon::class)->setPublic(true);
$container->autowire(\MailPoet\Cron\DaemonHttpRunner::class)->setPublic(true); $container->autowire(\MailPoet\Cron\DaemonHttpRunner::class)->setPublic(true);

View File

@ -3,11 +3,10 @@ namespace MailPoet\Test\Config;
use MailPoet\Config\Hooks; use MailPoet\Config\Hooks;
use MailPoet\DI\ContainerWrapper; use MailPoet\DI\ContainerWrapper;
use MailPoet\WP\Posts as WPPosts;
class HooksTest extends \MailPoetTest { class HooksTest extends \MailPoetTest {
function testItHooksSchedulerToMultiplePostTypes() { function testItHooksSchedulerToMultiplePostTypes() {
$hooks = new Hooks(ContainerWrapper::getInstance()); $hooks = ContainerWrapper::getInstance()->get(Hooks::class);
$hooks->setupPostNotifications(); $hooks->setupPostNotifications();
expect(has_filter('transition_post_status', '\MailPoet\Newsletter\Scheduler\Scheduler::transitionHook'))->notEmpty(); expect(has_filter('transition_post_status', '\MailPoet\Newsletter\Scheduler\Scheduler::transitionHook'))->notEmpty();
} }

View File

@ -697,7 +697,7 @@ class SchedulerTest extends \MailPoetTest {
} }
function testUnsearchablePostTypeDoesNotSchedulePostNotification() { function testUnsearchablePostTypeDoesNotSchedulePostNotification() {
$hook = new Hooks(ContainerWrapper::getInstance()); $hook = ContainerWrapper::getInstance()->get(Hooks::class);
$newsletter = $this->_createNewsletter(Newsletter::TYPE_NOTIFICATION); $newsletter = $this->_createNewsletter(Newsletter::TYPE_NOTIFICATION);