src/Controller/ActualiteController.php line 217

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Membre;
  4. use App\Form\MembreType;
  5. use App\Repository\LienUtilsRepository;
  6. use App\Repository\ManifestationRepository;
  7. use App\Repository\MembreRepository;
  8. use App\Repository\ProjetRepository;
  9. use App\Repository\PublicationsRepository;
  10. use App\Repository\TitlesMembersRepository;
  11. use Container0pFyOPx\getLoginFormAuthenticatorService;
  12. use DateTimeImmutable;
  13. use App\Entity\Article;
  14. use App\Entity\Partner;
  15. use App\Form\ArticleType;
  16. use App\Form\PartnerType;
  17. use App\Repository\ArticleRepository;
  18. use App\Repository\PartnerRepository;
  19. use Doctrine\ORM\EntityManagerInterface;
  20. use Knp\Component\Pager\PaginatorInterface;
  21. use Symfony\Component\HttpFoundation\Request;
  22. use Symfony\Component\HttpFoundation\Response;
  23. use Symfony\Component\Routing\Annotation\Route;
  24. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  25. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  26. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  27. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  28. class ActualiteController extends AbstractController
  29. {
  30.     /**
  31.      * @Route("/dashboard/news", name="actualite_index", methods={"GET"})
  32.      * @Security("is_granted('ROLE_ADMINISTRATEUR') or is_granted('ROLE_MEMBRE')")
  33.      */
  34.     public function index(ArticleRepository $articleRepositoryPaginatorInterface $paginator,Request $request): Response
  35.     {   
  36.         $title null;
  37.         $articles $articleRepository->findBy(["isDeleted" => 0], ['createdAt' => 'desc']);
  38.         $userConnectedId $this->get('security.token_storage')->getToken()->getUser();
  39.         if (!(in_array('ROLE_ADMINISTRATEUR'$userConnectedId->getRoles()))) {
  40.             $membreId $userConnectedId->getMembre()->getId();
  41.         }else{
  42.             $membreIdNUll;
  43.         }
  44.         return $this->render('actualite/index.html.twig', [ 'title'=>'Actualité',
  45.             'articles' =>$articles,
  46.             'title' => $title,
  47.             'membreId'=>$membreId
  48.         ]);
  49.     }
  50.     /**
  51.      * @Route("/dashboard/add", name="article_new", methods={"GET","POST"})
  52.      * @Security("is_granted('ROLE_ADMINISTRATEUR') or is_granted('ROLE_MEMBRE')")
  53.      */
  54.     public function newArticle(Request $requestEntityManagerInterface $manager): Response
  55.     {           
  56.         $destination $this->getParameter('kernel.project_dir') . '/public/admin/uploads';
  57.         $article = new Article();
  58.         $form $this->createForm(ArticleType::class, $article);
  59.         $form->handleRequest($request);
  60.         $userConnectedId $this->get('security.token_storage')->getToken()->getUser();
  61.         $dql "SELECT m FROM App\Entity\Membre m WHERE identity(m.user) = :userId";
  62.         $userConnected $manager->createQuery($dql)->setParameter('userId'$userConnectedId)->getOneOrNullResult();
  63.         if ($request->isMethod('post')) {
  64.             if (!(in_array('ROLE_ADMINISTRATEUR'$userConnectedId->getRoles()))) {
  65.                 $article->setCreatedBy($userConnected->getId());
  66.             }
  67.             $title $request->request->get("title");
  68.             $article->setTitle($title);
  69.             $content $request->request->get("content");
  70.             $article->setContent($content);
  71.             $article->setCreatedAt(new DateTimeImmutable());
  72.             $image $request->files->get('image');
  73.             $image_name "Actualite" '-' uniqid() . '.' $image->guessExtension();
  74.             $image->move(
  75.                 $destination,
  76.                 $image_name
  77.             );
  78.             $article->setImage($image_name);
  79.             $piece $request->files->get('pieceJoindre');
  80.             if ($piece != null){
  81.                 $piece_name "doc" '-' uniqid() . '.' $piece->guessExtension();
  82.             $piece->move(
  83.                 $destination,
  84.                 $piece_name
  85.             );
  86.             $article->setPieceJoindre($piece_name);
  87.         }
  88.             $manager->persist($article);
  89.             $manager->flush();
  90.             return $this->redirectToRoute('actualite_index', [], Response::HTTP_SEE_OTHER);
  91.         }
  92.         return $this->render('actualite/new.html.twig', [
  93.             'title'=>'Actualité',
  94.             'article' => $article,
  95.             'form' => $form->createView(),
  96.         ]);
  97.     }
  98.     /**
  99.      * @Route("/dashboard/news/{id}/edit", name="article_edit", methods={"GET","POST"})
  100.      * @Security("is_granted('ROLE_ADMINISTRATEUR') or is_granted('ROLE_MEMBRE')")
  101.      */
  102.     public function editArticle(Request $requestArticle $articleEntityManagerInterface $manager): Response
  103.     {
  104.         $destination $this->getParameter('kernel.project_dir') . '/public/admin/uploads';
  105.         $form $this->createForm(ArticleType::class, $article);
  106.         $form->handleRequest($request);
  107.         if ($request->isMethod('post')) {
  108.             $title $request->request->get("title");
  109.             $article->setTitle($title);
  110.             $content $request->request->get("content");
  111.             $article->setContent($content);
  112.             if($request->files->get('image')!=null){
  113.                 $image $request->files->get('image');
  114.                 $image_name "Article" '-' uniqid() . '.' $image->guessExtension();
  115.                 $image->move(
  116.                     $destination,
  117.                     $image_name
  118.                 );
  119.                 $article->setImage($image_name);
  120.             }
  121.             if($request->files->get('pieceJoindre')!=null) {
  122.                 $piece $request->files->get('pieceJoindre');
  123.                 $piece_name "doc" '-' uniqid() . '.' $piece->guessExtension();
  124.                 $piece->move(
  125.                     $destination,
  126.                     $piece_name
  127.                 );
  128.                 $article->setPieceJoindre($piece_name);
  129.             }
  130.             $manager->flush();
  131.             return $this->redirectToRoute('actualite_index', [], Response::HTTP_SEE_OTHER);
  132.         }
  133.         return $this->render('actualite/edit.html.twig', [
  134.             "title"=>"Actualité",
  135.             'article' => $article,
  136.             'form' => $form->createView(),
  137.         ]);
  138.     }
  139.     /**
  140.      * @Route("/dashboard/news/filter", name="article_filter_title", methods={"GET","POST"})
  141.      */
  142.     public function filtredByTitle(ArticleRepository $articlesRepositoryRequest $requestPaginatorInterface $paginator): Response
  143.     {
  144.         $title $request->request->get('title');
  145.        if ($title == null) {
  146.            $title='';
  147.        }
  148.         $articles $articlesRepository->findByTitle($title);
  149.         $pagination $paginator->paginate(
  150.             $articles/* query NOT result */
  151.             $request->query->getInt('page'1), /*page number*/
  152.             /*limit per page*/
  153.         );
  154.         return $this->render('actualite/index.html.twig', [
  155.             'title' => $title,
  156.             'articles' => $pagination,
  157.         ]);
  158.     }
  159.     /**
  160.      * @Route("/dashboard/news/{id}", name="article_delete", methods={"POST"})
  161.      * @Security("is_granted('ROLE_ADMINISTRATEUR') or is_granted('ROLE_MEMBRE')")
  162.      */
  163.     public function delete(Request $requestArticle $articleEntityManagerInterface $manager): Response
  164.     {
  165.         if ($this->isCsrfTokenValid('delete'.$article->getId(), $request->request->get('_token'))) {
  166.             $article->setIsDeleted(1);
  167.             $manager->flush();
  168.         }
  169.         return $this->redirectToRoute('actualite_index', [], Response::HTTP_SEE_OTHER);
  170.     }
  171.     /**
  172.      * @Route("/", name="index_show")
  173.      */
  174.     public function showIndex(MembreRepository $membreRepository,PublicationsRepository $publicationsRepository,PartnerRepository $partnerRepository,Request $requestArticleRepository $repo,ManifestationRepository $manifestationRepository,LienUtilsRepository $lienUtilsRepositoryAuthenticationUtils $authenticationUtils): Response
  175.     {
  176.         $error $authenticationUtils->getLastAuthenticationError();
  177.         $lastUsername $authenticationUtils->getLastUsername();
  178.         $articles $repo->findBy(["isDeleted" => 0], ['createdAt' => 'desc']);
  179.         $lienUtils $lienUtilsRepository->findBy(["isDeleted" => 0], ['id' => 'desc']);
  180.         $partners $partnerRepository->findBy(["isDeleted" => 0], ['id' => 'desc']);
  181.         $allmembers=$membreRepository->findBy(["isDeleted" => 0]);
  182.         $allpublications=$publicationsRepository->findAll();
  183.         $allpartners=$partnerRepository->findBy(["isDeleted" => 0]);
  184.         $allmanifestation=$manifestationRepository->findBy(["isDeleted" => 0]);
  185.         return $this->render('index.html.twig', [
  186.             'articles' => $articles,
  187.             'partners' => $partners,
  188.             'lienUtils' => $lienUtils,
  189.             'last_username' => $lastUsername,
  190.             'error' => $error,
  191.             'allmembers'=>$allmembers,
  192.             'allpublications'=> $allpublications,
  193.             'allpartners'=>$allpartners,
  194.             'allmanifestation'=>$allmanifestation
  195.         ]);
  196.     }
  197.     /**
  198.          * @Route("/news", name="actualite_show")
  199.          */
  200.         public function show(ArticleRepository $repo,ManifestationRepository $manifestationRepositoryPaginatorInterface $paginator,Request $request,MembreRepository $membreRepository,PublicationsRepository $publicationsRepository,PartnerRepository $partnerRepository): Response
  201.         {
  202.             $articles $repo->findBy(["isDeleted" => 0], ['createdAt' => 'desc']);
  203.             $pagination $paginator->paginate(
  204.                 $articles/* query NOT result */
  205.                 $request->query->getInt('page'1), /*page number*/
  206.                 /*limit per page*/
  207.             );
  208.             $allmembers=$membreRepository->findBy(["isDeleted" => 0]);
  209.             $allpublications=$publicationsRepository->findAll();
  210.             $allpartners=$partnerRepository->findBy(["isDeleted" => 0]);
  211.             $allmanifestation=$manifestationRepository->findBy(["isDeleted" => 0]);
  212.             return $this->render('actualite/news.html.twig', [
  213.                 'articles' => $pagination,
  214.                 'allmembers'=>$allmembers,
  215.                 'allpublications'=>$allpublications,
  216.                 'allpartners'=>$allpartners,
  217.                 'allmanifestation'=>$allmanifestation
  218.             ]);
  219.         }
  220.     /**
  221.      * @Route("/actulalite/details/{id}", name="actualite_details")
  222.      */
  223.     public function show_details(ArticleRepository $repoArticle $articleManifestationRepository $manifestationRepositoryPaginatorInterface $paginator,Request $request,MembreRepository $membreRepository,PublicationsRepository $publicationsRepository,PartnerRepository $partnerRepository): Response
  224.     {
  225.         $allmembers=$membreRepository->findBy(["isDeleted" => 0]);
  226.         $allpublications=$publicationsRepository->findAll();
  227.         $allpartners=$partnerRepository->findAll();
  228.         $allmanifestation=$manifestationRepository->findAll();
  229.         return $this->render('actualite/details.html.twig', [
  230.             'article' => $article,
  231.             'allmembers'=>$allmembers,
  232.             'allpublications'=>$allpublications,
  233.             'allpartners'=>$allpartners,
  234.             'allmanifestation'=>$allmanifestation
  235.         ]);
  236.     }
  237. }