src/Controller/Pages/PageController.php line 46

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Pages;
  3. use App\Controller\Objects\HomeFacebookItem;
  4. use App\Controller\Objects\Picture;
  5. use App\Kernel;
  6. use App\Controller\AbstractKasController;
  7. use App\Controller\AbstractKasModel;
  8. use App\Controller\Database;
  9. use App\Controller\PageInfo;
  10. use Symfony\Bundle\FrameworkBundle\Console\Application;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\Cache\Adapter\MemcachedAdapter;
  13. use Symfony\Component\Console\Input\ArrayInput;
  14. use Symfony\Component\Console\Output\BufferedOutput;
  15. use Symfony\Component\HttpFoundation\RequestStack;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use Symfony\VarDumper;
  19. use Doctrine\DBAL\ParameterType;
  20. class PageController extends AbstractKasController
  21. {
  22.     public function __construct(RequestStack $requestStackDatabase $dbPageInfo $pageInfo)
  23.     {
  24.         parent::__construct($requestStack$db$pageInfo);
  25.         $this->request $requestStack->getCurrentRequest();
  26.         $this->model = new PageModel($db);
  27.     }
  28.     /**
  29.      * @Route("/gdpr")
  30.      * @Route("/kariera")
  31.      * @Route("/poskytovani-informaci")
  32.      * @Route("/pro-media")
  33.      * @Route("/prodej")
  34.      * @Route("/pronajem")
  35.      * @Route("/verejne-souteze")
  36.      * @Route("/verejne-zakazky")
  37.      * @Route("/tiskove-zpravy")
  38.      * @Route("/ochrana-oznamovatelu")
  39.      * @return Response
  40.      * @throws \Facebook\Exceptions\FacebookSDKException
  41.      */
  42.     public function page(): Response
  43.     {
  44.         //$n = $this->pageInfo->getNavbar();
  45.         //dump($n);
  46.         $link $this->request->getRequestUri();
  47.         $arr explode('?'$link);
  48.         $link $arr[0];
  49.         //$objectinfo = $this->model->getObjectInfo($link);
  50.         $model = new HomeModel($this->db);
  51.         $top_events $model->getTopEvents();
  52.         $facebook_feed $model->getFacebookFeed();
  53.         //pokud nenalezeno, tak 404
  54.         /*if (!$objectinfo->isFound()) return $this->render('/pages/404.html.twig', [
  55.             'pageinfo' => $this->pageInfo
  56.         ]);*/
  57.         $page $this->model->getPageInfo($link);
  58.         $filename str_replace('/'''$link.'.html');
  59.         $filename str_replace('-''_'$filename);
  60.         $html $this->getHTML($filename);
  61.         return $this->render('/pages/page.html.twig', [
  62.             'pageinfo' => $this->pageInfo,
  63.             'page' => $page,
  64.             'top_events' => $top_events,
  65.             'facebook_feed' => $facebook_feed,
  66.             'html' => $html
  67.         ]);
  68.     }
  69.     /**
  70.      * @Route("/archiv")
  71.      * @return Response
  72.      * @throws \Facebook\Exceptions\FacebookSDKException
  73.      */
  74.     public function archiv(): Response
  75.     {
  76.         //$n = $this->pageInfo->getNavbar();
  77.         //dump($n);
  78.         $link $this->request->getRequestUri();
  79.         //$objectinfo = $this->model->getObjectInfo($link);
  80.         $model = new HomeModel($this->db);
  81.         $top_events $model->getTopEvents();
  82.         $facebook_feed $model->getFacebookFeed();
  83.         //pokud nenalezeno, tak 404
  84.         /*if (!$objectinfo->isFound()) return $this->render('/pages/404.html.twig', [
  85.             'pageinfo' => $this->pageInfo
  86.         ]);*/
  87.         $page $this->model->getPageInfo($link);
  88.         $filename str_replace('/'''$link.'.html');
  89.         $filename str_replace('-''_'$filename);
  90.         $html $this->getHTML($filename);
  91.         return $this->render('/pages/archive.html.twig', [
  92.             'pageinfo' => $this->pageInfo,
  93.             'page' => $page,
  94.             'top_events' => $top_events,
  95.             'facebook_feed' => $facebook_feed,
  96.             'html' => $html
  97.         ]);
  98.     }
  99.     private function getHTML(string $filename): string {
  100.         $file getenv('APP_DIR').'private/data/files/www_html/'.$filename;
  101.         if (file_exists($file)) {
  102.             return file_get_contents($file);
  103.         }
  104.         return '';
  105.     }
  106.     /**
  107.      * @Route("/vyhledat", methods={"GET"})
  108.      * @return Response
  109.      * @throws \Facebook\Exceptions\FacebookSDKException
  110.      */
  111.     public function search(): Response
  112.     {
  113.         //$n = $this->pageInfo->getNavbar();
  114.         //dump($n);
  115.         $q trim($this->request->query->get('q'''));
  116.         $model = new HomeModel($this->db);
  117.         $top_events $model->getTopEvents();
  118.         $facebook_feed $model->getFacebookFeed();
  119.         //pokud nenalezeno, tak 404
  120.         /*if (!$objectinfo->isFound()) return $this->render('/pages/404.html.twig', [
  121.             'pageinfo' => $this->pageInfo
  122.         ]);*/
  123.         $page $this->model->getPageInfo('/poskytovani-informaci');
  124.         $page->setTitle('Vyhledávání');
  125.         $data $this->model->search($q);
  126.         return $this->render('/pages/search.html.twig', [
  127.             'q' => $q,
  128.             'data' => $data,
  129.             'pageinfo' => $this->pageInfo,
  130.             'page' => $page,
  131.             'top_events' => $top_events,
  132.             'facebook_feed' => $facebook_feed
  133.         ]);
  134.     }
  135.     /**
  136.      * @Route("/{route}", methods={"GET"}, requirements={"route"=".+"}, priority=-100)
  137.      */
  138.     public function hoplinks(string $route): Response
  139.     {
  140.         //memcache
  141.         $client MemcachedAdapter::createConnection(getenv('MC_SRV'));
  142.         $cache  = new MemcachedAdapter($client'hoplinks');
  143.         $item   $cache->getItem('cache_hoplinks');
  144.         if (!$item->isHit()) {
  145.             $data $this->model->getHoplinks();
  146.             $item->set($data)
  147.                  ->expiresAfter(60); // in seconds
  148.             $cache->save($item);
  149.         } else {
  150.             $data $item->get();
  151.         }
  152.         if (count($data)>0) {
  153.             foreach ($data as $key => $val) {
  154.                 if ($key == $route) {
  155.                     return $this->redirect($val);
  156.                 }
  157.             }
  158.         }
  159.         throw $this->createNotFoundException();
  160.     }
  161. }