php-censor/src/PHPCensor/Helper/MailerFactory.php

86 lines
2.4 KiB
PHP
Raw Normal View History

<?php
2016-07-19 20:28:11 +02:00
namespace PHPCensor\Helper;
/**
* Class MailerFactory helps to set up and configure a SwiftMailer object.
*/
class MailerFactory
{
/**
* @var array
*/
protected $emailConfig;
/**
* Set the mailer factory configuration.
* @param array $config
*/
2016-04-20 17:39:48 +02:00
public function __construct($config = [])
{
if (!is_array($config)) {
2016-04-20 17:39:48 +02:00
$config = [];
}
2016-04-20 17:39:48 +02:00
$this->emailConfig = isset($config['email_settings']) ? $config['email_settings'] : [];
}
/**
* Returns an instance of Swift_Mailer based on the config.s
* @return \Swift_Mailer
*/
public function getSwiftMailerFromConfig()
{
2016-08-17 16:20:07 +02:00
if ($this->getMailConfig('smtp_address')) {
$encryptionType = $this->getMailConfig('smtp_encryption');
2016-08-17 16:20:07 +02:00
// Workaround issue where smtp_encryption could == 1 in the past by
// checking it is a valid transport
if ($encryptionType && !in_array($encryptionType, stream_get_transports())) {
$encryptionType = null;
}
/** @var \Swift_SmtpTransport $transport */
$transport = \Swift_SmtpTransport::newInstance(
$this->getMailConfig('smtp_address'),
$this->getMailConfig('smtp_port'),
$encryptionType
);
2016-08-17 16:20:07 +02:00
$transport->setUsername($this->getMailConfig('smtp_username'));
$transport->setPassword($this->getMailConfig('smtp_password'));
} else {
2016-08-25 17:28:13 +02:00
$transport = \Swift_MailTransport::newInstance(null);
2016-08-17 16:20:07 +02:00
}
return \Swift_Mailer::newInstance($transport);
}
/**
* Return a specific configuration value by key.
* @param $configName
* @return null|string
*/
public function getMailConfig($configName)
{
if (isset($this->emailConfig[$configName]) && $this->emailConfig[$configName] != "") {
return $this->emailConfig[$configName];
} else {
// Check defaults
2015-10-05 15:17:13 +02:00
switch ($configName) {
case 'smtp_address':
2016-08-17 16:20:07 +02:00
return "";
case 'default_mailto_address':
return null;
case 'smtp_port':
return '25';
case 'smtp_encryption':
return null;
default:
return "";
}
}
}
}