Load PHPMailer conditionally to avoid deprecation notices in WP 5.5 [MAILPOET-3040]

This commit is contained in:
wxa
2020-07-14 10:27:07 +03:00
committed by Veljko V
parent 405476cb7b
commit a181afe646
5 changed files with 46 additions and 5 deletions

View File

@@ -5,8 +5,9 @@ namespace MailPoet\Mailer\Methods;
use MailPoet\Mailer\Mailer; use MailPoet\Mailer\Mailer;
use MailPoet\Mailer\Methods\Common\BlacklistCheck; use MailPoet\Mailer\Methods\Common\BlacklistCheck;
use MailPoet\Mailer\Methods\ErrorMappers\PHPMailMapper; use MailPoet\Mailer\Methods\ErrorMappers\PHPMailMapper;
use MailPoet\Mailer\WordPress\PHPMailerLoader;
require_once ABSPATH . WPINC . '/class-phpmailer.php'; PHPMailerLoader::load();
class PHPMail { class PHPMail {
public $sender; public $sender;

View File

@@ -0,0 +1,31 @@
<?php
namespace MailPoet\Mailer\WordPress;
/**
* This class and its usage should be removed
* in favor of the new loading method when support
* for WordPress below 5.5 is dropped.
*/
class PHPMailerLoader {
/**
* Conditionally load PHPMailer the old or the new way
* to not get a deprecated file notice.
*/
public static function load() {
if (class_exists('PHPMailer')) {
return false;
}
if (is_readable(ABSPATH . WPINC . '/PHPMailer/PHPMailer.php')) {
// WordPress 5.5+
require_once ABSPATH . WPINC . '/PHPMailer/PHPMailer.php';
require_once ABSPATH . WPINC . '/PHPMailer/Exception.php';
class_alias(\PHPMailer\PHPMailer\PHPMailer::class, 'PHPMailer');
class_alias(\PHPMailer\PHPMailer\Exception::class, 'phpmailerException');
} else {
// WordPress < 5.5
require_once ABSPATH . WPINC . '/class-phpmailer.php';
}
}
}

View File

@@ -7,9 +7,7 @@ use MailPoet\Mailer\Mailer;
use MailPoet\Mailer\MetaInfo; use MailPoet\Mailer\MetaInfo;
use MailPoet\Subscribers\SubscribersRepository; use MailPoet\Subscribers\SubscribersRepository;
if (!class_exists('PHPMailer')) { PHPMailerLoader::load();
require_once ABSPATH . WPINC . '/class-phpmailer.php';
}
class WordPressMailer extends \PHPMailer { class WordPressMailer extends \PHPMailer {

View File

@@ -5,7 +5,10 @@ define('ABSPATH', getenv('WP_ROOT') . '/');
require_once ABSPATH . 'wp-load.php'; require_once ABSPATH . 'wp-load.php';
require_once ABSPATH . 'wp-admin/includes/admin.php'; require_once ABSPATH . 'wp-admin/includes/admin.php';
require_once(ABSPATH . 'wp-admin/includes/ms.php'); require_once(ABSPATH . 'wp-admin/includes/ms.php');
require_once ABSPATH . 'wp-includes/class-phpmailer.php';
use MailPoet\Mailer\WordPress\PHPMailerLoader;
PHPMailerLoader::load();
if (!class_exists('\MailPoet\Premium\DI\ContainerConfigurator')) { if (!class_exists('\MailPoet\Premium\DI\ContainerConfigurator')) {
require_once __DIR__ . '/PremiumContainerConfigurator.php'; require_once __DIR__ . '/PremiumContainerConfigurator.php';

View File

@@ -248,3 +248,11 @@ parameters:
message: "#^Parameter \\#2 \\$segment of class MailPoet\\\\Entities\\\\NewsletterSegmentEntity constructor expects MailPoet\\\\Entities\\\\SegmentEntity, object given\\.$#" message: "#^Parameter \\#2 \\$segment of class MailPoet\\\\Entities\\\\NewsletterSegmentEntity constructor expects MailPoet\\\\Entities\\\\SegmentEntity, object given\\.$#"
count: 1 count: 1
path: ../../lib/Newsletter/NewsletterSaveController.php path: ../../lib/Newsletter/NewsletterSaveController.php
-
message: "#^Class PHPMailer\\\\PHPMailer\\\\PHPMailer not found\\.$#"
count: 1
path: ../../lib/Mailer/WordPress/PHPMailerLoader.php
-
message: "#^Class PHPMailer\\\\PHPMailer\\\\Exception not found\\.$#"
count: 1
path: ../../lib/Mailer/WordPress/PHPMailerLoader.php