From 31d224ea4ffa376d5ff50276abbc0fe11f35e74d Mon Sep 17 00:00:00 2001 From: wxa Date: Wed, 30 Oct 2019 16:27:47 +0300 Subject: [PATCH] Use CronHelper service in API and UI classes [MAILPOET-2459] --- lib/API/JSON/v1/Newsletters.php | 7 ++++++- lib/API/JSON/v1/SendingTaskSubscribers.php | 7 ++++++- lib/AdminPages/Pages/Help.php | 16 ++++++++++------ lib/Helpscout/Beacon.php | 9 ++++++--- .../integration/API/JSON/v1/NewslettersTest.php | 9 +++++++++ 5 files changed, 37 insertions(+), 11 deletions(-) diff --git a/lib/API/JSON/v1/Newsletters.php b/lib/API/JSON/v1/Newsletters.php index e5558e0dec..a219b86f50 100644 --- a/lib/API/JSON/v1/Newsletters.php +++ b/lib/API/JSON/v1/Newsletters.php @@ -47,6 +47,9 @@ class Newsletters extends APIEndpoint { /** @var SettingsController */ private $settings; + /** @var CronHelper */ + private $cron_helper; + /** @var AuthorizedEmailsController */ private $authorized_emails_controller; @@ -75,6 +78,7 @@ class Newsletters extends APIEndpoint { WPFunctions $wp, WCHelper $woocommerce_helper, SettingsController $settings, + CronHelper $cron_helper, AuthorizedEmailsController $authorized_emails_controller, NewslettersRepository $newsletters_repository, NewslettersResponseBuilder $newsletters_response_builder, @@ -87,6 +91,7 @@ class Newsletters extends APIEndpoint { $this->wp = $wp; $this->woocommerce_helper = $woocommerce_helper; $this->settings = $settings; + $this->cron_helper = $cron_helper; $this->authorized_emails_controller = $authorized_emails_controller; $this->newsletters_repository = $newsletters_repository; $this->newsletters_response_builder = $newsletters_response_builder; @@ -556,7 +561,7 @@ class Newsletters extends APIEndpoint { 'groups' => $listing_data['groups'], 'mta_log' => $this->settings->get('mta_log'), 'mta_method' => $this->settings->get('mta.method'), - 'cron_accessible' => CronHelper::isDaemonAccessible(), + 'cron_accessible' => $this->cron_helper->isDaemonAccessible(), 'current_time' => $this->wp->currentTime('mysql'), ]); } diff --git a/lib/API/JSON/v1/SendingTaskSubscribers.php b/lib/API/JSON/v1/SendingTaskSubscribers.php index 66cc1824da..e8179e9d12 100644 --- a/lib/API/JSON/v1/SendingTaskSubscribers.php +++ b/lib/API/JSON/v1/SendingTaskSubscribers.php @@ -25,16 +25,21 @@ class SendingTaskSubscribers extends APIEndpoint { /** @var SettingsController */ private $settings; + /** @var CronHelper */ + private $cron_helper; + /** @var WPFunctions */ private $wp; function __construct( Listing\Handler $listing_handler, SettingsController $settings, + CronHelper $cron_helper, WPFunctions $wp ) { $this->listing_handler = $listing_handler; $this->settings = $settings; + $this->cron_helper = $cron_helper; $this->wp = $wp; } @@ -62,7 +67,7 @@ class SendingTaskSubscribers extends APIEndpoint { 'groups' => $listing_data['groups'], 'mta_log' => $this->settings->get('mta_log'), 'mta_method' => $this->settings->get('mta.method'), - 'cron_accessible' => CronHelper::isDaemonAccessible(), + 'cron_accessible' => $this->cron_helper->isDaemonAccessible(), 'current_time' => $this->wp->currentTime('mysql'), ]); } diff --git a/lib/AdminPages/Pages/Help.php b/lib/AdminPages/Pages/Help.php index 0e07262fd0..a1dac3924b 100644 --- a/lib/AdminPages/Pages/Help.php +++ b/lib/AdminPages/Pages/Help.php @@ -18,18 +18,22 @@ class Help { /** @var State */ private $tasks_state; - function __construct(PageRenderer $page_renderer, State $tasks_state) { + /** @var CronHelper */ + private $cron_helper; + + function __construct(PageRenderer $page_renderer, State $tasks_state, CronHelper $cron_helper) { $this->page_renderer = $page_renderer; $this->tasks_state = $tasks_state; + $this->cron_helper = $cron_helper; } function render() { $system_info_data = Beacon::getData(); - $cron_ping_response = CronHelper::pingDaemon(); + $cron_ping_response = $this->cron_helper->pingDaemon(); $system_status_data = [ 'cron' => [ - 'url' => CronHelper::getCronUrl(CronDaemon::ACTION_PING), - 'isReachable' => CronHelper::validatePingResponse($cron_ping_response), + 'url' => $this->cron_helper->getCronUrl(CronDaemon::ACTION_PING), + 'isReachable' => $this->cron_helper->validatePingResponse($cron_ping_response), 'pingResponse' => $cron_ping_response, ], 'mss' => [ @@ -37,10 +41,10 @@ class Help { ['isReachable' => Bridge::pingBridge()] : false, ], - 'cronStatus' => CronHelper::getDaemon(), + 'cronStatus' => $this->cron_helper->getDaemon(), 'queueStatus' => MailerLog::getMailerLog(), ]; - $system_status_data['cronStatus']['accessible'] = CronHelper::isDaemonAccessible(); + $system_status_data['cronStatus']['accessible'] = $this->cron_helper->isDaemonAccessible(); $system_status_data['queueStatus']['tasksStatusCounts'] = $this->tasks_state->getCountsPerStatus(); $system_status_data['queueStatus']['latestTasks'] = $this->tasks_state->getLatestTasks(Sending::TASK_TYPE); $this->page_renderer->displayPage( diff --git a/lib/Helpscout/Beacon.php b/lib/Helpscout/Beacon.php index 665c935090..80f0dbc898 100644 --- a/lib/Helpscout/Beacon.php +++ b/lib/Helpscout/Beacon.php @@ -3,6 +3,7 @@ namespace MailPoet\Helpscout; use MailPoet\Cron\CronHelper; +use MailPoet\DI\ContainerWrapper; use MailPoet\Models\Subscriber; use MailPoet\Router\Endpoints\CronDaemon; use MailPoet\Services\Bridge; @@ -19,6 +20,10 @@ class Beacon { $current_user = WPFunctions::get()->wpGetCurrentUser(); $sender = $settings->get('sender'); $premium_key = $settings->get(Bridge::PREMIUM_KEY_SETTING_NAME) ?: $settings->get(Bridge::API_KEY_SETTING_NAME); + $cron_helper = ContainerWrapper::getInstance()->get(CronHelper::class); + $cron_ping_url = $cron_helper->getCronUrl( + CronDaemon::ACTION_PING + ); return [ 'name' => $current_user->display_name, 'email' => $sender['address'], @@ -48,9 +53,7 @@ class Beacon { $mta['frequency']['interval'] ), 'Task Scheduler method' => $settings->get('cron_trigger.method'), - 'Cron ping URL' => CronHelper::getCronUrl( - CronDaemon::ACTION_PING - ), + 'Cron ping URL' => $cron_ping_url, 'Default FROM address' => $settings->get('sender.address'), 'Default Reply-To address' => $settings->get('reply_to.address'), 'Bounce Email Address' => $settings->get('bounce.address'), diff --git a/tests/integration/API/JSON/v1/NewslettersTest.php b/tests/integration/API/JSON/v1/NewslettersTest.php index 17841c39c5..d1d75b16f0 100644 --- a/tests/integration/API/JSON/v1/NewslettersTest.php +++ b/tests/integration/API/JSON/v1/NewslettersTest.php @@ -10,6 +10,7 @@ use Helper\WordPressHooks as WPHooksHelper; use MailPoet\API\JSON\Response as APIResponse; use MailPoet\API\JSON\ResponseBuilders\NewslettersResponseBuilder; use MailPoet\API\JSON\v1\Newsletters; +use MailPoet\Cron\CronHelper; use MailPoet\DI\ContainerWrapper; use MailPoet\Listing\BulkActionController; use MailPoet\Listing\Handler; @@ -42,9 +43,13 @@ class NewslettersTest extends \MailPoetTest { /** @var SubscriptionUrlFactory */ private $subscription_url_factory; + /** @var CronHelper */ + private $cron_helper; + function _before() { parent::_before(); $this->subscription_url_factory = SubscriptionUrlFactory::getInstance(); + $this->cron_helper = ContainerWrapper::getInstance()->get(CronHelper::class); $this->endpoint = ContainerWrapper::getInstance()->get(Newsletters::class); $this->newsletter = Newsletter::createOrUpdate( [ @@ -135,6 +140,7 @@ class NewslettersTest extends \MailPoetTest { $wp, $this->makeEmpty(WCHelper::class), new SettingsController(), + $this->cron_helper, $this->make(AuthorizedEmailsController::class, ['onNewsletterUpdate' => Expected::never()]), ContainerWrapper::getInstance()->get(NewslettersRepository::class), ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class), @@ -189,6 +195,7 @@ class NewslettersTest extends \MailPoetTest { $wp, $this->makeEmpty(WCHelper::class), new SettingsController(), + $this->cron_helper, $this->make(AuthorizedEmailsController::class, ['onNewsletterUpdate' => Expected::once()]), ContainerWrapper::getInstance()->get(NewslettersRepository::class), ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class), @@ -562,6 +569,7 @@ class NewslettersTest extends \MailPoetTest { $wp, $this->makeEmpty(WCHelper::class), new SettingsController(), + $this->cron_helper, $this->make(AuthorizedEmailsController::class, ['onNewsletterUpdate' => Expected::never()]), ContainerWrapper::getInstance()->get(NewslettersRepository::class), ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class), @@ -902,6 +910,7 @@ class NewslettersTest extends \MailPoetTest { $wp, $this->makeEmpty(WCHelper::class), new SettingsController(), + $this->cron_helper, ContainerWrapper::getInstance()->get(AuthorizedEmailsController::class), ContainerWrapper::getInstance()->get(NewslettersRepository::class), ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class),