src/Controller/ArticlesController.php line 123

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Component\Routing\Annotation\Method;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\HttpFoundation\File\UploadedFile;
  9. use Symfony\Component\HttpFoundation\File\File;
  10. use Doctrine\Common\Collections\ArrayCollection;
  11. use Symfony\Component\Validator\Validator\ValidatorInterface;
  12. use App\Entity\Articles;
  13. use App\Entity\Banners;
  14. use App\Entity\Documents;
  15. use App\Form\ArticlesType;
  16. use App\Entity\ArticlesPictures;
  17. use App\Entity\Pictures;
  18. use App\Entity\UsersActivities;
  19. use OlaSoft\Common;
  20. /**
  21.  * @Route("/os-admin/articles")
  22.  */
  23. class ArticlesController extends AbstractController
  24. {
  25.     /**
  26.      *
  27.      * @Route("/page/{offset}/",name="articles-admin-page")
  28.      * @Route("/",name="articles-admin")
  29.      * @Route("/search/{keywords}/page/{offset}/",name="articles-search-admin-page")
  30.      * @Route("/search/{keywords}/",name="articles-search-admin")
  31.      */
  32.     public function admin($keywords=null,$offset=1)
  33.     {
  34.         $request $this->get('request_stack')->getCurrentRequest();
  35.         $offset--;
  36.         $limit 20;
  37.         $of=$offset*$limit;
  38.         $em $this->getDoctrine()->getManager();
  39.         $list$em->getRepository(Articles::class)->getAll($limit,$of,null,$keywords?$keywords:null);
  40.         $count=$em->getRepository(Articles::class)->getCount();
  41.         $ajax $request->isXmlHttpRequest();
  42.         $response $this->render('Admin\index.html.twig',[
  43.             'list'=>$list,
  44.             'ajax'=>$ajax,
  45.             'count'=>$count,
  46.             'table_limit'=>$limit,
  47.             'offset'=>$offset,
  48.             'addBtnClass'=>'btn-popup semi',
  49.             "title"=>"Gestion des articles ",
  50.             "subtitle"=>"Liste de tous les articles"
  51.         ]);
  52.         return $ajax ?
  53.             new Response(\json_encode([
  54.                 'content'=>$response->getContent(),
  55.                 "title"=>"Gestion des articles ",
  56.                 "subtitle"=>"Liste de tous les articles"
  57.             ]))
  58.         : $response;
  59.     }
  60.     /**
  61.      * @Route("/add/",name="articles-new", defaults={"isEdit":false})
  62.      * @Route("/{id}/edit",name="articles-edit")
  63.      */
  64.     public function edit(Articles $article=null$isEdit trueValidatorInterface $validator)
  65.     {
  66.         $em $this->getDoctrine()->getManager();
  67.         $request $this->get('request_stack')->getCurrentRequest();
  68.         if($article === null){
  69.             $article = new Articles();
  70.             $article->setUser($this->getUser());
  71.         }
  72.         else
  73.             $article->setUpdatedBy($this->getUser() ? $this->getUser() : null);
  74.         $form=$this->createForm(ArticlesType::class,$article);
  75.         $form->get('date')->setData($article->getDate());
  76.         $form->get('time')->setData($article->getDate());
  77.         $form->handleRequest($request);
  78.         if($form->isSubmitted() && $form->isValid()){
  79.             $article->setSlug(Common::slug($article->getTitle()));
  80.             if(!$isEdit$article->setCreatedAt(new \DateTime);
  81.             $article->setLastUpdate(new \DateTime);
  82.             if($form->get('date')->getData()!=null){
  83.                 $date $form->get('date')->getData()->format('Y-m-d').' '.$form->get('time')->getData()->format('H:i:s');
  84.                 $article->setDate(\DateTime::createFromFormat('Y-m-d H:i:s'$date));
  85.             }
  86.             $em->persist($article);
  87.             $em->flush();
  88.             Common::trackChange(new UsersActivities$em$article$this->getUser(), $isEdit 'edit' 'add'$isEdit "Modification d'un article" "Ajout d'un article");
  89.             $this->addFlash('notice','Enregistrement effectué avec succès');
  90.             return $this->redirectToRoute('articles-admin');
  91.         }
  92.         $ajax $request->isXmlHttpRequest();
  93.         $response $this->render('Admin\edit.html.twig',[
  94.             'form' => $form->createView(),
  95.             'ajax' => $ajax,
  96.             'title' => "Gestion des articles ",
  97.             'subtitle' => "Edition d'un article",
  98.         ]);
  99.         return $ajax ?
  100.             new Response(\json_encode([
  101.                 'content' => $response->getContent(),
  102.                 'title' => "Gestion des articles ",
  103.                 'subtitle' => "Edition d'un article"
  104.             ]))
  105.         : $response;
  106.     }
  107.     /**
  108.      * @Route("/{id}/enabled", name="articles-enable")
  109.      */
  110.     public function enable(Articles $article)
  111.     {
  112.         $request $this->get('request_stack')->getCurrentRequest();
  113.         $em $this->getDoctrine()->getManager();
  114.         $article->setIsEnabled(!$article->getIsEnabled());
  115.         $em->persist($article);
  116.         $em->flush();
  117.         Common::trackChange(new UsersActivities$em$article$this->getUser(), $article->getIsEnabled() ? 'enable' 'disable'$article->getIsEnabled() ? "Activation d'un article" "Désactivation d'un article");
  118.         $ajax $request->isXmlHttpRequest();
  119.         if(!$ajax)
  120.             $this->addFlash("notice","Activation / Désactivation effectuée avec succès.");
  121.         return $ajax
  122.             ? new Response(\json_encode(['status'=>$article->getIsEnabled(), 'notice'=>'Activation / Désactivation effectuée avec succès.']))
  123.             : $this->redirectToRoute('articles-admin');
  124.     }
  125.     /**
  126.      * @Route("/{id}/oneFrontPage", name="articles-onefrontpage")
  127.      */
  128.     public function oneFrontPage(Articles $article)
  129.     {
  130.         $request $this->get('request_stack')->getCurrentRequest();
  131.         $em $this->getDoctrine()->getManager();
  132.         $article->setIsOnFrontPage(1);
  133.         $banner = new Banners;
  134.         $banner->setBanner($article->getBanner(), true);
  135.         $banner->setTitle($article->getTitle());
  136.         $banner->setDate($article->getDate());
  137.         $banner->setDescription($article->getDescription());
  138.         $banner->setBtnTitle("Lire l'article");
  139.         $banner->setLink($this->generateUrl('article',['id'=>$article->getId(), 'slug'=>$article->getSlug()]));
  140.         $banner->setIsEnabled(true);
  141.         $em->persist($banner);
  142.         $em->flush();
  143.         Common::trackChange(new UsersActivities$em$article$this->getUser(), $article->getIsOnFrontPage() ? 'addtofront' 'removefromfront'$article->getIsOnFrontPage() ? "Ajout d'un article de la Une" "Retrait d'un article de la Une");
  144.         $this->addFlash("notice","Ajout d'article sur la bannière effectué avec succès.");
  145.         return $this->redirectToRoute('banners-admin');
  146.     }
  147. }