Ejemplo n.º 1
0
 /**
  * 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;
 }
Ejemplo n.º 2
0
 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);
 }