diff --git a/mailpoet/lib/AdminPages/Pages/Homepage.php b/mailpoet/lib/AdminPages/Pages/Homepage.php index 62f74496d2..26ef5dae4a 100644 --- a/mailpoet/lib/AdminPages/Pages/Homepage.php +++ b/mailpoet/lib/AdminPages/Pages/Homepage.php @@ -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), - ]; - } } diff --git a/mailpoet/lib/DI/ContainerConfigurator.php b/mailpoet/lib/DI/ContainerConfigurator.php index 3bef7323a7..58be45939c 100644 --- a/mailpoet/lib/DI/ContainerConfigurator.php +++ b/mailpoet/lib/DI/ContainerConfigurator.php @@ -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); diff --git a/mailpoet/lib/Homepage/HomepageDataController.php b/mailpoet/lib/Homepage/HomepageDataController.php new file mode 100644 index 0000000000..a8babd31e3 --- /dev/null +++ b/mailpoet/lib/Homepage/HomepageDataController.php @@ -0,0 +1,59 @@ +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), + ]; + } +}