Move old versions code to own class
[MAILPOET-1316]
This commit is contained in:
15
assets/js/src/notice-php-warning.jsx
Normal file
15
assets/js/src/notice-php-warning.jsx
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import jQuery from 'jquery';
|
||||||
|
|
||||||
|
jQuery(($) => {
|
||||||
|
$(document).on('click', '.notice-php-warning .notice-dismiss', function xyz() {
|
||||||
|
const type = $(this).closest('.notice-php-warning').data('notice');
|
||||||
|
$.ajax(window.ajaxurl,
|
||||||
|
{
|
||||||
|
type: 'POST',
|
||||||
|
data: {
|
||||||
|
action: 'dismissed_notice_handler',
|
||||||
|
type,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -138,6 +138,8 @@ class Initializer {
|
|||||||
|
|
||||||
$this->setupPages();
|
$this->setupPages();
|
||||||
|
|
||||||
|
$this->setupPHPVersionWarnings();
|
||||||
|
|
||||||
do_action('mailpoet_initialized', MAILPOET_VERSION);
|
do_action('mailpoet_initialized', MAILPOET_VERSION);
|
||||||
} catch(\Exception $e) {
|
} catch(\Exception $e) {
|
||||||
return $this->handleFailedInitialization($e);
|
return $this->handleFailedInitialization($e);
|
||||||
@ -270,6 +272,12 @@ class Initializer {
|
|||||||
$exporters->init();
|
$exporters->init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setupPHPVersionWarnings() {
|
||||||
|
$php_version_warnings = new PHPVersionWarnings();
|
||||||
|
$warnings = $php_version_warnings->init(phpversion(), Menu::isOnMailPoetAdminPage());
|
||||||
|
if(is_string($warnings)) echo $warnings;
|
||||||
|
}
|
||||||
|
|
||||||
function handleFailedInitialization($exception) {
|
function handleFailedInitialization($exception) {
|
||||||
// check if we are able to add pages at this point
|
// check if we are able to add pages at this point
|
||||||
if(function_exists('wp_get_current_user')) {
|
if(function_exists('wp_get_current_user')) {
|
||||||
|
54
lib/Config/PHPVersionWarnings.php
Normal file
54
lib/Config/PHPVersionWarnings.php
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace MailPoet\Config;
|
||||||
|
|
||||||
|
use MailPoet\Util\Helpers;
|
||||||
|
|
||||||
|
class PHPVersionWarnings {
|
||||||
|
|
||||||
|
function init($php_version, $is_enabled) {
|
||||||
|
add_action('wp_ajax_dismissed_notice_handler', array(
|
||||||
|
$this,
|
||||||
|
'ajaxDismissNoticeHandler'
|
||||||
|
));
|
||||||
|
$error = null;
|
||||||
|
if (!$is_enabled) return $error;
|
||||||
|
if (is_null($error)) $error = $this->checkPHP53Version($php_version);
|
||||||
|
if (is_null($error)) $error = $this->checkPHP55Version($php_version);
|
||||||
|
return $error;
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkPHP53Version($php_version) {
|
||||||
|
$error_string = null;
|
||||||
|
if(version_compare($php_version, '5.5', '<')) {
|
||||||
|
$error_string = 'Your website is running on PHP %s. MailPoet will require version 7 soon. Please consider upgrading your site\'s PHP version. [link]Your host can help you.[/link]';
|
||||||
|
$error_string = sprintf($error_string, $php_version);
|
||||||
|
$error = Helpers::replaceLinkTags(__($error_string, 'mailpoet'), 'https://beta.docs.mailpoet.com/article/251-upgrading-the-websites-php-version', array('target' => '_blank'));
|
||||||
|
return $this->displayWPNotice($error, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkPHP55Version($php_version) {
|
||||||
|
$error_string = null;
|
||||||
|
if(version_compare($php_version, '5.6', '<')) {
|
||||||
|
$error_string = 'Your website is running on PHP %s. MailPoet will require version 7 by the end of the year. Please consider upgrading your site\'s PHP version. [link]Your host can help you.[/link]';
|
||||||
|
$error_string = sprintf($error_string, $php_version);
|
||||||
|
$error = Helpers::replaceLinkTags(__($error_string, 'mailpoet'), 'https://beta.docs.mailpoet.com/article/251-upgrading-the-websites-php-version', array('target' => '_blank'));
|
||||||
|
return $this->displayWPNotice($error, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function displayWPNotice($message, $dismisable = false) {
|
||||||
|
$class = 'notice notice-error notice-php-warning mailpoet_notice_server';
|
||||||
|
if($dismisable) $class .= ' is-dismissible';
|
||||||
|
|
||||||
|
if(!get_option('dismissed-php-version-outdated-notice', false)) {
|
||||||
|
return sprintf('<div class="%1$s" data-notice="php-version-outdated"><p>%2$s</p></div>', $class, $message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function ajaxDismissNoticeHandler() {
|
||||||
|
update_option('dismissed-php-version-outdated-notice', true);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -13,7 +13,6 @@ class RequirementsChecker {
|
|||||||
const TEST_XML_EXTENSION = 'XmlExtension';
|
const TEST_XML_EXTENSION = 'XmlExtension';
|
||||||
const TEST_ZIP_EXTENSION = 'ZipExtension';
|
const TEST_ZIP_EXTENSION = 'ZipExtension';
|
||||||
const TEST_VENDOR_SOURCE = 'VendorSource';
|
const TEST_VENDOR_SOURCE = 'VendorSource';
|
||||||
const TEST_PHP_VERSION = 'PHPVersion';
|
|
||||||
const TWIG_SUPPORTED_VERSIONS = '1.26.0-1.34.4';
|
const TWIG_SUPPORTED_VERSIONS = '1.26.0-1.34.4';
|
||||||
|
|
||||||
public $display_error_notice;
|
public $display_error_notice;
|
||||||
@ -50,8 +49,7 @@ class RequirementsChecker {
|
|||||||
self::TEST_MBSTRING_EXTENSION,
|
self::TEST_MBSTRING_EXTENSION,
|
||||||
self::TEST_XML_EXTENSION,
|
self::TEST_XML_EXTENSION,
|
||||||
self::TEST_ZIP_EXTENSION,
|
self::TEST_ZIP_EXTENSION,
|
||||||
self::TEST_VENDOR_SOURCE,
|
self::TEST_VENDOR_SOURCE
|
||||||
self::TEST_PHP_VERSION,
|
|
||||||
);
|
);
|
||||||
$results = array();
|
$results = array();
|
||||||
foreach($available_tests as $test) {
|
foreach($available_tests as $test) {
|
||||||
@ -122,23 +120,6 @@ class RequirementsChecker {
|
|||||||
return $this->processError($error);
|
return $this->processError($error);
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkPHPVersion() {
|
|
||||||
$php_version = phpversion();
|
|
||||||
$error_string = null;
|
|
||||||
if(version_compare($php_version, '5.5', '<')) {
|
|
||||||
$error_string = 'Your website is running on PHP %s. MailPoet will require version 7 soon. Please consider upgrading your site\'s PHP version. [link]Your host can help you.[/link]';
|
|
||||||
}
|
|
||||||
if(!is_null($error_string) && Menu::isOnMailPoetAdminPage()) {
|
|
||||||
$error_string = sprintf($error_string, $php_version);
|
|
||||||
$error = Helpers::replaceLinkTags(
|
|
||||||
__($error_string, 'mailpoet'),
|
|
||||||
'https://beta.docs.mailpoet.com/article/251-upgrading-the-websites-php-version',
|
|
||||||
array('target' => '_blank')
|
|
||||||
);
|
|
||||||
$this->processError($error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function checkVendorSource() {
|
function checkVendorSource() {
|
||||||
foreach($this->vendor_classes as $dependency) {
|
foreach($this->vendor_classes as $dependency) {
|
||||||
$dependency_path = $this->getDependencyPath($dependency);
|
$dependency_path = $this->getDependencyPath($dependency);
|
||||||
|
54
tests/unit/Config/PHPVersionWarningsTest.php
Normal file
54
tests/unit/Config/PHPVersionWarningsTest.php
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace MailPoet\Config;
|
||||||
|
|
||||||
|
class PHPVersionWarningsTest extends \MailPoetTest {
|
||||||
|
|
||||||
|
/** @var PHPVersionWarnings */
|
||||||
|
private $phpVersionWarning;
|
||||||
|
|
||||||
|
function _before() {
|
||||||
|
$this->phpVersionWarning = new PHPVersionWarnings();
|
||||||
|
update_option('dismissed-php-version-outdated-notice', false);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _after() {
|
||||||
|
update_option('dismissed-php-version-outdated-notice', false);
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItPrintsWarningFor53() {
|
||||||
|
$warning = $this->phpVersionWarning->init('5.3.2', true);
|
||||||
|
expect($warning)->contains('Your website is running on PHP 5.3.2');
|
||||||
|
expect($warning)->notContains('is-dismissible');
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItPrintsWarningFor54() {
|
||||||
|
$warning = $this->phpVersionWarning->init('5.4.1', true);
|
||||||
|
expect($warning)->contains('Your website is running on PHP 5.4.1');
|
||||||
|
expect($warning)->notContains('is-dismissible');
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItPrintsWarningFor55() {
|
||||||
|
$warning = $this->phpVersionWarning->init('5.5.3', true);
|
||||||
|
expect($warning)->contains('Your website is running on PHP 5.5.3');
|
||||||
|
expect($warning)->contains('is-dismissible');
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItPrintsNoWarningFor56() {
|
||||||
|
$warning = $this->phpVersionWarning->init('5.6.3', true);
|
||||||
|
expect($warning)->null();
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItPrintsNoWarningWhenDisabled() {
|
||||||
|
$warning = $this->phpVersionWarning->init('5.3.2', false);
|
||||||
|
expect($warning)->null();
|
||||||
|
}
|
||||||
|
|
||||||
|
function testItPrintsNoWarningWhenDismised() {
|
||||||
|
$this->phpVersionWarning->init('5.3.2', true);
|
||||||
|
do_action('wp_ajax_dismissed_notice_handler');
|
||||||
|
$warning = $this->phpVersionWarning->init('5.3.2', true);
|
||||||
|
expect($warning)->null();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -195,6 +195,7 @@ var adminConfig = {
|
|||||||
'analytics_event',
|
'analytics_event',
|
||||||
'help-tooltip.jsx',
|
'help-tooltip.jsx',
|
||||||
'help-tooltip',
|
'help-tooltip',
|
||||||
|
'notice-php-warning.jsx',
|
||||||
],
|
],
|
||||||
admin_vendor: [
|
admin_vendor: [
|
||||||
'react',
|
'react',
|
||||||
|
Reference in New Issue
Block a user