/** * @Route("/connection/check", name="oro_imap_connection_check", methods={"POST"}) */ public function checkAction(Request $request) { $responseCode = Codes::HTTP_BAD_REQUEST; $data = null; $id = $request->get('id', false); if (false !== $id) { $data = $this->getDoctrine()->getRepository('OroImapBundle:UserEmailOrigin')->find($id); } $form = $this->createForm('oro_imap_configuration', null, ['csrf_protection' => false]); $form->setData($data); $form->submit($request); /** @var UserEmailOrigin $origin */ $origin = $form->getData(); if ($form->isValid() && null !== $origin) { $response = []; $password = $this->get('oro_security.encoder.mcrypt')->decryptData($origin->getPassword()); if ($origin->getImapHost() !== null) { $response['imap'] = []; $config = new ImapConfig($origin->getImapHost(), $origin->getImapPort(), $origin->getImapEncryption(), $origin->getUser(), $password); try { $connector = $this->get('oro_imap.connector.factory')->createImapConnector($config); $this->manager = new ImapEmailFolderManager($connector, $this->getDoctrine()->getManager(), $origin); $emailFolders = $this->manager->getFolders(); $origin->setFolders($emailFolders); $entity = $request->get('for_entity', 'user'); $organizationId = $request->get('organization'); $organization = $this->getOrganization($organizationId); if ($entity === 'user') { $user = new User(); $user->setImapConfiguration($origin); $user->setOrganization($organization); $userForm = $this->get('oro_user.form.user'); $userForm->setData($user); $response['imap']['folders'] = $this->renderView('OroImapBundle:Connection:check.html.twig', ['form' => $userForm->createView()]); } elseif ($entity === 'mailbox') { $mailbox = new Mailbox(); $mailbox->setOrigin($origin); if ($organization) { $mailbox->setOrganization($organization); } $mailboxForm = $this->createForm('oro_email_mailbox'); $mailboxForm->setData($mailbox); $response['imap']['folders'] = $this->renderView('OroImapBundle:Connection:checkMailbox.html.twig', ['form' => $mailboxForm->createView()]); } } catch (\Exception $e) { $response['imap']['error'] = $e->getMessage(); } } if ($origin->getSmtpHost() !== null) { $response['smtp'] = []; try { /** @var DirectMailer $mailer */ $mailer = $this->get('oro_email.direct_mailer'); // Prepare Smtp Transport $mailer->prepareSmtpTransport($origin); $transport = $mailer->getTransport(); $transport->start(); } catch (\Exception $e) { $response['smtp']['error'] = $e->getMessage(); } } return new JsonResponse($response); } return new Response('', $responseCode); }
/** * @Route( * "/mailbox/create/{organization_id}", * name="oro_email_mailbox_create", * defaults={"organization_id"=null} * ) * @ParamConverter( * "organization", * class="OroOrganizationBundle:Organization", * isOptional=true, * options={"id"="organization_id"} * ) * @Template("OroEmailBundle:Configuration/Mailbox:update.html.twig") * * @param Request $request * @param Organization $organization * * @return array */ public function createAction(Request $request, Organization $organization = null) { $data = new Mailbox(); if ($organization != null) { $data->setOrganization($organization); } else { $data->setOrganization($this->get('oro_security.security_facade')->getOrganization()); } return $this->update($data, $request); }