From 3d1a625cbb60f1513b8d592243a0b76055aac210 Mon Sep 17 00:00:00 2001
From: Paul Klimov <klimov.paul@gmail.com>
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;
--
libgit2 0.27.1