src/Controller/IndexController.php line 20

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