vendor/uvdesk/mailbox-component/Controller/MailboxChannel.php line 94

Open in your IDE?
  1. <?php
  2. namespace Webkul\UVDesk\MailboxBundle\Controller;
  3. use Symfony\Component\HttpFoundation\Request;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\HttpFoundation\RedirectResponse;
  6. use Webkul\UVDesk\MailboxBundle\Utils\Mailbox\Mailbox;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Webkul\UVDesk\MailboxBundle\Utils\MailboxConfiguration;
  9. use Webkul\UVDesk\MailboxBundle\Utils\Imap\Configuration as ImapConfiguration;
  10. use Webkul\UVDesk\MailboxBundle\Services\MailboxService;
  11. use Symfony\Component\Translation\TranslatorInterface;
  12. use Webkul\UVDesk\CoreFrameworkBundle\SwiftMailer\SwiftMailer as SwiftMailerService;
  13. use Webkul\UVDesk\CoreFrameworkBundle\Services\UserService;
  14. class MailboxChannel extends AbstractController
  15. {
  16.     private $mailboxService;
  17.     private $translator;
  18.     private $swiftMailer;
  19.     private $userService;
  20.     public function __construct(UserService $userServiceMailboxService $mailboxServiceTranslatorInterface $translatorSwiftMailerService $swiftMailer)
  21.     {
  22.         $this->userService $userService;
  23.         $this->mailboxService $mailboxService;
  24.         $this->translator $translator;
  25.         $this->swiftMailer $swiftMailer;
  26.     }
  27.     public function loadMailboxes()
  28.     {
  29.         if (!$this->userService->isAccessAuthorized('ROLE_ADMIN')) {
  30.             return $this->redirect($this->generateUrl('helpdesk_member_dashboard'));
  31.         }
  32.         return $this->render('@UVDeskMailbox//listConfigurations.html.twig');
  33.     }
  34.     
  35.     public function createMailboxConfiguration(Request $request)
  36.     {
  37.         if (!$this->userService->isAccessAuthorized('ROLE_ADMIN')) {
  38.             return $this->redirect($this->generateUrl('helpdesk_member_dashboard'));
  39.         }
  40.         $swiftmailerConfigurationCollection $this->swiftMailer->parseSwiftMailerConfigurations();
  41.         if ($request->getMethod() == 'POST') {
  42.             $params $request->request->all();
  43.             // IMAP Configuration
  44.             if (!empty($params['imap']['transport'])) {
  45.                 ($imapConfiguration ImapConfiguration::createTransportDefinition($params['imap']['transport'], !empty($params['imap']['host']) ? trim($params['imap']['host'], '"') : null))
  46.                     ->setUsername($params['imap']['username'])
  47.                     ->setPassword(base64_encode($params['imap']['password']));
  48.             }
  49.             // Swiftmailer Configuration
  50.             if (!empty($params['swiftmailer_id'])) {
  51.                 foreach ($swiftmailerConfigurationCollection as $configuration) {
  52.                     if ($configuration->getId() == $params['swiftmailer_id']) {
  53.                         $swiftmailerConfiguration $configuration;
  54.                         break;
  55.                     }
  56.                 }
  57.             }
  58.             if (!empty($imapConfiguration) && !empty($swiftmailerConfiguration)) {
  59.                 $mailboxService $this->mailboxService;
  60.                 $mailboxConfiguration $mailboxService->parseMailboxConfigurations();
  61.                 ($mailbox = new Mailbox(!empty($params['id']) ? $params['id'] : null))
  62.                     ->setName($params['name'])
  63.                     ->setIsEnabled(!empty($params['isEnabled']) && 'on' == $params['isEnabled'] ? true false)
  64.                     ->setIsDeleted(!empty($params['isDeleted']) && 'on' == $params['isDeleted'] ? true false)
  65.                     ->setImapConfiguration($imapConfiguration)
  66.                     ->setSwiftMailerConfiguration($swiftmailerConfiguration);
  67.                 $mailboxConfiguration->addMailbox($mailbox);
  68.                 file_put_contents($mailboxService->getPathToConfigurationFile(), (string) $mailboxConfiguration);
  69.                 $this->addFlash('success'$this->translator->trans('Mailbox successfully created.'));
  70.                 return new RedirectResponse($this->generateUrl('helpdesk_member_mailbox_settings'));
  71.             }
  72.         }
  73.         return $this->render('@UVDeskMailbox//manageConfigurations.html.twig', [
  74.             'swiftmailerConfigurations' => $swiftmailerConfigurationCollection,
  75.         ]);
  76.     }
  77.     public function updateMailboxConfiguration($idRequest $request)
  78.     {
  79.         if (!$this->userService->isAccessAuthorized('ROLE_ADMIN')) {
  80.             return $this->redirect($this->generateUrl('helpdesk_member_dashboard'));
  81.         }
  82.         
  83.         $mailboxService $this->mailboxService;
  84.         $existingMailboxConfiguration $mailboxService->parseMailboxConfigurations();
  85.         $swiftmailerConfigurationCollection $this->swiftMailer->parseSwiftMailerConfigurations();
  86.         foreach ($existingMailboxConfiguration->getMailboxes() as $configuration) {
  87.             if ($configuration->getId() == $id) {
  88.                 $mailbox $configuration;
  89.                 break;
  90.             }
  91.         }
  92.         if (empty($mailbox)) {
  93.             return new Response(''404);
  94.         }
  95.         if ($request->getMethod() == 'POST') {
  96.             $params $request->request->all();
  97.             // IMAP Configuration
  98.             if (!empty($params['imap']['transport'])) {
  99.                 ($imapConfiguration ImapConfiguration::createTransportDefinition($params['imap']['transport'], !empty($params['imap']['host']) ? trim($params['imap']['host'], '"') : null))
  100.                     ->setUsername($params['imap']['username'])
  101.                     ->setPassword(base64_encode($params['imap']['password']));
  102.             }
  103.             // Swiftmailer Configuration
  104.             if (!empty($params['swiftmailer_id'])) {
  105.                 foreach ($swiftmailerConfigurationCollection as $configuration) {
  106.                     if ($configuration->getId() == $params['swiftmailer_id']) {
  107.                         $swiftmailerConfiguration $configuration;
  108.                         break;
  109.                     }
  110.                 }
  111.             }
  112.             if (!empty($imapConfiguration) && !empty($swiftmailerConfiguration)) {
  113.                 $mailboxConfiguration = new MailboxConfiguration();
  114.                 
  115.                 foreach ($existingMailboxConfiguration->getMailboxes() as $configuration) {
  116.                     if ($mailbox->getId() == $configuration->getId()) {
  117.                         if (empty($params['id'])) {
  118.                             $mailbox = new Mailbox();
  119.                         } else if ($mailbox->getId() != $params['id']) {
  120.                             $mailbox = new Mailbox($params['id']);
  121.                         }
  122.                         $mailbox
  123.                             ->setName($params['name'])
  124.                             ->setIsEnabled(!empty($params['isEnabled']) && 'on' == $params['isEnabled'] ? true false)
  125.                             ->setIsDeleted(!empty($params['isDeleted']) && 'on' == $params['isDeleted'] ? true false)
  126.                             ->setImapConfiguration($imapConfiguration)
  127.                             ->setSwiftMailerConfiguration($swiftmailerConfiguration);
  128.                         $mailboxConfiguration->addMailbox($mailbox);
  129.                         continue;
  130.                     }
  131.                     $mailboxConfiguration->addMailbox($configuration);
  132.                 }
  133.                 file_put_contents($mailboxService->getPathToConfigurationFile(), (string) $mailboxConfiguration);
  134.                 $this->addFlash('success'$this->translator->trans('Mailbox successfully updated.'));
  135.                 
  136.                 return new RedirectResponse($this->generateUrl('helpdesk_member_mailbox_settings'));
  137.             }
  138.         }
  139.         return $this->render('@UVDeskMailbox//manageConfigurations.html.twig', [
  140.             'mailbox' => $mailbox ?? null,
  141.             'swiftmailerConfigurations' => $swiftmailerConfigurationCollection,
  142.         ]);
  143.     }
  144. }