src/Controller/OSFileController.php line 35
<?php
namespace 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 App\Entity\Albums;
use App\Entity\Pictures;
use App\Entity\AlbumsPictures;
use App\Entity\Biblios;
use App\Entity\File;
use OlaSoft\Common;
class OSFileController extends AbstractController
{
public function __construct(ManagerRegistry $doctrine){
$this->doctrine = $doctrine;
}
private $doctrine;
public function getDoctrine()
{
return $this->doctrine;
}
/**
* @Route("/doc/{id}/read", name="file-read", defaults={"isRead":1})
* @Route("/doc/{id}/download", name="file-download")
*/
public function download(Request $request, File $doc = null, $isRead = 0){
$em = $this->getDoctrine()->getManager();
if(!$doc) throw $this->createNotFoundException('Le document que vous demandez n\'est pas disponible.');
if($isRead) $doc->setReading($doc->getReading()+1);
else $doc->setDownloads($doc->getDownloads()+1);
$em->persist($doc);
$em->flush();
$extension = strtolower(pathinfo($doc->getFile(), PATHINFO_EXTENSION));
$filename = $doc->getFile();
$response = new Response();
$response->headers->set('Cache-Control', 'private');
$response->headers->set('Content-type', mime_content_type($filename));
$response->headers->set('Content-Disposition', 'attachment; filename="' . Common::slug($doc->getName()) .'.'.$extension.'";');
$response->headers->set('Content-length', filesize($filename));
$response->setContent(file_get_contents($filename));
return $response;
}
/**
* @Route("/album/{id}/", name="album")
* @Route("/album/{id}/read", name="album-read")
*/
public function album(Albums $o)
{
$em = $this->getDoctrine()->getManager();
$list = [];
foreach ($o->getPictures() as $p) $list[] = $p->getFile();
return new Response(implode(',',$list));
}
/**
* @Route("/biblio/{id}/", name="biblio")
* @Route("/biblio/{id}/read", name="biblio-read")
*/
public function biblio(Biblios $o)
{
$em = $this->getDoctrine()->getManager();
$list = [];
foreach ($o->getFiles() as $p) $list[] = $p->getFile();
return new Response(implode(',',$list));
}
/**
* @Route("/biblio/{id}/post", name="doc-post")
*/
public function docPost(File $o)
{
$em = $this->getDoctrine()->getManager();
$list = [];
foreach ($o->getFile() as $p) $list[] = $p->getDocument()->getFile();
return new Response(implode(',',$list));
}
/**
* @Route("/{id}/enable", name="file-enable")
*/
public function enable(Request $request, File $doc)
{
$em = $this->getDoctrine()->getManager();
$doc->setIsEnabled(!$doc->getIsEnabled());
$em->persist($doc);
$em->flush();
$ajax = $request->isXmlHttpRequest();
if(!$ajax) $this->addFlash("notice","Activation / Désactivation effectuée avec succès.");
return $ajax
? new Response(\json_encode(['status'=>$article->getIsEnabled(), 'notice'=>'Activation / Désactivation effectuée avec succès.']))
: $this->redirectToRoute('home');
}
/**
* @Route("/{id}/delete", name="file-delete")
*/
public function delete(Request $request, File $doc)
{
$em = $this->getDoctrine()->getManager();
$doc->setIsDeleted(1);
$em->persist($doc);
$em->flush();
$ajax = $request->isXmlHttpRequest();
if(!$ajax) $this->addFlash("notice","Suppression effectuée avec succès.");
return $ajax
? new Response(\json_encode(['status'=>$article->getIsEnabled(), 'notice'=>'Suppression effectuée avec succès.']))
: $this->redirectToRoute('home');
}
}