Refactor displayPage method to PageRenderer service
[MAILPOET-2200]
This commit is contained in:
committed by
M. Shull
parent
dfec5dd6c0
commit
06fd592514
39
lib/AdminPages/PageRenderer.php
Normal file
39
lib/AdminPages/PageRenderer.php
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace MailPoet\AdminPages;
|
||||||
|
|
||||||
|
use MailPoet\Config\Renderer;
|
||||||
|
use MailPoet\Features\FeaturesController;
|
||||||
|
use MailPoet\WP\Notice as WPNotice;
|
||||||
|
|
||||||
|
if (!defined('ABSPATH')) exit;
|
||||||
|
|
||||||
|
class PageRenderer {
|
||||||
|
/** @var Renderer */
|
||||||
|
private $renderer;
|
||||||
|
|
||||||
|
/** @var FeaturesController */
|
||||||
|
private $features_controller;
|
||||||
|
|
||||||
|
function __construct(Renderer $renderer, FeaturesController $features_controller) {
|
||||||
|
$this->renderer = $renderer;
|
||||||
|
$this->features_controller = $features_controller;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set common data for template and display template
|
||||||
|
* @param string $template
|
||||||
|
* @param array $data
|
||||||
|
*/
|
||||||
|
function displayPage($template, array $data = []) {
|
||||||
|
$defaults = [
|
||||||
|
'feature_flags' => $this->features_controller->getAllFlags(),
|
||||||
|
];
|
||||||
|
try {
|
||||||
|
echo $this->renderer->render($template, $data + $defaults);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
$notice = new WPNotice(WPNotice::TYPE_ERROR, $e->getMessage());
|
||||||
|
$notice->displayWPNotice();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -3,6 +3,7 @@
|
|||||||
namespace MailPoet\Config;
|
namespace MailPoet\Config;
|
||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
|
use MailPoet\AdminPages\PageRenderer;
|
||||||
use MailPoet\Cron\CronHelper;
|
use MailPoet\Cron\CronHelper;
|
||||||
use MailPoet\Cron\CronTrigger;
|
use MailPoet\Cron\CronTrigger;
|
||||||
use MailPoet\Features\FeaturesController;
|
use MailPoet\Features\FeaturesController;
|
||||||
@@ -30,7 +31,6 @@ use MailPoet\Util\License\Features\Subscribers as SubscribersFeature;
|
|||||||
use MailPoet\Util\License\License;
|
use MailPoet\Util\License\License;
|
||||||
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
|
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
|
||||||
use MailPoet\WP\DateTime;
|
use MailPoet\WP\DateTime;
|
||||||
use MailPoet\WP\Notice as WPNotice;
|
|
||||||
use MailPoet\WP\Readme;
|
use MailPoet\WP\Readme;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
|
||||||
@@ -62,19 +62,21 @@ class Menu {
|
|||||||
/** @var ServicesChecker */
|
/** @var ServicesChecker */
|
||||||
private $servicesChecker;
|
private $servicesChecker;
|
||||||
|
|
||||||
|
/** @var PageRenderer */
|
||||||
|
private $page_renderer;
|
||||||
|
|
||||||
private $subscribers_over_limit;
|
private $subscribers_over_limit;
|
||||||
|
|
||||||
function __construct(
|
function __construct(
|
||||||
Renderer $renderer,
|
|
||||||
AccessControl $access_control,
|
AccessControl $access_control,
|
||||||
SettingsController $settings,
|
SettingsController $settings,
|
||||||
FeaturesController $featuresController,
|
FeaturesController $featuresController,
|
||||||
WPFunctions $wp,
|
WPFunctions $wp,
|
||||||
WooCommerceHelper $woocommerce_helper,
|
WooCommerceHelper $woocommerce_helper,
|
||||||
ServicesChecker $servicesChecker,
|
ServicesChecker $servicesChecker,
|
||||||
UserFlagsController $user_flags
|
UserFlagsController $user_flags,
|
||||||
|
PageRenderer $page_renderer
|
||||||
) {
|
) {
|
||||||
$this->renderer = $renderer;
|
|
||||||
$this->access_control = $access_control;
|
$this->access_control = $access_control;
|
||||||
$this->wp = $wp;
|
$this->wp = $wp;
|
||||||
$this->settings = $settings;
|
$this->settings = $settings;
|
||||||
@@ -82,6 +84,7 @@ class Menu {
|
|||||||
$this->woocommerce_helper = $woocommerce_helper;
|
$this->woocommerce_helper = $woocommerce_helper;
|
||||||
$this->servicesChecker = $servicesChecker;
|
$this->servicesChecker = $servicesChecker;
|
||||||
$this->user_flags = $user_flags;
|
$this->user_flags = $user_flags;
|
||||||
|
$this->page_renderer = $page_renderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
@@ -421,7 +424,7 @@ class Menu {
|
|||||||
'log_file_url' => $mp2_migrator->log_file_url,
|
'log_file_url' => $mp2_migrator->log_file_url,
|
||||||
'progress_url' => $mp2_migrator->progressbar->url,
|
'progress_url' => $mp2_migrator->progressbar->url,
|
||||||
];
|
];
|
||||||
$this->displayPage('mp2migration.html', $data);
|
$this->page_renderer->displayPage('mp2migration.html', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
function welcomeWizard() {
|
function welcomeWizard() {
|
||||||
@@ -433,7 +436,7 @@ class Menu {
|
|||||||
'sender' => $this->settings->get('sender'),
|
'sender' => $this->settings->get('sender'),
|
||||||
'admin_email' => get_option('admin_email'),
|
'admin_email' => get_option('admin_email'),
|
||||||
];
|
];
|
||||||
$this->displayPage('welcome_wizard.html', $data);
|
$this->page_renderer->displayPage('welcome_wizard.html', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
function wooCommerceListImport() {
|
function wooCommerceListImport() {
|
||||||
@@ -441,7 +444,7 @@ class Menu {
|
|||||||
$data = [
|
$data = [
|
||||||
'finish_wizard_url' => $this->wp->adminUrl('admin.php?page=' . self::MAIN_PAGE_SLUG),
|
'finish_wizard_url' => $this->wp->adminUrl('admin.php?page=' . self::MAIN_PAGE_SLUG),
|
||||||
];
|
];
|
||||||
$this->displayPage('woocommerce_list_import.html', $data);
|
$this->page_renderer->displayPage('woocommerce_list_import.html', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
function revenueTrackingPermission() {
|
function revenueTrackingPermission() {
|
||||||
@@ -452,7 +455,7 @@ class Menu {
|
|||||||
$data = [
|
$data = [
|
||||||
'finish_wizard_url' => $this->wp->adminUrl('admin.php?page=' . self::MAIN_PAGE_SLUG),
|
'finish_wizard_url' => $this->wp->adminUrl('admin.php?page=' . self::MAIN_PAGE_SLUG),
|
||||||
];
|
];
|
||||||
$this->displayPage('revenue_tracking_permission.html', $data);
|
$this->page_renderer->displayPage('revenue_tracking_permission.html', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
function update() {
|
function update() {
|
||||||
@@ -496,7 +499,7 @@ class Menu {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->displayPage('update.html', $data);
|
$this->page_renderer->displayPage('update.html', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
function premium() {
|
function premium() {
|
||||||
@@ -506,7 +509,7 @@ class Menu {
|
|||||||
'display_discount' => time() <= strtotime('2018-11-30 23:59:59'),
|
'display_discount' => time() <= strtotime('2018-11-30 23:59:59'),
|
||||||
];
|
];
|
||||||
|
|
||||||
$this->displayPage('premium.html', $data);
|
$this->page_renderer->displayPage('premium.html', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -544,7 +547,7 @@ class Menu {
|
|||||||
|
|
||||||
$data = array_merge($data, Installer::getPremiumStatus());
|
$data = array_merge($data, Installer::getPremiumStatus());
|
||||||
|
|
||||||
$this->displayPage('settings.html', $data);
|
$this->page_renderer->displayPage('settings.html', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -567,7 +570,7 @@ class Menu {
|
|||||||
$system_status_data['cronStatus']['accessible'] = CronHelper::isDaemonAccessible();
|
$system_status_data['cronStatus']['accessible'] = CronHelper::isDaemonAccessible();
|
||||||
$system_status_data['queueStatus']['tasksStatusCounts'] = $tasks_state->getCountsPerStatus();
|
$system_status_data['queueStatus']['tasksStatusCounts'] = $tasks_state->getCountsPerStatus();
|
||||||
$system_status_data['queueStatus']['latestTasks'] = $tasks_state->getLatestTasks(Sending::TASK_TYPE);
|
$system_status_data['queueStatus']['latestTasks'] = $tasks_state->getLatestTasks(Sending::TASK_TYPE);
|
||||||
$this->displayPage(
|
$this->page_renderer->displayPage(
|
||||||
'help.html',
|
'help.html',
|
||||||
[
|
[
|
||||||
'systemInfoData' => $system_info_data,
|
'systemInfoData' => $system_info_data,
|
||||||
@@ -577,7 +580,7 @@ class Menu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function experimentalFeatures() {
|
function experimentalFeatures() {
|
||||||
$this->displayPage('experimental-features.html', []);
|
$this->page_renderer->displayPage('experimental-features.html', []);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function _getFlags() {
|
private function _getFlags() {
|
||||||
@@ -637,13 +640,13 @@ class Menu {
|
|||||||
$data['premium_plugin_active'] = License::getLicense();
|
$data['premium_plugin_active'] = License::getLicense();
|
||||||
$data['mss_active'] = Bridge::isMPSendingServiceEnabled();
|
$data['mss_active'] = Bridge::isMPSendingServiceEnabled();
|
||||||
|
|
||||||
$this->displayPage('subscribers/subscribers.html', $data);
|
$this->page_renderer->displayPage('subscribers/subscribers.html', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
function segments() {
|
function segments() {
|
||||||
$data = [];
|
$data = [];
|
||||||
$data['items_per_page'] = $this->getLimitPerPage('segments');
|
$data['items_per_page'] = $this->getLimitPerPage('segments');
|
||||||
$this->displayPage('segments.html', $data);
|
$this->page_renderer->displayPage('segments.html', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
function forms() {
|
function forms() {
|
||||||
@@ -656,7 +659,7 @@ class Menu {
|
|||||||
|
|
||||||
$data['is_new_user'] = $this->isNewUser();
|
$data['is_new_user'] = $this->isNewUser();
|
||||||
|
|
||||||
$this->displayPage('forms.html', $data);
|
$this->page_renderer->displayPage('forms.html', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
function newsletters() {
|
function newsletters() {
|
||||||
@@ -764,7 +767,7 @@ class Menu {
|
|||||||
$this->wp->wpEnqueueScript('jquery-ui');
|
$this->wp->wpEnqueueScript('jquery-ui');
|
||||||
$this->wp->wpEnqueueScript('jquery-ui-datepicker');
|
$this->wp->wpEnqueueScript('jquery-ui-datepicker');
|
||||||
|
|
||||||
$this->displayPage('newsletters.html', $data);
|
$this->page_renderer->displayPage('newsletters.html', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
function newletterEditor() {
|
function newletterEditor() {
|
||||||
@@ -782,7 +785,7 @@ class Menu {
|
|||||||
$this->wp->wpEnqueueScript('tinymce-wplink', $this->wp->includesUrl('js/tinymce/plugins/wplink/plugin.js'));
|
$this->wp->wpEnqueueScript('tinymce-wplink', $this->wp->includesUrl('js/tinymce/plugins/wplink/plugin.js'));
|
||||||
$this->wp->wpEnqueueStyle('editor', $this->wp->includesUrl('css/editor.css'));
|
$this->wp->wpEnqueueStyle('editor', $this->wp->includesUrl('css/editor.css'));
|
||||||
|
|
||||||
$this->displayPage('newsletter/editor.html', $data);
|
$this->page_renderer->displayPage('newsletter/editor.html', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
function import() {
|
function import() {
|
||||||
@@ -798,14 +801,14 @@ class Menu {
|
|||||||
|
|
||||||
$data['is_new_user'] = $this->isNewUser();
|
$data['is_new_user'] = $this->isNewUser();
|
||||||
|
|
||||||
$this->displayPage('subscribers/importExport/import.html', $data);
|
$this->page_renderer->displayPage('subscribers/importExport/import.html', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
function export() {
|
function export() {
|
||||||
$export = new ImportExportFactory(ImportExportFactory::EXPORT_ACTION);
|
$export = new ImportExportFactory(ImportExportFactory::EXPORT_ACTION);
|
||||||
$data = $export->bootstrap();
|
$data = $export->bootstrap();
|
||||||
$data['sub_menu'] = 'mailpoet-subscribers';
|
$data['sub_menu'] = 'mailpoet-subscribers';
|
||||||
$this->displayPage('subscribers/importExport/export.html', $data);
|
$this->page_renderer->displayPage('subscribers/importExport/export.html', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
function formEditor() {
|
function formEditor() {
|
||||||
@@ -826,7 +829,7 @@ class Menu {
|
|||||||
'sub_menu' => 'mailpoet-forms',
|
'sub_menu' => 'mailpoet-forms',
|
||||||
];
|
];
|
||||||
|
|
||||||
$this->displayPage('form/editor.html', $data);
|
$this->page_renderer->displayPage('form/editor.html', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
function setPageTitle($title) {
|
function setPageTitle($title) {
|
||||||
@@ -838,14 +841,14 @@ class Menu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function displaySubscriberLimitExceededTemplate() {
|
function displaySubscriberLimitExceededTemplate() {
|
||||||
$this->displayPage('limit.html', [
|
$this->page_renderer->displayPage('limit.html', [
|
||||||
'limit' => SubscribersFeature::SUBSCRIBERS_LIMIT,
|
'limit' => SubscribersFeature::SUBSCRIBERS_LIMIT,
|
||||||
]);
|
]);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
function displayMailPoetAPIKeyInvalidTemplate() {
|
function displayMailPoetAPIKeyInvalidTemplate() {
|
||||||
$this->displayPage('invalidkey.html', [
|
$this->page_renderer->displayPage('invalidkey.html', [
|
||||||
'subscriber_count' => Subscriber::getTotalSubscribers(),
|
'subscriber_count' => Subscriber::getTotalSubscribers(),
|
||||||
]);
|
]);
|
||||||
exit;
|
exit;
|
||||||
@@ -928,18 +931,6 @@ class Menu {
|
|||||||
: Listing\Handler::DEFAULT_LIMIT_PER_PAGE;
|
: Listing\Handler::DEFAULT_LIMIT_PER_PAGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
function displayPage($template, $data) {
|
|
||||||
$defaults = [
|
|
||||||
'feature_flags' => $this->features_controller->getAllFlags(),
|
|
||||||
];
|
|
||||||
try {
|
|
||||||
echo $this->renderer->render($template, $data + $defaults);
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
$notice = new WPNotice(WPNotice::TYPE_ERROR, $e->getMessage());
|
|
||||||
$notice->displayWPNotice();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function isNewUser() {
|
function isNewUser() {
|
||||||
$installed_at = $this->settings->get('installed_at');
|
$installed_at = $this->settings->get('installed_at');
|
||||||
if (is_null($installed_at)) {
|
if (is_null($installed_at)) {
|
||||||
|
@@ -28,6 +28,8 @@ class ContainerConfigurator implements IContainerConfigurator {
|
|||||||
ContainerWrapper::class,
|
ContainerWrapper::class,
|
||||||
'getInstance',
|
'getInstance',
|
||||||
]);
|
]);
|
||||||
|
// AdminPages
|
||||||
|
$container->autowire(\MailPoet\AdminPages\PageRenderer::class);
|
||||||
// Analytics
|
// Analytics
|
||||||
$container->autowire(\MailPoet\Analytics\Reporter::class)->setPublic(true);
|
$container->autowire(\MailPoet\Analytics\Reporter::class)->setPublic(true);
|
||||||
// API
|
// API
|
||||||
|
@@ -3,6 +3,7 @@
|
|||||||
namespace MailPoet\Test\Config;
|
namespace MailPoet\Test\Config;
|
||||||
|
|
||||||
use Codeception\Util\Stub;
|
use Codeception\Util\Stub;
|
||||||
|
use MailPoet\AdminPages\PageRenderer;
|
||||||
use MailPoet\Config\AccessControl;
|
use MailPoet\Config\AccessControl;
|
||||||
use MailPoet\Config\Menu;
|
use MailPoet\Config\Menu;
|
||||||
use MailPoet\Config\Renderer;
|
use MailPoet\Config\Renderer;
|
||||||
@@ -44,7 +45,7 @@ class MenuTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function testItChecksMailpoetAPIKey() {
|
function testItChecksMailpoetAPIKey() {
|
||||||
$renderer = Stub::make(new Renderer());
|
$renderer = Stub::make(PageRenderer::class);
|
||||||
$menu = $this->getMenu($renderer);
|
$menu = $this->getMenu($renderer);
|
||||||
|
|
||||||
$_REQUEST['page'] = 'mailpoet-newsletters';
|
$_REQUEST['page'] = 'mailpoet-newsletters';
|
||||||
@@ -66,7 +67,7 @@ class MenuTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function testItChecksPremiumKey() {
|
function testItChecksPremiumKey() {
|
||||||
$renderer = Stub::make(new Renderer());
|
$renderer = Stub::make(PageRenderer::class);
|
||||||
$menu = $this->getMenu($renderer);
|
$menu = $this->getMenu($renderer);
|
||||||
|
|
||||||
$_REQUEST['page'] = 'mailpoet-newsletters';
|
$_REQUEST['page'] = 'mailpoet-newsletters';
|
||||||
@@ -87,16 +88,16 @@ class MenuTest extends \MailPoetTest {
|
|||||||
expect($menu->premium_key_valid)->false();
|
expect($menu->premium_key_valid)->false();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getMenu(Renderer $renderer) {
|
private function getMenu(PageRenderer $renderer) {
|
||||||
return new Menu(
|
return new Menu(
|
||||||
$renderer,
|
|
||||||
new AccessControl(),
|
new AccessControl(),
|
||||||
new SettingsController(),
|
new SettingsController(),
|
||||||
new FeaturesController(),
|
new FeaturesController(),
|
||||||
new Functions(),
|
new Functions(),
|
||||||
new WooCommerceHelper(new Functions()),
|
new WooCommerceHelper(new Functions()),
|
||||||
new ServicesChecker,
|
new ServicesChecker,
|
||||||
new UserFlagsController
|
new UserFlagsController,
|
||||||
|
$renderer
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user