vendor/uvdesk/core-framework/Controller/SwiftMailer.php line 38

Open in your IDE?
  1. <?php
  2. namespace Webkul\UVDesk\CoreFrameworkBundle\Controller;
  3. use Symfony\Component\HttpFoundation\Request;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\HttpFoundation\RedirectResponse;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\Security\Core\Exception\AccessDeniedException;
  8. use Webkul\UVDesk\CoreFrameworkBundle\SwiftMailer\Event\ConfigurationUpdatedEvent;
  9. use Webkul\UVDesk\CoreFrameworkBundle\Services\UserService;
  10. use Symfony\Contracts\Translation\TranslatorInterface;
  11. use Webkul\UVDesk\CoreFrameworkBundle\SwiftMailer\SwiftMailer as SwiftMailerService;
  12. use Symfony\Component\DependencyInjection\ContainerInterface;
  13. class SwiftMailer extends AbstractController
  14. {
  15. private $userService;
  16. private $translator;
  17. private $swiftMailer;
  18. public function __construct(UserService $userService, TranslatorInterface $translator,SwiftMailerService $swiftMailer)
  19. {
  20. $this->userService = $userService;
  21. $this->translator = $translator;
  22. $this->swiftMailer = $swiftMailer;
  23. }
  24. public function loadMailers()
  25. {
  26. if (!$this->userService->isAccessAuthorized('ROLE_ADMIN')) {
  27. throw new AccessDeniedException("Insufficient account privileges");
  28. }
  29. return $this->render('@UVDeskCoreFramework//SwiftMailer//listConfigurations.html.twig');
  30. }
  31. public function createMailerConfiguration(Request $request)
  32. {
  33. if ($request->getMethod() == 'POST') {
  34. $params = $request->request->all();
  35. $params['password'] = base64_encode($params['password']);
  36. $swiftmailer = $this->swiftMailer;
  37. $swiftmailerConfiguration = $swiftmailer->createConfiguration($params['transport'], $params['id']);
  38. if (!empty($swiftmailerConfiguration)) {
  39. $swiftmailerConfiguration->initializeParams($params);
  40. $configurations = $swiftmailer->parseSwiftMailerConfigurations();
  41. $configurations[] = $swiftmailerConfiguration;
  42. try {
  43. $swiftmailer->writeSwiftMailerConfigurations($configurations);
  44. $this->addFlash('success', $this->translator->trans('SwiftMailer configuration created successfully.'));
  45. return new RedirectResponse($this->generateUrl('helpdesk_member_swiftmailer_settings'));
  46. } catch (\Exception $e) {
  47. $this->addFlash('warning', $e->getMessage());
  48. }
  49. }
  50. }
  51. return $this->render('@UVDeskCoreFramework//SwiftMailer//manageConfigurations.html.twig');
  52. }
  53. public function updateMailerConfiguration($id, Request $request, ContainerInterface $container)
  54. {
  55. $swiftmailerService = $this->swiftMailer;;
  56. $swiftmailerConfigurations = $swiftmailerService->parseSwiftMailerConfigurations();
  57. foreach ($swiftmailerConfigurations as $index => $configuration) {
  58. if ($configuration->getId() == $id) {
  59. $swiftmailerConfiguration = $configuration;
  60. break;
  61. }
  62. }
  63. if (empty($swiftmailerConfiguration)) {
  64. return new Response('', 404);
  65. }
  66. if ($request->getMethod() == 'POST') {
  67. $params = $request->request->all();
  68. $params['password'] = base64_encode($params['password']);
  69. $existingSwiftmailerConfiguration = clone $swiftmailerConfiguration;
  70. $swiftmailerConfiguration = $swiftmailerService->createConfiguration($params['transport'], $params['id']);
  71. $swiftmailerConfiguration->initializeParams($params);
  72. // Dispatch swiftmailer configuration updated event
  73. $event = new ConfigurationUpdatedEvent($swiftmailerConfiguration, $existingSwiftmailerConfiguration);
  74. $container->get('uvdesk.core.event_dispatcher')->dispatch($event, ConfigurationUpdatedEvent::NAME);
  75. // Updated swiftmailer configuration file
  76. $swiftmailerConfigurations[$index] = $swiftmailerConfiguration;
  77. $swiftmailerService->writeSwiftMailerConfigurations($swiftmailerConfigurations);
  78. $this->addFlash('success', $this->translator->trans('SwiftMailer configuration updated successfully.'));
  79. return new RedirectResponse($this->generateUrl('helpdesk_member_swiftmailer_settings'));
  80. }
  81. return $this->render('@UVDeskCoreFramework//SwiftMailer//manageConfigurations.html.twig', [
  82. 'configuration' => $swiftmailerConfiguration->castArray(),
  83. ]);
  84. }
  85. }