vendor/uvdesk/support-center-bundle/Controller/Branding.php line 198

Open in your IDE?
  1. <?php
  2. namespace Webkul\UVDesk\SupportCenterBundle\Controller;
  3. use Symfony\Component\HttpFoundation\Request;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Webkul\UVDesk\SupportCenterBundle\Entity as SupportEntites;
  6. use Webkul\UVDesk\CoreFrameworkBundle\Entity as CoreEntites;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Webkul\UVDesk\CoreFrameworkBundle\Services\UserService;
  9. use Webkul\UVDesk\CoreFrameworkBundle\Services\UVDeskService;
  10. use Webkul\UVDesk\CoreFrameworkBundle\FileSystem\FileSystem;
  11. use Symfony\Contracts\Translation\TranslatorInterface;
  12. use Symfony\Component\Filesystem\Filesystem as SymfonyFileservice;
  13. class Branding extends AbstractController
  14. {
  15.     private $userService;
  16.     private $translator;
  17.     private $fileSystem;
  18.     private $uvdeskService;
  19.     public function __construct(UserService $userServiceTranslatorInterface $translatorFileSystem $fileSystemUVDeskService $uvdeskService)
  20.     {
  21.         $this->userService $userService;
  22.         $this->translator $translator;
  23.         $this->fileSystem $fileSystem;
  24.         $this->uvdeskService $uvdeskService;
  25.     }
  26.     public function theme(Request $request)
  27.     {
  28.         if (!$this->userService->isAccessAuthorized('ROLE_ADMIN')) {
  29.             return $this->redirect($this->generateUrl('helpdesk_member_dashboard'));
  30.         }
  31.         $errors = [];
  32.         $entityManager $this->getDoctrine()->getManager();
  33.         $settingType $request->attributes->get('type');
  34.         $userService $this->userService;
  35.         $website $entityManager->getRepository(CoreEntites\Website::class)->findOneBy(['code'=>"knowledgebase"]);
  36.         $configuration $entityManager->getRepository(SupportEntites\KnowledgebaseWebsite::class)->findOneBy(['website' => $website->getId(),'isActive' => 1]);
  37.         $currentLocales $this->uvdeskService->getDefaultLangauge();
  38.         if ($request->getMethod() == 'POST') {
  39.             $isValid 0;
  40.             $params $request->request->all();
  41.             $parmsFile = ($request->files->get('website'));
  42.             $selectedLocale = isset($params['defaultLocale']) ? $params['defaultLocale'] : null;
  43.             switch($settingType) {
  44.                 case "general":
  45.                     $website->setName($params['website']['name']);
  46.                     $status array_key_exists("status",$params['website']) ? 0;
  47.                     $logo $website->getLogo();
  48.                     if ($logo != null && isset($parmsFile['logo'])) {
  49.                         $fileService = new SymfonyFileservice;
  50.                         $fileService->remove($this->getParameter('kernel.project_dir').'/public'.$logo);
  51.                     }
  52.                     if (isset($parmsFile['logo'])) {
  53.                         $assetDetails $this->fileSystem->getUploadManager()->uploadFile($parmsFile['logo'], 'website');
  54.                         $website->setLogo($assetDetails['path']);
  55.                     }
  56.                     $configuration->setStatus($status);
  57.                     $configuration->setBrandColor($params['website']['brandColor']);
  58.                     $entityManager->persist($website);
  59.                     $entityManager->persist($configuration);
  60.                     $entityManager->flush();
  61.                     if (!empty($selectedLocale)) {
  62.                         if (false == $this->uvdeskService->updatesLocales($selectedLocale)) {
  63.                             $this->addFlash('danger'$this->translator->trans('Warning! Locales could not be updated successfully.'));
  64.                         } else {
  65.                             $currentLocales $selectedLocale;
  66.                         }
  67.                     }
  68.                     $this->addFlash('success'$this->translator->trans('Success ! Branding details saved successfully.'));
  69.                     break;
  70.                 case "knowledgebase":
  71.                     $configuration->setPageBackgroundColor($params['website']['pageBackgroundColor']);
  72.                     $configuration->setHeaderBackgroundColor($params['website']['headerBackgroundColor']);
  73.                     $configuration->setLinkColor($params['website']['linkColor']);
  74.                     $configuration->setLinkHoverColor($params['website']['linkHoverColor']);
  75.                     $configuration->setArticleTextColor($params['website']['articleTextColor']);
  76.                     $configuration->setSiteDescription($params['website']['siteDescription']);
  77.                     $configuration->setBannerBackgroundColor($params['website']['bannerBackgroundColor']);
  78.                     $configuration->setHomepageContent($params['website']['homepageContent']);
  79.                     $removeCustomerLoginButton array_key_exists("removeCustomerLoginButton",$params['website']) ? $params['website']['removeCustomerLoginButton'] : 0;
  80.                     $removeBrandingContent array_key_exists("removeBrandingContent",$params['website']) ? $params['website']['removeBrandingContent'] : 0;
  81.                     $disableCustomerLogin array_key_exists("disableCustomerLogin",$params['website']) ? $params['website']['disableCustomerLogin'] : 0;
  82.                     $configuration->setRemoveCustomerLoginButton($removeCustomerLoginButton);
  83.                     $configuration->setRemoveBrandingContent($removeBrandingContent);
  84.                     $configuration->setDisableCustomerLogin($disableCustomerLogin);
  85.                     $ticketCreateOption array_key_exists('ticketCreateOption'$params['website']) ? 0;
  86.                     $loginRequiredToCreate array_key_exists('loginRequiredToCreate'$params['website']) ? 0;
  87.                     $configuration->setTicketCreateOption($ticketCreateOption);
  88.                     $configuration->setLoginRequiredToCreate($loginRequiredToCreate);
  89.                     $configuration->setUpdatedAt(new \DateTime());
  90.                     $entityManager->persist($configuration);
  91.                     $entityManager->flush();
  92.                     $this->addFlash('success'$this->translator->trans('Success ! Branding details saved successfully.'));
  93.                     break;
  94.                 case "seo":
  95.                     $configuration->setMetaDescription($params['metaDescription']);
  96.                     $configuration->setMetaKeywords($params['metaKeywords']);
  97.                     $configuration->setUpdatedAt(new \DateTime());
  98.                     $entityManager->persist($configuration);
  99.                     $entityManager->flush();
  100.                     $this->addFlash('success'$this->translator->trans('Success ! Branding details saved successfully.'));
  101.                     break;
  102.                 case "links":
  103.                     $footerLinks=[];
  104.                     $headerLinks=[];
  105.                     $headerLinks = isset($params['headerLinks'])? $params['headerLinks']: '';
  106.                     $footerLinks = isset($params['footerLinks']) ? $params['footerLinks']: 0;
  107.                     if (!empty($headerLinks)) {
  108.                         foreach ($headerLinks as $key => $link) {
  109.                             if($link['label'] == '' || $link['url'] == '' || !filter_var($link['url'], FILTER_VALIDATE_URL)) {
  110.                                 unset($headerLinks[$key]);
  111.                             }
  112.                         }
  113.                     }
  114.                     if (!empty($footerLinks)) {
  115.                         foreach ($footerLinks as $key => $link) {
  116.                             if($link['label'] == '' || $link['url'] == '' || !filter_var($link['url'], FILTER_VALIDATE_URL)) {
  117.                                 unset($footerLinks[$key]);
  118.                             }
  119.                         }
  120.                     }
  121.                     $configuration->setHeaderLinks($headerLinks);
  122.                     $configuration->setFooterLinks($footerLinks);
  123.                     $entityManager->persist($configuration);
  124.                     $entityManager->flush();
  125.                     $this->addFlash('success'$this->translator->trans('Success ! Branding details saved successfully.'));
  126.                     break;
  127.                 case "broadcasting":
  128.                     $params['broadcasting']['isActive'] = array_key_exists('isActive'$params['broadcasting']) ? true  false;
  129.                     $configuration->setBroadcastMessage(json_encode($params['broadcasting']));
  130.                     $configuration->setUpdatedAt(new \DateTime());
  131.                     $entityManager->persist($configuration);
  132.                     $entityManager->flush();
  133.                     $this->addFlash('success'$this->translator->trans('Success ! Branding details saved successfully.'));
  134.                     break;
  135.                 case 'advanced':
  136.                     $configuration->setCustomCSS($request->request->get('customCSS'));
  137.                     $configuration->setScript($request->request->get('script'));
  138.                     $entityManager->persist($configuration);
  139.                     $entityManager->flush();
  140.                     $this->addFlash('success'$this->translator->trans('Success ! Branding details saved successfully.'));
  141.                     break;
  142.                 case 'time':
  143.                     $configuration->getWebsite()->setTimezone($params['form']['timezone']);
  144.                     $configuration->getWebsite()->setTimeformat($params['form']['timeFormat']);
  145.                     $entityManager->persist($configuration);
  146.                     $entityManager->flush();
  147.                     $this->addFlash('success'$this->translator->trans('Success ! Time details saved successfully.'));
  148.                     break;
  149.                 default:
  150.                     break;
  151.             }
  152.         }
  153.         return $this->render('@UVDeskSupportCenter/Staff/branding.html.twig', [
  154.             'websiteData' => $website,
  155.             'type' => $settingType,
  156.             'configuration' => $configuration,
  157.             'broadcast' => json_decode($configuration->getBroadcastMessage()),
  158.             'locales' => $currentLocales,
  159.         ]);
  160.     }
  161.     public function spam(Request $request)
  162.     {
  163.         if (!$this->userService->isAccessAuthorized('ROLE_ADMIN')) {
  164.             return $this->redirect($this->generateUrl('helpdesk_member_dashboard'));
  165.         }
  166.         $params $request->request->all();
  167.         $entityManager $this->getDoctrine()->getManager();
  168.         $website $entityManager->getRepository(CoreEntites\Website::class)->findOneBy(['code'=>"knowledgebase"]);
  169.         
  170.         if (!$website) {
  171.             throw new \Exception("No knowledgebase website details were found.");
  172.         }
  173.         
  174.         $configuration $entityManager->getRepository(SupportEntites\KnowledgebaseWebsite::class)->findOneBy(['website' => $website->getId(), 'isActive' => 1]);
  175.         
  176.         $blacklist = !empty($params['blackList']) ? explode(','$params['blackList']) : [];
  177.         $whitelist = !empty($params['whiteList']) ? explode(','$params['whiteList']) : [];
  178.         $blacklist array_values(array_filter(array_map(function ($email) {
  179.             return trim($email);
  180.         }, $blacklist)));
  181.         $whitelist array_values(array_filter(array_map(function ($email) {
  182.             return trim($email);
  183.         }, $whitelist)));
  184.         $whitelist implode(','$whitelist);
  185.         $blacklist implode(','$blacklist);
  186.         if ($request->getMethod() == 'POST') {
  187.             $configuration
  188.                 ->setWhiteList($whitelist)
  189.                 ->setBlackList($blacklist)
  190.             ;
  191.             $entityManager->persist($configuration);
  192.             $entityManager->flush();
  193.             $this->addFlash('success'$this->translator->trans('Spam setting saved successfully.'));
  194.             return $this->redirect($this->generateUrl('helpdesk_member_knowledgebase_spam'));
  195.         }
  196.         return $this->render('@UVDeskSupportCenter/Staff/spam.html.twig', [
  197.             'whitelist' => $configuration->getWhiteList(),
  198.             'blacklist' => $configuration->getBlackList(),
  199.         ]);
  200.     }
  201.     public function LocalesUpdateXhr(Request $request)
  202.     {
  203.         $params $request->request->all();
  204.         $defaultLocale = isset($params['defaultLocale']) ? $params['defaultLocale'] : null;
  205.         if (!empty($defaultLocale)) {
  206.             $localesStatus $this->uvdeskService->updatesLocales($defaultLocale);
  207.             $localesStatus == true '' $this->addFlash('danger'$this->translator->trans('Warning ! Locales not updates successfully.'));
  208.         }
  209.         $json['alertClass'] = 'success';
  210.         $json['alertMessage'] = $this->translator->trans('Success ! Updated.');
  211.         $response = new Response(json_encode($json));
  212.         $response->headers->set('Content-Type''application/json');
  213.         return $response;
  214.     }
  215. }