diff --git a/lib/AdminPages/Pages/Update.php b/lib/AdminPages/Pages/Update.php new file mode 100644 index 0000000000..cdc5a4d5c2 --- /dev/null +++ b/lib/AdminPages/Pages/Update.php @@ -0,0 +1,74 @@ +page_renderer = $page_renderer; + $this->wp = $wp; + $this->settings = $settings; + } + + function render() { + global $wp; + $current_url = $this->wp->homeUrl(add_query_arg($wp->query_string, $wp->request)); + $redirect_url = + (!empty($_GET['mailpoet_redirect'])) + ? urldecode($_GET['mailpoet_redirect']) + : $this->wp->wpGetReferer(); + + if ( + $redirect_url === $current_url + or + strpos($redirect_url, 'mailpoet') === false + ) { + $redirect_url = $this->wp->adminUrl('admin.php?page=' . Menu::MAIN_PAGE_SLUG); + } + + $data = [ + 'settings' => $this->settings->getAll(), + 'current_user' => $this->wp->wpGetCurrentUser(), + 'redirect_url' => $redirect_url, + 'sub_menu' => Menu::MAIN_PAGE_SLUG, + ]; + + $data['is_new_user'] = true; + $data['is_old_user'] = false; + if (!empty($data['settings']['installed_at'])) { + $installed_at = Carbon::createFromTimestamp(strtotime($data['settings']['installed_at'])); + $current_time = Carbon::createFromTimestamp($this->wp->currentTime('timestamp')); + $data['is_new_user'] = $current_time->diffInDays($installed_at) <= 30; + $data['is_old_user'] = $current_time->diffInMonths($installed_at) >= 6; + $data['stop_call_for_rating'] = isset($data['settings']['stop_call_for_rating']) ? $data['settings']['stop_call_for_rating'] : false; + } + + $readme_file = Env::$path . '/readme.txt'; + if (is_readable($readme_file)) { + $changelog = Readme::parseChangelog(file_get_contents($readme_file), 1); + if ($changelog) { + $data['changelog'] = $changelog; + } + } + + $this->page_renderer->displayPage('update.html', $data); + } +} diff --git a/lib/Config/Menu.php b/lib/Config/Menu.php index 81777e1766..693efcd2bd 100644 --- a/lib/Config/Menu.php +++ b/lib/Config/Menu.php @@ -2,7 +2,6 @@ namespace MailPoet\Config; -use Carbon\Carbon; use MailPoet\AdminPages\PageRenderer; use MailPoet\AdminPages\Pages\Help; use MailPoet\AdminPages\Pages\MP2Migration; @@ -10,6 +9,7 @@ use MailPoet\AdminPages\Pages\NewsletterEditor; use MailPoet\AdminPages\Pages\Newsletters; use MailPoet\AdminPages\Pages\RevenueTrackingPermission; use MailPoet\AdminPages\Pages\Settings; +use MailPoet\AdminPages\Pages\Update; use MailPoet\AdminPages\Pages\WelcomeWizard; use MailPoet\AdminPages\Pages\WooCommerceListImport; use MailPoet\DI\ContainerWrapper; @@ -23,12 +23,10 @@ use MailPoet\Models\Segment; use MailPoet\Models\Subscriber; use MailPoet\Services\Bridge; use MailPoet\Settings\Pages; -use MailPoet\Settings\SettingsController; use MailPoet\Subscribers\ImportExport\ImportExportFactory; use MailPoet\Util\Installation; use MailPoet\Util\License\Features\Subscribers as SubscribersFeature; use MailPoet\Util\License\License; -use MailPoet\WP\Readme; use MailPoet\WP\Functions as WPFunctions; if (!defined('ABSPATH')) exit; @@ -41,8 +39,6 @@ class Menu { /** @var AccessControl */ private $access_control; - /** @var SettingsController */ - private $settings; /** @var WPFunctions */ private $wp; @@ -65,7 +61,6 @@ class Menu { function __construct( AccessControl $access_control, - SettingsController $settings, WPFunctions $wp, ServicesChecker $servicesChecker, PageRenderer $page_renderer, @@ -75,7 +70,6 @@ class Menu { ) { $this->access_control = $access_control; $this->wp = $wp; - $this->settings = $settings; $this->servicesChecker = $servicesChecker; $this->page_renderer = $page_renderer; $this->listing_page_limit = $listing_page_limit; @@ -430,47 +424,7 @@ class Menu { } function update() { - global $wp; - $current_url = $this->wp->homeUrl(add_query_arg($wp->query_string, $wp->request)); - $redirect_url = - (!empty($_GET['mailpoet_redirect'])) - ? urldecode($_GET['mailpoet_redirect']) - : $this->wp->wpGetReferer(); - - if ( - $redirect_url === $current_url - or - strpos($redirect_url, 'mailpoet') === false - ) { - $redirect_url = $this->wp->adminUrl('admin.php?page=' . self::MAIN_PAGE_SLUG); - } - - $data = [ - 'settings' => $this->settings->getAll(), - 'current_user' => $this->wp->wpGetCurrentUser(), - 'redirect_url' => $redirect_url, - 'sub_menu' => self::MAIN_PAGE_SLUG, - ]; - - $data['is_new_user'] = true; - $data['is_old_user'] = false; - if (!empty($data['settings']['installed_at'])) { - $installed_at = Carbon::createFromTimestamp(strtotime($data['settings']['installed_at'])); - $current_time = Carbon::createFromTimestamp($this->wp->currentTime('timestamp')); - $data['is_new_user'] = $current_time->diffInDays($installed_at) <= 30; - $data['is_old_user'] = $current_time->diffInMonths($installed_at) >= 6; - $data['stop_call_for_rating'] = isset($data['settings']['stop_call_for_rating']) ? $data['settings']['stop_call_for_rating'] : false; - } - - $readme_file = Env::$path . '/readme.txt'; - if (is_readable($readme_file)) { - $changelog = Readme::parseChangelog(file_get_contents($readme_file), 1); - if ($changelog) { - $data['changelog'] = $changelog; - } - } - - $this->page_renderer->displayPage('update.html', $data); + $this->container->get(Update::class)->render(); } function premium() { diff --git a/lib/DI/ContainerConfigurator.php b/lib/DI/ContainerConfigurator.php index 48c0499b20..a11ce3e306 100644 --- a/lib/DI/ContainerConfigurator.php +++ b/lib/DI/ContainerConfigurator.php @@ -36,6 +36,7 @@ class ContainerConfigurator implements IContainerConfigurator { $container->autowire(\MailPoet\AdminPages\Pages\MP2Migration::class); $container->autowire(\MailPoet\AdminPages\Pages\RevenueTrackingPermission::class); $container->autowire(\MailPoet\AdminPages\Pages\Settings::class); + $container->autowire(\MailPoet\AdminPages\Pages\Update::class); $container->autowire(\MailPoet\AdminPages\Pages\WelcomeWizard::class); $container->autowire(\MailPoet\AdminPages\Pages\WooCommerceListImport::class); // Analytics diff --git a/tests/integration/Config/MenuTest.php b/tests/integration/Config/MenuTest.php index 9d49ff8633..d0d5507a96 100644 --- a/tests/integration/Config/MenuTest.php +++ b/tests/integration/Config/MenuTest.php @@ -92,7 +92,6 @@ class MenuTest extends \MailPoetTest { $settings = new SettingsController; return new Menu( new AccessControl(), - $settings, $wp, new ServicesChecker, $renderer,