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.         $demoUser $em->getRepository(User::class)->getUser(95);
  44.         $demoUserDirs $this->getUserFolderPathsFromUserId($demoUser->getUserId());
  45.         $gallery3D $dem->getRepository(Gallery3D::class)->getGallery3D(2);
  46.         // we get parent gallery items
  47.         $galleryItemCollection null;
  48.         if(!empty($gallery3D->getGallery())) {
  49.             $galId $gallery3D->getGallery()->getGalleryId();
  50.             $galleryItemCollection $dem->getRepository(GalleryItem::class)->getGalleryItemList($galId);
  51.         }
  52.         // we get 3D template
  53.         if(!empty($gallery3D->getTemplate3DPath())) {
  54.             $template3D "gallery3D/".$gallery3D->getTemplate3DPath();
  55.         } else {       
  56.             $template3D "gallery3D/gallery3D.html.php";
  57.         }
  58.         //adds php functions to twig environment
  59.         $this->twig->addFunction(new \Twig\TwigFunction('deg2rad''deg2rad'));
  60.         $this->twig->addFunction(new \Twig\TwigFunction('sin''sin'));
  61.         $this->twig->addFunction(new \Twig\TwigFunction('imagecreatefromstring''imagecreatefromstring'));
  62.         $this->twig->addFunction(new \Twig\TwigFunction('file_get_contents''file_get_contents'));
  63.         $this->twig->addFunction(new \Twig\TwigFunction('ImageSX''ImageSX'));
  64.         $this->twig->addFunction(new \Twig\TwigFunction('ImageSY''ImageSY'));
  65.         /* we load examples */
  66.         $exampleCollection $em->getRepository(ServiceExample::class)->getServiceExampleListByService(53);
  67.         shuffle($exampleCollection);         
  68.         //print('<br>template3D: '.$template3D); 
  69.         /* we render data */
  70.         return $this->render('services3d.html.twig',
  71.             array('headerData' => $this -> getPageHeader($request),
  72.                   'moduleList' => $service->getModules(),
  73.                   'exampleCollection' => $exampleCollection,
  74.                   'gallery3D' => $gallery3D,
  75.                   'galleryItemCollection' => $galleryItemCollection
  76.                   'template3D' => $template3D,
  77.                   'templateInline' => true,
  78.                   'user' => $demoUser,
  79.                   'userDirs' => $demoUserDirs,
  80.                   'service' => $service
  81.                 )
  82.         );        
  83.     }
  84.     /**
  85.      * @Route("/services3dAdmin", name="services3dAdmin")
  86.      */
  87.     public function services3dAdminAction(Request $request)
  88.     {
  89.         /* we load session data */
  90.         parent::init($request);
  91.         
  92.         $session $request->getSession();
  93.         // we check if any user is logged in
  94.         if(!$this->isLoggedUser($request)) {
  95.             return $this->redirectToRoute('login');
  96.         }          
  97.         /* we load entity managers */
  98.         $em $this->doctrine->getManager();
  99.         $dem $this->doctrine->getManager('dynamic_em');
  100.          
  101.         /* we get current user */
  102.         $currentUserId $session->get('user')->getUserId();
  103.         $user $em->getRepository(User::class)->getUser($currentUserId);
  104.          
  105.         /* we load service to get list of modules */
  106.         $service $em->getRepository(Service::class)->getService(5);
  107.         
  108.         if(!empty($request->query->get('REST'))) {
  109.             return new JsonResponse(array('headerData' => $this -> getPageHeader($request),
  110.                       'menu' => $this -> adminMenu($request),
  111.                 ));
  112.         } else {
  113.         /* we render template */
  114.             return $this->render('services3dAdmin.html.twig',
  115.                 array('headerData' => $this -> getPageHeader($request),
  116.                       'moduleList' => $service->getModules(),
  117.                       'userModuleList' => $user->getModules(),                      
  118.                       'menu' => $this -> adminMenu($request),
  119.                       'mainMenu' => $this -> adminMainMenu($request),
  120.                       'user' => $user,
  121.                 )
  122.                 );            
  123.         }
  124.     }  
  125.     /**
  126.      * @Route("/example3d", name="example3d")
  127.      */
  128.     public function example3dAction(Request $request)
  129.     {
  130.         /* we load session data */
  131.         parent::init($request);
  132.         $session $request->getSession();
  133.         /* we load entity managers */
  134.         $em $this->doctrine->getManager();
  135.         if(!empty($request->query->get('eid'))) {   
  136.             //print('<br>qqw read eid'.$request->query->get('eid'));
  137.             /* we load service to get list of modules */
  138.             $example $em->getRepository(ServiceExample::class)->getServiceExample($request->query->get('eid'));
  139.         }       
  140.         /* we render data */
  141.         return $this->render('example3d.html.php',
  142.             array('headerData' => $this -> getPageHeader($request),
  143.                   'example' => $example,
  144.                 )
  145.         );        
  146.     }    
  147.     public function adminMenu(Request $request)
  148.     {
  149.         $menuItems = array(=> array('link' => 'homeuser''langKey' => 'user.admin''routeName' => 'homeuser'),
  150.         => array('link' => 'services3dAdmin''langKey' => 'service.services3d''routeName' => 'services3dAdmin'),
  151.         );
  152.     
  153.         return $menuItems;
  154.     
  155.     }        
  156. }