render('CadolesCoreBundle:Group:list.html.twig',[ 'useheader' => true, 'usemenu' => false, 'usesidebar' => ($access=="config"), 'access' => $access ]); } public function ajaxlistAction(Request $request,$access) { // S'assurer que c'est un appel ajax if (!$request->isXmlHttpRequest()) { return new JsonResponse(array('message' => 'Interdit'), 400); } $user=$this->getUser(); $portal_activate=$this->getParameter("portal_activate"); $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'); // Nombre total d'enregistrement $qb=$em->createQueryBuilder(); $qb->select('COUNT(table)')->from($this->labelentity,'table'); if($access=="user") { $qb->from("CadolesCoreBundle:UserGroup","ug") ->andWhere(("table.fgcanshare=:flag")) ->andWhere("table.id=ug.group") ->andWhere(":user=ug.user") ->setParameter("flag", true) ->setParameter("user", $user); } $total = $qb->getQuery()->getSingleScalarResult(); // Nombre d'enregistrement filtré if($search["value"]=="") $totalf = $total; else { $qb=$em->createQueryBuilder(); $qb->select('COUNT(table)') ->from($this->labelentity,'table') ->where('table.label LIKE :value') ->setParameter("value", "%".$search["value"]."%"); if($access=="user") { $qb->from("CadolesCoreBundle:UserGroup","ug") ->andWhere(("table.fgcanshare=:flag")) ->andWhere("table.id=ug.group") ->andWhere(":user=ug.user") ->setParameter("flag", true) ->setParameter("user", $user); } $totalf= $qb->getQuery()->getSingleScalarResult(); } // Construction du tableau de retour $output = array( 'draw' => $draw, 'recordsFiltered' => $totalf, 'recordsTotal' => $total, 'data' => array(), ); // Parcours des Enregistrement $qb = $em->createQueryBuilder(); $qb->select('table')->from($this->labelentity,'table'); if($access=="user") { $qb->from("CadolesCoreBundle:UserGroup","ug") ->andWhere(("table.fgcanshare=:flag")) ->andWhere("table.id=ug.group") ->andWhere(":user=ug.user") ->leftJoin('CadolesCoreBundle:User', 'u', 'WITH', 'table.owner = u.id') ->setParameter("flag", true) ->setParameter("user", $this->getUser()); } if($search["value"]!="") { $qb ->andwhere('table.label LIKE :value') ->setParameter("value", "%".$search["value"]."%"); } switch($order[0]["column"]) { case 1 : $qb->orderBy('table.label',$order[0]["dir"]); break; case 2 : $qb->orderBy('table.fgopen',$order[0]["dir"]); break; case 4 : $qb->orderBy('table.fgcanshare',$order[0]["dir"]); break; case 5 : $qb->orderBy('u.username',$order[0]["dir"]); break; case 6 : $qb->orderBy('table.fgcancreatepage',$order[0]["dir"]); break; case 7 : $qb->orderBy('table.fgcancreatecalendar',$order[0]["dir"]); break; case 8 : $qb->orderBy('table.fgcancreateblog',$order[0]["dir"]); break; } $datas=$qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); foreach($datas as $data) { $action = ""; if($access=="config") { // Modification possible si groupe non template et non tout le monde if(!$data->getFgTemplate() && !$data->getFgall()) $action .="$data->getId()))."'>"; // Modification possible si groupe template mais avec module portail activé elseif($data->getFgTemplate()&&$portal_activate) $action .="$data->getId()))."'>"; // Modification possible si groupe tout le monde mais avec module portail activé elseif($data->getFgall()&&$portal_activate) $action .="$data->getId()))."'>"; if($data->getId()>0&&!$data->getFgall()&&!$data->getFgTemplate()&&$this->isGranted('ROLE_ADMIN')) $action.="$data->getId()))."'>"; if(!$data->getFgall()) $action .="$data->getId()))."'>"; } else { $fgproprio=($user==$data->getOwner()); $fgmanager=$this->getDoctrine()->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["user"=>$this->getUser(),"group"=>$data])->getFgmanager(); // Modification possible uniquement si l'utilisateur est propriétaire du groupe if($fgproprio) { $action .="$data->getId()))."'>"; $action .="$data->getId()))."'>"; } // Gestion des utilisateurs du groupe uniquement pour le proprio ou les managers if($fgproprio||$fgmanager) { $action .="$data->getId()))."'>"; } else { $action.="$data->getId()))."' data-method='out'>"; } } $filtre=""; if($this->GetParameter("masteridentity")=="LDAP") $filtre=$data->getLdapfilter(); if($this->GetParameter("masteridentity")=="SSO") $filtre=$data->getAttributes(); $userinfo=""; if($data->getOwner()) { $userinfo.="getOwner()->getAvatar()."' class='avatar' style='margin:0px 5px 0px 0px;display:inline-block;'>"; $userinfo.=$data->getOwner()->getUsername(); } array_push($output["data"],array( $action, $data->getLabel(), ($data->getFgopen()?"oui":"non"), $filtre, ($data->getFgcanshare()?"oui":"non"), $userinfo, ($data->getFgcancreatepage()?"oui":"non"), ($data->getFgcancreatecalendar()?"oui":"non"), ($data->getFgcancreateblog()?"oui":"non"), ) ); } // Retour return new Response(json_encode($output), 200); } public function ajaxusersnotinAction($id,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(); $group=$this->getData($id); $sub = $em->createQueryBuilder(); $sub->select("usergroup"); $sub->from("CadolesCoreBundle:UserGroup","usergroup"); $sub->andWhere('usergroup.user = user.id'); $sub->andWhere('usergroup.group = :groupid'); $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'); // Nombre total d'enregistrement $qb = $em->createQueryBuilder(); if($this->isGranted('ROLE_ADMIN')||$access=="user") $qb->select('COUNT(user)') ->from('CadolesCoreBundle:User','user') ->where($qb->expr()->not($qb->expr()->exists($sub->getDQL()))) ->setParameter("groupid",$id); else { $usermodo=$this->get('security.token_storage')->getToken()->getUser()->getId(); $qb->select('COUNT(user)') ->from('CadolesCoreBundle:User','user') ->from('CadolesCoreBundle:UserModo','usermodo') ->where($qb->expr()->not($qb->expr()->exists($sub->getDQL()))) ->andWhere("usermodo.niveau01 = user.niveau01") ->andWhere("usermodo.user = :userid") ->setParameter("userid", $usermodo) ->setParameter("groupid",$id); } $total=$qb->getQuery()->getSingleScalarResult(); // Nombre d'enregistrement filtré if($search["value"]=="") $totalf = $total; else { if($this->isGranted('ROLE_ADMIN')||$access=="user") $totalf= $em->createQueryBuilder() ->select('COUNT(user)') ->from('CadolesCoreBundle:User','user') ->where('user.username LIKE :value OR user.email LIKE :value') ->andWhere($qb->expr()->not($qb->expr()->exists($sub->getDQL()))) ->setParameter("value", "%".$search["value"]."%") ->setParameter("groupid",$id) ->getQuery() ->getSingleScalarResult(); else $totalf= $em->createQueryBuilder() ->select('COUNT(user)') ->from('CadolesCoreBundle:User','user') ->from('CadolesCoreBundle:UserModo','usermodo') ->where('user.username LIKE :value OR user.email LIKE :value') ->andWhere($qb->expr()->not($qb->expr()->exists($sub->getDQL()))) ->andWhere("usermodo.niveau01 = user.niveau01") ->andWhere("usermodo.user = :userid") ->setParameter("userid", $usermodo) ->setParameter("value", "%".$search["value"]."%") ->setParameter("groupid",$id) ->getQuery() ->getSingleScalarResult(); } // Construction du tableau de retour $output = array( 'draw' => $draw, 'recordsFiltered' => $totalf, 'recordsTotal' => $total, 'data' => array(), ); // Parcours des Enregistrement $qb = $em->createQueryBuilder(); $qb->select('user')->from("CadolesCoreBundle:User",'user'); if($this->isGranted('ROLE_ADMIN')||$access=="user") $qb->where($qb->expr()->not($qb->expr()->exists($sub->getDQL()))); else $qb->from('CadolesCoreBundle:UserModo','usermodo') ->where($qb->expr()->not($qb->expr()->exists($sub->getDQL()))) ->andWhere("usermodo.niveau01 = user.niveau01") ->andWhere("usermodo.user = :userid") ->setParameter("userid", $usermodo); if($search["value"]!="") { $qb ->andWhere('user.username LIKE :value OR user.email LIKE :value') ->setParameter("value", "%".$search["value"]."%"); } $qb->setParameter("groupid",$id); switch($order[0]["column"]) { case 2 : $qb->orderBy('user.username',$order[0]["dir"]); break; case 3 : $qb->orderBy('user.email',$order[0]["dir"]); break; } $datas=$qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); foreach($datas as $data) { // Action $action = ""; if($group->getLdapfilter()==""&&$group->getAttributes()=="") $action.=""; $fgmanager=""; // Avatar $avatar="getAvatar()."' style='width:30px;background-color:#337ab7;margin:auto;display:block;'>"; array_push($output["data"],array("DT_RowId"=>"user".$data->getId(),$action,$avatar,$data->getUsername(),$data->getEmail(),$fgmanager)); } // Retour return new Response(json_encode($output), 200); } public function ajaxusersinAction($id,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(); $group=$this->getData($id); $sub = $em->createQueryBuilder(); $sub->select("usergroup"); $sub->from("CadolesCoreBundle:UserGroup","usergroup"); $sub->andWhere('usergroup.user = user.id'); $sub->andWhere('usergroup.group = :groupid'); $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'); $fgcanshare= $request->query->get('fgcanshare'); // Nombre total d'enregistrement $qb = $em->createQueryBuilder(); if($this->isGranted('ROLE_ADMIN')||$access=="user") $qb->select('COUNT(user)') ->from('CadolesCoreBundle:User','user') ->where($qb->expr()->exists($sub->getDQL())) ->setParameter("groupid",$id); else { $usermodo=$this->get('security.token_storage')->getToken()->getUser()->getId(); $qb->select('COUNT(user)') ->from('CadolesCoreBundle:User','user') ->from('CadolesCoreBundle:UserModo','usermodo') ->where($qb->expr()->exists($sub->getDQL())) ->andWhere("usermodo.niveau01 = user.niveau01") ->andWhere("usermodo.user = :userid") ->setParameter("userid", $usermodo) ->setParameter("groupid",$id); } $total=$qb->getQuery()->getSingleScalarResult(); // Nombre d'enregistrement filtré if($search["value"]=="") $totalf = $total; else { if($this->isGranted('ROLE_ADMIN')||$access=="user") $totalf= $em->createQueryBuilder() ->select('COUNT(user)') ->from('CadolesCoreBundle:User','user') ->where('user.username LIKE :value OR user.email LIKE :value') ->andWhere($qb->expr()->exists($sub->getDQL())) ->setParameter("value", "%".$search["value"]."%") ->setParameter("groupid",$id) ->getQuery() ->getSingleScalarResult(); else $totalf= $em->createQueryBuilder() ->select('COUNT(user)') ->from('CadolesCoreBundle:User','user') ->from('CadolesCoreBundle:UserModo','usermodo') ->where('user.username LIKE :value OR user.email LIKE :value') ->andWhere($qb->expr()->exists($sub->getDQL())) ->andWhere("usermodo.niveau01 = user.niveau01") ->andWhere("usermodo.user = :userid") ->setParameter("userid", $usermodo) ->setParameter("value", "%".$search["value"]."%") ->setParameter("groupid",$id) ->getQuery() ->getSingleScalarResult(); } // Construction du tableau de retour $output = array( 'draw' => $draw, 'recordsFiltered' => $totalf, 'recordsTotal' => $total, 'data' => array(), ); // Parcours des Enregistrement $qb = $em->createQueryBuilder(); $qb->select('user')->from("CadolesCoreBundle:User",'user'); if($this->isGranted('ROLE_ADMIN')||$access=="user") $qb->where($qb->expr()->exists($sub->getDQL())); else $qb->from('CadolesCoreBundle:UserModo','usermodo') ->where($qb->expr()->exists($sub->getDQL())) ->andWhere("usermodo.niveau01 = user.niveau01") ->andWhere("usermodo.user = :userid") ->setParameter("userid", $usermodo); if($search["value"]!="") { $qb ->andWhere('user.username LIKE :value OR user.email LIKE :value') ->setParameter("value", "%".$search["value"]."%"); } $qb->setParameter("groupid",$id); switch($order[0]["column"]) { case 2 : $qb->orderBy('user.username',$order[0]["dir"]); break; case 3 : $qb->orderBy('user.email',$order[0]["dir"]); break; } $datas=$qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); foreach($datas as $data) { // Propriétaire $usergroup=$em->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["user"=>$data->getId(),"group"=>$id]); $fgproprio=($usergroup->getUser()==$group->getOwner()); // Action $action = ""; if($group->getLdapfilter()==""&&$group->getAttributes()==""&&!$fgproprio) $action.=""; // Avatar $avatar="getAvatar()."' style='width:30px;background-color:#337ab7;margin:auto;display:block;'>"; // Flag manager $fgmanager=""; if($fgcanshare) { $checked=($usergroup->getFgmanager()?"checked":""); $fgmanager=""; if($fgproprio) $fgmanager="Propriétaire du groupe"; } array_push($output["data"],array("DT_RowId"=>"user".$data->getId(),$action,$avatar,$data->getUsername(),$data->getEmail(),$fgmanager)); } // Retour return new Response(json_encode($output), 200); } public function usergroupaddAction(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(); $output=array(); $userid=$request->request->get('userid'); $groupid=$request->request->get('groupid'); $group=$em->getRepository("CadolesCoreBundle:Group")->find($groupid); if($group->getFgAll()||$group->getFgtemplate()) throw $this->createNotFoundException('Permission denied'); $key = Uuid::uuid4(); $usergroup=new Usergroup; $user=$em->getRepository("CadolesCoreBundle:User")->find($userid); $usergroup->setUser($user); $usergroup->setGroup($group); $usergroup->setKeyvalue($key); $em->persist($usergroup); $em->flush(); $user=$em->getRepository("CadolesCoreBundle:User")->find($userid); $message="Inscription de l'utilisateur
".$user->getLastname()." ".$user->getFirstname()."
Par ".$this->getUser()->getLastname()." ".$this->getUser()->getFirstname(); $websocket = $this->container->get('cadoles.websocket.pushmessage')->send($key->toString(),$userid,$groupid,$message); $response = new Response(json_encode($output)); $response->headers->set('Content-Type', 'application/json'); return $response; } public function usergroupdelAction(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(); $output=array(); $userid=$request->request->get('userid'); $groupid=$request->request->get('groupid'); $group=$em->getRepository("CadolesCoreBundle:Group")->find($groupid); if($group->getFgAll()||$group->getFgTemplate()) throw $this->createNotFoundException('Permission denied'); $data = $em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(array("user"=>$userid,"group"=>$groupid)); $user=$em->getRepository("CadolesCoreBundle:User")->find($userid); $message="Désinscription de l'utilisateur
".$user->getLastname()." ".$user->getFirstname()."
Par ".$this->getUser()->getLastname()." ".$this->getUser()->getFirstname();; $websocket = $this->container->get('cadoles.websocket.pushmessage')->send($data->getKeyvalue(),$userid,$groupid,$message); $em->remove($data); $em->flush(); $response = new Response(json_encode($output)); $response->headers->set('Content-Type', 'application/json'); return $response; } public function outAction(Request $request,$id,$access="config") { $em = $this->getDoctrine()->getManager(); $group=$em->getRepository("CadolesCoreBundle:Group")->find($id); if($group->getFgAll()||$group->getFgTemplate()) throw $this->createNotFoundException('Permission denied'); $usergroup = $em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(array("user"=>$this->getUser(),"group"=>$id)); $user=$em->getRepository("CadolesCoreBundle:User")->find($this->getUser()); $message="Désinscription de l'utilisateur
".$user->getLastname()." ".$user->getFirstname()."
Par ".$this->getUser()->getLastname()." ".$this->getUser()->getFirstname();; $websocket = $this->container->get('cadoles.websocket.pushmessage')->send($usergroup->getKeyvalue(),$this->getUser()->getId(),$id,$message); $em->remove($usergroup); $em->flush(); return $this->redirect($this->generateUrl("cadoles_core_user_group")); } public function switchmanagerAction(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(); $output=array(); $userid=$request->request->get('user'); $groupid=$request->request->get('group'); $data = $em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(array("user"=>$userid,"group"=>$groupid)); if($data) $data->setFgmanager(!$data->getFgmanager()); $em->persist($data); $em->flush(); $response = new Response(json_encode($output)); $response->headers->set('Content-Type', 'application/json'); return $response; } public function submitAction(Request $request, $access="config") { $em = $this->getDoctrine()->getManager(); // Initialisation de l'enregistrement $data = new Group(); $data->setFgopen(false); $data->setFgcanshare(($access=="user")); $data->setFgcancreatepage(false); $data->setFgcancreatecalendar(false); $data->setFgcancreateblog(false); if($access=="user") $data->setOwner($this->getUser()); // Création du formulaire $form = $this->createForm(GroupType::class,$data,array( "mode"=>"submit", "fgall"=>false, "updatelimite"=>false, "access"=>$access, "masteridentity"=> $this->GetParameter("masteridentity"), "portal_activate"=>$this->getParameter("portal_activate") ) ); // 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->setFgall(false); $data->setFgtemplate(false); if($data->getLdapfilter()!="") $data->setFgopen(false); if($data->getAttributes()!="") $data->setFgopen(false); // Icon $idicon = $form->get('idicon')->getData(); $icon=$em->getRepository("CadolesPortalBundle:Icon")->findoneby(["id"=>$idicon]); $data->setIcon($icon); // Sauvegarde $em->persist($data); $em->flush(); // Si acces par user on ajoute forcement le owner comme membre du groupe en tant que manager if($access=="user") { $key = Uuid::uuid4(); $usergroup=new Usergroup; $usergroup->setUser($this->getUser()); $usergroup->setGroup($data); $usergroup->setFgmanager(true); $usergroup->setKeyvalue($key); $em->persist($usergroup); $em->flush(); } // On s'assure que le groupe de travail à bien page d'accueil / calendrier / blog associé // Sinon on les génère $this->ctrlFgcanshare($data,$access); // Retour à la liste return $this->redirectToRoute("cadoles_core_".$access."_group_users",["id"=>$data->getId()]); } // Affichage du formulaire $icons=$this->getDoctrine()->getRepository("CadolesPortalBundle:Icon")->findBy(["user"=>null]); $iconsuser=null; if($access=="user") $iconsuser=$this->getDoctrine()->getRepository("CadolesPortalBundle:Icon")->findBy(["user"=>$this->getUser()]); return $this->render($this->labelentity.':edit.html.twig', [ 'useheader' => true, 'usemenu' => false, 'usesidebar' => ($access=="config"), $this->labeldata => $data, 'mode' => 'submit', 'access' => $access, 'icons' => $icons, 'iconsuser' => $iconsuser, 'form' => $form->createView() ]); } public function updateAction($id,Request $request,$access="config") { // Récupération de l'enregistrement courant $em = $this->getDoctrine()->getManager(); $data=$this->getData($id); // Création du formulaire $form = $this->createForm(GroupType::class,$data,array( "mode" => "update", "access" => $access, "fgall" => $data->getFgAll(), "updatelimite" => ($data->getFgAll()||$data->getFgTemplate()), "masteridentity" => $this->GetParameter("masteridentity"), "portal_activate" => $this->getParameter("portal_activate"), "idicon" => ($data->getIcon()?$data->getIcon()->getId():null), ) ); // 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(); $masteridentity=$this->GetParameter("masteridentity"); if($masteridentity!="LDAP") $data->setLdapfilter(null); if($masteridentity!="SSO") $data->setAttributes(null); if($data->getLdapfilter()!="") $data->setFgopen(false); if($data->getAttributes()!="") $data->setFgopen(false); // Icon $idicon = $form->get('idicon')->getData(); $icon=$this->getDoctrine()->getRepository("CadolesPortalBundle:Icon")->findoneby(["id"=>$idicon]); $data->setIcon($icon); // Sauvegarde $em->persist($data); $em->flush(); // On s'assure que le groupe de travail à bien page d'accueil / calendrier / blog associé // Sinon on les génère $this->ctrlFgcanshare($data,$access); // Retour à la liste return $this->redirectToRoute("cadoles_core_".$access."_group"); } $icons=$em->getRepository("CadolesPortalBundle:Icon")->findBy(["user"=>null]); $iconsuser=null; if($access=="user") $iconsuser=$em->getRepository("CadolesPortalBundle:Icon")->findBy(["user"=>$this->getUser()]); // Affichage du formulaire return $this->render($this->labelentity.':edit.html.twig', [ 'useheader' => true, 'usemenu' => false, 'usesidebar' => ($access=="config"), $this->labeldata => $data, 'mode' => 'update', 'access' => $access, 'icons' => $icons, 'iconsuser' => $iconsuser, 'form' => $form->createView() ]); } public function deleteAction($id,Request $request, $access="config") { $em = $this->getDoctrine()->getManager(); // Seule role admin peut supprimer un groupe if($access=="config"&&!$this->isGranted('ROLE_ADMIN')) return $this->redirectToRoute($this->labelroute); // Récupération de l'enregistrement courant $data=$this->getData($id); // Vérifier que cet enregistrement est supprimable if($data->getFgAll()||$data->getFgTemplate()) throw $this->createNotFoundException('Permission denied'); // Création du formulaire $form = $this->createForm(GroupType::class,$data,array( "mode"=>"delete", "updatelimite"=>($data->getFgAll()||$data->getFgTemplate()), "masteridentity"=> $this->GetParameter("masteridentity"), "portal_activate"=>$this->getParameter("portal_activate") ) ); // Récupération des data du formulaire $form->handleRequest($request); // Sur erreur $this->getErrorForm($id,$form,$request,$data,"delete"); // Sur validation if ($form->get('submit')->isClicked() && $form->isValid()) { $em->remove($data); $em->flush(); return $this->redirectToRoute("cadoles_core_".$access."_group"); } $icons=$em->getRepository("CadolesPortalBundle:Icon")->findBy(["user"=>null]); $iconsuser=null; if($access=="user") $iconsuser=$em->getRepository("CadolesPortalBundle:Icon")->findBy(["user"=>$this->getUser()]); // Affichage du formulaire return $this->render($this->labelentity.':edit.html.twig', [ 'useheader' => true, 'usemenu' => false, 'usesidebar' => ($access=="config"), $this->labeldata => $data, 'mode' => 'delete', 'access' => $access, 'icons' => $icons, 'iconsuser' => $iconsuser, 'form' => $form->createView() ]); } public function usersAction($id,Request $request, $access="config") { // Récupération de l'enregistrement courant $data=$this->getData($id); // Affichage du formulaire return $this->render($this->labelentity.':users.html.twig', [ 'useheader' => true, 'usemenu' => false, 'usesidebar' => ($access=="config"), 'access' => $access, $this->labeldata => $data ]); } protected function ctrlFgcanshare($group,$access) { $em = $this->getDoctrine()->getManager(); if($group->getFgcanshare()) { // On regarde s'il a au moins une page if($group->getPages()->isEmpty()) { $page=$this->getDoctrine()->getRepository("CadolesPortalBundle:Page")->clonePage(null,$group->getPagetemplate()); $group->addPage($page); $page->setName($group->getLabel()); if($access=="user")$page->setUser($this->getUser()); $em->persist($page); $em->persist($group); $em->flush(); } // On regarde s'il a au moins un calendrier if($group->getCalendars()->isEmpty()) { $calendar=new Calendar(); $key = Uuid::uuid4(); $calendar->setName($group->getLabel()); $calendar->setKeyvalue($key); $calendar->addGroup($group); $calendar->setColor($group->getColor()); $calendar->setType(0); if($access=="user")$calendar->setUser($this->getUser()); $em->persist($calendar); $em->flush(); } // On regarde s'il a au moins un blog if($group->getBlogs()->isEmpty()) { $blog=new Blog(); $blog->setName($group->getLabel()); $blog->addGroup($group); if($access=="user")$blog->setUser($this->getUser()); $em->persist($blog); $em->flush(); } } } protected function getDatas() { $em = $this->getDoctrine()->getManager(); $datas = $em->getRepository($this->labelentity)->findAll(); return $datas; } protected function getData($id) { $em = $this->getDoctrine()->getManager(); $data = $em->getRepository($this->labelentity)->find($id); if (!$data) { throw $this->createNotFoundException('Unable to find '.$this->labeldata); } return $data; } protected function getEntityBy($entity,$key,$value) { $em = $this->getDoctrine()->getManager(); $datas = $em->createQueryBuilder() ->select('u') ->from($entity, 'u') ->where('u.'.$key.'=:value') ->getQuery()->setParameter("value", $value) ->getResult(); if (!$datas) return false; else return true; } protected function getErrorForm($id,$form,$request,$data,$mode) { if ($form->get('submit')->isClicked()&&$mode=="delete") { } if ($form->get('submit')->isClicked() && ($mode=="submit" || $mode=="update")) { $tmp=$this->getEntityBy("CadolesCoreBundle:Niveau01","label",$data->getLabel()); if($tmp) $form->addError(new FormError('Un niveau de rang 01 utilise déjà ce label')); $tmp=$this->getEntityBy("CadolesCoreBundle:Niveau02","label",$data->getLabel()); if($tmp) $form->addError(new FormError('Un niveau de rang 02 utilise déjà ce label')); if($data->getFgcanshare()&&is_null($data->getPagetemplate())) $form->addError(new FormError("Un groupe de travail doit avoir un modèle de page d'accueil")); } if ($form->get('submit')->isClicked() && !$form->isValid()) { $this->get('session')->getFlashBag()->clear(); $validator = $this->get('validator'); $errors = $validator->validate($data); foreach( $errors as $error ) { $request->getSession()->getFlashBag()->add("error", $error->getMessage()); } $errors = $form->getErrors(); foreach( $errors as $error ) { $request->getSession()->getFlashBag()->add("error", $error->getMessage()); } } } }