src/Controller/IndexController.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\Asset\PathPackage;
  7. use Symfony\Component\Asset\VersionStrategy\StaticVersionStrategy;
  8. use Uicms\App\Service\Model;
  9. use App\Service\MenuHelper;
  10. class IndexController extends AbstractController
  11. {
  12.     public function index(Model $modelRequest $requestMenuHelper $menu_helper$slug=''$action=''$locale='')
  13.     {
  14.         $version 'v3.0';
  15.         $this->get('session')->set('theme_path', new PathPackage('themes/app', new StaticVersionStrategy($version)));
  16.         $this->get('session')->set('js_path', new PathPackage('js', new StaticVersionStrategy($version)));
  17.         
  18.         if($locale && !preg_match("'^[a-z]{2}$'"$locale)) {
  19.             throw $this->createNotFoundException('This locale does not exist!');
  20.         }
  21.         
  22.         # UI Config
  23.         $ui_config $this->getParameter('ui_config');
  24.         $this->get('session')->set('ui_config'$ui_config);
  25.         
  26.         # Locale
  27.         $session $this->get('session');
  28.         $session->set('locale'$locale);
  29.         $request->setLocale($locale);
  30.         
  31.         # Current page
  32.         $repo $model->get('App\Entity\Page');
  33.         if(!$slug) {
  34.             $page $repo->getRow(array('dir'=>0));
  35.         } else {
  36.             $page $repo->getRow(array('findby'=>array('slug' => $slug)));
  37.         }
  38.         while($page->getIsDir()) {
  39.             if(!$page $repo->getRow(array('dir'=>$page->getId()))) {
  40.                 break;
  41.             }
  42.         }
  43.         if(!$page) {
  44.             throw $this->createNotFoundException('No data found for page '.$slug);
  45.         }
  46.         
  47.         # Current action
  48.         if(!$action) {
  49.             $action $page->getAction() ? $page->getAction() : 'index';
  50.         }
  51.         $session->set('controller_action'$action);
  52.         
  53.         # Menu
  54.         $menu $repo->getAll(array('dir'=>0'findby'=>array('menu'=>'menu')));
  55.         foreach($menu as $i=>$menu_page) {
  56.             $menu_page->helper_html $menu_helper->get($menu_page);
  57.             
  58.             if($menu_page->getIsdir()) {
  59.                 $menu_page->children $repo->getAll(array('dir'=>$menu_page->getId()));
  60.             } else {
  61.                 $menu_page->children = array();
  62.             }
  63.         }
  64.         $session->set('menu'$menu);
  65.         
  66.         $menu2 $repo->getAll(array('dir'=>0'findby'=>array('menu'=>'menu2')));
  67.         $session->set('menu2'$menu2);
  68.         
  69.         # Loading
  70.         $this->get('session')->set('loaded'false);
  71.         if(isset($_COOKIE['loaded']) && $_COOKIE['loaded']) {
  72.              $this->get('session')->set('loaded'true);
  73.         }
  74.         
  75.         # Attributes
  76.         $attributes array_merge($request->query->all(), $request->request->all(), $request->attributes->all(), array('page' => $page));
  77.         
  78.         if($projects_page $model->get('Page')->getRow(['findby'=>['controller'=>'projects']])) {
  79.             $this->get('session')->set('projects_page_slug'$projects_page->getSlug());
  80.         }
  81.         
  82.         # Forward to the correct controller
  83.         return $this->forward("App\\Controller\\" ucfirst($page->getController()) . "Controller::" $action$attributes);
  84.     }
  85. }