Refactor homepage data fetching to a new service
[MAILPOET-4827]
This commit is contained in:
committed by
Aschepikov
parent
f31086f790
commit
5fe02fcc3e
@@ -3,11 +3,8 @@
|
|||||||
namespace MailPoet\AdminPages\Pages;
|
namespace MailPoet\AdminPages\Pages;
|
||||||
|
|
||||||
use MailPoet\AdminPages\PageRenderer;
|
use MailPoet\AdminPages\PageRenderer;
|
||||||
use MailPoet\Form\FormsRepository;
|
use MailPoet\Homepage\HomepageDataController;
|
||||||
use MailPoet\Services\Bridge;
|
|
||||||
use MailPoet\Settings\SettingsController;
|
use MailPoet\Settings\SettingsController;
|
||||||
use MailPoet\Subscribers\SubscribersRepository;
|
|
||||||
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
|
|
||||||
|
|
||||||
class Homepage {
|
class Homepage {
|
||||||
/** @var PageRenderer */
|
/** @var PageRenderer */
|
||||||
@@ -16,54 +13,24 @@ class Homepage {
|
|||||||
/** @var SettingsController */
|
/** @var SettingsController */
|
||||||
private $settingsController;
|
private $settingsController;
|
||||||
|
|
||||||
/** @var SubscribersRepository */
|
/** @var HomepageDataController */
|
||||||
private $subscribersRepository;
|
private $homepageDataController;
|
||||||
|
|
||||||
/** @var FormsRepository */
|
|
||||||
private $formsRepository;
|
|
||||||
|
|
||||||
/** @var WooCommerceHelper */
|
|
||||||
private $wooCommerceHelper;
|
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
PageRenderer $pageRenderer,
|
PageRenderer $pageRenderer,
|
||||||
SettingsController $settingsController,
|
SettingsController $settingsController,
|
||||||
SubscribersRepository $subscribersRepository,
|
HomepageDataController $homepageDataController
|
||||||
FormsRepository $formsRepository,
|
|
||||||
WooCommerceHelper $wooCommerceHelper
|
|
||||||
) {
|
) {
|
||||||
$this->pageRenderer = $pageRenderer;
|
$this->pageRenderer = $pageRenderer;
|
||||||
$this->settingsController = $settingsController;
|
$this->settingsController = $settingsController;
|
||||||
$this->subscribersRepository = $subscribersRepository;
|
$this->homepageDataController = $homepageDataController;
|
||||||
$this->formsRepository = $formsRepository;
|
|
||||||
$this->wooCommerceHelper = $wooCommerceHelper;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function render() {
|
public function render() {
|
||||||
$data = [
|
$data = [
|
||||||
'mta_log' => $this->settingsController->get('mta_log'),
|
'mta_log' => $this->settingsController->get('mta_log'),
|
||||||
'homepage' => [
|
'homepage' => $this->homepageDataController->getPageData(),
|
||||||
'task_list_dismissed' => (bool)$this->settingsController->get('homepage.task_list_dismissed', false),
|
|
||||||
'product_discovery_dismissed' => (bool)$this->settingsController->get('homepage.product_discovery_dismissed', false),
|
|
||||||
'task_list_status' => $this->getTaskListStatus(),
|
|
||||||
'woo_customers_count' => $this->wooCommerceHelper->getCustomersCount(),
|
|
||||||
'subscribers_count' => $this->subscribersRepository->getTotalSubscribers(),
|
|
||||||
],
|
|
||||||
];
|
];
|
||||||
$this->pageRenderer->displayPage('homepage.html', $data);
|
$this->pageRenderer->displayPage('homepage.html', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return array{senderSet:bool, mssConnected:bool, wooSubscribersImported:bool, subscribersAdded:bool}
|
|
||||||
*/
|
|
||||||
private function getTaskListStatus(): array {
|
|
||||||
$subscribersCount = $this->subscribersRepository->getTotalSubscribers();
|
|
||||||
$formsCount = $this->formsRepository->count();
|
|
||||||
return [
|
|
||||||
'senderSet' => (bool)$this->settingsController->get('sender.address', false),
|
|
||||||
'mssConnected' => Bridge::isMSSKeySpecified(),
|
|
||||||
'wooSubscribersImported' => (bool)$this->settingsController->get('woocommerce_import_screen_displayed', false),
|
|
||||||
'subscribersAdded' => $formsCount || ($subscribersCount > 10),
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -302,6 +302,8 @@ class ContainerConfigurator implements IContainerConfigurator {
|
|||||||
$container->autowire(\MailPoet\Form\Util\CustomFonts::class)->setPublic(true);
|
$container->autowire(\MailPoet\Form\Util\CustomFonts::class)->setPublic(true);
|
||||||
// Helpscout
|
// Helpscout
|
||||||
$container->autowire(\MailPoet\Helpscout\Beacon::class)->setPublic(true);
|
$container->autowire(\MailPoet\Helpscout\Beacon::class)->setPublic(true);
|
||||||
|
// Homepage
|
||||||
|
$container->autowire(\MailPoet\Homepage\HomepageDataController::class)->setPublic(true);
|
||||||
// Listing
|
// Listing
|
||||||
$container->autowire(\MailPoet\Listing\Handler::class)->setPublic(true);
|
$container->autowire(\MailPoet\Listing\Handler::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Listing\PageLimit::class)->setPublic(true);
|
$container->autowire(\MailPoet\Listing\PageLimit::class)->setPublic(true);
|
||||||
|
59
mailpoet/lib/Homepage/HomepageDataController.php
Normal file
59
mailpoet/lib/Homepage/HomepageDataController.php
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
<?php declare(strict_types = 1);
|
||||||
|
|
||||||
|
namespace MailPoet\Homepage;
|
||||||
|
|
||||||
|
use MailPoet\Form\FormsRepository;
|
||||||
|
use MailPoet\Services\Bridge;
|
||||||
|
use MailPoet\Settings\SettingsController;
|
||||||
|
use MailPoet\Subscribers\SubscribersRepository;
|
||||||
|
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
|
||||||
|
|
||||||
|
class HomepageDataController {
|
||||||
|
/** @var SettingsController */
|
||||||
|
private $settingsController;
|
||||||
|
|
||||||
|
/** @var SubscribersRepository */
|
||||||
|
private $subscribersRepository;
|
||||||
|
|
||||||
|
/** @var FormsRepository */
|
||||||
|
private $formsRepository;
|
||||||
|
|
||||||
|
/** @var WooCommerceHelper */
|
||||||
|
private $wooCommerceHelper;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
SettingsController $settingsController,
|
||||||
|
SubscribersRepository $subscribersRepository,
|
||||||
|
FormsRepository $formsRepository,
|
||||||
|
WooCommerceHelper $wooCommerceHelper
|
||||||
|
) {
|
||||||
|
$this->settingsController = $settingsController;
|
||||||
|
$this->subscribersRepository = $subscribersRepository;
|
||||||
|
$this->formsRepository = $formsRepository;
|
||||||
|
$this->wooCommerceHelper = $wooCommerceHelper;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPageData(): array {
|
||||||
|
$subscribersCount = $this->subscribersRepository->getTotalSubscribers();
|
||||||
|
$formsCount = $this->formsRepository->count();
|
||||||
|
return [
|
||||||
|
'task_list_dismissed' => (bool)$this->settingsController->get('homepage.task_list_dismissed', false),
|
||||||
|
'product_discovery_dismissed' => (bool)$this->settingsController->get('homepage.product_discovery_dismissed', false),
|
||||||
|
'task_list_status' => $this->getTaskListStatus($subscribersCount, $formsCount),
|
||||||
|
'woo_customers_count' => $this->wooCommerceHelper->getCustomersCount(),
|
||||||
|
'subscribers_count' => $subscribersCount,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array{senderSet:bool, mssConnected:bool, wooSubscribersImported:bool, subscribersAdded:bool}
|
||||||
|
*/
|
||||||
|
private function getTaskListStatus(int $subscribersCount, int $formsCount): array {
|
||||||
|
return [
|
||||||
|
'senderSet' => (bool)$this->settingsController->get('sender.address', false),
|
||||||
|
'mssConnected' => Bridge::isMSSKeySpecified(),
|
||||||
|
'wooSubscribersImported' => (bool)$this->settingsController->get('woocommerce_import_screen_displayed', false),
|
||||||
|
'subscribersAdded' => $formsCount || ($subscribersCount > 10),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user