src/Controller/OSFileController.php line 35

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