/**
  * Performs a synchronization of emails for the given email origin.
  *
  * @param EmailOrigin $origin
  * @throws \Exception
  */
 protected function doSyncOrigin(EmailOrigin $origin)
 {
     $this->impersonateOrganization($origin->getOrganization());
     $processor = $this->createSynchronizationProcessor($origin);
     if ($processor instanceof LoggerAwareInterface) {
         $processor->setLogger($this->logger);
     }
     try {
         if ($this->changeOriginSyncState($origin, self::SYNC_CODE_IN_PROCESS)) {
             $syncStartTime = $this->getCurrentUtcDateTime();
             $processor->process($origin, $syncStartTime);
             $this->changeOriginSyncState($origin, self::SYNC_CODE_SUCCESS, $syncStartTime);
         } else {
             $this->logger->notice('Skip because it is already in process.');
         }
     } catch (SyncFolderTimeoutException $ex) {
         $this->logger->notice($ex->getMessage());
         $this->changeOriginSyncState($origin, self::SYNC_CODE_SUCCESS);
         throw $ex;
     } catch (\Exception $ex) {
         try {
             $this->changeOriginSyncState($origin, self::SYNC_CODE_FAILURE);
         } catch (\Exception $innerEx) {
             // ignore any exception here
             $this->logger->error(sprintf('Cannot set the fail state. Error: %s.', $innerEx->getMessage()), ['exception' => $innerEx]);
         }
         $this->logger->error(sprintf('The synchronization failed. Error: %s.', $ex->getMessage()), ['exception' => $ex]);
         throw $ex;
     }
 }
 /**
  * @param EmailOrigin $emailOrigin
  */
 protected function initEnv(EmailOrigin $emailOrigin)
 {
     $this->currentUser = $this->em->getReference('Oro\\Bundle\\UserBundle\\Entity\\User', $emailOrigin->getOwner()->getId());
     $this->currentOrganization = $this->em->getReference('Oro\\Bundle\\OrganizationBundle\\Entity\\Organization', $emailOrigin->getOrganization()->getId());
 }
예제 #3
0
 /**
  * @param EmailModel  $model
  * @param \DateTime   $messageDate
  * @param EmailOrigin $origin
  *
  * @return EmailUser
  */
 protected function createEmailUser(EmailModel $model, $messageDate, EmailOrigin $origin)
 {
     $emailUser = $this->emailEntityBuilder->emailUser($model->getSubject(), $model->getFrom(), $model->getTo(), $messageDate, $messageDate, $messageDate, Email::NORMAL_IMPORTANCE, $model->getCc(), $model->getBcc(), $origin->getOwner(), $origin->getOrganization());
     if ($origin instanceof UserEmailOrigin && $origin->getMailbox() !== null) {
         $emailUser->setOwner(null);
         $emailUser->setMailboxOwner($origin->getMailbox());
     }
     return $emailUser;
 }