src/Framework/FrontBundle/Controller/PageController.php line 80

Open in your IDE?
  1. <?php
  2. /*
  3.  *
  4.  * (c) Loïc Haas <loic.haas@outlook.com>
  5.  * http://www.haas-info.com/
  6.  *
  7.  */
  8. namespace App\Framework\FrontBundle\Controller;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\String\Slugger\AsciiSlugger;
  14. use App\Framework\AppBundle\Entity\Page;
  15. use App\Framework\AppBundle\Entity\Newsletter;
  16. use Symfony\Component\HttpKernel\Profiler\Profiler;
  17. use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface;
  18. use Symfony\Component\Mailer\MailerInterface;
  19. use Symfony\Component\Mime\Email;
  20. class PageController extends AbstractController
  21. {
  22.     public function __construct(ContainerBagInterface $params)
  23.     {
  24.         $this->params $params;
  25.       if( !in_array($_SERVER['REMOTE_ADDR'], ['92.188.126.134''92.188.134.117']) ){
  26.                 //exit;
  27.       }
  28.         
  29.     }
  30.     /**
  31.     * @Route("/", name="framework_front_page_index")
  32.     */
  33.     public function indexAction(Request $request)
  34.     {
  35.         $em $this->getDoctrine()->getManager();
  36.         $locale $request->getLocale();
  37.         $page $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['isHome' => 1]);
  38.         $products_tmp $em->getRepository('FrameworkShopBundle:Product')->findBy(['published' => 1], ['createdAt' => 'DESC'], 50);
  39.         if( sizeof($products_tmp) < 20 ){
  40.             $size sizeof($products_tmp);
  41.         } else {
  42.             $size 20;
  43.         }
  44.         shuffle($products_tmp);
  45.         $products_line1 array_slice($products_tmp010);
  46.         $products_line2 array_slice($products_tmp1010);
  47.         return $this->render('FrontBundle/Page/index.html.twig', [
  48.             'page' => $page,
  49.             'products_line1' => $products_line1,
  50.             'products_line2' => $products_line2,
  51.         ]);
  52.     }
  53.     /**
  54.     * @Route("/404", name="framework_front_page_404")
  55.     */
  56.     public function error404Action(Request $request)
  57.     {
  58.         return $this->render('FrontBundle/Page/404.html.twig', [
  59.         ]);
  60.     }
  61.     /**
  62.     * @Route("/page/{slug}", name="framework_front_page_slug", requirements={"slug" = "([a-z\-0-9]+)", "locale" = "([a-z\-0-9]+)"})
  63.     */
  64.     public function slugAction(Request $request$slug NULL$locale NULL)
  65.     {
  66.         $em $this->getDoctrine()->getManager();
  67.         $globals $this->get("twig")->getGlobals();
  68.         $locales explode('|'$globals["app_locales"]);
  69.         $page $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['slug' => $slug'locale' => $locale]);
  70.         if(is_null($page)){
  71.             return $this->redirectToRoute('framework_front_page_404');
  72.         }
  73.         return $this->redirectToRoute('framework_front_page_url', ['locale' => $locale'url' => $page->getUrl()]);
  74.     }
  75.     /**
  76.     * @Route("/{locale}/{url}", name="framework_front_page_url", requirements={"locale" = "([a-z][a-z])", "url" = "([a-z\-0-9]+)"})
  77.     */
  78.     public function urlAction(Request $request$locale NULL$url NULL)
  79.     {
  80.         $em $this->getDoctrine()->getManager();
  81.         $request->setLocale($locale);
  82.         
  83.         if(is_null($url)){
  84.             $page $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['isHome' => 1'locale' => $locale]);
  85.         } else {
  86.             $page $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['url' => $url'locale' => $locale]);
  87.         }
  88.         if(is_null($page)){
  89.             return $this->redirectToRoute('framework_front_page_404');
  90.         }
  91.         $content $page->getContent();
  92.         $body explode('<body>'$content);
  93.         if(isset($body[1])){
  94.             $body explode('</body>'$body[1])[0];
  95.         } else {
  96.             $body '';
  97.         }
  98.         
  99.         $head '<head>
  100.         <title>'.$page->getMetaTitle().'</title>
  101.         <meta charset="utf-8">
  102.         <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  103.         <meta name="description" content="'.$page->getMetaDescription().'">
  104.         <link href="/editor/css/editor.css" rel="stylesheet">
  105.         </head>';
  106.         if($page->getIsHome()){
  107.             return $this->render('FrontBundle/Page/index.html.twig', [
  108.           // return $this->render('FrontBundle/Page/'.$request->getLocale().'/index.html.twig', [
  109.                 'page' => $page,
  110.             ]);
  111.         } elseif($page->getIsCms()){
  112.             return $this->render('FrontBundle/Page/page.html.twig', [
  113.                 'page' => $page,
  114.                 'body' => $body,
  115.             ]);
  116.         // CUSTOM PAGES
  117.         } else {
  118.             switch ($page->getSlug()) {
  119.                 case 'about-us':
  120.                 return $this->render('FrontBundle/Page/about.html.twig', [
  121.                     'page' => $page,
  122.                 ]);
  123.                 break;
  124.                 case 'roadmap':
  125.                 return $this->render('FrontBundle/Page/roadmap.html.twig', [
  126.                     'page' => $page,
  127.                 ]);
  128.                 break;
  129.                 case 'winemakers':
  130.                 return $this->render('FrontBundle/Page/winemakers.html.twig', [
  131.                     'page' => $page,
  132.                 ]);
  133.                 break;
  134.                 case 'news':
  135.                 $currentPage intval$request->get('page') );
  136.                 if($currentPage == null){
  137.                     $currentPage 1;
  138.                 }
  139.                 $limit 5;
  140.                 $posts $em->getRepository('FrameworkAppBundle:Post')->findBy(['locale' => $locale'published' => 1], ['createdAt' => 'DESC'], $limit);
  141.                 
  142.                 $posts $em->getRepository('FrameworkAppBundle:Post')->findBy(['locale' => $locale'published' => 1], ['createdAt' => 'DESC'], $limit);
  143.                 $postsNbr $em->getRepository('FrameworkAppBundle:Post')->count(['locale' => $locale'published' => 1]);
  144.                 $pagesNbr ceil($postsNbr $limit);
  145.                 $posts_arr = [];
  146.                 foreach ($posts as $key => $post) {
  147.                     $post_en $em->getRepository('FrameworkAppBundle:Post')->findOneBy(['slug' => $post->getSlug(), 'locale' => 'en']);
  148.                     $post->setDataform$post_en->getDataform() );
  149.                     $post->setId$post_en->getId() );
  150.                     $posts_arr[] = $post;
  151.                 }
  152.                 return $this->render('FrontBundle/Page/news.html.twig', [
  153.                     'posts' => $posts_arr,
  154.                     'page' => $page,
  155.                     'pagesNbr' => $pagesNbr,
  156.                     'currentPage' => $currentPage,
  157.                 ]);
  158.                 break;
  159.                 
  160.                 default:
  161.                 return $this->redirectToRoute('framework_front_page_404');
  162.                     // return $this->render('FrontBundle/Page/page.html.twig', [
  163.                     //     'page' => $page,
  164.                     //     'body' => $body,
  165.                     // ]);
  166.                 break;
  167.             }
  168.         // END CUSTOM PAGES
  169.         }
  170.         // return new Response(
  171.   //       '<!DOCTYPE html><html lang="'.$page->getLocale().'">'.$head.$body.'</html>'
  172.   //   );
  173.     }
  174.     /**
  175.     * @Route("/{locale}/news/{slug}", name="framework_front_news_slug", requirements={"slug" = "([a-z\-0-9]+)", "locale" = "([a-z\-0-9]+)"})
  176.     */
  177.     public function newsAction(Request $request$slug NULL$locale NULL)
  178.     {
  179.         $em $this->getDoctrine()->getManager();
  180.         $globals $this->get("twig")->getGlobals();
  181.         $locales explode('|'$globals["app_locales"]);
  182.         $post $em->getRepository('FrameworkAppBundle:Post')->findOneBy(['slug' => $slug'locale' => $locale]);
  183.         $previous $em->getRepository('FrameworkAppBundle:Post')->findPrevious($post->getId());
  184.         $next $em->getRepository('FrameworkAppBundle:Post')->findNext($post->getId());
  185.         $post_en $em->getRepository('FrameworkAppBundle:Post')->findOneBy(['slug' => $slug'locale' => 'en']);
  186.         $post->setDataform$post_en->getDataform() );
  187.         $post->setId$post_en->getId() );
  188.         $post->setTags$post_en->getTags() );
  189.         $posts $em->getRepository('FrameworkAppBundle:Post')->sameTags($post_en->getTags());
  190.         if(is_null($post)){
  191.             return $this->redirectToRoute('framework_front_page_index');
  192.         }
  193.         $page $em->getRepository('FrameworkAppBundle:Page')->findOneBy(['slug' => 'news''locale' => $locale]);
  194.         return $this->render('FrontBundle/Page/article.html.twig', [
  195.             'posts' => $posts,
  196.             'post' => $post,
  197.             'page' => $page,
  198.             'next' => $next,
  199.             'previous' => $previous,
  200.             'body' => '',
  201.         ]);
  202.     }
  203.     /**
  204.     * @Route("/contact/send", name="framework_front_page_contact_send")
  205.     */
  206.     public function contactSendAction(Request $requestMailerInterface $mailer)
  207.     {
  208.         $error '';
  209.         $success true;
  210.         // $isValid = $this->reCaptcha($request->get('token'));
  211.         // if(!$isValid){
  212.         //     $error = 'La vérification anti-robot a échouée.';
  213.         //     $success = false;
  214.         // }
  215.         // if($request->get('phone') == '' 
  216.         //     || $request->get('name') == '' 
  217.         //     || $request->get('email') == '' 
  218.         //     || $request->get('message') == ''){
  219.         //     $error = 'Veuillez remplir tous les champs.';
  220.         //     $success = false;
  221.         // }
  222.         if($success){
  223.             $from 'noreply@knuckle-head.com';
  224.             $to 'contact@bellevue-restaurant.fr';
  225.             // $to = $request->get('contact');
  226.             $email = (new Email())
  227.             ->from($from)
  228.             ->to($to)
  229.             //->cc('cc@example.com')
  230.             //->bcc('bcc@example.com')
  231.             ->replyTo($request->get('email'))
  232.             //->priority(Email::PRIORITY_HIGH)
  233.             ->subject('Nouveau message : '.$request->get('contact'))
  234.             ->text(nl2br('Email : '.$request->get('email')).nl2br('Nom : '.$request->get('name')).nl2br('Téléphone : '.$request->get('phone')).nl2br('Message : '.$request->get('message')))
  235.             ->html('<p>Email : '.$request->get('email').'</p>'.'<p>Nom : '.$request->get('name').'</p>'.'<p>Téléphone : '.$request->get('phone').'</p>'.'<p>Message : '.$request->get('message').'</p>');
  236.             $mailer->send($email);
  237.         }
  238. //                 //ENVOI EMAIL
  239. //                 $transport = \Swift_SmtpTransport::newInstance('mail.gandi.net', 465,'ssl')->setUsername('noreply@knuckle.rocks')->setPassword('Dmc3040307!');
  240. //             $privateKey = "-----BEGIN RSA PRIVATE KEY-----
  241. // MIICXQIBAAKBgQCv+ihogW8ElGFuncKjtj/g9kPgvj+3jDf1wJPrsUQiOijy66WF
  242. // FEdAkgkvZCdaI+pBoDx6yhujYYZeQq7+VLaV6E7Vd8xHW+zX4hdJNx7V5Zq9rGTc
  243. // dOyLbKXwGOLLD71nSaRVv12OUFFFsqbnYE7kc+TMK565P3QO0fLSHjzGxwIDAQAB
  244. // AoGATgqasP31xgony26bSw8f9RxBrgGxMC03A/2LnBLZLHSuhEyM8x+zGaep+yJn
  245. // cUpMMR5ms+29pA80D8ly4cef0M45DVD8eDQK/RPi90Y1NiVhhNA6q38tNjyWqdwH
  246. // ZzDoB7r3g6MSlMuYvv/CEJM0X/IOrTyrAdl8navK3jqwNAECQQDp1tHxvxcsklVT
  247. // UxC7skk2v0G9EUB0RSAfA0b+YxpXt8YSIJk/r/EnnMu18AEGaBjMbg1z6PRrNyg2
  248. // Ma6lV0CHAkEAwKeL7SBYIlwe7gj3gL1nvIfSl3YItszb5AkPZS5GUE3Z2C6OZEht
  249. // VEYs9ttBxMDtj8y3/nR18F301rqjUU8XwQJBAMjWmLrpRR4jEOXgEh8joX5EBlI8
  250. // 3v793/jC99bFh3qPfK9VEEqC8rzzDoPU/wxhm+r5GtTS4Bq15POm+DlKF0ECQHkN
  251. // DbvaVeaJEZopojKPUE5C3Yzzynfp8sSu+LBvyhiNQjM21ZuncqLAUWJu1D1nqB1x
  252. // 2a6VyMFWmBAQR6xAUUECQQCtWt1SyZ3esJhR3rHwEVT0ehe7BXdOgDlW6ewQQRHS
  253. // TfLH084vLTXedozbsldqjTsFweJ4Fn/PRKw+w49Pdyll
  254. // -----END RSA PRIVATE KEY-----";
  255.         
  256. //             $signer = new \Swift_Signers_DKIMSigner($privateKey, 'knuckle.rocks', '1586365472.knuckle');
  257. //             $signer->ignoreHeader('Return-path');    
  258. //                 $mailer = \Swift_Mailer::newInstance($transport);
  259. //                 $content = \Swift_Message::newInstance('Confirmation de votre email')
  260. //                    ->setFrom(array('noreply@knuckle.rocks' => 'KNUCKLE ROCKS PROD - Noreply'))
  261. //                    ->setTo(array($email => $email))
  262. //                    ->setBody(
  263. //                      $this->renderView(
  264. //                         'FrontBundle:Email:generic.html.twig', array(
  265. //                                 'title'   => 'Nouveau message : Contact',
  266. //                                 'content' => 'Code de confirmation : <strong>test</strong>'
  267. //                             )
  268. //                      ),
  269. //                      'text/html'
  270. //                  );
  271. //                 $content->attachSigner($signer);
  272. //                 $result = $mailer->send($content);
  273. //                 //FIN ENVOI EMAIL
  274.         $data = [
  275.             'error'   => $error,
  276.             'success' => $success
  277.         ];
  278.         $response = new Response(json_encode($data));
  279.         $response->headers->set('Content-Type''application/json');
  280.         return $response;
  281.     }
  282.     function reCaptcha($token NULL){
  283.         try {
  284.             $url 'https://www.google.com/recaptcha/api/siteverify';
  285.             $data = ['secret'   => $this->params->get('app_recaptcha_secret'),
  286.             'response' => $token,
  287.             'remoteip' => $_SERVER['REMOTE_ADDR']];
  288.             $options = [
  289.                 'http' => [
  290.                     'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
  291.                     'method'  => 'POST',
  292.                     'content' => http_build_query($data)
  293.                 ]
  294.             ];
  295.             $context  stream_context_create($options);
  296.             $result file_get_contents($urlfalse$context);
  297.             $result json_decode($result);
  298.         // dump($result->score);exit;
  299. // return true;
  300.             if($result->success && $result->score >= 0.5){
  301.                 return true;
  302.             } else {
  303.                 return false;
  304.             }
  305.         }
  306.         catch (Exception $e) {
  307.             return null;
  308.         }
  309.     }
  310.     
  311. }