src/Controller/ArticlesController.php line 41
<?phpnamespace App\Controller;use Symfony\Component\Routing\Annotation\Method;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\Routing\Annotation\Route;use Symfony\Component\HttpFoundation\Request;use Doctrine\Persistence\ManagerRegistry;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\HttpFoundation\File\UploadedFile;// use Symfony\Component\HttpFoundation\File\File;use Symfony\Component\HttpFoundation\File\File as SymfonyFile;use Doctrine\Common\Collections\ArrayCollection;use Symfony\Component\Validator\Validator\ValidatorInterface;use App\Entity\Articles;use App\Entity\Banners;use App\Entity\Documents;use App\Form\ArticlesType;use App\Entity\ArticlesPictures;use App\Entity\Pictures;use App\Entity\Picture;use App\Entity\File;use App\Entity\UsersActivities;use App\QrCodeService\QrCodeService;use App\DompdfService\DompdfService;use OlaSoft\Common;/*** @Route("/os-admin/articles")*/class ArticlesController extends OSController{/*** @Route("/page/{offset}/",name="articles-admin-page")* @Route("/",name="articles-admin")* @Route("/search/{keywords}/page/{offset}/",name="articles-search-admin-page")* @Route("/search/{keywords}/",name="articles-search-admin")*/public function admin(Request $request, $keywords=null,$offset=1){$offset--;$limit = 20;$of=$offset*$limit;$em = $this->getDoctrine()->getManager();$list= $em->getRepository(Articles::class)->getAll($limit,$of,null,$keywords?$keywords:null);$count=$em->getRepository(Articles::class)->getCount();$ajax = $request->isXmlHttpRequest();$response = $this->render('Admin\index.html.twig',['list'=>$list,'ajax'=>$ajax,'count'=>$count,'table_limit'=>$limit,'offset'=>$offset,'addBtnClass'=>'btn-popup semi',"title"=>"Gestion des articles ","subtitle"=>"Liste de tous les articles"]);return $ajax ?new Response(\json_encode(['content'=>$response->getContent(),"title"=>"Gestion des articles ","subtitle"=>"Liste de tous les articles"])): $response;}/*** @Route("/add/",name="articles-new", defaults={"isEdit":false})* @Route("/{id}/edit",name="articles-edit")*/public function edit(Request $request, Articles $item=null, $isEdit = true){$em = $this->getDoctrine()->getManager();if($item === null){$item = new Articles();$item->setUser($this->getUser());}else$item->setUpdatedBy($this->getUser() ? $this->getUser() : null);$form=$this->createForm(ArticlesType::class,$item);$form->handleRequest($request);if($form->isSubmitted() && $form->isValid()){$item->setSlug(Common::slug($item->getTitle()));if(!$isEdit) $item->setCreatedAt(new \DateTime);$item->setLastUpdate(new \DateTime);if($form->get('date')->getData()!=null){$date = $form->get('date')->getData()->format('Y-m-d').' '.$form->get('time')->getData()->format('H:i:s');$item->setDate(\DateTime::createFromFormat('Y-m-d H:i:s', $date));}if(!$item->isHasGeneratedPdf() && $isEdit && $item->getQrcode() && $item->getGeneratedPdf()){unlink($item->getQrcode()->getRootFile());unlink($item->getGeneratedPdf()->getRootFile());$item->setQrcode(null);$item->setGeneratedPdf(null);}if($item->isHasGeneratedPdf()){$qrCode = new QrCodeService;$namePng = uniqid('', '').'.png';$data = $request->getSchemeAndHttpHost().$request->getBasePath().$this->generateUrl('article',['id'=>$item->getId(), 'slug'=>$item->getSlug()]);$qrCodePng = $qrCode->generate($data,$namePng);$pathPng = dirname(__DIR__, 3).'/public/upload/images/qrcode/'.$namePng;$pic = new Picture($pathPng);$pic->setSource($namePng);if($isEdit && $item->getQrcode()){unlink($item->getQrcode()->getRootFile());$pic->setLastUpdate(new \DateTime);}$item->setQrcode($pic);/////generate PDF$pdf = new DompdfService;$conf = ['imageSrc' => $pdf->imageToBase64(dirname(__DIR__, 2).'/public/images/logo.png'),'qrcode' => $pdf->imageToBase64(dirname(__DIR__, 2).'/public/upload/qrcode/articles/'.$namePng),'data' => $item,];$html = $this->renderView('Default/generated-pdf.html.twig', $conf);$namePdf = uniqid('', '').'.pdf';$pdfFile = $pdf->getpdf($html,$namePdf);$pathPdf = dirname(__DIR__, 3).'/public/upload/files/generated-pdf/'.$namePdf;$gPDF = new File($pathPdf);$gPDF->setSource($item->getSlug()."pdf");if($isEdit && $item->getGeneratedPdf()){unlink($item->getGeneratedPdf()->getRootFile());$gPDF->setLastUpdate(new \DateTime);}$item->setGeneratedPdf($gPDF);}$em->persist($item);$em->flush();Common::trackChange($em, $item, $this->getUser(), 'edit', "Édition d'un article");$this->addFlash('notice','Enregistrement effectué avec succès');return $this->redirectToRoute('articles-admin');}$ajax = $request->isXmlHttpRequest();$response = $this->render('Admin\edit.html.twig',['form' => $form->createView(),'ajax' => $ajax,'title' => "Gestion des articles ",'subtitle' => "Edition d'un article",]);return $ajax ?new Response(\json_encode(['content' => $response->getContent(),'title' => "Gestion des articles ",'subtitle' => "Edition d'un article"])): $response;}/*** @Route("/{id}/enable", name="articles-enable")*/public function enable(Request $request, Articles $item){$em = $this->getDoctrine()->getManager();$item->setIsEnabled(!$item->getIsEnabled());$em->persist($item);$em->flush();Common::trackChange($em, $item, $this->getUser(), $item->getIsEnabled() ? 'enable' : 'disable', $item->getIsEnabled() ? "Activation d'un article" : "Désactivation d'un article");$ajax = $request->isXmlHttpRequest();if(!$ajax) $this->addFlash("notice","Activation / Désactivation effectuée avec succès.");return $ajax? new Response(\json_encode(['status'=>$item->getIsEnabled(), 'notice'=>'Activation / Désactivation effectuée avec succès.'])): $this->redirectToRoute('articles-admin');}/*** @Route("/{id}/oneFrontPage", name="articles-onefrontpage")*/public function oneFrontPage(Request $request, Articles $item){$em = $this->getDoctrine()->getManager();$item->setIsOnFrontPage(1);$banner = new Banners;$banner->setBanner($item->getBanner(), true);$banner->setTitle($item->getTitle());$banner->setDate($item->getDate());$banner->setDescription($item->getDescription());$banner->setBtnTitle("Lire l'article");$banner->setLink($this->generateUrl('article',['id'=>$item->getId(), 'slug'=>$item->getSlug()]));$banner->setIsEnabled(true);$em->persist($banner);$em->flush();Common::trackChange($em, $item, $this->getUser(), $item->getIsOnFrontPage() ? 'addtofront' : 'removefromfront', $item->getIsOnFrontPage() ? "Ajout d'un article de la Une" : "Retrait d'un article de la Une");$this->addFlash("notice","Ajout d'article sur la bannière effectué avec succès.");return $this->redirectToRoute('banners-admin');}}