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); } } } }
/** * @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); }
/** * @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); }