src/Controller/BaseController.php line 122

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Component\HttpFoundation\Request;
  4. use Symfony\Component\Routing\Annotation\Route;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Pimcore\Controller\FrontendController;
  7. use Pimcore\Bundle\AdminBundle\HttpFoundation\JsonResponse;
  8. use Pimcore\Translation\Translator;
  9. use Pimcore\Tool\Session;
  10. use App\Validator\Validator;
  11. use App\Helper\LogHelper;
  12. use App\Services\IPService;
  13. use App\Services\MiniSiteService;
  14. use Symfony\Component\Process\Process;
  15. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  16. use Pimcore\Model\DataObject\ClassDefinition;
  17. use Pimcore\Model\Site;
  18. class BaseController extends FrontendController
  19. {
  20.     CONST LOG_FILE_NAME 'helper_500';
  21.     protected $translator;
  22.     protected $validator;
  23.     protected $params;
  24.     public function __construct(
  25.         Translator $translator,
  26.         Validator $validator,
  27.         ParameterBagInterface $params
  28.     )
  29.     {
  30.         $this->translator $translator;
  31.         $this->validator $validator;
  32.         $this->params $params;
  33.     }
  34.     public function sendWithHeader($response)
  35.     {
  36.         $response->headers->add([
  37.             'Strict-Transport-Security' => 'max-age=63072000; includeSubDomains; preload',
  38.         ]);
  39.         return $response;
  40.     }
  41.     /**
  42.      * Return a success response.
  43.      * 
  44.      * @param array $data
  45.      * 
  46.      * @return JsonResponse
  47.      */
  48.     public function sendResponse($data = [])
  49.     {
  50.         return $this->sendWithHeader(new JsonResponse($dataResponse::HTTP_OK));
  51.     }
  52.     /**
  53.      * Return an error response.
  54.      * 
  55.      * @param $error
  56.      * @param int $statusCode
  57.      * 
  58.      * @return JsonResponse
  59.      */
  60.     public function sendError($error$statusCode Response::HTTP_BAD_REQUEST)
  61.     {
  62.         // log if status code = 500
  63.         if ($statusCode == Response::HTTP_INTERNAL_SERVER_ERROR) {
  64.             $errorCode time() . rand(0,9) . rand(0,9) . rand(0,9) . rand(0,9);
  65.             LogHelper::logError(self::LOG_FILE_NAME, (string) ($errorCode .':'$error ."\n \n"));
  66.             return new JsonResponse(['code' => $errorCode], $statusCode);
  67.         } else {
  68.             if (is_string($error)) {
  69.                 $error = ["message" =>  $this->translator $this->translator->trans($error) : $error];
  70.             }
  71.         }
  72.         return $this->sendWithHeader(new JsonResponse($error$statusCode));  
  73.     }
  74.     /**
  75.      * Return an error response format validator.
  76.      * 
  77.      * @param array $errorMessages
  78.      * 
  79.      * @return JsonResponse
  80.      */
  81.     public function sendValidatorError(array $errorMessages)
  82.     {
  83.         return $this->sendError($this->validator->getError($errorMessages), Response::HTTP_BAD_REQUEST);     
  84.     }
  85.     public function getSite(Request $request)
  86.     {
  87.         try {
  88.             $header $request->headers->all();
  89.             $siteName $header['authorization'][0];
  90.             if ($siteName == 'SunWorldAsiaPark') {
  91.                 $siteName 'DaNangDowntown';
  92.             }
  93.             return $this->getSiteByName($siteName);
  94.         } catch (\Throwable $e) {
  95.             $site null;
  96.         }
  97.         return $site;
  98.     }
  99.     public function getSiteByName($name)
  100.     {
  101.         try {
  102.             $rootDocument \Pimcore\Model\Document::getByPath('/'$name);
  103.             $site Site::getByRootId($rootDocument->getId());
  104.         } catch (\Throwable $e) {
  105.             $site null;
  106.         }
  107.         return $site;
  108.     }
  109.     public function checkMiniSiteClass($class$siteName)
  110.     {
  111.         $defaultNamespace 'SunWorldMiniSite';
  112.         $miniSites MiniSiteService::getList();
  113.         if (in_array($siteName$miniSites)) {
  114.             $class str_replace($siteName$defaultNamespace$class);
  115.         }
  116.         return $class;
  117.     }
  118.     public function returnNotFound()
  119.     {
  120.         return $this->sendError("site.page-not-found"Response::HTTP_NOT_FOUND);
  121.     }
  122.     /**
  123.      * @Route("/healthcheck")
  124.      */
  125.     public function healthCheck()
  126.     {
  127.         try {
  128.             $data = [
  129.                 "app_name" => $this->getParameter('app_name'),
  130.                 "app_env" =>   getenv('APP_ENV'),
  131.                 "app_version" => $this->getParameter('app_version'),
  132.             ];
  133.             return $this->sendResponse($data);
  134.         } catch (\Throwable $e) {
  135.             return $this->sendResponse(["message" => $e->getMessage()]);
  136.         }
  137.     }
  138. }