src/Controller/MainController.php line 31

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Service\Page;
  4. use App\Service\Sites;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Serializer\SerializerInterface;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Symfony\Component\HttpClient\CurlHttpClient;
  12. use Symfony\Component\HttpFoundation\Cookie;
  13. use Symfony\Component\HttpClient\HttpClient;
  14. //use Symfony\Component\Routing\Annotation\Route;
  15. class MainController extends AbstractController
  16. {
  17.     public function findSitebyURl()
  18.     {
  19.     }
  20.     /**
  21.      * @Route("/", name="main")
  22.      */
  23.     public function index(Request $requestSites $sitesPage $page)
  24.     {
  25.         if ($request->getHost() == "site.cliclishop.ru") {
  26.             return $this->redirectToRoute('admin');
  27.         } else {
  28.             $response2 =$this->checkCookie();
  29.             $client = new CurlHttpClient(['verify_peer' => false'verify_host' => false]);
  30.             $data = array();
  31.             $host $request->getHost();
  32.             $infoSite $sites->showHash($host);
  33.             $settingsSite $sites->showSettings($infoSite->getId(), $infoSite->getTheme()->getId());
  34.             $pages $page->showAllbyId($infoSite->getId());
  35.             $response $client->request('POST''http://dev-api-cliclishop-ru-nginx/site/' $infoSite->getHashCatalog() . '/categories/null', ['json' => $data]);
  36. //            $statusCode = $response->getStatusCode();
  37. //            if($statusCode === 500){
  38. //                return $this->render('error500.html.twig', array(
  39. //
  40. //
  41. //                ));
  42. //            }
  43.             $content $response->toArray();
  44. //            $categories2 = $content2['categories'];
  45. //            $j = file_get_contents($this->getParameter('image_directory_server') . $host . '.json'); // в примере все файлы в корне
  46. //            $data = json_decode($j);
  47.             if ($settingsSite) {
  48. //                var_dump($settingsSite->getSettings());
  49.                 $data $settingsSite->getSettings();
  50.             }
  51.             if ($infoSite->getTheme()->getType() == 'Индивудуальный') {
  52.                 $type 'individualTheme';
  53.             } else if ($infoSite->getTheme()->getType() == 'Общий') {
  54.                 $type 'templatesTheme';
  55.             } else if ($infoSite->getTheme()->getType() == 'Черновик') {
  56.                 $type 'templatesDraft';
  57.             }
  58.             $dir $type '/' $infoSite->getTheme()->getNamedir() . '/';
  59.             $categories $content['categories'];
  60.             $headings $content['headings'];
  61.             $settings = [];
  62.             if ($settingsSite) {
  63.                 $settings $settingsSite->getSettings();
  64.             }
  65.             return $this->render($dir 'main.html.twig', array(
  66.                 'categories' => $categories,
  67.                 'headings' => $headings,
  68.                 'pages' => $pages,
  69.                 'dir' => $dir,
  70.                 'custom' => $data,
  71.                 'products' => $content['products'],
  72.                 'settings' => $settings
  73.             ),$response2);
  74.         }
  75.     }
  76.     /**
  77.      * @Route("/catalog/{id}", name="catalog")
  78.      */
  79.     public function catalog($idRequest $requestSites $sitesPage $page)
  80.     {
  81.         $client = new CurlHttpClient(['verify_peer' => false'verify_host' => false]);
  82.         $data = array();
  83.         $host $request->getHost();
  84.         $infoSite $sites->showHash($host);
  85.         $response $client->request('POST''http://dev-api-cliclishop-ru-nginx/site/' $infoSite->getHashCatalog() . '/categories/' $id, [
  86.             'json' => $data]);
  87.         $content $response->toArray();
  88. //        var_dump();
  89. //        var_dump($content);
  90.         $products $content['products'];
  91.         $categories $content['categories'];
  92.         $pages $page->showAllbyId($infoSite->getId());
  93.         $infoSite $sites->showHash($request->getHost());
  94.         $settingsSite $sites->showSettings($infoSite->getId(), $infoSite->getTheme()->getId());
  95.         if ($infoSite->getTheme()->getType() == 'Индивудуальный') {
  96.             $type 'individualTheme';
  97.         } else if ($infoSite->getTheme()->getType() == 'Общий') {
  98.             $type 'templatesTheme';
  99.         } else if ($infoSite->getTheme()->getType() == 'Черновик') {
  100.             $type 'templatesDraft';
  101.         }
  102. //        var_dump($infoSite->getTheme()->getNamedir());
  103.         $dir $type '/' $infoSite->getTheme()->getNamedir() . '/';
  104. //        $j = file_get_contents($this->getParameter('image_directory_server') . $host . '.json'); // в примере все файлы в корне
  105. //        $data = json_decode($j);
  106.         if ($settingsSite) {
  107. //                var_dump($settingsSite->getSettings());
  108.             $data $settingsSite->getSettings();
  109.         }
  110.         $settings = [];
  111.         if ($settingsSite) {
  112.             $settings $settingsSite->getSettings();
  113.         }
  114.         return $this->render($dir 'catalog.html.twig', array(
  115.             'products' => $products,
  116.             'ActiveCategory' => $id,
  117.             'categories' => $categories,
  118.             'dir' => $dir,
  119.             'pages' => $pages,
  120.             'custom' => $data,
  121.             'settings' => $settings
  122.         ));
  123.     }
  124.     /**
  125.      * @Route("/catalog/{id}/product/{idProduct}", name="productItem")
  126.      */
  127.     public function productItem($id$idProductRequest $requestSites $sitesPage $page)
  128.     {
  129.         $client = new CurlHttpClient(['verify_peer' => false'verify_host' => false]);
  130.         $data = array();
  131.         $host $request->getHost();
  132.         $infoSite $sites->showHash($host);
  133.         $settingsSite $sites->showSettings($infoSite->getId(), $infoSite->getTheme()->getId());
  134.         $response $client->request('POST''http://dev-api-cliclishop-ru-nginx/site/' $infoSite->getHashCatalog() . '/product/' $idProduct, [
  135.             'json' => $data]);
  136.         $content $response->toArray();
  137.         $pages $page->showAllbyId($infoSite->getId());
  138. //        var_dump($_COOKIE{'CliCLiShop'});
  139.         $products $content['products'];
  140.         $specifications $content['specifications'];
  141.         $reviews $content['reviews'];
  142.         $images $content['image'];
  143.         $attr $content['attr'];
  144.         $categories $content['categories'];
  145.         $hash $_COOKIE{'CliCLiShop'};
  146. //        $j = file_get_contents($this->getParameter('image_directory_server') . $request->getHost() . '.json'); // в примере все файлы в корне
  147. //        $data = json_decode($j);
  148.         $infoSite $sites->showHash($request->getHost());
  149.         if ($settingsSite) {
  150. //                var_dump($settingsSite->getSettings());
  151.             $data $settingsSite->getSettings();
  152.         }
  153.         $settings = [];
  154.         if ($settingsSite) {
  155.             $settings $settingsSite->getSettings();
  156.         }
  157.         if ($infoSite->getTheme()->getType() == 'Индивудуальный') {
  158.             $type 'individualTheme';
  159.         } else if ($infoSite->getTheme()->getType() == 'Общий') {
  160.             $type 'templatesTheme';
  161.         } else if ($infoSite->getTheme()->getType() == 'Черновик') {
  162.             $type 'templatesDraft';
  163.         }
  164.         $dir $type '/' $infoSite->getTheme()->getNamedir() . '/';
  165.         return $this->render($dir 'productItem.html.twig', array(
  166.             'products' => $products,
  167.             'attr' => $attr,
  168.             'images' => $images,
  169.             'ActiveCategory' => $id,
  170.             'categories' => $categories,
  171.             'custom' => $data,
  172.             'dir' => $dir,
  173.             'pages' => $pages,
  174.             'settings' => $settings,
  175.             'hash' => $hash,
  176.             'specifications' => $specifications,
  177.             'reviews' => $reviews,
  178.         ));
  179.     }
  180.     /**
  181.      * @Route("/basket/product/{id_product}/attr/{id_attr}", name="statusBasketProduct")
  182.      */
  183.     public function statusBasketProduct($id_attr$id_productRequest $requestSerializerInterface $serializer)
  184.     {
  185.         $em $this->getDoctrine()->getManager();
  186.         $data $request->getContent();
  187.         $hash $_COOKIE{'CliCLiShop'};
  188.         $client = new CurlHttpClient(['verify_peer' => false'verify_host' => false]);
  189.         $response $client->request('POST''http://dev-api-cliclishop-ru-nginx/site/product/' $id_product '/attr/' $id_attr.'/hash/'.$hash, [
  190.             'json' => $data]);
  191.         $content $response->toArray();
  192.         $status $content['status'];
  193.         return new JsonResponse($content);
  194.     }
  195.     /**
  196.      * @Route("/theme/test", name="themeTest")
  197.      */
  198.     public function themeTest(Request $requestSites $sites)
  199.     {
  200.         $client = new CurlHttpClient(['verify_peer' => false'verify_host' => false]);
  201.         $data = array(
  202.             'nameSite' => 'Кафе Венеция'
  203.         );
  204.         $dir 'templatesTheme/2_start/';
  205.         return $this->render($dir 'main.html.twig', array(
  206.             'custom' => $data,
  207.         ));
  208.     }
  209.     /**
  210.      * @Route("/addBasket/product/{id}/{idAttr}", name="addBasket")
  211.      */
  212.     public function addBasket($id$idAttrSites $sites)
  213.     {
  214.         $client = new CurlHttpClient(['verify_peer' => false'verify_host' => false]);
  215.         $data = array(
  216.             'hash' => $_COOKIE{'CliCLiShop'},
  217.             'id' => $id,
  218.             'idAttr' => $idAttr,
  219.         );
  220.         $response $client->request('POST''http://dev-api-cliclishop-ru-nginx/widget/basket/add/', [
  221.             'json' => $data]);
  222.         $content $response->toArray();
  223.         return $content['text'];
  224.     }
  225.     /**
  226.      * @Route("/pages", name="pages")
  227.      */
  228.     public function pages(Request $requestSites $sitesPage $page)
  229.     {
  230.         $client = new CurlHttpClient(['verify_peer' => false'verify_host' => false]);
  231.         $data = array();
  232.         $host $request->getHost();
  233.         $infoSite $sites->showHash($host);
  234.         $settingsSite $sites->showSettings($infoSite->getId(), $infoSite->getTheme()->getId());
  235.         $response $client->request('POST''http://dev-api-cliclishop-ru-nginx/site/' $infoSite->getHashCatalog() . '/default', [
  236.             'json' => $data]);
  237.         $content $response->toArray();
  238.         $categories $content['categories'];
  239.         $pages $page->showAllbyId($infoSite->getId());
  240.         $j file_get_contents($this->getParameter('image_directory_server') . $request->getHost() . '.json'); // в примере все файлы в корне
  241.         $data json_decode($j);
  242.         $infoSite $sites->showHash($request->getHost());
  243.         if ($infoSite->getTheme()->getType() == 'Индивудуальный') {
  244.             $type 'individualTheme';
  245.         } else if ($infoSite->getTheme()->getType() == 'Общий') {
  246.             $type 'templatesTheme';
  247.         } else if ($infoSite->getTheme()->getType() == 'Черновик') {
  248.             $type 'templatesDraft';
  249.         }
  250.         $dir $type '/' $infoSite->getTheme()->getNamedir() . '/';
  251.         return $this->render($dir 'pages.html.twig', array(
  252.             'categories' => $categories,
  253.             'custom' => $data,
  254.             'pages' => $pages,
  255.             'dir' => $dir,
  256.             'settings' => $settingsSite
  257.         ));
  258.     }
  259.     /**
  260.      * @Route("/page/{id}", name="page")
  261.      */
  262.     public function page($idRequest $requestSites $sitesPage $page)
  263.     {
  264.         $client = new CurlHttpClient(['verify_peer' => false'verify_host' => false]);
  265.         $data = array();
  266.         $host $request->getHost();
  267.         $infoSite $sites->showHash($host);
  268.         $settingsSite $sites->showSettings($infoSite->getId(), $infoSite->getTheme()->getId());
  269.         $response $client->request('POST''http://dev-api-cliclishop-ru-nginx/site/' $infoSite->getHashCatalog() . '/default', [
  270.             'json' => $data]);
  271.         $content $response->toArray();
  272.         $categories $content['categories'];
  273.         $pages $page->showAllbyId($infoSite->getId());
  274.         $infoPage $page->show($id$infoSite->getUsercliclishop());
  275.         $j file_get_contents($this->getParameter('image_directory_server') . $request->getHost() . '.json'); // в примере все файлы в корне
  276.         $data json_decode($j);
  277.         $infoSite $sites->showHash($request->getHost());
  278.         if ($infoSite->getTheme()->getType() == 'Индивудуальный') {
  279.             $type 'individualTheme';
  280.         } else if ($infoSite->getTheme()->getType() == 'Общий') {
  281.             $type 'templatesTheme';
  282.         } else if ($infoSite->getTheme()->getType() == 'Черновик') {
  283.             $type 'templatesDraft';
  284.         }
  285.         $dir $type '/' $infoSite->getTheme()->getNamedir() . '/';
  286.         return $this->render($dir 'page.html.twig', array(
  287.             'activeId' => $id,
  288.             'categories' => $categories,
  289.             'custom' => $data,
  290.             'pages' => $pages,
  291.             'page' => $infoPage[0],
  292.             'dir' => $dir,
  293.             'settings' => $settingsSite
  294.         ));
  295.     }
  296.     /**
  297.      * @Route("/basket", name="basket")
  298.      */
  299.     public function basket(Request $requestSites $sitesPage $page)
  300.     {
  301.         $client = new CurlHttpClient(['verify_peer' => false'verify_host' => false]);
  302.         $data = array();
  303.         $host $request->getHost();
  304.         $infoSite $sites->showHash($host);
  305.         $response $client->request('POST''http://dev-api-cliclishop-ru-nginx/site/' $infoSite->getHashCatalog() . '/default', [
  306.             'json' => $data]);
  307.         $content $response->toArray();
  308.         $pages $page->showAllbyId($infoSite->getId());
  309.         $categories $content['categories'];
  310.         $j file_get_contents($this->getParameter('image_directory_server') . $request->getHost() . '.json'); // в примере все файлы в корне
  311.         $data json_decode($j);
  312.         $infoSite $sites->showHash($request->getHost());
  313.         $settingsSite $sites->showSettings($infoSite->getId(), $infoSite->getTheme()->getId());
  314.         if ($infoSite->getTheme()->getType() == 'Индивудуальный') {
  315.             $type 'individualTheme';
  316.         } else if ($infoSite->getTheme()->getType() == 'Общий') {
  317.             $type 'templatesTheme';
  318.         } else if ($infoSite->getTheme()->getType() == 'Черновик') {
  319.             $type 'templatesDraft';
  320.         }
  321.         $dir $type '/' $infoSite->getTheme()->getNamedir() . '/';
  322.         return $this->render($dir 'basket.html.twig', array(
  323.             'categories' => $categories,
  324.             'custom' => $data,
  325.             'dir' => $dir,
  326.             'pages' => $pages,
  327.             'hash' => $infoSite->getHashCatalog(),
  328.             'settings' => $settingsSite
  329.         ));
  330.     }
  331.     /**
  332.      * @Route("/my-order", name="myOrder")
  333.      */
  334.     public function myOrder(Request $requestSites $sitesPage $page)
  335.     {
  336.         $client = new CurlHttpClient(['verify_peer' => false'verify_host' => false]);
  337.         $data = array();
  338.         $host $request->getHost();
  339.         $infoSite $sites->showHash($host);
  340.         $response $client->request('POST''http://dev-api-cliclishop-ru-nginx/site/' $infoSite->getHashCatalog() . '/default', [
  341.             'json' => $data]);
  342.         $content $response->toArray();
  343.         $pages $page->showAllbyId($infoSite->getId());
  344.         $categories $content['categories'];
  345.         $j file_get_contents($this->getParameter('image_directory_server') . $request->getHost() . '.json'); // в примере все файлы в корне
  346.         $data json_decode($j);
  347.         $infoSite $sites->showHash($request->getHost());
  348.         $settingsSite $sites->showSettings($infoSite->getId(), $infoSite->getTheme()->getId());
  349.         if ($infoSite->getTheme()->getType() == 'Индивудуальный') {
  350.             $type 'individualTheme';
  351.         } else if ($infoSite->getTheme()->getType() == 'Общий') {
  352.             $type 'templatesTheme';
  353.         } else if ($infoSite->getTheme()->getType() == 'Черновик') {
  354.             $type 'templatesDraft';
  355.         }
  356.         $dir $type '/' $infoSite->getTheme()->getNamedir() . '/';
  357.         return $this->render($dir 'myRecord.html.twig', array(
  358.             'categories' => $categories,
  359.             'custom' => $data,
  360.             'dir' => $dir,
  361.             'pages' => $pages,
  362.             'hash' => $infoSite->getHashCatalog(),
  363.             'settings' => $settingsSite
  364.         ));
  365.     }
  366.     /**
  367.      * @Route("/about", name="about")
  368.      */
  369.     public function about(Request $requestSites $sitesPage $page)
  370.     {
  371.         $client = new CurlHttpClient(['verify_peer' => false'verify_host' => false]);
  372.         $data = array();
  373.         $host $request->getHost();
  374.         $infoSite $sites->showHash($host);
  375.         $response $client->request('POST''http://dev-api-cliclishop-ru-nginx/site/' $infoSite->getHashCatalog() . '/default', [
  376.             'json' => $data]);
  377.         $content $response->toArray();
  378.         $pages $page->showAllbyId($infoSite->getId());
  379.         $categories $content['categories'];
  380.         $j file_get_contents($this->getParameter('image_directory_server') . $request->getHost() . '.json'); // в примере все файлы в корне
  381.         $data json_decode($j);
  382.         $infoSite $sites->showHash($request->getHost());
  383.         $settingsSite $sites->showSettings($infoSite->getId(), $infoSite->getTheme()->getId());
  384.         if ($infoSite->getTheme()->getType() == 'Индивудуальный') {
  385.             $type 'individualTheme';
  386.         } else if ($infoSite->getTheme()->getType() == 'Общий') {
  387.             $type 'templatesTheme';
  388.         } else if ($infoSite->getTheme()->getType() == 'Черновик') {
  389.             $type 'templatesDraft';
  390.         }
  391.         $dir $type '/' $infoSite->getTheme()->getNamedir() . '/';
  392.         return $this->render($dir 'basket.html.twig', array(
  393.             'categories' => $categories,
  394.             'custom' => $data,
  395.             'dir' => $dir,
  396.             'pages' => $pages,
  397.             'hash' => $infoSite->getHashCatalog(),
  398.             'settings' => $settingsSite
  399.         ));
  400.     }
  401.     private function checkCookie()
  402.     {
  403.         $hash null;
  404.         $hash2 null;
  405.         $res = new Response();
  406.         if (empty($_COOKIE{'CliCLiShop'})) {
  407.             $hash md5(uniqid());
  408.             $cookie = new Cookie(
  409.                 'CliCLiShop',    // Cookie name.
  410.                 $hash,    // Cookie value.
  411.                 time() + (365 24 60 60)    // Expires 2 years.
  412.                 '/',
  413.                 null,
  414.                 false,
  415.                 false
  416.             );
  417.             $res->headers->setCookie($cookie);
  418.         }
  419.         if (empty($_COOKIE{'_CliCLiShop'})) {
  420.             if ($hash ==  null ){
  421.                 $hash2 $_COOKIE{'CliCLiShop'};
  422.             }
  423.             $cookie2 = new Cookie(
  424.                 '_CliCLiShop',    // Cookie name.
  425.                 $hash2,    // Cookie value.
  426.                 time() + (365 24 60 60)    // Expires 2 years.
  427.                 'api.cliclishop.ru',
  428.                 null,
  429.                 false,
  430.                 false
  431.             );
  432.             $res->headers->setCookie($cookie2);
  433.         }
  434.         if($hash == null and $hash2 null){
  435.             if($_COOKIE{'CliCLiShop'} != $_COOKIE{'_CliCLiShop'}){
  436.                 $cookie2 = new Cookie(
  437.                     '_CliCLiShop',    // Cookie name.
  438.                     $_COOKIE{'CliCLiShop'},    // Cookie value.
  439.                     time() + (365 24 60 60)    // Expires 2 years.
  440.                     'api.cliclishop.ru',
  441.                     null,
  442.                     false,
  443.                     false
  444.                 );
  445.             }
  446.         }
  447. return $res;
  448.     }
  449.     /**
  450.      * @Route("/yml", name="yml")
  451.      */
  452.     public function yml(Request $request)
  453.     {
  454.         $client = new CurlHttpClient();
  455.         $data = array();
  456.         $response $client->request('POST''http://dev-api-cliclishop-ru-nginx/site/' $request->getHost(), [
  457.             'json' => $data]);
  458.         $content $response->toArray();
  459. //        var_dump($content['products']);
  460.         $products $content['products'];
  461.         $categories $content['categories'];
  462.         $j file_get_contents($this->getParameter('image_directory_server') . $request->getHost() . '.json'); // в примере все файлы в корне
  463.         $data json_decode($j);
  464.         return $this->render('basket.html.twig', array(
  465.             'categories' => $categories,
  466.             'custom' => $data,
  467.         ));
  468.     }
  469. }