示例#1
0
 /**
  * Adds recipient emails as recipients to the email message.  If the recipient email already matches
  * an person or account on the email message it will ignore it.
  * @param Array $recipients
  * @param EmailMessage $emailMessage
  * @param integer $type
  */
 public static function attachRecipientsToMessage(array $recipients, EmailMessage $emailMessage, $type)
 {
     assert('is_int($type)');
     $existingPersonsOrAccounts = array();
     if ($emailMessage->recipients->count() > 0) {
         foreach ($emailMessage->recipients as $recipient) {
             if ($recipient->personOrAccount != null && $recipient->personOrAccount->id > 0) {
                 $existingPersonsOrAccounts[] = $recipient->personOrAccount->getClassId('Item');
             }
         }
     }
     foreach ($recipients as $recipient) {
         if ($recipient != null) {
             $personsOrAccounts = EmailArchivingUtil::getPersonsAndAccountsByEmailAddressForUser($recipient, Yii::app()->user->userModel);
             if (empty($personsOrAccounts)) {
                 $personsOrAccounts[] = null;
             }
             foreach ($personsOrAccounts as $personOrAccount) {
                 if ($personOrAccount == null || !in_array($personOrAccount->getClassId('Item'), $existingPersonsOrAccounts)) {
                     $messageRecipient = new EmailMessageRecipient();
                     $messageRecipient->toAddress = $recipient;
                     $messageRecipient->type = $type;
                     if ($personOrAccount != null) {
                         $messageRecipient->toName = strval($personOrAccount);
                         $messageRecipient->personOrAccount = $personOrAccount;
                         $existingPersonsOrAccounts[] = $personOrAccount->getClassId('Item');
                     }
                     $emailMessage->recipients->add($messageRecipient);
                 }
             }
         }
     }
 }
 /**
  * @depends testGetPersonsAndAccountsByEmailAddress
  */
 public function testGetPersonsAndAccountsByEmailAddressForUser()
 {
     $user = User::getByUsername('newUser');
     $emailAddress = '*****@*****.**';
     $personsOrAccounts = EmailArchivingUtil::getPersonsAndAccountsByEmailAddressForUser($emailAddress, $user);
     $this->assertEmpty($personsOrAccounts);
     $emailAddress = '*****@*****.**';
     $personsOrAccounts = EmailArchivingUtil::getPersonsAndAccountsByEmailAddressForUser($emailAddress, $user);
     $this->assertEmpty($personsOrAccounts);
     $emailAddress = '*****@*****.**';
     $personsOrAccounts = EmailArchivingUtil::getPersonsAndAccountsByEmailAddressForUser($emailAddress, $user);
     $this->assertEmpty($personsOrAccounts);
     $emailAddress = '*****@*****.**';
     $personsOrAccounts = EmailArchivingUtil::getPersonsAndAccountsByEmailAddressForUser($emailAddress, $user);
     $this->assertEquals(1, count($personsOrAccounts));
     $this->assertTrue($personsOrAccounts[0] instanceof User);
 }