src/Controller/ImmemoryController.php line 393

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Accueil;
  4. use App\Entity\User;
  5. use UserEntity\Stacks;
  6. use App\Entity\StackTransit;
  7. use App\Entity\StackZones;
  8. use App\Entity\StackCategories;
  9. use App\Entity\StackSequences;
  10. use App\Entity\StackTimer;
  11. use App\Entity\Commentaires;
  12. use App\Entity\Statistiques;
  13. use App\Repository\AccueilRepository;
  14. use App\Repository\UserRepository;
  15. use App\Repository\StacksRepository;
  16. use App\Repository\StackTransitRepository;
  17. use App\Repository\StackZonesRepository;
  18. use App\Repository\StackCategoriesRepository;
  19. use App\Repository\StackSequencesRepository;
  20. use App\Repository\StackTimerRepository;
  21. use App\Repository\CommentairesRepository;
  22. use App\Repository\StatistiquesRepository;
  23. use App\Form\AccueilType;
  24. use App\Form\StackTimerType;
  25. use App\Form\StacksType;
  26. use App\Form\StacksEditType;
  27. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  28. use Symfony\Component\HttpFoundation\Request;
  29. use Symfony\Component\HttpFoundation\Response;
  30. use Symfony\Component\Routing\Annotation\Route;
  31. use Symfony\Component\Mailer\MailerInterface;
  32. use Symfony\Component\Mime\Email;
  33. use Symfony\Component\Mime\Address;
  34. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  35. use Symfony\Component\HttpFoundation\RedirectResponse;
  36. use Doctrine\ORM\EntityManagerInterface;
  37. use Symfony\Component\String\Slugger\SluggerInterface;
  38. use Symfony\Component\Security\Core\Security;
  39. use Doctrine\Common\Collections\ArrayCollection;
  40. class ImmemoryController extends AbstractController
  41. {
  42.   public $parPage 5;
  43.   private $stacksRepo;
  44.   public function __construct(StatistiquesRepository $statRepoCommentairesRepository $commRepStackCategoriesRepository $catRepStackSequencesRepository $seqRepStackZonesRepository $stackZoneRepoStacksRepository $stacksRepoAccueilRepository $accRepoSluggerInterface $sluggerEntityManagerInterface $em)
  45.   {
  46.     $this->statRepo $statRepo;
  47.     $this->commRep $commRep;
  48.     $this->catRep $catRep;
  49.     $this->seqRep $seqRep;
  50.     $this->stackZoneRepo $stackZoneRepo;
  51.     $this->stacksRepo $stacksRepo;
  52.     $this->accRepo $accRepo;
  53.     $this->slugger $slugger;
  54.     $this->em $em;
  55.   }
  56.   /**
  57.    * @Route("/", name="immemory_index")
  58.    */
  59.   public function index(): Response
  60.   {
  61.     //dump(phpinfo());
  62.       return $this->render('immemory/index.html.twig', [
  63.         'controller_name' => 'immemory_index',
  64.         'projet' => 1,
  65.         'accueil' => $this->accRepo->find(1),
  66.       ]);
  67.   }
  68.   // -------------------------------- tableau de bord
  69.   /**
  70.    * @Route("/visiteur/", name="visiteur_index")
  71.    */
  72.   public function indexM(): Response
  73.   {
  74.       return $this->render('content/membre/membre.html.twig', [
  75.       //return $this->render('membre/index.html.twig', [
  76.           'controller_name' => 'visiteur_index',
  77.       ]);
  78.   }
  79.   /**
  80.   * @Route("/visiteur/listeCards", name="visiteur_stacks_index")
  81.   */
  82.   public function visiteur_stacks_index(Request $requestSecurity $security): Response
  83.   {
  84.     // recupère le user
  85.     $user $this->get('security.token_storage')->getToken()->getUser();
  86.     // recupere les categories
  87.     $categories $this->catRep->findAll();
  88.     $sequences $this->seqRep->findAllOrder();
  89.     if ( is_object($user) ){
  90.       if ( $user->getRoles()[0] == "ROLE_USER" ){
  91.         $immemory $this->stacksRepo->listeMembre("Duplication");
  92.       }
  93.       else {
  94.         $immemory $this->stacksRepo->findAll();
  95.       }
  96.     }
  97.     else {
  98.       $immemory $this->stacksRepo->listeMembre("Duplication");
  99.     }
  100.     // gestion des pages
  101.     $parPage $this->parPage;
  102.     $pages ceil(count($immemory)/$this->parPage);
  103.     $pageTemp $request->request->get("page");
  104.     if(!isset($pageTemp)){
  105.       $page $request->query->get("page");
  106.     } else {
  107.       $page $pageTemp;
  108.     }
  109.     if(isset($page)) {
  110.       $page $page;
  111.     } else {
  112.       $page 1;
  113.     }
  114.     // gestion de la liste
  115.     if ( is_object($user) ){
  116.       if ( $user->getRoles()[0] == "ROLE_USER" ){
  117.         $stacks $this->stacksRepo->listeMembreUser((($page-1)*$parPage));
  118.       }
  119.       else{
  120.         $stacks $this->stacksRepo->pageResultImmemory((($page-1)*$parPage));
  121.       }
  122.     } else {
  123.       $stacks $this->stacksRepo->listeMembreUser((($page-1)*$parPage));
  124.     }
  125.     return $this->render('content/structure/index.html.twig', [
  126.       'controller_name' => 'webSite_stacks_index',
  127.       'immemory' => $immemory,
  128.       'categories' => $categories,
  129.       'sequences' => $sequences,
  130.       'pages' => $pages,
  131.       'currentPage' => $page,
  132.       'path' => $page,
  133.       'stacks' => $stacks,
  134.       'recherche' => '0',
  135.     ]);
  136.   }
  137.   /**
  138.   * @Route("/visiteur/listeCards/{seq}/page/{page}", name="visiteur_stacks_sequence")
  139.   */
  140.   public function visiteur_stacks_sequence(Request $request$seq$pageSecurity $security): Response
  141.   {
  142.     // recupère le user
  143.     $user $this->get('security.token_storage')->getToken()->getUser();
  144.     // recupere les categories
  145.     $categories $this->catRep->findAll();
  146.     $sequences $this->seqRep->findAll();
  147.     if (isset($seq))
  148.     {
  149.       $idSeq $this->seqRep->findName($seq);
  150.       $stacks $this->stacksRepo->findListSeq($idSeq[0]->getId(), 0);
  151.     }
  152.     $parPage $this->parPage;
  153.     $pages ceil(count($stacks)/$parPage);
  154.     // recup requete
  155.     if($page 0)
  156.     {
  157.       $pageAct = ($page*$this->parPage) - $this->parPage;
  158.     }
  159.     else
  160.     {
  161.       $pageAct 0;
  162.     }
  163.     // gestion de la liste
  164.     if ( is_object($user) ){
  165.       if ( $user->getRoles()[0] == "ROLE_USER" ){
  166.         $stacks $this->stacksRepo->membrefindListSeq($idSeq[0]->getId(), (($page-1)*$parPage));
  167.       }
  168.       else{
  169.         $stacks $this->stacksRepo->findListSeq($idSeq[0]->getId(), $pageAct);
  170.       }
  171.     } else {
  172.       $stacks $this->stacksRepo->membrefindListSeq($idSeq[0]->getId(), (($page-1)*$parPage));
  173.     }
  174.     return $this->render('content/structure/index.html.twig', [
  175.       'controller_name' => 'webSite_stacks_sequence',
  176.       'immemory' => $stacks,
  177.       'categories' => $categories,
  178.       'sequences' => $sequences,
  179.       'pages' => $pages,
  180.       'currentPage' => $page,
  181.       'seq' => $seq,
  182.       'stacks' => $stacks,
  183.       'index' => $seq,
  184.       'recherche' => '0',
  185.     ]);
  186.   }
  187.   /**
  188.   * @Route("/visiteur/listeCards/page/{page}", name="visiteur_stacks_structure_page")
  189.   */
  190.   public function visiteur_stacks_structure_page(Request $request$pageSecurity $security): Response
  191.   {
  192.     // recupère le user
  193.     $user $this->get('security.token_storage')->getToken()->getUser();
  194.     // recupere les categories
  195.     $categories $this->catRep->findAll();
  196.     $sequences $this->seqRep->findAllOrder();
  197.     if ( is_object($user) ){
  198.       if ( $user->getRoles()[0] == "ROLE_USER" ){
  199.         $immemory $this->stacksRepo->listeMembre("Duplication");
  200.       }
  201.       else {
  202.         $immemory $this->stacksRepo->findAll();
  203.       }
  204.     } else {
  205.       $immemory $this->stacksRepo->listeMembre("Duplication");
  206.     }
  207.     // gestion des pages
  208.     $parPage $this->parPage;
  209.     $pages ceil(count($immemory)/$parPage);
  210.     // recup requete
  211.     if($page 0) {
  212.       $pageAct = ($page*$this->parPage)-$this->parPage;
  213.     } else {
  214.       $pageAct 0;
  215.     }
  216.     // gestion de la liste
  217.     if ( is_object($user) ){
  218.       if ( $user->getRoles()[0] == "ROLE_USER" ){
  219.         $stacks $this->stacksRepo->membrePageResultImmemory($pageAct);
  220.       }
  221.       else{
  222.         $stacks $this->stacksRepo->pageResultImmemory($pageAct);
  223.       }
  224.     } else {
  225.       $stacks $this->stacksRepo->membrePageResultImmemory($pageAct);
  226.     }
  227.     return $this->render('content/structure/index.html.twig', [
  228.       'controller_name' => "webSite_stacks_structure_page",
  229.       'immemory' => $immemory,
  230.       'categories' => $categories,
  231.       'sequences' => $sequences,
  232.       'pages' => $pages,
  233.       'currentPage' => $page,
  234.       'path' => "webSite_stacks_structure_page",
  235.       'stacks' => $stacks,
  236.       'recherche' => '0',
  237.     ]);
  238.   }
  239.   /**
  240.   * @Route("/visiteur/listeCards/recherche/{page}/{search}", name="visiteur_stacks_sequence_recherche")
  241.   */
  242.   public function visiteur_stacks_sequence_recherche(Request $request$page$search): Response
  243.   {
  244.     $url $this->get('session')->get('test');
  245.     // recup requete
  246.     $recherche $search;
  247.     if ($recherche == "0"){
  248.       $search $request->request->get("recherche");
  249.     } else {
  250.       $search $recherche;
  251.     }
  252.     //dump($search);
  253.     // recupere les categories
  254.     $categories $this->catRep->findAll();
  255.     $sequences $this->seqRep->findAll();
  256.     $stacks $this->stacksRepo->findAll();
  257.     // va chercher les resultats dans cat seq et cards
  258.     $resultCat $this->catRep->searchCat($search);
  259.     // si resultat dans seq
  260.     if ( $resultCat  ) {
  261.       // stocke les id seq dans le tableau
  262.       $arrCat = [];
  263.       for ($i=0$i<count($resultCat); $i++)
  264.       {
  265.         array_push($arrCat$resultCat[$i]->getId());
  266.       }
  267.     }
  268.     // recup les resultats des seq
  269.     $resultSeq $this->seqRep->findName($search);
  270.     // si resultat dans seq
  271.     if ( $resultSeq  ) {
  272.       // stocke les id seq dans le tableau
  273.       $arrSeq = [];
  274.       for ($i=0$i<count($resultSeq); $i++)
  275.       {
  276.         array_push($arrSeq$resultSeq[$i]->getId());
  277.       }
  278.     }
  279.     // recup les resultats dans les cards
  280.     if ( count($resultCat) > && count($resultSeq) > ){
  281.       $result $this->stacksRepo->findListSearchPCatSeq($search$resultCat$resultSeq);
  282.     }
  283.     else if ( count($resultCat) > && count($resultSeq) == ){
  284.       $result $this->stacksRepo->findListSearchPCat($search$resultCat);
  285.     }
  286.     else if ( count($resultSeq) > 0  ){
  287.       $result $this->stacksRepo->findListSearchPSeq($search$resultSeq);
  288.     }
  289.     else {
  290.       $result $this->stacksRepo->findListSearch($search);
  291.     }
  292.     $pages ceil(count($result)/$this->parPage);
  293.     if(!isset($page)){ $page 1; }
  294.     // recup requete
  295.     if($page 0)
  296.     {
  297.       $pageAct = ($page*$this->parPage)-$this->parPage;
  298.     }
  299.     else
  300.     {
  301.       $pageAct 0;
  302.     }
  303.     return $this->render('content/structure/index.html.twig', [
  304.     'controller_name' => "webSite_stacks_sequence_recherche",
  305.     'categories' => $categories,
  306.     'sequences' => $sequences,
  307.     'stacks' => $result,
  308.     'immemory' => $result,
  309.     'pages' => $pages,
  310.     'currentPage' => $page,
  311.     'search' => $search,
  312.     'seq' => "recherche",
  313.     'search' => $search,
  314.     'recherche' => $recherche,
  315.     ]);
  316.   }
  317.   /**
  318.   * @Route("/visiteur/listeCards/{id}_{recherche}", name="visiteur_stacks_show", methods={"GET"})
  319.   */
  320.   public function visiteur_stacks_show($id$recherche): Response
  321.   {
  322.     $stack $this->stacksRepo->find($id);
  323.     $url $this->get('session')->get('test');
  324.     if ( $stack->getNavH() !== null ){
  325.       $stackH $this->stacksRepo->find($stack->getNavH());
  326.     }
  327.     else{
  328.       $stackH 0;
  329.     }
  330.     if ( $stack->getNavG() !== null ){
  331.       $stackG $this->stacksRepo->find($stack->getNavG());
  332.     }
  333.     else{
  334.       $stackG 0;
  335.     }
  336.     if ( $stack->getNavD() !== null ){
  337.       $stackD $this->stacksRepo->find($stack->getNavD());
  338.     }
  339.     else{
  340.       $stackD 0;
  341.     }
  342.     if ( $stack->getNavBG() !== null ){
  343.       $stackBG $this->stacksRepo->find($stack->getNavBG());
  344.     }
  345.     else{
  346.       $stackBG 0;
  347.     }
  348.     if ( count($stack->getTimers()) > 0){
  349.       $stackTimer $this->stacksRepo->find($stack->getTimers()[0]->getId());
  350.     }
  351.     else{
  352.       $stackTimer $stackH;
  353.     }
  354.     $stackZones = [];
  355.     if ( count($stack->getZones()) > 0){
  356.       for ($i=0$i<count($stack->getZones()); $i++){
  357.         if ($stack->getZones()[$i]->getRollover() != null){
  358.           $stackZones[] = $this->stacksRepo->find($stack->getZones()[$i]->getRollover());
  359.         }
  360.         else{
  361.           $stackZones[] = $this->stacksRepo->find($stack->getZones()[$i]->getDestination());
  362.         }
  363.       }
  364.     }
  365.     else{
  366.       $stackZones $stackH;
  367.     }
  368.     return $this->render('content/structure/show.html.twig', [
  369.     'controller_name' => 'webSite_stacks_show',
  370.     'stack' => $stack,
  371.     'urlBack' => $url,
  372.     'recherche' => $recherche,
  373.     'stackH' => $stackH,
  374.     'stackG' => $stackG,
  375.     'stackD' => $stackD,
  376.     'stackBG' => $stackBG,
  377.     'stackTimer' => $stackTimer,
  378.     'stackZones' => $stackZones,
  379.     ]);
  380.   }
  381.   // -------------------------------- projo900bif
  382.   public function mouche($action$id)
  383.   {
  384.     $stat = new Statistiques();
  385.     $macard $this->stacksRepo->find($id);
  386.     $stat->setIp($_SERVER['REMOTE_ADDR']);
  387.     $stat->setOs($_SERVER['HTTP_USER_AGENT']);
  388.     $stat->setAction($action);
  389.     $stat->setCard($macard);
  390.     $stat->setDateCrea(new \DateTime());
  391.     $this->em->persist($stat);
  392.     $this->em->flush();
  393.   }
  394. }