getDoctrine()->getManager(); if($by=="admin") { $datas = $em->getRepository($this->entity)->findAll(); return $this->render($this->render.'list.html.twig',[ $this->data."s" => $datas, "useheader" => true, "usesidebar" => true, ]); } else { $datas = $em->getRepository($this->entity)->findByUser($em->getRepository("App:User")->find($userid)); return $this->render($this->render.'listrender.html.twig',[ $this->data."s" => $datas, "by" => $by, "userid" => $userid, ]); } } public function listuser(Request $request) { $em = $this->getDoctrine()->getManager(); $datas = $em->getRepository($this->entity)->findByUser($this->getUser()); return $this->render($this->render.'listrender.html.twig',[ $this->data."s" => $datas, "by" => "profil", "userid" => $this->getUser()->getId(), ]); } public function submit($by, $userid, Request $request) { // Initialisation de l'enregistrement $em = $this->getDoctrine()->getManager(); $data = new Entity(); // Création du formulaire if($by=="admin"||$by=="update") { $form = $this->createForm(Form::class,$data,array("mode"=>"submit","by"=>$by,"user"=>$em->getRepository("App:User")->find($userid))); } else { $userid=$this->getUser()->getId(); $form = $this->createForm(Form::class,$data,array("mode"=>"submit","by"=>$by,"user"=>$this->getUser())); } // Récupération des data du formulaire $form->handleRequest($request); // Sur erreur $this->getErrorForm(null,$form,$request,$data,"submit"); // Sur validation if ($form->get('submit')->isClicked() && $form->isValid()) { $data = $form->getData(); $data->setSubmittime(new \DateTime()); $em->persist($data); $em->flush(); // Retour à la liste if($by=="admin") return $this->redirectToRoute($this->route,["by"=>$by,"userid"=>-1]); elseif($by=="update") return $this->redirectToRoute("app_user_update",["id"=>$data->getCategory()->getUser()->getId()]); elseif($by=="profil") return $this->redirectToRoute("app_user_profil"); else return $this->redirectToRoute("app_illustration_view",["by"=>"user","idcat"=>$data->getCategory()->getId(),"id"=>$data->getId()]); } // Affichage du formulaire return $this->render($this->render.'edit.html.twig', [ 'useheader' => true, 'usesidebar' => false, $this->data => $data, 'mode' => 'submit', 'form' => $form->createView(), 'by' => $by, 'userid' => $userid, ]); } public function update($id,$by,Request $request) { // Initialisation de l'enregistrement $em = $this->getDoctrine()->getManager(); $data=$em->getRepository($this->entity)->find($id); if($by!="admin"&&$by!="update") { if($this->getUser()!=$data->getCategory()->getUser()&&!$this->getUser()->hasRole("ROLE_ADMIN")) return $this->redirectToRoute("app_home"); } // Création du formulaire $form = $this->createForm(Form::class,$data,array("mode"=>"update","by"=>$by,"user"=>$this->getUser())); // Récupération des data du formulaire $form->handleRequest($request); // Sur erreur $this->getErrorForm($id,$form,$request,$data,"update"); // Sur validation if ($form->get('submit')->isClicked() && $form->isValid()) { $data = $form->getData(); $em->persist($data); $em->flush(); // Retour à l'illustration // Retour à la liste if($by=="admin") return $this->redirectToRoute($this->route,["by"=>$by,"userid"=>-1]); elseif($by=="update") return $this->redirectToRoute("app_user_update",["id"=>$data->getCategory()->getUser()->getId()]); elseif($by=="profil") return $this->redirectToRoute("app_user_profil"); elseif($by=="illustration") return $this->redirectToRoute("app_illustration_view",["by"=>"user","idcat"=>$data->getCategory()->getId(),"id"=>$data->getId()]); } // Affichage du formulaire return $this->render($this->render.'edit.html.twig', [ 'useheader' => true, 'usesidebar' => false, $this->data => $data, 'mode' => 'update', 'form' => $form->createView(), 'by' => $by, 'userid' => $data->getCategory()->getUser()->getId(), ]); } public function delete($id,$by,Request $request) { // Initialisation de l'enregistrement $em = $this->getDoctrine()->getManager(); $data=$em->getRepository($this->entity)->find($id); if($by!="admin"&&$by!="update") { if($this->getUser()!=$data->getCategory()->getUser()&&!$this->getUser()->hasRole("ROLE_ADMIN")) return $this->redirectToRoute("app_home"); } // Controle avant suppression $error=false; if($id<0) $error=true; if($error) return $this->redirectToRoute($this->route."_update",["id"=>$id]); else { $em->remove($data); $em->flush(); // Retour à la liste if($by=="admin") return $this->redirectToRoute($this->route,["by"=>$by,"userid"=>-1]); elseif($by=="update") return $this->redirectToRoute("app_user_update",["id"=>$data->getCategory()->getUser()->getId()]); elseif($by=="profil") return $this->redirectToRoute("app_user_profil"); elseif($by=="illustration") return $this->redirectToRoute("app_home_user",["userpseudo"=>$data->getCategory()->getUser()->getSlug()]); } } public function upload() { return $this->render($this->render.'upload.html.twig'); } public function view($idcat,$id,$by,Request $request) { $em = $this->getDoctrine()->getManager(); $data=$em->getRepository($this->entity)->find($id); $datanext=$this->getDataAllNext($idcat,$id); $dataprev=$this->getDataAllPrev($idcat,$id); $pathinfo=pathinfo($data->getIllustration()); if(!$data) return $this->redirectToRoute('app_home'); return $this->render($this->render.'view.html.twig', array( $this->data => $data, "prev" => $dataprev, "next" => $datanext, "pathinfo" => $pathinfo, "usemonocolor" => true, "by" => $by, )); } protected function getDataAllNext($idcat,$id) { $em = $this->getDoctrine()->getManager(); $data = $em->createQueryBuilder() ->select('e') ->from($this->entity, 'e') ->where('e.id>:id') ->andWhere('e.category=:idcat') ->getQuery() ->setParameter("id", $id) ->setParameter("idcat", $idcat) ->setMaxResults(1) ->getResult(); // Si pas de suivant on recherche le premier if(!$data) { $data = $em->createQueryBuilder() ->select('e') ->from($this->entity, 'e') ->Where('e.category=:idcat') ->getQuery() ->setParameter("idcat", $idcat) ->setMaxResults(1) ->getResult(); } return $data; } protected function getDataAllPrev($idcat,$id) { $em = $this->getDoctrine()->getManager(); $data = $em->createQueryBuilder() ->select('e') ->from($this->entity, 'e') ->where('e.id<:id') ->andWhere('e.category=:idcat') ->orderBy('e.id','DESC') ->getQuery() ->setParameter("id", $id) ->setParameter("idcat", $idcat) ->setMaxResults(1) ->getResult(); // Si pas de précedent on recherche le dernier if(!$data) { $data = $em->createQueryBuilder() ->select('e') ->from($this->entity, 'e') ->Where('e.category=:idcat') ->orderBy('e.id','DESC') ->getQuery() ->setParameter("idcat", $idcat) ->setMaxResults(1) ->getResult(); } return $data; } protected function getErrorForm($id,$form,$request,$data,$mode) { if ($form->get('submit')->isClicked()&&$mode=="delete") { } if ($form->get('submit')->isClicked() && $mode=="submit") { } if ($form->get('submit')->isClicked() && ($mode=="submit" || $mode=="update")) { } if ($form->get('submit')->isClicked() && !$form->isValid()) { $this->get('session')->getFlashBag()->clear(); $errors = $form->getErrors(); foreach( $errors as $error ) { $request->getSession()->getFlashBag()->add("error", $error->getMessage()); } } } }