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

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 SupportEntities;
  6. use Webkul\UVDesk\CoreFrameworkBundle\Entity as CoreEntities;
  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(CoreEntities\Website::class)->findOneBy(['code'=>"knowledgebase"]);
  36.         $configuration $entityManager->getRepository(SupportEntities\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.             $paramsFile = ($request->files->get('website'));
  42.             $selectedLocale = isset($params['defaultLocale']) ? $params['defaultLocale'] : null;
  43.             switch($settingType) {
  44.                 case 'business-hours':
  45.                     $website->setBusinessHourStatus(isset($params['status']) && $params['status']=='on' 0);
  46.                     $website->setBusinessHour(serialize($params['businessHours']));
  47.                     $entityManager->persist($website);
  48.                     $entityManager->flush();
  49.                     break;
  50.                 case "general":
  51.                     $website->setName($params['website']['name']);
  52.                     $status array_key_exists("status",$params['website']) ? 0;
  53.                     $logo $website->getLogo();
  54.                     if ($logo != null && isset($paramsFile['logo'])) {
  55.                         $fileService = new SymfonyFileservice;
  56.                         $fileService->remove($this->getParameter('kernel.project_dir').'/public'.$logo);
  57.                     }
  58.                     if (isset($paramsFile['logo'])) {
  59.                         $assetDetails $this->fileSystem->getUploadManager()->uploadFile($paramsFile['logo'], 'website');
  60.                         $website->setLogo($assetDetails['path']);
  61.                     }
  62.                     $configuration->setStatus($status);
  63.                     $configuration->setBrandColor($params['website']['brandColor']);
  64.                     $entityManager->persist($website);
  65.                     $entityManager->persist($configuration);
  66.                     $entityManager->flush();
  67.                     if (! empty($selectedLocale)) {
  68.                         if (false == $this->uvdeskService->updatesLocales($selectedLocale)) {
  69.                             $this->addFlash('danger'$this->translator->trans('Warning! Locales could not be updated successfully.'));
  70.                         } else {
  71.                             $currentLocales $selectedLocale;
  72.                         }
  73.                     }
  74.                     $this->addFlash('success'$this->translator->trans('Success ! Branding details saved successfully.'));
  75.                     break;
  76.                 case "knowledgebase":
  77.                     $configuration->setPageBackgroundColor($params['website']['pageBackgroundColor']);
  78.                     $configuration->setHeaderBackgroundColor($params['website']['headerBackgroundColor']);
  79.                     $configuration->setLinkColor($params['website']['linkColor']);
  80.                     $configuration->setLinkHoverColor($params['website']['linkHoverColor']);
  81.                     $configuration->setArticleTextColor($params['website']['articleTextColor']);
  82.                     $configuration->setSiteDescription($params['website']['siteDescription']);
  83.                     $configuration->setBannerBackgroundColor($params['website']['bannerBackgroundColor']);
  84.                     $configuration->setHomepageContent($params['website']['homepageContent']);
  85.                     $removeCustomerLoginButton array_key_exists("removeCustomerLoginButton",$params['website']) ? $params['website']['removeCustomerLoginButton'] : 0;
  86.                     $removeBrandingContent array_key_exists("removeBrandingContent",$params['website']) ? $params['website']['removeBrandingContent'] : 0;
  87.                     $disableCustomerLogin array_key_exists("disableCustomerLogin",$params['website']) ? $params['website']['disableCustomerLogin'] : 0;
  88.                     $configuration->setRemoveCustomerLoginButton($removeCustomerLoginButton);
  89.                     $configuration->setRemoveBrandingContent($removeBrandingContent);
  90.                     $configuration->setDisableCustomerLogin($disableCustomerLogin);
  91.                     $ticketCreateOption array_key_exists('ticketCreateOption'$params['website']) ? 0;
  92.                     $loginRequiredToCreate array_key_exists('loginRequiredToCreate'$params['website']) ? 0;
  93.                     $configuration->setTicketCreateOption($ticketCreateOption);
  94.                     $configuration->setLoginRequiredToCreate($loginRequiredToCreate);
  95.                     $configuration->setUpdatedAt(new \DateTime());
  96.                     $entityManager->persist($configuration);
  97.                     $entityManager->flush();
  98.                     $this->addFlash('success'$this->translator->trans('Success ! Branding details saved successfully.'));
  99.                     break;
  100.                 case "seo":
  101.                     $configuration->setMetaDescription($params['metaDescription']);
  102.                     $configuration->setMetaKeywords($params['metaKeywords']);
  103.                     $configuration->setUpdatedAt(new \DateTime());
  104.                     $entityManager->persist($configuration);
  105.                     $entityManager->flush();
  106.                     $this->addFlash('success'$this->translator->trans('Success ! Branding details saved successfully.'));
  107.                     break;
  108.                 case "links":
  109.                     $footerLinks=[];
  110.                     $headerLinks=[];
  111.                     $headerLinks = isset($params['headerLinks'])? $params['headerLinks']: '';
  112.                     $footerLinks = isset($params['footerLinks']) ? $params['footerLinks']: 0;
  113.                     if (! empty($headerLinks)) {
  114.                         foreach ($headerLinks as $key => $link) {
  115.                             if (
  116.                                 $link['label'] == '' 
  117.                                 || $link['url'] == '' 
  118.                                 || !filter_var($link['url'], FILTER_VALIDATE_URL)
  119.                             ) {
  120.                                 unset($headerLinks[$key]);
  121.                             }
  122.                         }
  123.                     }
  124.                     if (! empty($footerLinks)) {
  125.                         foreach ($footerLinks as $key => $link) {
  126.                             if (
  127.                                 $link['label'] == '' 
  128.                                 || $link['url'] == '' 
  129.                                 || !filter_var($link['url'], FILTER_VALIDATE_URL)
  130.                             ) {
  131.                                 unset($footerLinks[$key]);
  132.                             }
  133.                         }
  134.                     }
  135.                     $configuration->setHeaderLinks($headerLinks);
  136.                     $configuration->setFooterLinks($footerLinks);
  137.                     $entityManager->persist($configuration);
  138.                     $entityManager->flush();
  139.                     $this->addFlash('success'$this->translator->trans('Success ! Branding details saved successfully.'));
  140.                     break;
  141.                 case "broadcasting":
  142.                     $params['broadcasting']['isActive'] = array_key_exists('isActive'$params['broadcasting']) ? true  false;
  143.                     $configuration->setBroadcastMessage(json_encode($params['broadcasting']));
  144.                     $configuration->setUpdatedAt(new \DateTime());
  145.                     $entityManager->persist($configuration);
  146.                     $entityManager->flush();
  147.                     $this->addFlash('success'$this->translator->trans('Success ! Branding details saved successfully.'));
  148.                     break;
  149.                 case 'advanced':
  150.                     $configuration->setCustomCSS($request->request->get('customCSS'));
  151.                     $configuration->setScript($request->request->get('script'));
  152.                     $entityManager->persist($configuration);
  153.                     $entityManager->flush();
  154.                     $this->addFlash('success'$this->translator->trans('Success ! Branding details saved successfully.'));
  155.                     break;
  156.                 case 'time':
  157.                     $configuration->getWebsite()->setTimezone($params['form']['timezone']);
  158.                     $configuration->getWebsite()->setTimeformat($params['form']['timeFormat']);
  159.                     $entityManager->persist($configuration);
  160.                     $entityManager->flush();
  161.                     $this->addFlash('success'$this->translator->trans('Success ! Time details saved successfully.'));
  162.                     break;
  163.                 default:
  164.                     break;
  165.             }
  166.         }
  167.         return $this->render('@UVDeskSupportCenter/Staff/branding.html.twig', [
  168.             'websiteData'   => $website,
  169.             'type'          => $settingType,
  170.             'configuration' => $configuration,
  171.             'broadcast'     => json_decode($configuration->getBroadcastMessage()),
  172.             'locales'       => $currentLocales,
  173.             'days'          => ["Monday""Tuesday""Wednesday""Thursday""Friday""Saturday""Sunday"],
  174.             'time_interval' => [
  175.                 "00:00" => "12:00 AM",
  176.                 "1:00"  => "1:00 AM",
  177.                 "2:00"  => "2:00 AM",
  178.                 "3:00"  => "3:00 AM",
  179.                 "4:00"  => "4:00 AM",
  180.                 "5:00"  => "5:00 AM",
  181.                 "6:00"  => "6:00 AM",
  182.                 "7:00"  => "7:00 AM",
  183.                 "8:00"  => "8:00 AM",
  184.                 "9:00"  => "9:00 AM",
  185.                 "10:00" => "10:00 AM",
  186.                 "11:00" => "11:00 AM",
  187.                 "12:00" => "12:00 AM",
  188.                 "13:00" => "1:00 PM",
  189.                 "14:00" => "2:00 PM",
  190.                 "15:00" => "3:00 PM",
  191.                 "16:00" => "4:00 PM",
  192.                 "17:00" => "5:00 PM",
  193.                 "18:00" => "6:00 PM",
  194.                 "19:00" => "7:00 PM",
  195.                 "20:00" => "8:00 PM",
  196.                 "21:00" => "9:00 PM",
  197.                 "22:00" => "10:00 PM",
  198.                 "23:00" => "11:00 PM",
  199.             ],
  200.             'business_hours' => unserialize($website->getBusinessHour()),
  201.         ]);
  202.     }
  203.     public function spam(Request $request)
  204.     {
  205.         if (! $this->userService->isAccessAuthorized('ROLE_ADMIN')) {
  206.             return $this->redirect($this->generateUrl('helpdesk_member_dashboard'));
  207.         }
  208.         $params $request->request->all();
  209.         $entityManager $this->getDoctrine()->getManager();
  210.         $website $entityManager->getRepository(CoreEntities\Website::class)->findOneBy(['code'=>"knowledgebase"]);
  211.         
  212.         if (! $website) {
  213.             throw new \Exception("No knowledgebase website details were found.");
  214.         }
  215.         
  216.         $configuration $entityManager->getRepository(SupportEntities\KnowledgebaseWebsite::class)->findOneBy(['website' => $website->getId(), 'isActive' => 1]);
  217.         
  218.         $blacklist = ! empty($params['blackList']) ? explode(','$params['blackList']) : [];
  219.         $whitelist = ! empty($params['whiteList']) ? explode(','$params['whiteList']) : [];
  220.         $blacklist array_values(array_filter(array_map(function ($email) {
  221.             return trim($email);
  222.         }, $blacklist)));
  223.         $whitelist array_values(array_filter(array_map(function ($email) {
  224.             return trim($email);
  225.         }, $whitelist)));
  226.         $whitelist implode(','$whitelist);
  227.         $blacklist implode(','$blacklist);
  228.         if ($request->getMethod() == 'POST') {
  229.             $configuration
  230.                 ->setWhiteList($whitelist)
  231.                 ->setBlackList($blacklist)
  232.             ;
  233.             $entityManager->persist($configuration);
  234.             $entityManager->flush();
  235.             $this->addFlash('success'$this->translator->trans('Spam setting saved successfully.'));
  236.             return $this->redirect($this->generateUrl('helpdesk_member_knowledgebase_spam'));
  237.         }
  238.         return $this->render('@UVDeskSupportCenter/Staff/spam.html.twig', [
  239.             'whitelist' => $configuration->getWhiteList(),
  240.             'blacklist' => $configuration->getBlackList(),
  241.         ]);
  242.     }
  243.     public function LocalesUpdateXhr(Request $request)
  244.     {
  245.         $params $request->request->all();
  246.         $defaultLocale = isset($params['defaultLocale']) ? $params['defaultLocale'] : null;
  247.         if (! empty($defaultLocale)) {
  248.             $localesStatus $this->uvdeskService->updatesLocales($defaultLocale);
  249.             $localesStatus == true '' $this->addFlash('danger'$this->translator->trans('Warning ! Locales not updates successfully.'));
  250.         }
  251.         $json['alertClass'] = 'success';
  252.         $json['alertMessage'] = $this->translator->trans('Success ! Updated.');
  253.         $response = new Response(json_encode($json));
  254.         $response->headers->set('Content-Type''application/json');
  255.         return $response;
  256.     }
  257. }