render($this->labelentity.':list.html.twig',[ 'useheader' => true, 'usemenu' => false, 'usesidebar' => true, ]); } public function ajaxlistAction(Request $request,$access="config") { // S'assurer que c'est un appel ajax /* if (!$request->isXmlHttpRequest()) { return new JsonResponse(array('message' => 'Interdit'), 400); } */ $em = $this->getDoctrine()->getManager(); $start=$request->query->get('start'); $length= $request->query->get('length'); $search= $request->query->get('search'); $draw= $request->query->get('draw'); $order= $request->query->get('order'); $alluser= $request->query->get('alluser'); // Query de base $qbase=$em->createQueryBuilder()->from($this->labelentity,'table'); $qsearch=$em->createQueryBuilder()->from($this->labelentity,'table'); if($alluser=="false") { $qbase->where("table.user is null"); $qsearch->where("table.user is null"); } else { $qbase->from('CadolesCoreBundle:User','user') ->where("table.user=user"); $qsearch->from('CadolesCoreBundle:User','user') ->where("table.user=user"); } if($alluser=="false") $qsearch->andwhere('table.id LIKE :value OR table.name LIKE :value'); else $qsearch->andWhere('table.id LIKE :value OR table.name LIKE :value OR user.username LIKE :value') ; $qsearch->setParameter("value", "%".$search["value"]."%"); // Nombre total d'enregistrement $total = $qbase->select('COUNT(table)')->getQuery()->getSingleScalarResult(); // Nombre d'enregistrement filtré if($search["value"]=="") $totalf = $total; else { $totalf= $qsearch->select('COUNT(table)')->getQuery()->getSingleScalarResult(); } // Parcours des Enregistrement if($search["value"]=="") $qb = $qbase->select('table'); else $qb = $qsearch->select('table'); // Order switch($order[0]["column"]) { case 1 : $qb->orderBy('table.name',$order[0]["dir"]); break; case 2 : if($alluser=="true") $qb->orderBy('user.username',$order[0]["dir"]); break; } // Execution de la requete d'affichage $datas=$qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); //dump($qsearch->getQuery()->getSql()); // Construction du tableau de retour $output = array( 'draw' => $draw, 'recordsFiltered' => $totalf, 'recordsTotal' => $total, 'data' => array(), ); foreach($datas as $data) { $route=str_replace("_config_","_".$access."_",$this->routeprimary); $action = ""; $action.="$data->getId()))."' data-method='delete'>"; $action.="$data->getId()))."'>"; $user=""; if($data->getUser()) { $user.="getUser()->getAvatar()."' class='avatar' style='margin:0px 5px 0px 0px;display:inline-block;'>"; $user.=$data->getUser()->getUsername(); } array_push($output["data"],array($action,$data->getName(),$user)); } // Retour return new Response(json_encode($output), 200); } private function entityForm(Blog $entity,$access="config") { $route=str_replace("_config_","_".$access."_",$this->routeprimary); if ($this->getDoctrine()->getManager()->contains($entity)) { return $this->createForm(BlogType::class, $entity, [ "mode" => "update", "access" => $access ]); } else { return $this->createForm(BlogType::class, $entity, [ "mode" => "submit", "access" => $access ]); } } public function submitAction(Request $request,$access="config") { $entity = new Blog(); $form = $this->entityForm($entity,$access); $form->handleRequest($request); if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); if($access=="user") $entity->setUser($this->getUser()); $em->persist($entity); $em->flush(); return $this->redirect($this->generateUrl('cadoles_portal_'.$access.'_blog_view',["id"=>$entity->getId()])); } return $this->render($this->labelentity.':edit.html.twig', [ 'useheader' => ($access=="config"), 'usemenu' => false, 'usesidebar' => ($access=="config"), 'maxwidth' => ($access=="user"), 'entity' => $entity, 'mode' => "submit", 'access' => $access, 'form' => $form->createView() ]); } public function updateAction(Request $request, $id,$access="config") { $em = $this->getDoctrine()->getManager(); $entity = $em->getRepository($this->labelentity)->find($id); if (!$entity) throw $this->createNotFoundException('Unable to find entity.'); // On s'assure que l'utilisateur à la permission de modifier if($access=="user") { $em->getRepository($this->labelentity)->getPermission($this->getUser(),$entity,$cansee,$canupdate,$canadd); if(!$canupdate) throw $this->createNotFoundException('Permission denied'); } // Création du formulaire $form = $this->entityForm($entity,$access); $form->handleRequest($request); if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($entity); $em->flush(); return $this->redirect($this->generateUrl('cadoles_portal_'.$access.'_blog_view',["id"=>$entity->getId()])); } return $this->render($this->labelentity.':edit.html.twig', [ 'useheader' => ($access=="config"), 'usemenu' => false, 'usesidebar' => ($access=="config"), 'maxwidth' => ($access=="user"), 'entity' => $entity, 'access' => $access, 'mode' => "update", 'form' => $form->createView(), ]); } public function shareAction(Request $request, $id,$access="config") { $em = $this->getDoctrine()->getManager(); $entity = $em->getRepository($this->labelentity)->find($id); if (!$entity) throw $this->createNotFoundException('Unable to find entity.'); // On s'assure que l'utilisateur à la permission de modifier if($access=="user") { $em->getRepository($this->labelentity)->getPermission($this->getUser(),$entity,$cansee,$canupdate,$canadd); if(!$canupdate) throw $this->createNotFoundException('Permission denied'); } // Création du formulaire $form = $this->createForm(BlogShareType::class, $entity, ["access" => $access, "user" => $this->getUser()]); $form->handleRequest($request); if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($entity); $em->flush(); return $this->redirect($this->generateUrl('cadoles_portal_'.$access.'_blog_view',["id"=>$id])); } return $this->render($this->labelentity.':share.html.twig', [ 'useheader' => ($access=="config"), 'usemenu' => false, 'usesidebar' => ($access=="config"), 'maxwidth' => ($access=="user"), 'entity' => $entity, 'access' => $access, 'form' => $form->createView(), ]); } public function writerAction(Request $request, $id,$access="config") { $em = $this->getDoctrine()->getManager(); $entity = $em->getRepository($this->labelentity)->find($id); if (!$entity) throw $this->createNotFoundException('Unable to find entity.'); // On s'assure que l'utilisateur à la permission de modifier if($access=="user") { $em->getRepository($this->labelentity)->getPermission($this->getUser(),$entity,$cansee,$canupdate,$canadd); if(!$canupdate) throw $this->createNotFoundException('Permission denied'); } // Création du formulaire $form = $this->createForm(BlogWriterType::class, $entity, ["id"=>$entity->getId(),"access" => $access, "user" => $this->getUser()]); $form->handleRequest($request); if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($entity); $em->flush(); return $this->redirect($this->generateUrl('cadoles_portal_'.$access.'_blog_view',["id"=>$id])); } return $this->render($this->labelentity.':writer.html.twig', [ 'useheader' => ($access=="config"), 'usemenu' => false, 'usesidebar' => ($access=="config"), 'maxwidth' => ($access=="user"), 'entity' => $entity, 'access' => $access, 'form' => $form->createView(), ]); } public function deleteAction(Request $request, $id,$access="config") { $em = $this->getDoctrine()->getManager(); $entity = $this->getDoctrine()->getRepository($this->labelentity)->find($id); if (!$entity) throw $this->createNotFoundException('Unable to find entity.'); // On s'assure que l'utilisateur à la permission de supprimer if($access=="user") { $em->getRepository($this->labelentity)->getPermission($this->getUser(),$entity,$cansee,$canupdate,$canadd); if(!$canupdate) throw $this->createNotFoundException('Permission denied'); } // Suppression $em->remove($entity); $em->flush(); // Retour if($access=="config") return $this->redirect($this->generateUrl($this->routeprimary)); else return $this->redirect($this->generateUrl('cadoles_portal_'.$access.'_blog_view')); } public function viewAction(Request $request, $id, $access="config") { $page=$request->query->get("page"); if(is_null($page)) $page=1; $em = $this->getDoctrine()->getManager(); $entity=[]; if($id!=0) { $entity = $em->getRepository($this->labelentity)->find($id); if (!$entity) throw $this->createNotFoundException('Unable to find entity.'); } // Permissions $user=$this->getUser(); if($access=="config") { $canupdate = true; $canadd=true; $blogs=$em->getRepository($this->labelentity)->findBy(["id"=>$id]); $entity->setCanupdate(true); $entity->setCanadd(true); } else { // On récupère l'ensemble des blogs de l'utilisateur $em->getRepository($this->labelentity)->getBlogsUser($user,$blogsuser,$blogsadmin,$blogsshared); $blogs=array_merge($blogsuser,$blogsadmin->toArray(),$blogsshared); // permission if($id==0) { $cansee=true; $canadd=($this->getUser()); } else { $em->getRepository($this->labelentity)->getPermission($user,$entity,$cansee,$canupdate,$canadd); } if(!$cansee) throw $this->createNotFoundException('Permission denied'); $canupdate=false; if($user) $canupdate=true; } $pagination=15; if($entity) $em->getRepository("CadolesPortalBundle:Blogarticle")->getBlogsArticles($entity,($page-1)*$pagination,$pagination,$count,$blogarticles); else $em->getRepository("CadolesPortalBundle:Blogarticle")->getBlogsArticles($blogs,($page-1)*$pagination,$pagination,$count,$blogarticles); return $this->render($this->labelentity.':view.html.twig', [ 'useheader' => ($access=="config"), 'usemenu' => false, 'usesidebar' => ($access=="config"), 'maxwidth' => ($access=="user"), 'entity' => $entity, 'access' => $access, 'canupdate' => $canupdate, 'canadd' => $canadd, 'blogarticles' => $blogarticles, 'blogs' => $blogs, 'countarticles' => $count, 'pagination' => $pagination, 'page' => $page ]); } }