src/Controller/OSFileController.php line 23

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 App\Entity\Albums;
  9. use App\Entity\Pictures;
  10. use App\Entity\AlbumsPictures;
  11. use App\Entity\Biblios;
  12. use App\Entity\File;
  13. use OlaSoft\Common;
  14. class OSFileController extends AbstractController
  15. {
  16.     /**
  17.      * @Route("/doc/{id}/read", name="file-read", defaults={"isRead":1})
  18.      * @Route("/doc/{id}/download", name="file-download")
  19.      */
  20.     public function download(File $doc null$isRead 0){
  21.         $em $this->getDoctrine()->getManager();
  22.         $request $this->get('request_stack')->getCurrentRequest();
  23.         if(!$doc) throw $this->createNotFoundException('Le document que vous demandez n\'est pas disponible.');
  24.         if($isRead$doc->setReading($doc->getReading()+1);
  25.         else $doc->setDownloads($doc->getDownloads()+1);
  26.         $em->persist($doc);
  27.         $em->flush();
  28.         $extension strtolower(pathinfo($doc->getFile(), PATHINFO_EXTENSION));
  29.         $filename $doc->getFile();
  30.         $response = new Response();
  31.         $response->headers->set('Cache-Control''private');
  32.         $response->headers->set('Content-type'mime_content_type($filename));
  33.         $response->headers->set('Content-Disposition''attachment; filename="' Common::slug($doc->getName()) .'.'.$extension.'";');
  34.         $response->headers->set('Content-length'filesize($filename));
  35.         $response->setContent(file_get_contents($filename));
  36.         return $response;
  37.     }
  38.     /**
  39.      * @Route("/album/{id}/", name="album")
  40.      * @Route("/album/{id}/read", name="album-read")
  41.      */
  42.     public function album(Albums $o)
  43.     {
  44.         $em $this->getDoctrine()->getManager();
  45.         $list = [];
  46.         foreach ($o->getPictures() as $p$list[] = $p->getFile();
  47.         return new Response(implode(',',$list));
  48.     }
  49.     /**
  50.      * @Route("/biblio/{id}/", name="biblio")
  51.      * @Route("/biblio/{id}/read", name="biblio-read")
  52.      */
  53.     public function biblio(Biblios $o)
  54.     {
  55.         $em $this->getDoctrine()->getManager();
  56.         $list = [];
  57.         foreach ($o->getFiles() as $p$list[] = $p->getFile();
  58.         return new Response(implode(',',$list));
  59.     }
  60.     /**
  61.      * @Route("/biblio/{id}/post", name="doc-post")
  62.      */
  63.     public function docPost(File $o)
  64.     {
  65.         $em $this->getDoctrine()->getManager();
  66.         $list = [];
  67.         foreach ($o->getFile() as $p$list[] = $p->getDocument()->getFile();
  68.         return new Response(implode(',',$list));
  69.     }
  70.     /**
  71.      * @Route("/{id}/enable", name="file-enable")
  72.      */
  73.     public function enable(File $doc)
  74.     {
  75.         $request $this->get('request_stack')->getCurrentRequest();
  76.         $em $this->getDoctrine()->getManager();
  77.         $doc->setIsEnabled(!$doc->getIsEnabled());
  78.         $em->persist($doc);
  79.         $em->flush();
  80.         $ajax $request->isXmlHttpRequest();
  81.         if(!$ajax$this->addFlash("notice","Activation / Désactivation effectuée avec succès.");
  82.         return $ajax
  83.             ? new Response(\json_encode(['status'=>$article->getIsEnabled(), 'notice'=>'Activation / Désactivation effectuée avec succès.']))
  84.             : $this->redirectToRoute('home');
  85.     }
  86.     /**
  87.      * @Route("/{id}/delete", name="file-delete")
  88.      */
  89.     public function delete(File $doc)
  90.     {
  91.         $request $this->get('request_stack')->getCurrentRequest();
  92.         $em $this->getDoctrine()->getManager();
  93.         $doc->setIsDeleted(1);
  94.         $em->persist($doc);
  95.         $em->flush();
  96.         $ajax $request->isXmlHttpRequest();
  97.         if(!$ajax$this->addFlash("notice","Suppression effectuée avec succès.");
  98.         return $ajax
  99.             ? new Response(\json_encode(['status'=>$article->getIsEnabled(), 'notice'=>'Suppression effectuée avec succès.']))
  100.             : $this->redirectToRoute('home');
  101.     }
  102. }