Move Swiftmailer to vendor-prefixed
[MAILPOET-2363]
This commit is contained in:
committed by
Jack Kitterhing
parent
eb3ea8d540
commit
86675dfd4f
@ -12,7 +12,6 @@
|
|||||||
"mtdowling/cron-expression": "^1.1",
|
"mtdowling/cron-expression": "^1.1",
|
||||||
"nesbot/carbon": "^1.21",
|
"nesbot/carbon": "^1.21",
|
||||||
"soundasleep/html2text": "dev-master",
|
"soundasleep/html2text": "dev-master",
|
||||||
"swiftmailer/swiftmailer": "5.4.12",
|
|
||||||
"tburry/pquery": "^1.1.1"
|
"tburry/pquery": "^1.1.1"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
|
56
composer.lock
generated
56
composer.lock
generated
@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "c641885578d3d2bb8a3853d01d0827fe",
|
"content-hash": "f65ddd571e509c0289261f02e514f883",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "cerdic/css-tidy",
|
"name": "cerdic/css-tidy",
|
||||||
@ -325,60 +325,6 @@
|
|||||||
},
|
},
|
||||||
"time": "2019-04-24T12:03:33+00:00"
|
"time": "2019-04-24T12:03:33+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "swiftmailer/swiftmailer",
|
|
||||||
"version": "v5.4.12",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/swiftmailer/swiftmailer.git",
|
|
||||||
"reference": "181b89f18a90f8925ef805f950d47a7190e9b950"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950",
|
|
||||||
"reference": "181b89f18a90f8925ef805f950d47a7190e9b950",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": ">=5.3.3"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"mockery/mockery": "~0.9.1",
|
|
||||||
"symfony/phpunit-bridge": "~3.2"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-master": "5.4-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"files": [
|
|
||||||
"lib/swift_required.php"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Chris Corbyn"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Fabien Potencier",
|
|
||||||
"email": "fabien@symfony.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Swiftmailer, free feature-rich PHP mailer",
|
|
||||||
"homepage": "https://swiftmailer.symfony.com",
|
|
||||||
"keywords": [
|
|
||||||
"email",
|
|
||||||
"mail",
|
|
||||||
"mailer"
|
|
||||||
],
|
|
||||||
"time": "2018-07-31T09:26:32+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-mbstring",
|
"name": "symfony/polyfill-mbstring",
|
||||||
"version": "v1.12.0",
|
"version": "v1.12.0",
|
||||||
|
@ -17,9 +17,6 @@ class RequirementsChecker {
|
|||||||
public $vendor_classes = [
|
public $vendor_classes = [
|
||||||
'\ORM',
|
'\ORM',
|
||||||
'\Model',
|
'\Model',
|
||||||
'\Swift_Mailer',
|
|
||||||
'\Swift_SmtpTransport',
|
|
||||||
'\Swift_Message',
|
|
||||||
'\Carbon\Carbon',
|
'\Carbon\Carbon',
|
||||||
'\Sudzy\ValidModel',
|
'\Sudzy\ValidModel',
|
||||||
'\Sudzy\ValidationException',
|
'\Sudzy\ValidationException',
|
||||||
|
@ -6,6 +6,7 @@ use MailPoet\Mailer\Mailer;
|
|||||||
use MailPoet\Mailer\Methods\Common\BlacklistCheck;
|
use MailPoet\Mailer\Methods\Common\BlacklistCheck;
|
||||||
use MailPoet\Mailer\Methods\ErrorMappers\AmazonSESMapper;
|
use MailPoet\Mailer\Methods\ErrorMappers\AmazonSESMapper;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
use MailPoetVendor\Swift_Message;
|
||||||
|
|
||||||
class AmazonSES {
|
class AmazonSES {
|
||||||
public $aws_access_key;
|
public $aws_access_key;
|
||||||
@ -108,7 +109,7 @@ class AmazonSES {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function createMessage($newsletter, $subscriber, $extra_params = []) {
|
function createMessage($newsletter, $subscriber, $extra_params = []) {
|
||||||
$message = \Swift_Message::newInstance()
|
$message = Swift_Message::newInstance()
|
||||||
->setTo($this->processSubscriber($subscriber))
|
->setTo($this->processSubscriber($subscriber))
|
||||||
->setFrom([
|
->setFrom([
|
||||||
$this->sender['from_email'] => $this->sender['from_name'],
|
$this->sender['from_email'] => $this->sender['from_name'],
|
||||||
@ -132,7 +133,7 @@ class AmazonSES {
|
|||||||
return $message;
|
return $message;
|
||||||
}
|
}
|
||||||
|
|
||||||
function encodeMessage(\Swift_Message $message) {
|
function encodeMessage(Swift_Message $message) {
|
||||||
return base64_encode($message->toString());
|
return base64_encode($message->toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ use MailPoet\Mailer\Mailer;
|
|||||||
use MailPoet\Mailer\MailerError;
|
use MailPoet\Mailer\MailerError;
|
||||||
use MailPoet\Mailer\SubscriberError;
|
use MailPoet\Mailer\SubscriberError;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
use MailPoetVendor\Swift_RfcComplianceException;
|
||||||
|
|
||||||
class AmazonSESMapper {
|
class AmazonSESMapper {
|
||||||
use BlacklistErrorMapperTrait;
|
use BlacklistErrorMapperTrait;
|
||||||
@ -15,7 +16,7 @@ class AmazonSESMapper {
|
|||||||
|
|
||||||
function getErrorFromException(\Exception $e, $subscriber) {
|
function getErrorFromException(\Exception $e, $subscriber) {
|
||||||
$level = MailerError::LEVEL_HARD;
|
$level = MailerError::LEVEL_HARD;
|
||||||
if ($e instanceof \Swift_RfcComplianceException) {
|
if ($e instanceof Swift_RfcComplianceException) {
|
||||||
$level = MailerError::LEVEL_SOFT;
|
$level = MailerError::LEVEL_SOFT;
|
||||||
}
|
}
|
||||||
$subscriber_errors = [new SubscriberError($subscriber, null)];
|
$subscriber_errors = [new SubscriberError($subscriber, null)];
|
||||||
|
@ -6,6 +6,7 @@ use MailPoet\Mailer\Mailer;
|
|||||||
use MailPoet\Mailer\MailerError;
|
use MailPoet\Mailer\MailerError;
|
||||||
use MailPoet\Mailer\SubscriberError;
|
use MailPoet\Mailer\SubscriberError;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
use MailPoetVendor\Swift_RfcComplianceException;
|
||||||
|
|
||||||
class SMTPMapper {
|
class SMTPMapper {
|
||||||
use BlacklistErrorMapperTrait;
|
use BlacklistErrorMapperTrait;
|
||||||
@ -22,7 +23,7 @@ class SMTPMapper {
|
|||||||
$message = explode(PHP_EOL, $e->getMessage());
|
$message = explode(PHP_EOL, $e->getMessage());
|
||||||
|
|
||||||
$level = MailerError::LEVEL_HARD;
|
$level = MailerError::LEVEL_HARD;
|
||||||
if ($e instanceof \Swift_RfcComplianceException) {
|
if ($e instanceof Swift_RfcComplianceException) {
|
||||||
$level = MailerError::LEVEL_SOFT;
|
$level = MailerError::LEVEL_SOFT;
|
||||||
}
|
}
|
||||||
$subscriber_errors = [new SubscriberError($subscriber, null)];
|
$subscriber_errors = [new SubscriberError($subscriber, null)];
|
||||||
|
@ -6,6 +6,11 @@ use MailPoet\Mailer\Mailer;
|
|||||||
use MailPoet\Mailer\Methods\Common\BlacklistCheck;
|
use MailPoet\Mailer\Methods\Common\BlacklistCheck;
|
||||||
use MailPoet\Mailer\Methods\ErrorMappers\SMTPMapper;
|
use MailPoet\Mailer\Methods\ErrorMappers\SMTPMapper;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
use MailPoetVendor\Swift_Mailer;
|
||||||
|
use MailPoetVendor\Swift_Message;
|
||||||
|
use MailPoetVendor\Swift_Plugins_LoggerPlugin;
|
||||||
|
use MailPoetVendor\Swift_Plugins_Loggers_ArrayLogger;
|
||||||
|
use MailPoetVendor\Swift_SmtpTransport;
|
||||||
|
|
||||||
class SMTP {
|
class SMTP {
|
||||||
public $host;
|
public $host;
|
||||||
@ -45,8 +50,8 @@ class SMTP {
|
|||||||
$return_path :
|
$return_path :
|
||||||
$this->sender['from_email'];
|
$this->sender['from_email'];
|
||||||
$this->mailer = $this->buildMailer();
|
$this->mailer = $this->buildMailer();
|
||||||
$this->mailer_logger = new \Swift_Plugins_Loggers_ArrayLogger();
|
$this->mailer_logger = new Swift_Plugins_Loggers_ArrayLogger();
|
||||||
$this->mailer->registerPlugin(new \Swift_Plugins_LoggerPlugin($this->mailer_logger));
|
$this->mailer->registerPlugin(new Swift_Plugins_LoggerPlugin($this->mailer_logger));
|
||||||
$this->error_mapper = $error_mapper;
|
$this->error_mapper = $error_mapper;
|
||||||
$this->blacklist = new BlacklistCheck();
|
$this->blacklist = new BlacklistCheck();
|
||||||
}
|
}
|
||||||
@ -73,7 +78,7 @@ class SMTP {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function buildMailer() {
|
function buildMailer() {
|
||||||
$transport = \Swift_SmtpTransport::newInstance(
|
$transport = Swift_SmtpTransport::newInstance(
|
||||||
$this->host, $this->port, $this->encryption);
|
$this->host, $this->port, $this->encryption);
|
||||||
$connection_timeout = $this->wp->applyFilters('mailpoet_mailer_smtp_connection_timeout', self::SMTP_CONNECTION_TIMEOUT);
|
$connection_timeout = $this->wp->applyFilters('mailpoet_mailer_smtp_connection_timeout', self::SMTP_CONNECTION_TIMEOUT);
|
||||||
$transport->setTimeout($connection_timeout);
|
$transport->setTimeout($connection_timeout);
|
||||||
@ -83,11 +88,11 @@ class SMTP {
|
|||||||
->setPassword($this->password);
|
->setPassword($this->password);
|
||||||
}
|
}
|
||||||
$transport = $this->wp->applyFilters('mailpoet_mailer_smtp_transport_agent', $transport);
|
$transport = $this->wp->applyFilters('mailpoet_mailer_smtp_transport_agent', $transport);
|
||||||
return \Swift_Mailer::newInstance($transport);
|
return Swift_Mailer::newInstance($transport);
|
||||||
}
|
}
|
||||||
|
|
||||||
function createMessage($newsletter, $subscriber, $extra_params = []) {
|
function createMessage($newsletter, $subscriber, $extra_params = []) {
|
||||||
$message = \Swift_Message::newInstance()
|
$message = Swift_Message::newInstance()
|
||||||
->setTo($this->processSubscriber($subscriber))
|
->setTo($this->processSubscriber($subscriber))
|
||||||
->setFrom(
|
->setFrom(
|
||||||
[
|
[
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
"gregwar/captcha": "^1.1",
|
"gregwar/captcha": "^1.1",
|
||||||
"monolog/monolog": "^1.23",
|
"monolog/monolog": "^1.23",
|
||||||
"sabberworm/php-css-parser": "^8.1",
|
"sabberworm/php-css-parser": "^8.1",
|
||||||
|
"swiftmailer/swiftmailer": "5.4.12",
|
||||||
"symfony/dependency-injection": "3.4.26",
|
"symfony/dependency-injection": "3.4.26",
|
||||||
"symfony/polyfill-mbstring": "^1.11",
|
"symfony/polyfill-mbstring": "^1.11",
|
||||||
"symfony/polyfill-php72": "^1.11",
|
"symfony/polyfill-php72": "^1.11",
|
||||||
@ -21,7 +22,8 @@
|
|||||||
"../tools/vendor/php-scoper.phar add-prefix",
|
"../tools/vendor/php-scoper.phar add-prefix",
|
||||||
"mv ./build/* ../vendor-prefixed",
|
"mv ./build/* ../vendor-prefixed",
|
||||||
"php fix-twig.php",
|
"php fix-twig.php",
|
||||||
"php fix-doctrine.php"
|
"php fix-doctrine.php",
|
||||||
|
"php fix-swiftmailer.php"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"config": {
|
"config": {
|
||||||
|
56
prefixer/composer.lock
generated
56
prefixer/composer.lock
generated
@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "74021a12e7237e4a9994dff6fc888b6e",
|
"content-hash": "3c34a814f0565a78f75d50814f8a165d",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "doctrine/annotations",
|
"name": "doctrine/annotations",
|
||||||
@ -883,6 +883,60 @@
|
|||||||
],
|
],
|
||||||
"time": "2018-07-13T13:23:56+00:00"
|
"time": "2018-07-13T13:23:56+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "swiftmailer/swiftmailer",
|
||||||
|
"version": "v5.4.12",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/swiftmailer/swiftmailer.git",
|
||||||
|
"reference": "181b89f18a90f8925ef805f950d47a7190e9b950"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950",
|
||||||
|
"reference": "181b89f18a90f8925ef805f950d47a7190e9b950",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.3.3"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"mockery/mockery": "~0.9.1",
|
||||||
|
"symfony/phpunit-bridge": "~3.2"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "5.4-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"lib/swift_required.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Chris Corbyn"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Fabien Potencier",
|
||||||
|
"email": "fabien@symfony.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Swiftmailer, free feature-rich PHP mailer",
|
||||||
|
"homepage": "https://swiftmailer.symfony.com",
|
||||||
|
"keywords": [
|
||||||
|
"email",
|
||||||
|
"mail",
|
||||||
|
"mailer"
|
||||||
|
],
|
||||||
|
"time": "2018-07-31T09:26:32+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/console",
|
"name": "symfony/console",
|
||||||
"version": "v3.4.29",
|
"version": "v3.4.29",
|
||||||
|
29
prefixer/fix-swiftmailer.php
Executable file
29
prefixer/fix-swiftmailer.php
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// throw exception if anything fails
|
||||||
|
set_error_handler(function ($severity, $message, $file, $line) {
|
||||||
|
throw new ErrorException($message, 0, $severity, $file, $line);
|
||||||
|
});
|
||||||
|
|
||||||
|
// fix Swiftmailer namespaces in string not being correctly prefixed
|
||||||
|
$iterator = new RecursiveDirectoryIterator(__DIR__ . '/../vendor-prefixed/swiftmailer', RecursiveDirectoryIterator::SKIP_DOTS);
|
||||||
|
$files = new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::SELF_FIRST);
|
||||||
|
foreach ($files as $file) {
|
||||||
|
if (substr($file, -3) === 'php') {
|
||||||
|
$data = file_get_contents($file);
|
||||||
|
$data = preg_replace("/'(Swift_[^']*?::)/", "'MailPoetVendor\\\\\\\\$1", $data);
|
||||||
|
$data = preg_replace("/InstanceOf\('(Swift_[^']*?')/", "InstanceOf('MailPoetVendor\\\\\\\\$1", $data);
|
||||||
|
$data = preg_replace("/registerAutoload\('(_swift[^']*?')/", "registerAutoload('MailPoetVendor\\\\\\\\$1", $data);
|
||||||
|
$data = str_replace('SWIFT_INIT_LOADED', 'MAILPOET_SWIFT_INIT_LOADED', $data);
|
||||||
|
|
||||||
|
// require-once 'swift_init.php' in classes since prefixed version won't use Swift's autoloader
|
||||||
|
if (strpos($file, 'classes') !== false) {
|
||||||
|
$path = substr($file, strpos($file, 'classes'));
|
||||||
|
$nesting_level = substr_count(str_replace('\\', '/', $path), '/');
|
||||||
|
$search = 'namespace MailPoetVendor;';
|
||||||
|
$require_path = str_repeat('/..', $nesting_level) . '/swift_init.php';
|
||||||
|
$data = str_replace($search, "$search\n\nrequire_once __DIR__ . '$require_path';", $data);
|
||||||
|
}
|
||||||
|
file_put_contents($file, $data);
|
||||||
|
}
|
||||||
|
}
|
@ -7,6 +7,7 @@ use MailPoet\Mailer\Mailer;
|
|||||||
use MailPoet\Mailer\MailerError;
|
use MailPoet\Mailer\MailerError;
|
||||||
use MailPoet\Mailer\Methods\ErrorMappers\SMTPMapper;
|
use MailPoet\Mailer\Methods\ErrorMappers\SMTPMapper;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
use MailPoetVendor\Swift_RfcComplianceException;
|
||||||
|
|
||||||
class SMTPMapperTest extends \MailPoetUnitTest {
|
class SMTPMapperTest extends \MailPoetUnitTest {
|
||||||
|
|
||||||
@ -37,7 +38,7 @@ class SMTPMapperTest extends \MailPoetUnitTest {
|
|||||||
|
|
||||||
function testItCreatesSoftErrorForInvalidEmail() {
|
function testItCreatesSoftErrorForInvalidEmail() {
|
||||||
$message = 'Invalid email';
|
$message = 'Invalid email';
|
||||||
$error = $this->mapper->getErrorFromException(new \Swift_RfcComplianceException($message), 'john@rambo.com');
|
$error = $this->mapper->getErrorFromException(new Swift_RfcComplianceException($message), 'john@rambo.com');
|
||||||
expect($error->getLevel())->equals(MailerError::LEVEL_SOFT);
|
expect($error->getLevel())->equals(MailerError::LEVEL_SOFT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user