src/Controller/OSFileController.php line 35
<?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 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');}}