src/Controller/Services3DController.php line 36

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Doctrine\Persistence\ManagerRegistry;
  4. use Symfony\Component\HttpKernel\KernelInterface;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Contracts\Translation\TranslatorInterface;
  10. use App\Entity\Gallery3D;
  11. use App\Entity\GalleryItem;
  12. use App\Entity\User;
  13. use App\Entity\Service;
  14. use App\Entity\ServiceExample;
  15. use Twig\Environment;
  16. class Services3DController extends DefaultController
  17. {
  18.     protected ManagerRegistry $doctrine;
  19.     protected TranslatorInterface $translator;
  20.     protected Environment $twig;
  21.     public function __construct(ManagerRegistry $doctrine,
  22.                                 TranslatorInterface $translator,
  23.                                 Environment $twig)
  24.     {
  25.         $this->doctrine $doctrine;
  26.         $this->translator $translator;
  27.         $this->twig $twig;
  28.     }
  29.     /**
  30.      * @Route("/services3d", name="services3d")
  31.      */
  32.     public function indexAction(Request $request)
  33.     {
  34.         /* we load session data */
  35.         parent::init($request);
  36.         $session $request->getSession();
  37.         /* we load entity managers */
  38.         $em $this->doctrine->getManager();
  39.         $dem $this->doctrine->getManager('dynamic_em');
  40.         /* we load list of modules for 3D service */
  41.         $service $em->getRepository(Service::class)->getService(5);
  42.         // we get demo user
  43.         $demoUserDirs null;
  44.         $demoUser $em->getRepository(User::class)->getUserFromUsername('demo');
  45.         if (!empty($demoUser)) {
  46.             $demoUserDirs $this->getUserFolderPathsFromUserId($demoUser->getUserId());
  47.         }
  48.         $gallery3D $dem->getRepository(Gallery3D::class)->getGallery3D(2);
  49.         // we get parent gallery items
  50.         $galleryItemCollection null;
  51.         if(!empty($gallery3D) && !empty($gallery3D->getGallery())) {
  52.             $galId $gallery3D->getGallery()->getGalleryId();
  53.             $galleryItemCollection $dem->getRepository(GalleryItem::class)->getGalleryItemList($galId);
  54.         }
  55.         // we get 3D template
  56.         if(!empty($gallery3D) && !empty($gallery3D->getTemplate3DPath())) {
  57.             $template3D "gallery3D/".$gallery3D->getTemplate3DPath();
  58.         } else {       
  59.             $template3D "gallery3D/gallery3D.html.php";
  60.         }
  61.         //adds php functions to twig environment
  62.         $this->twig->addFunction(new \Twig\TwigFunction('deg2rad''deg2rad'));
  63.         $this->twig->addFunction(new \Twig\TwigFunction('sin''sin'));
  64.         $this->twig->addFunction(new \Twig\TwigFunction('imagecreatefromstring''imagecreatefromstring'));
  65.         $this->twig->addFunction(new \Twig\TwigFunction('file_get_contents''file_get_contents'));
  66.         $this->twig->addFunction(new \Twig\TwigFunction('ImageSX''ImageSX'));
  67.         $this->twig->addFunction(new \Twig\TwigFunction('ImageSY''ImageSY'));
  68.         /* we load examples */
  69.         $exampleCollection $em->getRepository(ServiceExample::class)->getServiceExampleListByService(53);
  70.         shuffle($exampleCollection);         
  71.         //print('<br>template3D: '.$template3D); 
  72.         /* we render data */
  73.         return $this->render('services3d.html.twig',
  74.             array('headerData' => $this -> getPageHeader($request),
  75.                   'moduleList' => $service->getModules(),
  76.                   'exampleCollection' => $exampleCollection,
  77.                   'gallery3D' => $gallery3D,
  78.                   'galleryItemCollection' => $galleryItemCollection
  79.                   'template3D' => $template3D,
  80.                   'templateInline' => true,
  81.                   'user' => $demoUser,
  82.                   'userDirs' => $demoUserDirs,
  83.                   'service' => $service
  84.                 )
  85.         );        
  86.     }
  87.     /**
  88.      * @Route("/services3dAdmin", name="services3dAdmin")
  89.      */
  90.     public function services3dAdminAction(Request $request)
  91.     {
  92.         /* we load session data */
  93.         parent::init($request);
  94.         
  95.         $session $request->getSession();
  96.         // we check if any user is logged in
  97.         if(!$this->isLoggedUser($request)) {
  98.             return $this->redirectToRoute('login');
  99.         }          
  100.         /* we load entity managers */
  101.         $em $this->doctrine->getManager();
  102.         $dem $this->doctrine->getManager('dynamic_em');
  103.          
  104.         /* we get current user */
  105.         $currentUserId $session->get('user')->getUserId();
  106.         $user $em->getRepository(User::class)->getUser($currentUserId);
  107.          
  108.         /* we load service to get list of modules */
  109.         $service $em->getRepository(Service::class)->getService(5);
  110.         
  111.         if(!empty($request->query->get('REST'))) {
  112.             return new JsonResponse(array('headerData' => $this -> getPageHeader($request),
  113.                       'menu' => $this -> adminMenu($request),
  114.                 ));
  115.         } else {
  116.         /* we render template */
  117.             return $this->render('services3dAdmin.html.twig',
  118.                 array('headerData' => $this -> getPageHeader($request),
  119.                       'moduleList' => $service->getModules(),
  120.                       'userModuleList' => $user->getModules(),                      
  121.                       'menu' => $this -> adminMenu($request),
  122.                       'mainMenu' => $this -> adminMainMenu($request),
  123.                       'user' => $user,
  124.                 )
  125.                 );            
  126.         }
  127.     }  
  128.     /**
  129.      * @Route("/example3d", name="example3d")
  130.      */
  131.     public function example3dAction(Request $request)
  132.     {
  133.         /* we load session data */
  134.         parent::init($request);
  135.         $session $request->getSession();
  136.         /* we load entity managers */
  137.         $em $this->doctrine->getManager();
  138.         if(!empty($request->query->get('eid'))) {   
  139.             //print('<br>qqw read eid'.$request->query->get('eid'));
  140.             /* we load service to get list of modules */
  141.             $example $em->getRepository(ServiceExample::class)->getServiceExample($request->query->get('eid'));
  142.         }       
  143.         /* we render data */
  144.         return $this->render('example3d.html.php',
  145.             array('headerData' => $this -> getPageHeader($request),
  146.                   'example' => $example,
  147.                 )
  148.         );        
  149.     }    
  150.     public function adminMenu(Request $request)
  151.     {
  152.         $menuItems = array(=> array('link' => 'homeuser''langKey' => 'user.admin''routeName' => 'homeuser'),
  153.         => array('link' => 'services3dAdmin''langKey' => 'service.services3d''routeName' => 'services3dAdmin'),
  154.         );
  155.     
  156.         return $menuItems;
  157.     
  158.     }        
  159. }