Use CronHelper service in API and UI classes [MAILPOET-2459]

This commit is contained in:
wxa
2019-10-30 16:27:47 +03:00
committed by Jack Kitterhing
parent 81caa04479
commit 31d224ea4f
5 changed files with 37 additions and 11 deletions

View File

@ -47,6 +47,9 @@ class Newsletters extends APIEndpoint {
/** @var SettingsController */ /** @var SettingsController */
private $settings; private $settings;
/** @var CronHelper */
private $cron_helper;
/** @var AuthorizedEmailsController */ /** @var AuthorizedEmailsController */
private $authorized_emails_controller; private $authorized_emails_controller;
@ -75,6 +78,7 @@ class Newsletters extends APIEndpoint {
WPFunctions $wp, WPFunctions $wp,
WCHelper $woocommerce_helper, WCHelper $woocommerce_helper,
SettingsController $settings, SettingsController $settings,
CronHelper $cron_helper,
AuthorizedEmailsController $authorized_emails_controller, AuthorizedEmailsController $authorized_emails_controller,
NewslettersRepository $newsletters_repository, NewslettersRepository $newsletters_repository,
NewslettersResponseBuilder $newsletters_response_builder, NewslettersResponseBuilder $newsletters_response_builder,
@ -87,6 +91,7 @@ class Newsletters extends APIEndpoint {
$this->wp = $wp; $this->wp = $wp;
$this->woocommerce_helper = $woocommerce_helper; $this->woocommerce_helper = $woocommerce_helper;
$this->settings = $settings; $this->settings = $settings;
$this->cron_helper = $cron_helper;
$this->authorized_emails_controller = $authorized_emails_controller; $this->authorized_emails_controller = $authorized_emails_controller;
$this->newsletters_repository = $newsletters_repository; $this->newsletters_repository = $newsletters_repository;
$this->newsletters_response_builder = $newsletters_response_builder; $this->newsletters_response_builder = $newsletters_response_builder;
@ -556,7 +561,7 @@ class Newsletters extends APIEndpoint {
'groups' => $listing_data['groups'], 'groups' => $listing_data['groups'],
'mta_log' => $this->settings->get('mta_log'), 'mta_log' => $this->settings->get('mta_log'),
'mta_method' => $this->settings->get('mta.method'), 'mta_method' => $this->settings->get('mta.method'),
'cron_accessible' => CronHelper::isDaemonAccessible(), 'cron_accessible' => $this->cron_helper->isDaemonAccessible(),
'current_time' => $this->wp->currentTime('mysql'), 'current_time' => $this->wp->currentTime('mysql'),
]); ]);
} }

View File

@ -25,16 +25,21 @@ class SendingTaskSubscribers extends APIEndpoint {
/** @var SettingsController */ /** @var SettingsController */
private $settings; private $settings;
/** @var CronHelper */
private $cron_helper;
/** @var WPFunctions */ /** @var WPFunctions */
private $wp; private $wp;
function __construct( function __construct(
Listing\Handler $listing_handler, Listing\Handler $listing_handler,
SettingsController $settings, SettingsController $settings,
CronHelper $cron_helper,
WPFunctions $wp WPFunctions $wp
) { ) {
$this->listing_handler = $listing_handler; $this->listing_handler = $listing_handler;
$this->settings = $settings; $this->settings = $settings;
$this->cron_helper = $cron_helper;
$this->wp = $wp; $this->wp = $wp;
} }
@ -62,7 +67,7 @@ class SendingTaskSubscribers extends APIEndpoint {
'groups' => $listing_data['groups'], 'groups' => $listing_data['groups'],
'mta_log' => $this->settings->get('mta_log'), 'mta_log' => $this->settings->get('mta_log'),
'mta_method' => $this->settings->get('mta.method'), 'mta_method' => $this->settings->get('mta.method'),
'cron_accessible' => CronHelper::isDaemonAccessible(), 'cron_accessible' => $this->cron_helper->isDaemonAccessible(),
'current_time' => $this->wp->currentTime('mysql'), 'current_time' => $this->wp->currentTime('mysql'),
]); ]);
} }

View File

@ -18,18 +18,22 @@ class Help {
/** @var State */ /** @var State */
private $tasks_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->page_renderer = $page_renderer;
$this->tasks_state = $tasks_state; $this->tasks_state = $tasks_state;
$this->cron_helper = $cron_helper;
} }
function render() { function render() {
$system_info_data = Beacon::getData(); $system_info_data = Beacon::getData();
$cron_ping_response = CronHelper::pingDaemon(); $cron_ping_response = $this->cron_helper->pingDaemon();
$system_status_data = [ $system_status_data = [
'cron' => [ 'cron' => [
'url' => CronHelper::getCronUrl(CronDaemon::ACTION_PING), 'url' => $this->cron_helper->getCronUrl(CronDaemon::ACTION_PING),
'isReachable' => CronHelper::validatePingResponse($cron_ping_response), 'isReachable' => $this->cron_helper->validatePingResponse($cron_ping_response),
'pingResponse' => $cron_ping_response, 'pingResponse' => $cron_ping_response,
], ],
'mss' => [ 'mss' => [
@ -37,10 +41,10 @@ class Help {
['isReachable' => Bridge::pingBridge()] : ['isReachable' => Bridge::pingBridge()] :
false, false,
], ],
'cronStatus' => CronHelper::getDaemon(), 'cronStatus' => $this->cron_helper->getDaemon(),
'queueStatus' => MailerLog::getMailerLog(), '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']['tasksStatusCounts'] = $this->tasks_state->getCountsPerStatus();
$system_status_data['queueStatus']['latestTasks'] = $this->tasks_state->getLatestTasks(Sending::TASK_TYPE); $system_status_data['queueStatus']['latestTasks'] = $this->tasks_state->getLatestTasks(Sending::TASK_TYPE);
$this->page_renderer->displayPage( $this->page_renderer->displayPage(

View File

@ -3,6 +3,7 @@
namespace MailPoet\Helpscout; namespace MailPoet\Helpscout;
use MailPoet\Cron\CronHelper; use MailPoet\Cron\CronHelper;
use MailPoet\DI\ContainerWrapper;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
use MailPoet\Router\Endpoints\CronDaemon; use MailPoet\Router\Endpoints\CronDaemon;
use MailPoet\Services\Bridge; use MailPoet\Services\Bridge;
@ -19,6 +20,10 @@ class Beacon {
$current_user = WPFunctions::get()->wpGetCurrentUser(); $current_user = WPFunctions::get()->wpGetCurrentUser();
$sender = $settings->get('sender'); $sender = $settings->get('sender');
$premium_key = $settings->get(Bridge::PREMIUM_KEY_SETTING_NAME) ?: $settings->get(Bridge::API_KEY_SETTING_NAME); $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 [ return [
'name' => $current_user->display_name, 'name' => $current_user->display_name,
'email' => $sender['address'], 'email' => $sender['address'],
@ -48,9 +53,7 @@ class Beacon {
$mta['frequency']['interval'] $mta['frequency']['interval']
), ),
'Task Scheduler method' => $settings->get('cron_trigger.method'), 'Task Scheduler method' => $settings->get('cron_trigger.method'),
'Cron ping URL' => CronHelper::getCronUrl( 'Cron ping URL' => $cron_ping_url,
CronDaemon::ACTION_PING
),
'Default FROM address' => $settings->get('sender.address'), 'Default FROM address' => $settings->get('sender.address'),
'Default Reply-To address' => $settings->get('reply_to.address'), 'Default Reply-To address' => $settings->get('reply_to.address'),
'Bounce Email Address' => $settings->get('bounce.address'), 'Bounce Email Address' => $settings->get('bounce.address'),

View File

@ -10,6 +10,7 @@ use Helper\WordPressHooks as WPHooksHelper;
use MailPoet\API\JSON\Response as APIResponse; use MailPoet\API\JSON\Response as APIResponse;
use MailPoet\API\JSON\ResponseBuilders\NewslettersResponseBuilder; use MailPoet\API\JSON\ResponseBuilders\NewslettersResponseBuilder;
use MailPoet\API\JSON\v1\Newsletters; use MailPoet\API\JSON\v1\Newsletters;
use MailPoet\Cron\CronHelper;
use MailPoet\DI\ContainerWrapper; use MailPoet\DI\ContainerWrapper;
use MailPoet\Listing\BulkActionController; use MailPoet\Listing\BulkActionController;
use MailPoet\Listing\Handler; use MailPoet\Listing\Handler;
@ -42,9 +43,13 @@ class NewslettersTest extends \MailPoetTest {
/** @var SubscriptionUrlFactory */ /** @var SubscriptionUrlFactory */
private $subscription_url_factory; private $subscription_url_factory;
/** @var CronHelper */
private $cron_helper;
function _before() { function _before() {
parent::_before(); parent::_before();
$this->subscription_url_factory = SubscriptionUrlFactory::getInstance(); $this->subscription_url_factory = SubscriptionUrlFactory::getInstance();
$this->cron_helper = ContainerWrapper::getInstance()->get(CronHelper::class);
$this->endpoint = ContainerWrapper::getInstance()->get(Newsletters::class); $this->endpoint = ContainerWrapper::getInstance()->get(Newsletters::class);
$this->newsletter = Newsletter::createOrUpdate( $this->newsletter = Newsletter::createOrUpdate(
[ [
@ -135,6 +140,7 @@ class NewslettersTest extends \MailPoetTest {
$wp, $wp,
$this->makeEmpty(WCHelper::class), $this->makeEmpty(WCHelper::class),
new SettingsController(), new SettingsController(),
$this->cron_helper,
$this->make(AuthorizedEmailsController::class, ['onNewsletterUpdate' => Expected::never()]), $this->make(AuthorizedEmailsController::class, ['onNewsletterUpdate' => Expected::never()]),
ContainerWrapper::getInstance()->get(NewslettersRepository::class), ContainerWrapper::getInstance()->get(NewslettersRepository::class),
ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class), ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class),
@ -189,6 +195,7 @@ class NewslettersTest extends \MailPoetTest {
$wp, $wp,
$this->makeEmpty(WCHelper::class), $this->makeEmpty(WCHelper::class),
new SettingsController(), new SettingsController(),
$this->cron_helper,
$this->make(AuthorizedEmailsController::class, ['onNewsletterUpdate' => Expected::once()]), $this->make(AuthorizedEmailsController::class, ['onNewsletterUpdate' => Expected::once()]),
ContainerWrapper::getInstance()->get(NewslettersRepository::class), ContainerWrapper::getInstance()->get(NewslettersRepository::class),
ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class), ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class),
@ -562,6 +569,7 @@ class NewslettersTest extends \MailPoetTest {
$wp, $wp,
$this->makeEmpty(WCHelper::class), $this->makeEmpty(WCHelper::class),
new SettingsController(), new SettingsController(),
$this->cron_helper,
$this->make(AuthorizedEmailsController::class, ['onNewsletterUpdate' => Expected::never()]), $this->make(AuthorizedEmailsController::class, ['onNewsletterUpdate' => Expected::never()]),
ContainerWrapper::getInstance()->get(NewslettersRepository::class), ContainerWrapper::getInstance()->get(NewslettersRepository::class),
ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class), ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class),
@ -902,6 +910,7 @@ class NewslettersTest extends \MailPoetTest {
$wp, $wp,
$this->makeEmpty(WCHelper::class), $this->makeEmpty(WCHelper::class),
new SettingsController(), new SettingsController(),
$this->cron_helper,
ContainerWrapper::getInstance()->get(AuthorizedEmailsController::class), ContainerWrapper::getInstance()->get(AuthorizedEmailsController::class),
ContainerWrapper::getInstance()->get(NewslettersRepository::class), ContainerWrapper::getInstance()->get(NewslettersRepository::class),
ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class), ContainerWrapper::getInstance()->get(NewslettersResponseBuilder::class),