/** * Given post data and an email message, populate the sender and account on the email message if possible. * Also add message recipients and any attachments. * @param array $postData * @param EmailMessage $emailMessage * @param User $userToSendMessagesFrom * @return boolean */ public static function resolveEmailMessageFromPostData(array &$postData, CreateEmailMessageForm $emailMessageForm, User $userToSendMessagesFrom) { $postVariableName = get_class($emailMessageForm); Yii::app()->emailHelper->loadOutboundSettingsFromUserEmailAccount($userToSendMessagesFrom); $toRecipients = explode(",", $postData[$postVariableName]['recipientsData']['to']); // Not Coding Standard static::attachRecipientsToMessage($toRecipients, $emailMessageForm->getModel(), EmailMessageRecipient::TYPE_TO); if (ArrayUtil::getArrayValue($postData[$postVariableName]['recipientsData'], 'cc') != null) { $ccRecipients = explode(",", $postData[$postVariableName]['recipientsData']['cc']); // Not Coding Standard static::attachRecipientsToMessage($ccRecipients, $emailMessageForm->getModel(), EmailMessageRecipient::TYPE_CC); } if (ArrayUtil::getArrayValue($postData[$postVariableName]['recipientsData'], 'bcc') != null) { $bccRecipients = explode(",", $postData[$postVariableName]['recipientsData']['bcc']); // Not Coding Standard static::attachRecipientsToMessage($bccRecipients, $emailMessageForm->getModel(), EmailMessageRecipient::TYPE_BCC); } if (isset($postData['filesIds'])) { static::attachFilesToMessage($postData['filesIds'], $emailMessageForm->getModel()); } $emailAccount = EmailAccount::getByUserAndName($userToSendMessagesFrom); $sender = new EmailMessageSender(); $sender->fromName = Yii::app()->emailHelper->fromName; $sender->fromAddress = Yii::app()->emailHelper->fromAddress; $sender->personOrAccount = $userToSendMessagesFrom; $emailMessageForm->sender = $sender; $emailMessageForm->account = $emailAccount; $emailMessageForm->content->textContent = EmailMessageUtil::resolveTextContent(ArrayUtil::getArrayValue($postData[$postVariableName]['content'], 'htmlContent'), null); $box = EmailBox::resolveAndGetByName(EmailBox::NOTIFICATIONS_NAME); $emailMessageForm->folder = EmailFolder::getByBoxAndType($box, EmailFolder::TYPE_OUTBOX); return $emailMessageForm; }
public function testResolveTextContent() { Yii::app()->user->userModel = User::getByUsername('super'); $htmlContent = "<br>A test message."; $textContent = ''; $textContent = EmailMessageUtil::resolveTextContent($htmlContent, $textContent); $this->assertEquals("\nA test message.", $textContent); $htmlContent = "<p>A new test message.</p>"; $textContent = EmailMessageUtil::resolveTextContent($htmlContent, $textContent); $this->assertEquals("\nA test message.", $textContent); $htmlContent = "<p>A test message.</p>"; $textContent = ''; $textContent = EmailMessageUtil::resolveTextContent($htmlContent, $textContent); $this->assertEquals("\n\nA test message.", $textContent); $htmlContent = "<u>A test</u> <b>message</b>."; $textContent = ''; $textContent = EmailMessageUtil::resolveTextContent($htmlContent, $textContent); $this->assertEquals("A test message.", $textContent); $htmlContent = "<u><p>A test</p></u> <b>message</b>."; $textContent = ''; $textContent = EmailMessageUtil::resolveTextContent($htmlContent, $textContent); $this->assertEquals("\n\nA test message.", $textContent); $htmlContent = "<br /><p>A test</p> <p>message</p>."; $textContent = ''; $textContent = EmailMessageUtil::resolveTextContent($htmlContent, $textContent); $this->assertEquals("\n\n\nA test \n\nmessage.", $textContent); }