Browse Source

Reformat code te be PSR-2 compatible

tags/2.0.0-beta
SonicGD 11 years ago
parent
commit
3db18c198a
  1. 275
      Mailer.php
  2. 568
      Message.php

275
Mailer.php

@ -75,146 +75,151 @@ use yii\mail\BaseMailer;
*/ */
class Mailer extends BaseMailer class Mailer extends BaseMailer
{ {
/** /**
* @var string message default class name. * @var string message default class name.
*/ */
public $messageClass = 'yii\swiftmailer\Message'; public $messageClass = 'yii\swiftmailer\Message';
/** /**
* @var \Swift_Mailer Swift mailer instance. * @var \Swift_Mailer Swift mailer instance.
*/ */
private $_swiftMailer; private $_swiftMailer;
/** /**
* @var \Swift_Transport|array Swift transport instance or its array configuration. * @var \Swift_Transport|array Swift transport instance or its array configuration.
*/ */
private $_transport = []; private $_transport = [];
/** /**
* @return array|\Swift_Mailer Swift mailer instance or array configuration. * @return array|\Swift_Mailer Swift mailer instance or array configuration.
*/ */
public function getSwiftMailer() public function getSwiftMailer()
{ {
if (!is_object($this->_swiftMailer)) { if (!is_object($this->_swiftMailer)) {
$this->_swiftMailer = $this->createSwiftMailer(); $this->_swiftMailer = $this->createSwiftMailer();
} }
return $this->_swiftMailer;
}
/** return $this->_swiftMailer;
* @param array|\Swift_Transport $transport }
* @throws InvalidConfigException on invalid argument.
*/
public function setTransport($transport)
{
if (!is_array($transport) && !is_object($transport)) {
throw new InvalidConfigException('"' . get_class($this) . '::transport" should be either object or array, "' . gettype($transport) . '" given.');
}
$this->_transport = $transport;
}
/** /**
* @return array|\Swift_Transport * @param array|\Swift_Transport $transport
*/ * @throws InvalidConfigException on invalid argument.
public function getTransport() */
{ public function setTransport($transport)
if (!is_object($this->_transport)) { {
$this->_transport = $this->createTransport($this->_transport); if (!is_array($transport) && !is_object($transport)) {
} throw new InvalidConfigException('"' . get_class($this) . '::transport" should be either object or array, "' . gettype($transport) . '" given.');
return $this->_transport; }
} $this->_transport = $transport;
}
/** /**
* @inheritdoc * @return array|\Swift_Transport
*/ */
protected function sendMessage($message) public function getTransport()
{ {
$address = $message->getTo(); if (!is_object($this->_transport)) {
if (is_array($address)) { $this->_transport = $this->createTransport($this->_transport);
$address = implode(', ', array_keys($address)); }
}
Yii::info('Sending email "' . $message->getSubject() . '" to "' . $address . '"', __METHOD__);
return $this->getSwiftMailer()->send($message->getSwiftMessage()) > 0;
}
/** return $this->_transport;
* Creates Swift mailer instance. }
* @return \Swift_Mailer mailer instance.
*/
protected function createSwiftMailer()
{
return \Swift_Mailer::newInstance($this->getTransport());
}
/** /**
* Creates email transport instance by its array configuration. * @inheritdoc
* @param array $config transport configuration. */
* @throws \yii\base\InvalidConfigException on invalid transport configuration. protected function sendMessage($message)
* @return \Swift_Transport transport instance. {
*/ $address = $message->getTo();
protected function createTransport(array $config) if (is_array($address)) {
{ $address = implode(', ', array_keys($address));
if (!isset($config['class'])) { }
$config['class'] = 'Swift_MailTransport'; Yii::info('Sending email "' . $message->getSubject() . '" to "' . $address . '"', __METHOD__);
}
if (isset($config['plugins'])) {
$plugins = $config['plugins'];
unset($config['plugins']);
}
/** @var \Swift_MailTransport $transport */
$transport = $this->createSwiftObject($config);
if (isset($plugins)) {
foreach ($plugins as $plugin) {
if (is_array($plugin) && isset($plugin['class'])) {
$plugin = $this->createSwiftObject($plugin);
}
$transport->registerPlugin($plugin);
}
}
return $transport;
}
/** return $this->getSwiftMailer()->send($message->getSwiftMessage()) > 0;
* Creates Swift library object, from given array configuration. }
* @param array $config object configuration
* @return Object created object /**
* @throws \yii\base\InvalidConfigException on invalid configuration. * Creates Swift mailer instance.
*/ * @return \Swift_Mailer mailer instance.
protected function createSwiftObject(array $config) */
{ protected function createSwiftMailer()
if (isset($config['class'])) { {
$className = $config['class']; return \Swift_Mailer::newInstance($this->getTransport());
unset($config['class']); }
} else {
throw new InvalidConfigException('Object configuration must be an array containing a "class" element.'); /**
} * Creates email transport instance by its array configuration.
if (isset($config['constructArgs'])) { * @param array $config transport configuration.
$args = []; * @throws \yii\base\InvalidConfigException on invalid transport configuration.
foreach ($config['constructArgs'] as $arg) { * @return \Swift_Transport transport instance.
if (is_array($arg) && isset($arg['class'])) { */
$args[] = $this->createSwiftObject($arg); protected function createTransport(array $config)
} else { {
$args[] = $arg; if (!isset($config['class'])) {
} $config['class'] = 'Swift_MailTransport';
} }
unset($config['constructArgs']); if (isset($config['plugins'])) {
array_unshift($args, $className); $plugins = $config['plugins'];
$object = call_user_func_array(['Yii', 'createObject'], $args); unset($config['plugins']);
} else { }
$object = new $className; /** @var \Swift_MailTransport $transport */
} $transport = $this->createSwiftObject($config);
if (!empty($config)) { if (isset($plugins)) {
foreach ($config as $name => $value) { foreach ($plugins as $plugin) {
if (property_exists($object, $name)) { if (is_array($plugin) && isset($plugin['class'])) {
$object->$name = $value; $plugin = $this->createSwiftObject($plugin);
} else { }
$setter = 'set' . $name; $transport->registerPlugin($plugin);
if (method_exists($object, $setter) || method_exists($object, '__call')) { }
$object->$setter($value); }
} else {
throw new InvalidConfigException('Setting unknown property: ' . $className . '::' . $name); return $transport;
} }
}
} /**
} * Creates Swift library object, from given array configuration.
return $object; * @param array $config object configuration
} * @return Object created object
* @throws \yii\base\InvalidConfigException on invalid configuration.
*/
protected function createSwiftObject(array $config)
{
if (isset($config['class'])) {
$className = $config['class'];
unset($config['class']);
} else {
throw new InvalidConfigException('Object configuration must be an array containing a "class" element.');
}
if (isset($config['constructArgs'])) {
$args = [];
foreach ($config['constructArgs'] as $arg) {
if (is_array($arg) && isset($arg['class'])) {
$args[] = $this->createSwiftObject($arg);
} else {
$args[] = $arg;
}
}
unset($config['constructArgs']);
array_unshift($args, $className);
$object = call_user_func_array(['Yii', 'createObject'], $args);
} else {
$object = new $className;
}
if (!empty($config)) {
foreach ($config as $name => $value) {
if (property_exists($object, $name)) {
$object->$name = $value;
} else {
$setter = 'set' . $name;
if (method_exists($object, $setter) || method_exists($object, '__call')) {
$object->$setter($value);
} else {
throw new InvalidConfigException('Setting unknown property: ' . $className . '::' . $name);
}
}
}
}
return $object;
}
} }

568
Message.php

@ -24,281 +24,295 @@ use yii\mail\BaseMessage;
*/ */
class Message extends BaseMessage class Message extends BaseMessage
{ {
/** /**
* @var \Swift_Message Swift message instance. * @var \Swift_Message Swift message instance.
*/ */
private $_swiftMessage; private $_swiftMessage;
/** /**
* @return \Swift_Message Swift message instance. * @return \Swift_Message Swift message instance.
*/ */
public function getSwiftMessage() public function getSwiftMessage()
{ {
if (!is_object($this->_swiftMessage)) { if (!is_object($this->_swiftMessage)) {
$this->_swiftMessage = $this->createSwiftMessage(); $this->_swiftMessage = $this->createSwiftMessage();
} }
return $this->_swiftMessage;
} return $this->_swiftMessage;
}
/**
* @inheritdoc /**
*/ * @inheritdoc
public function getCharset() */
{ public function getCharset()
return $this->getSwiftMessage()->getCharset(); {
} return $this->getSwiftMessage()->getCharset();
}
/**
* @inheritdoc /**
*/ * @inheritdoc
public function setCharset($charset) */
{ public function setCharset($charset)
$this->getSwiftMessage()->setCharset($charset); {
return $this; $this->getSwiftMessage()->setCharset($charset);
}
return $this;
/** }
* @inheritdoc
*/ /**
public function getFrom() * @inheritdoc
{ */
return $this->getSwiftMessage()->getFrom(); public function getFrom()
} {
return $this->getSwiftMessage()->getFrom();
/** }
* @inheritdoc
*/ /**
public function setFrom($from) * @inheritdoc
{ */
$this->getSwiftMessage()->setFrom($from); public function setFrom($from)
return $this; {
} $this->getSwiftMessage()->setFrom($from);
/** return $this;
* @inheritdoc }
*/
public function getReplyTo() /**
{ * @inheritdoc
return $this->getSwiftMessage()->getReplyTo(); */
} public function getReplyTo()
{
/** return $this->getSwiftMessage()->getReplyTo();
* @inheritdoc }
*/
public function setReplyTo($replyTo) /**
{ * @inheritdoc
$this->getSwiftMessage()->setReplyTo($replyTo); */
return $this; public function setReplyTo($replyTo)
} {
$this->getSwiftMessage()->setReplyTo($replyTo);
/**
* @inheritdoc return $this;
*/ }
public function getTo()
{ /**
return $this->getSwiftMessage()->getTo(); * @inheritdoc
} */
public function getTo()
/** {
* @inheritdoc return $this->getSwiftMessage()->getTo();
*/ }
public function setTo($to)
{ /**
$this->getSwiftMessage()->setTo($to); * @inheritdoc
return $this; */
} public function setTo($to)
{
/** $this->getSwiftMessage()->setTo($to);
* @inheritdoc
*/ return $this;
public function getCc() }
{
return $this->getSwiftMessage()->getCc(); /**
} * @inheritdoc
*/
/** public function getCc()
* @inheritdoc {
*/ return $this->getSwiftMessage()->getCc();
public function setCc($cc) }
{
$this->getSwiftMessage()->setCc($cc); /**
return $this; * @inheritdoc
} */
public function setCc($cc)
/** {
* @inheritdoc $this->getSwiftMessage()->setCc($cc);
*/
public function getBcc() return $this;
{ }
return $this->getSwiftMessage()->getBcc();
} /**
* @inheritdoc
/** */
* @inheritdoc public function getBcc()
*/ {
public function setBcc($bcc) return $this->getSwiftMessage()->getBcc();
{ }
$this->getSwiftMessage()->setBcc($bcc);
return $this; /**
} * @inheritdoc
*/
/** public function setBcc($bcc)
* @inheritdoc {
*/ $this->getSwiftMessage()->setBcc($bcc);
public function getSubject()
{ return $this;
return $this->getSwiftMessage()->getSubject(); }
}
/**
/** * @inheritdoc
* @inheritdoc */
*/ public function getSubject()
public function setSubject($subject) {
{ return $this->getSwiftMessage()->getSubject();
$this->getSwiftMessage()->setSubject($subject); }
return $this;
} /**
* @inheritdoc
/** */
* @inheritdoc public function setSubject($subject)
*/ {
public function setTextBody($text) $this->getSwiftMessage()->setSubject($subject);
{
$this->setBody($text, 'text/plain'); return $this;
return $this; }
}
/**
/** * @inheritdoc
* @inheritdoc */
*/ public function setTextBody($text)
public function setHtmlBody($html) {
{ $this->setBody($text, 'text/plain');
$this->setBody($html, 'text/html');
return $this; return $this;
} }
/** /**
* Sets the message body. * @inheritdoc
* If body is already set and its content type matches given one, it will */
* be overridden, if content type miss match the multipart message will be composed. public function setHtmlBody($html)
* @param string $body body content. {
* @param string $contentType body content type. $this->setBody($html, 'text/html');
*/
protected function setBody($body, $contentType) return $this;
{ }
$message = $this->getSwiftMessage();
$oldBody = $message->getBody(); /**
$charset = $message->getCharset(); * Sets the message body.
if (empty($oldBody)) { * If body is already set and its content type matches given one, it will
$parts = $message->getChildren(); * be overridden, if content type miss match the multipart message will be composed.
$partFound = false; * @param string $body body content.
foreach ($parts as $key => $part) { * @param string $contentType body content type.
if (!($part instanceof \Swift_Mime_Attachment)) { */
/* @var \Swift_Mime_MimePart $part */ protected function setBody($body, $contentType)
if ($part->getContentType() == $contentType) { {
$charset = $part->getCharset(); $message = $this->getSwiftMessage();
unset($parts[$key]); $oldBody = $message->getBody();
$partFound = true; $charset = $message->getCharset();
break; if (empty($oldBody)) {
} $parts = $message->getChildren();
} $partFound = false;
} foreach ($parts as $key => $part) {
if ($partFound) { if (!($part instanceof \Swift_Mime_Attachment)) {
reset($parts); /* @var \Swift_Mime_MimePart $part */
$message->setChildren($parts); if ($part->getContentType() == $contentType) {
$message->addPart($body, $contentType, $charset); $charset = $part->getCharset();
} else { unset($parts[$key]);
$message->setBody($body, $contentType); $partFound = true;
} break;
} else { }
$oldContentType = $message->getContentType(); }
if ($oldContentType == $contentType) { }
$message->setBody($body, $contentType); if ($partFound) {
} else { reset($parts);
$message->setBody(null); $message->setChildren($parts);
$message->setContentType(null); $message->addPart($body, $contentType, $charset);
$message->addPart($oldBody, $oldContentType, $charset); } else {
$message->addPart($body, $contentType, $charset); $message->setBody($body, $contentType);
} }
} } else {
} $oldContentType = $message->getContentType();
if ($oldContentType == $contentType) {
/** $message->setBody($body, $contentType);
* @inheritdoc } else {
*/ $message->setBody(null);
public function attach($fileName, array $options = []) $message->setContentType(null);
{ $message->addPart($oldBody, $oldContentType, $charset);
$attachment = \Swift_Attachment::fromPath($fileName); $message->addPart($body, $contentType, $charset);
if (!empty($options['fileName'])) { }
$attachment->setFilename($options['fileName']); }
} }
if (!empty($options['contentType'])) {
$attachment->setContentType($options['contentType']); /**
} * @inheritdoc
$this->getSwiftMessage()->attach($attachment); */
return $this; public function attach($fileName, array $options = [])
} {
$attachment = \Swift_Attachment::fromPath($fileName);
/** if (!empty($options['fileName'])) {
* @inheritdoc $attachment->setFilename($options['fileName']);
*/ }
public function attachContent($content, array $options = []) if (!empty($options['contentType'])) {
{ $attachment->setContentType($options['contentType']);
$attachment = \Swift_Attachment::newInstance($content); }
if (!empty($options['fileName'])) { $this->getSwiftMessage()->attach($attachment);
$attachment->setFilename($options['fileName']);
} return $this;
if (!empty($options['contentType'])) { }
$attachment->setContentType($options['contentType']);
} /**
$this->getSwiftMessage()->attach($attachment); * @inheritdoc
return $this; */
} public function attachContent($content, array $options = [])
{
/** $attachment = \Swift_Attachment::newInstance($content);
* @inheritdoc if (!empty($options['fileName'])) {
*/ $attachment->setFilename($options['fileName']);
public function embed($fileName, array $options = []) }
{ if (!empty($options['contentType'])) {
$embedFile = \Swift_EmbeddedFile::fromPath($fileName); $attachment->setContentType($options['contentType']);
if (!empty($options['fileName'])) { }
$embedFile->setFilename($options['fileName']); $this->getSwiftMessage()->attach($attachment);
}
if (!empty($options['contentType'])) { return $this;
$embedFile->setContentType($options['contentType']); }
}
return $this->getSwiftMessage()->embed($embedFile); /**
} * @inheritdoc
*/
/** public function embed($fileName, array $options = [])
* @inheritdoc {
*/ $embedFile = \Swift_EmbeddedFile::fromPath($fileName);
public function embedContent($content, array $options = []) if (!empty($options['fileName'])) {
{ $embedFile->setFilename($options['fileName']);
$embedFile = \Swift_EmbeddedFile::newInstance($content); }
if (!empty($options['fileName'])) { if (!empty($options['contentType'])) {
$embedFile->setFilename($options['fileName']); $embedFile->setContentType($options['contentType']);
} }
if (!empty($options['contentType'])) {
$embedFile->setContentType($options['contentType']); return $this->getSwiftMessage()->embed($embedFile);
} }
return $this->getSwiftMessage()->embed($embedFile);
} /**
* @inheritdoc
/** */
* @inheritdoc public function embedContent($content, array $options = [])
*/ {
public function toString() $embedFile = \Swift_EmbeddedFile::newInstance($content);
{ if (!empty($options['fileName'])) {
return $this->getSwiftMessage()->toString(); $embedFile->setFilename($options['fileName']);
} }
if (!empty($options['contentType'])) {
/** $embedFile->setContentType($options['contentType']);
* Creates the Swift email message instance. }
* @return \Swift_Message email message instance.
*/ return $this->getSwiftMessage()->embed($embedFile);
protected function createSwiftMessage() }
{
return new \Swift_Message(); /**
} * @inheritdoc
*/
public function toString()
{
return $this->getSwiftMessage()->toString();
}
/**
* Creates the Swift email message instance.
* @return \Swift_Message email message instance.
*/
protected function createSwiftMessage()
{
return new \Swift_Message();
}
} }

Loading…
Cancel
Save