public function testGetActivityOwners()
 {
     $organization = new Organization();
     $organization->setName('Org');
     $user = new User();
     $user->setUsername('test');
     $emailUser = new EmailUser();
     $emailUser->setOrganization($organization);
     $emailUser->setOwner($user);
     $owners = [$emailUser];
     $emailMock = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Entity\\EmailUser')->setMethods(['getFromEmailAddress', 'hasOwner', 'getOwner', 'getOrganization', 'getActivityTargetEntities'])->disableOriginalConstructor()->getMock();
     $emailMock->expects($this->once())->method('getFromEmailAddress')->willReturn($emailMock);
     $emailMock->expects($this->once())->method('getOwner')->willReturn($emailMock);
     $emailMock->expects($this->exactly(2))->method('getOrganization')->willReturn($organization);
     $emailMock->expects($this->exactly(1))->method('getActivityTargetEntities')->willReturn([]);
     $activityListMock = $this->getMockBuilder('Oro\\Bundle\\ActivityListBundle\\Entity\\ActivityList')->disableOriginalConstructor()->getMock();
     $em = $this->getMockBuilder('Doctrine\\ORM\\EntityManager')->disableOriginalConstructor()->getMock();
     $repository = $this->getMockBuilder('Doctrine\\ORM\\EntityRepository')->disableOriginalConstructor()->getMock();
     $this->doctrineRegistryLink->expects($this->once())->method('getService')->willReturn($em);
     $em->expects($this->once())->method('getRepository')->willReturn($repository);
     $repository->expects($this->once())->method('findBy')->willReturn($owners);
     $activityOwnerArray = $this->emailActivityListProvider->getActivityOwners($emailMock, $activityListMock);
     $this->assertCount(1, $activityOwnerArray);
     $owner = $activityOwnerArray[0];
     $this->assertEquals($organization->getName(), $owner->getOrganization()->getName());
     $this->assertEquals($user->getUsername(), $owner->getUser()->getUsername());
 }
 /**
  * @param EmailBodyAdded $event
  */
 public function linkToScope(EmailBodyAdded $event)
 {
     if ($this->securityFacade->getToken() !== null && !$this->securityFacade->isGranted('CREATE', 'entity:' . AttachmentScope::ATTACHMENT)) {
         return;
     }
     $email = $event->getEmail();
     $entities = $this->activityListProvider->getTargetEntities($email);
     foreach ($entities as $entity) {
         if ((bool) $this->configProvider->getConfig(ClassUtils::getClass($entity))->get('auto_link_attachments')) {
             foreach ($email->getEmailBody()->getAttachments() as $attachment) {
                 $this->attachmentManager->linkEmailAttachmentToTargetEntity($attachment, $entity);
             }
         }
     }
 }
示例#3
0
 /**
  * @param EmailEntity $parentEmailEntity
  *
  * @return EmailModel
  */
 public function createReplyAllEmailModel(EmailEntity $parentEmailEntity)
 {
     $emailModel = $this->factory->getEmail();
     $emailModel->setMailType(EmailModel::MAIL_TYPE_REPLY);
     $emailModel->setParentEmailId($parentEmailEntity->getId());
     $fromAddress = $parentEmailEntity->getFromEmailAddress();
     if ($fromAddress->getOwner() === $this->helper->getUser()) {
         $toList = [];
         foreach ($parentEmailEntity->getTo() as $toRecipient) {
             $toEmail = $toRecipient->getEmailAddress()->getEmail();
             $this->helper->preciseFullEmailAddress($toEmail);
             $toList[] = $toEmail;
         }
         $ccList = [];
         foreach ($parentEmailEntity->getCc() as $ccRecipient) {
             $toEmail = $ccRecipient->getEmailAddress()->getEmail();
             $this->helper->preciseFullEmailAddress($toEmail);
             $ccList[] = $toEmail;
         }
         $emailModel->setTo($toList);
         $emailModel->setCc($ccList);
         $emailModel->setFrom($fromAddress->getEmail());
     } else {
         $toEmail = $fromAddress->getEmail();
         $this->helper->preciseFullEmailAddress($toEmail);
         $emailModel->setTo([$toEmail]);
         $this->initReplyAllFrom($emailModel, $parentEmailEntity);
     }
     $emailModel->setSubject($this->helper->prependWith('Re: ', $parentEmailEntity->getSubject()));
     $body = $this->helper->getEmailBody($parentEmailEntity, 'OroEmailBundle:Email/Reply:parentBody.html.twig');
     $emailModel->setBodyFooter($body);
     $emailModel->setContexts($this->activityListProvider->getTargetEntities($parentEmailEntity));
     return $this->createEmailModel($emailModel);
 }
 /**
  * @dataProvider getTestData
  */
 public function testLinkToScope($config, $managerCalls, $attachmentCalls)
 {
     $attachments = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Entity\\EmailAttachment')->disableOriginalConstructor()->getMock();
     $emailBody = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Entity\\EmailBody')->disableOriginalConstructor()->getMock();
     $email = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Entity\\Email')->disableOriginalConstructor()->getMock();
     $event = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Event\\EmailBodyAdded')->disableOriginalConstructor()->getMock();
     $configInterface = $this->getMockBuilder('Oro\\Bundle\\EntityConfigBundle\\Config\\ConfigInterface')->disableOriginalConstructor()->getMock();
     $this->securityFacade->expects($this->once())->method('getToken')->willReturn(1);
     $this->securityFacade->expects($this->once())->method('isGranted')->willReturn(true);
     $this->activityListProvider->expects($this->once())->method('getTargetEntities')->willReturn([new SomeEntity()]);
     $configInterface->expects($this->once())->method('get')->will($this->returnValue($config));
     $this->configProvider->expects($this->once())->method('getConfig')->will($this->returnValue($configInterface));
     $this->emailAttachmentManager->expects($this->exactly($managerCalls))->method('linkEmailAttachmentToTargetEntity');
     $emailBody->expects($this->exactly($attachmentCalls))->method('getAttachments')->will($this->returnValue([$attachments]));
     $email->expects($this->exactly($attachmentCalls))->method('getEmailBody')->will($this->returnValue($emailBody));
     $event->expects($this->exactly(1))->method('getEmail')->will($this->returnValue($email));
     $this->listener->linkToScope($event);
 }
示例#5
0
 /**
  * @param EmailEntity $parentEmailEntity
  *
  * @return EmailModel
  */
 public function createReplyEmailModel(EmailEntity $parentEmailEntity)
 {
     $emailModel = $this->factory->getEmail();
     $emailModel->setMailType(EmailModel::MAIL_TYPE_REPLY);
     $emailModel->setParentEmailId($parentEmailEntity->getId());
     $fromAddress = $parentEmailEntity->getFromEmailAddress();
     if ($fromAddress->getOwner() == $this->helper->getUser()) {
         $emailModel->setTo([$parentEmailEntity->getTo()->first()->getEmailAddress()->getEmail()]);
         $emailModel->setFrom($fromAddress->getEmail());
     } else {
         $emailModel->setTo([$fromAddress->getEmail()]);
         $this->initReplyFrom($emailModel, $parentEmailEntity);
     }
     $emailModel->setSubject($this->helper->prependWith('Re: ', $parentEmailEntity->getSubject()));
     $body = $this->helper->getEmailBody($parentEmailEntity, 'OroEmailBundle:Email/Reply:parentBody.html.twig');
     $emailModel->setBodyFooter($body);
     $emailModel->setContexts($this->activityListProvider->getTargetEntities($parentEmailEntity));
     return $this->createEmailModel($emailModel);
 }