From 3d1a625cbb60f1513b8d592243a0b76055aac210 Mon Sep 17 00:00:00 2001 From: Paul Klimov Date: Wed, 6 Nov 2013 12:48:44 +0200 Subject: [PATCH] 'yii\mail\MessageInterface' updated: - 'body()' renamed to 'renderBody()' - new 'body()' method introduced --- framework/yii/mail/BaseMailer.php | 6 ++++-- framework/yii/mail/BaseMessage.php | 20 +++++++++++++++++--- framework/yii/mail/MessageInterface.php | 12 +++++++++++- tests/unit/framework/mail/BaseMessageTest.php | 4 ++-- 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/framework/yii/mail/BaseMailer.php b/framework/yii/mail/BaseMailer.php index b129167..6e49afd 100644 --- a/framework/yii/mail/BaseMailer.php +++ b/framework/yii/mail/BaseMailer.php @@ -54,9 +54,10 @@ abstract class BaseMailer extends Component implements MailerInterface, ViewCont * - 'subject' argument for [[MessageInterface::subject()]] * - 'text' argument for [[MessageInterface::text()]] * - 'html' argument for [[MessageInterface::html()]] + * - 'body' argument for [[MessageInterface::body()]] * - 'renderText' list of arguments for [[MessageInterface::renderText()]] * - 'renderHtml' list of arguments for [[MessageInterface::renderHtml()]] - * - 'body' list of arguments for [[MessageInterface::body()]] + * - 'renderBody' list of arguments for [[MessageInterface::renderBody()]] * For example: * ~~~ * array( @@ -132,11 +133,12 @@ abstract class BaseMailer extends Component implements MailerInterface, ViewCont 'subject', 'text', 'html', + 'body', ]; $setupMethodNames = [ 'renderText', 'renderHtml', - 'body', + 'renderBody', ]; $directSetterConfig = []; $setupMethodConfig = []; diff --git a/framework/yii/mail/BaseMessage.php b/framework/yii/mail/BaseMessage.php index e5406de..ff6a724 100644 --- a/framework/yii/mail/BaseMessage.php +++ b/framework/yii/mail/BaseMessage.php @@ -46,6 +46,21 @@ abstract class BaseMessage extends Object implements MessageInterface /** * @inheritdoc */ + public function body($body) + { + if (is_array($body)) { + $this->html($body['html']); + $this->text($body['text']); + } else { + $this->html($body); + $this->text(strip_tags($body)); + } + return $this; + } + + /** + * @inheritdoc + */ public function renderHtml($view, $params = []) { $this->html($this->getMailer()->render($view, $params, $this->getMailer()->htmlLayout)); @@ -64,15 +79,14 @@ abstract class BaseMessage extends Object implements MessageInterface /** * @inheritdoc */ - public function body($view, $params = []) + public function renderBody($view, $params = []) { if (is_array($view)) { $this->renderHtml($view['html'], $params); $this->renderText($view['text'], $params); } else { $html = $this->getMailer()->render($view, $params, $this->getMailer()->htmlLayout); - $this->html($html); - $this->text(strip_tags($html)); + $this->body($html); } return $this; } diff --git a/framework/yii/mail/MessageInterface.php b/framework/yii/mail/MessageInterface.php index df5097c..6bfd421 100644 --- a/framework/yii/mail/MessageInterface.php +++ b/framework/yii/mail/MessageInterface.php @@ -97,6 +97,16 @@ interface MessageInterface public function html($html); /** + * Sets message HTML and plain text content. + * @param string|array $body varies method behavior depending on type: + * - string - the HTML body content, in this case text body will be composed from + * html one using [[strip_tags()]] function. + * - array - list of body contents for each body type in format: ['html' => 'htmlContent', 'text' => 'textContent'] + * @return static self reference. + */ + public function body($body); + + /** * Attaches existing file to the email message. * @param string $fileName full file name * @param array $options options for embed file. Valid options are: @@ -175,7 +185,7 @@ interface MessageInterface * @param array $params the parameters (name-value pairs) that will be extracted and made available in the view file. * @return static self reference. */ - public function body($view, $params = []); + public function renderBody($view, $params = []); /** * Returns string representation of this message. diff --git a/tests/unit/framework/mail/BaseMessageTest.php b/tests/unit/framework/mail/BaseMessageTest.php index 80699ed..44a6388 100644 --- a/tests/unit/framework/mail/BaseMessageTest.php +++ b/tests/unit/framework/mail/BaseMessageTest.php @@ -65,7 +65,7 @@ class BaseMessageTest extends TestCase $message = $mailer->compose(); $viewName = 'test/html/view'; - $message->body($viewName); + $message->renderBody($viewName); $expectedHtml = 'view=' . $viewName . ' layout=' . $mailer->htmlLayout; $this->assertEquals($expectedHtml, $message->html, 'Unable to compose html!'); $expectedText = strip_tags($expectedHtml); @@ -73,7 +73,7 @@ class BaseMessageTest extends TestCase $textViewName = 'test/text/view'; $htmlViewName = 'test/html/view'; - $message->body(['text' => $textViewName, 'html' => $htmlViewName]); + $message->renderBody(['text' => $textViewName, 'html' => $htmlViewName]); $expectedHtml = 'view=' . $htmlViewName . ' layout=' . $mailer->htmlLayout; $this->assertEquals($expectedHtml, $message->html, 'Unable to compose html from separated view!'); $expectedText = 'view=' . $textViewName . ' layout=' . $mailer->textLayout;