This commit is contained in:
2024-10-30 22:06:14 +01:00
parent fefc4036fa
commit 86c4296061
16 changed files with 392 additions and 166 deletions

View File

@ -57,7 +57,12 @@ class IllustrationController extends AbstractController
// Initialisation de l'enregistrement
$em = $this->getDoctrine()->getManager();
$data = new Entity();
// Permission
if(!$this->getUser()->hasRole("ROLE_ADMIN")&&($by=="admin"||$by=="update")) {
return $this->redirectToRoute("app_home");
}
// 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)));
@ -107,7 +112,12 @@ class IllustrationController extends AbstractController
// Initialisation de l'enregistrement
$em = $this->getDoctrine()->getManager();
$data=$em->getRepository($this->entity)->find($id);
if(!$data) return $this->redirectToRoute("app_home");
// Permission
if(!$this->getUser()->hasRole("ROLE_ADMIN")&&($by=="admin"||$by=="update")) {
return $this->redirectToRoute("app_home");
}
if($by!="admin"&&$by!="update") {
if($this->getUser()!=$data->getCategory()->getUser()&&!$this->getUser()->hasRole("ROLE_ADMIN"))
return $this->redirectToRoute("app_home");
@ -128,7 +138,6 @@ class IllustrationController extends AbstractController
$em->persist($data);
$em->flush();
// Retour à l'illustration
// Retour à la liste
if($by=="admin")
return $this->redirectToRoute($this->route,["by"=>$by,"userid"=>-1]);
@ -157,13 +166,17 @@ class IllustrationController extends AbstractController
// Initialisation de l'enregistrement
$em = $this->getDoctrine()->getManager();
$data=$em->getRepository($this->entity)->find($id);
if(!$data) return $this->redirectToRoute("app_home");
// Permission
if(!$this->getUser()->hasRole("ROLE_ADMIN")&&($by=="admin"||$by=="update")) {
return $this->redirectToRoute("app_home");
}
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;
@ -196,8 +209,8 @@ class IllustrationController extends AbstractController
$em = $this->getDoctrine()->getManager();
$data=$em->getRepository($this->entity)->find($id);
$datanext=$this->getDataAllNext($idcat,$id);
$dataprev=$this->getDataAllPrev($idcat,$id);
$datanext=$this->getDataAllNext($idcat,$data->getSubmittime(),$by);
$dataprev=$this->getDataAllPrev($idcat,$data->getSubmittime(),$by);
$pathinfo=pathinfo($data->getIllustration());
@ -214,61 +227,55 @@ class IllustrationController extends AbstractController
}
protected function getDataAllNext($idcat,$id)
protected function getDataAllNext($idcat,$submittime,$by)
{
$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();
$qb = $em->createQueryBuilder()
->select('e')
->from($this->entity, 'e')
->where('e.submittime>:submittime')
->setParameter("submittime", $submittime);
if($by!="home") {
$qb=$qb->andWhere('e.category=:idcat')->setParameter("idcat", $idcat);
}
$data = $qb->orderBy('e.submittime', 'ASC')->getQuery()->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();
$qb = $em->createQueryBuilder()
->select('e')
->from($this->entity, 'e');
if($by!="home") {
$qb=$qb->andWhere('e.category=:idcat')->setParameter("idcat", $idcat);
}
$data = $qb->orderBy('e.submittime', 'ASC')->getQuery()->setMaxResults(1)->getResult();
}
return $data;
}
protected function getDataAllPrev($idcat,$id)
protected function getDataAllPrev($idcat,$submittime,$by)
{
$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();
$qb = $em->createQueryBuilder()
->select('e')
->from($this->entity, 'e')
->where('e.submittime<:submittime')
->setParameter("submittime", $submittime);
if($by!="home") {
$qb=$qb->andWhere('e.category=:idcat')->setParameter("idcat", $idcat);
}
$data = $qb->orderBy('e.submittime', 'DESC')->getQuery()->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();
$qb = $em->createQueryBuilder()
->select('e')
->from($this->entity, 'e');
if($by!="home") {
$qb=$qb->Where('e.category=:idcat')->setParameter("idcat", $idcat);
}
$data = $qb->orderBy('e.submittime', 'DESC')->getQuery()->setMaxResults(1)->getResult();
}
return $data;