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;
|
||||
|
||||
use MailPoet\AdminPages\PageRenderer;
|
||||
use MailPoet\Form\FormsRepository;
|
||||
use MailPoet\Services\Bridge;
|
||||
use MailPoet\Homepage\HomepageDataController;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Subscribers\SubscribersRepository;
|
||||
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
|
||||
|
||||
class Homepage {
|
||||
/** @var PageRenderer */
|
||||
@@ -16,54 +13,24 @@ class Homepage {
|
||||
/** @var SettingsController */
|
||||
private $settingsController;
|
||||
|
||||
/** @var SubscribersRepository */
|
||||
private $subscribersRepository;
|
||||
|
||||
/** @var FormsRepository */
|
||||
private $formsRepository;
|
||||
|
||||
/** @var WooCommerceHelper */
|
||||
private $wooCommerceHelper;
|
||||
/** @var HomepageDataController */
|
||||
private $homepageDataController;
|
||||
|
||||
public function __construct(
|
||||
PageRenderer $pageRenderer,
|
||||
SettingsController $settingsController,
|
||||
SubscribersRepository $subscribersRepository,
|
||||
FormsRepository $formsRepository,
|
||||
WooCommerceHelper $wooCommerceHelper
|
||||
HomepageDataController $homepageDataController
|
||||
) {
|
||||
$this->pageRenderer = $pageRenderer;
|
||||
$this->settingsController = $settingsController;
|
||||
$this->subscribersRepository = $subscribersRepository;
|
||||
$this->formsRepository = $formsRepository;
|
||||
$this->wooCommerceHelper = $wooCommerceHelper;
|
||||
$this->homepageDataController = $homepageDataController;
|
||||
}
|
||||
|
||||
public function render() {
|
||||
$data = [
|
||||
'mta_log' => $this->settingsController->get('mta_log'),
|
||||
'homepage' => [
|
||||
'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(),
|
||||
],
|
||||
'homepage' => $this->homepageDataController->getPageData(),
|
||||
];
|
||||
$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);
|
||||
// Helpscout
|
||||
$container->autowire(\MailPoet\Helpscout\Beacon::class)->setPublic(true);
|
||||
// Homepage
|
||||
$container->autowire(\MailPoet\Homepage\HomepageDataController::class)->setPublic(true);
|
||||
// Listing
|
||||
$container->autowire(\MailPoet\Listing\Handler::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