Ejemplo n.º 1
0
 /**
  * @param Email $entity
  * @param $target
  */
 public function deleteContextFromEmailThread(Email $entity, $target)
 {
     $relatedEmails = $this->emailThreadProvider->getThreadEmails($this->em, $entity);
     foreach ($relatedEmails as $relatedEmail) {
         $relatedEmail->removeActivityTarget($target);
     }
     $this->em->persist($entity);
     $this->em->flush();
 }
 /**
  * @param Email $emailEntity
  *
  * @return array
  */
 public function getThreadAttachments(Email $emailEntity)
 {
     $attachments = [];
     $threadEmails = $this->emailThreadProvider->getThreadEmails($this->em, $emailEntity);
     /** @var Email $threadEmail */
     foreach ($threadEmails as $threadEmail) {
         if ($threadEmail->getEmailBody()->getHasAttachments()) {
             $emailAttachments = $threadEmail->getEmailBody()->getAttachments();
             foreach ($emailAttachments as $emailAttachment) {
                 $attachments[] = $this->emailAttachmentTransformer->entityToModel($emailAttachment);
             }
         }
     }
     return $attachments;
 }
Ejemplo n.º 3
0
 public function testGetThreadEmailWithThread()
 {
     $thread = $this->getMock('Oro\\Bundle\\EmailBundle\\Entity\\EmailThread');
     $email = $this->getMock('Oro\\Bundle\\EmailBundle\\Entity\\Email');
     $email->expects($this->exactly(1))->method('getThread')->will($this->returnValue($thread));
     $entityManager = $this->getMockBuilder('Doctrine\\ORM\\EntityManager')->disableOriginalConstructor()->getMock();
     $repository = $this->getMockBuilder('Doctrine\\ORM\\EntityRepository')->disableOriginalConstructor()->getMock();
     $queryBuilder = $this->getMockBuilder('Doctrine\\ORM\\QueryBuilder')->disableOriginalConstructor()->getMock();
     $query = $this->getMockBuilder('Doctrine\\ORM\\AbstractQuery')->disableOriginalConstructor()->setMethods(['getResult'])->getMockForAbstractClass();
     $query->expects($this->exactly(1))->method('getResult')->will($this->returnValue([new \stdClass(), new \stdClass()]));
     $queryBuilder->expects($this->exactly(1))->method('getQuery')->will($this->returnValue($query));
     $repository->expects($this->exactly(1))->method('createQueryBuilder')->with('e')->willReturn($queryBuilder);
     $entityManager->expects($this->exactly(1))->method('getRepository')->with('OroEmailBundle:Email')->will($this->returnValue($repository));
     $this->assertCount(2, $this->provider->getThreadEmails($entityManager, $email));
 }
Ejemplo n.º 4
0
 /**
  * @param Email[] $updatedEmails
  */
 public function updateHeads(array $updatedEmails)
 {
     foreach ($updatedEmails as $entity) {
         if (!$entity->getThread() || !$entity->getId()) {
             continue;
         }
         $threadEmails = $this->emailThreadProvider->getThreadEmails($this->em, $entity);
         if (count($threadEmails) === 0) {
             continue;
         }
         /** @var Email $email */
         foreach ($threadEmails as $email) {
             $email->setHead(false);
             $this->em->persist($email);
         }
         $email = $threadEmails[0];
         $email->setHead(true);
         $this->em->persist($email);
     }
 }
Ejemplo n.º 5
0
 /**
  * Set heads of queued emails
  *
  * @param EntityManager $entityManager
  */
 protected function processEmailsHeadSet(EntityManager $entityManager)
 {
     foreach ($this->getQueueHeadUpdate() as $entity) {
         if ($entity->getThread() && $entity->getId()) {
             $threadEmails = $this->emailThreadProvider->getThreadEmails($entityManager, $entity);
             if (count($threadEmails) > 0) {
                 /** @var Email $email */
                 foreach ($threadEmails as $email) {
                     $email->setHead(false);
                     $entityManager->persist($email);
                 }
                 $email = $threadEmails[0];
                 $email->setHead(true);
                 $entityManager->persist($email);
             }
         }
     }
 }