/** * @param UserEmailOrigin $origin */ protected function clearOrigin($origin) { $folders = $origin->getFolders(); $folderRepository = $this->em->getRepository('OroImapBundle:ImapEmailFolder'); foreach ($folders as $folder) { $imapFolder = $folderRepository->findOneBy(['folder' => $folder]); if ($imapFolder && !$origin->isActive()) { $this->clearFolder($imapFolder); $this->em->remove($imapFolder); $this->logger->notice(sprintf('ImapFolder with ID %s removed', $imapFolder->getId())); } elseif ($imapFolder && !$folder->isSyncEnabled()) { $this->clearFolder($imapFolder); $imapFolder->getFolder()->setSynchronizedAt(null); } } foreach ($folders as $folder) { if (!$origin->isActive()) { $this->em->remove($folder); $this->logger->notice(sprintf('Folder with ID %s removed', $folder->getId())); } } if (!$origin->isActive()) { $this->em->remove($origin); $this->logger->notice(sprintf('Origin with ID %s removed', $origin->getId())); } $this->em->flush(); }
/** * @param UserEmailOrigin $origin */ protected function clearOrigin(UserEmailOrigin $origin) { $folders = $origin->getFolders(); $folderRepository = $this->em->getRepository('OroImapBundle:ImapEmailFolder'); foreach ($folders as $folder) { $imapFolder = $folderRepository->findOneBy(['folder' => $folder]); if (!$origin->isActive()) { $this->removeFolder($imapFolder); } elseif (!$folder->isSyncEnabled()) { $this->clearFolder($imapFolder); $imapFolder->getFolder()->setSynchronizedAt(null); } } if (!$origin->isActive()) { $this->em->remove($origin); $this->em->flush(); } }
/** * Case when user submit empty form but have configuration * configuration should be not active and relation should be broken */ public function testSubmitEmptyForm() { $type = new ConfigurationType($this->encryptor, $this->securityFacade, $this->translator); $form = $this->factory->create($type); $entity = new UserEmailOrigin(); $this->assertTrue($entity->isActive()); $form->setData($entity); $form->submit(array('imapHost' => '', 'imapPort' => '', 'smtpHost' => '', 'smtpPort' => '', 'imapEncryption' => '', 'smtpEncryption' => '', 'user' => '', 'password' => '')); $this->assertNotSame($entity, $form->getData()); $this->assertNotInstanceOf('Oro\\Bundle\\ImapBundle\\Entity\\UserEmailOrigin', $form->getData()); $this->assertNull($form->getData()); }