/** * @Route( * "/image/{node}", * name="claro_image" * ) */ public function fileAction(ResourceNode $node) { $image = $this->get('claroline.manager.resource_manager')->getResourceFromNode($node); $response = new StreamedResponse(); $path = $this->container->getParameter('claroline.param.files_directory') . DIRECTORY_SEPARATOR . $image->getHashName(); $response->setCallBack(function () use($path) { readfile($path); }); $response->headers->set('Content-Type', $node->getMimeType()); return $response->send(); }
/** * @EXT\Route( * "/download/{pdf}", * name="claro_pdf_download", * options={"expose"=true} * ) * @EXT\ParamConverter( * "pdf", * class="ClarolinePdfGeneratorBundle:Pdf", * options={"mapping": {"pdf": "guid"}} * ) * * @param array $nodes * @param bool $forceArchive * * @return \Symfony\Component\HttpFoundation\Response */ public function download(Pdf $pdf) { $response = new StreamedResponse(); $file = $this->pdfManager->getFile($pdf); $response->setCallBack(function () use($file) { readfile($file); }); $response->headers->set('Content-Transfer-Encoding', 'octet-stream'); $response->headers->set('Content-Type', 'application/force-download'); $response->headers->set('Content-Disposition', 'attachment; filename=' . urlencode($pdf->getName() . '.pdf')); $response->headers->set('Content-Type', 'application/pdf'); $response->headers->set('Connection', 'close'); $response->send(); }
/** * @EXT\Route( * "resource/media/{node}", * name="claro_file_get_media", * options={"expose"=true} * ) * * @param integer $id * * @return Response */ public function streamMediaAction(ResourceNode $node) { $collection = new ResourceCollection(array($node)); $this->checkAccess('OPEN', $collection); $file = $this->get('claroline.manager.resource_manager')->getResourceFromNode($node); $path = $this->container->getParameter('claroline.param.files_directory') . DIRECTORY_SEPARATOR . $file->getHashName(); $response = new StreamedResponse(); $response->setCallBack(function () use($path) { readfile($path); }); $response->headers->set('Content-Type', $node->getMimeType()); $response->send(); return new Response(); }
/** * @EXT\Route( * "/download/invoice/{invoice}", * name="invoice_download" * ) * * @return Response */ public function downloadAction(Invoice $invoice) { $user = $this->tokenStorage->getToken()->getUser(); if ($invoice->getChart()->getOwner() !== $user && !$this->authorization->isGranted('ROLE_ADMIN')) { throw new AccessDeniedException(); } $file = $this->invoiceManager->getPdf($invoice); $response = new StreamedResponse(); $response->setCallBack(function () use($file) { readfile($file); }); $response->headers->set('Content-Transfer-Encoding', 'octet-stream'); $response->headers->set('Content-Type', 'application/force-download'); $response->headers->set('Content-Disposition', 'attachment; filename=invoice-' . $invoice->getInvoiceNumber() . '.pdf'); $response->headers->set('Content-Type', 'application/pdf'); $response->headers->set('Connection', 'close'); $response->send(); return new Response(); }
public function createResponse(ViewHandler $handler, View $view, Request $request, $format) { $data = $view->getData(); $context = $view->getSerializationContext(); $container = $handler->getContainer(); $format = $view->getFormat(); $file = $container->get('claroline.library.view.serializer.serializer')->serialize($data, $format); $response = new StreamedResponse(); $response->setCallBack(function () use($file) { readfile($file); }); $response->headers->set('Content-Transfer-Encoding', 'octet-stream'); $response->headers->set('Content-Type', 'application/force-download'); $response->headers->set('Content-Disposition', 'attachment; filename=file.' . $format); switch ($format) { case 'csv': $response->headers->set('Content-Type', 'text/csv'); break; case 'xls': $response->headers->set('Content-Type', 'application/vnd.ms-excel'); break; } return $response; }
/** * @EXT\Route("/export/users/{format}", name="claro_admin_export_users") * * @return Response */ public function export($format) { $exporter = $this->container->get('claroline.exporter.' . $format); $exporterManager = $this->container->get('claroline.manager.exporter_manager'); $file = $exporterManager->export('Claroline\\CoreBundle\\Entity\\User', $exporter); $response = new StreamedResponse(); $response->setCallBack(function () use($file) { readfile($file); }); $response->headers->set('Content-Transfer-Encoding', 'octet-stream'); $response->headers->set('Content-Type', 'application/force-download'); $response->headers->set('Content-Disposition', 'attachment; filename=users.' . $format); switch ($format) { case 'csv': $response->headers->set('Content-Type', 'text/csv'); break; case 'xls': $response->headers->set('Content-Type', 'application/vnd.ms-excel'); break; } $response->headers->set('Connection', 'close'); return $response; }
/** * @EXT\Route( * "/{workspace}/export", * name="claro_workspace_export", * options={"expose"=true} * ) */ public function exportAction(Workspace $workspace) { $archive = $this->container->get('claroline.manager.transfert_manager')->export($workspace); $fileName = $workspace->getCode() . '.zip'; $mimeType = 'application/zip'; $response = new StreamedResponse(); $response->setCallBack(function () use($archive) { readfile($archive); }); $response->headers->set('Content-Transfer-Encoding', 'octet-stream'); $response->headers->set('Content-Type', 'application/force-download'); $response->headers->set('Content-Disposition', 'attachment; filename=' . urlencode($fileName)); $response->headers->set('Content-Length', filesize($archive)); $response->headers->set('Content-Type', $mimeType); $response->headers->set('Connection', 'close'); return $response->send(); }
/** * @EXT\Route( * "/courses/export", * name="claro_cursus_courses_export", * options={"expose"=true} * ) * @EXT\ParamConverter("authenticatedUser", options={"authenticatedUser" = true}) */ public function coursesExportAction() { $courses = $this->cursusManager->getAllCourses('', 'id', 'ASC', false); $zipName = 'courses.zip'; $mimeType = 'application/zip'; $file = $this->cursusManager->zipDatas($courses, 'course'); $response = new StreamedResponse(); $response->setCallBack(function () use($file) { readfile($file); }); $response->headers->set('Content-Transfer-Encoding', 'octet-stream'); $response->headers->set('Content-Type', 'application/force-download'); $response->headers->set('Content-Disposition', 'attachment; filename=' . urlencode($zipName)); $response->headers->set('Content-Type', $mimeType); $response->headers->set('Connection', 'close'); $response->send(); return new Response(); }
/** * @DI\Observe("open_directory") * * @param OpenResourceEvent $event */ public function onOpen(OpenResourceEvent $event) { $dir = $event->getResourceNode(); $file = $this->resourceManager->download(array($dir)); $response = new StreamedResponse(); $response->setCallBack(function () use($file) { readfile($file); }); $response->headers->set('Content-Transfer-Encoding', 'octet-stream'); $response->headers->set('Content-Type', 'application/force-download'); $response->headers->set('Content-Disposition', 'attachment; filename=archive'); $response->headers->set('Content-Type', 'application/zip'); $response->headers->set('Connection', 'close'); $event->setResponse($response); $event->stopPropagation(); }
/** * @EXT\Route( * "/export", * name="claro_resource_export", * options={"expose"=true} * ) * @EXT\ParamConverter( * "nodes", * class="ClarolineCoreBundle:Resource\ResourceNode", * options={"multipleIds" = true} * ) * * This function takes an array of parameters. Theses parameters are the ids * of the resources which are going to be exported * (query string: "ids[]=1&ids[]=2" ...). * * @param array $nodes * * @return \Symfony\Component\HttpFoundation\Response */ public function exportAction(array $nodes) { if (count($nodes) === 0) { throw new \Exception('No resource to export'); } $workspace = $nodes[0]->getWorkspace(); $archive = $this->transferManager->exportResources($workspace, $nodes); $fileName = $workspace->getCode() . '.zip'; $mimeType = 'application/zip'; $response = new StreamedResponse(); $response->setCallBack(function () use($archive) { readfile($archive); }); $response->headers->set('Content-Transfer-Encoding', 'octet-stream'); $response->headers->set('Content-Type', 'application/force-download'); $response->headers->set('Content-Disposition', 'attachment; filename=' . urlencode($fileName)); $response->headers->set('Content-Type', $mimeType); $response->headers->set('Content-Length', filesize($archive)); $response->headers->set('Connection', 'close'); return $response; }
private function exportEvent($workspace = null) { $file = $this->agendaManager->export(); $response = new StreamedResponse(); $response->setCallBack(function () use($file) { readfile($file); }); $name = $workspace ? $workspace->getName() : 'desktop'; $response->headers->set('Content-Transfer-Encoding', 'octet-stream'); $response->headers->set('Content-Type', 'application/force-download'); $response->headers->set('Content-Disposition', 'attachment; filename=' . $name . '.ics'); $response->headers->set('Content-Type', ' text/calendar'); $response->headers->set('Connection', 'close'); return $response; }
/** * @EXT\Route( * "/export/{format}/from/{from}/to/{to}/isFree/{isFree}/search/{search}", * name="formalibre_export_invoice", * defaults={"format"="xls", "search" = ""} * ) * @Security("has_role('ROLE_ADMIN')") * * @return Response */ public function exportAction($format, $search, $isFree, $from, $to) { //the admin is the only one able to do this. if (!$this->authorization->isGranted('ROLE_ADMIN')) { throw new \AccessDeniedException(); } $boolFree = $isFree === "true" ? true : false; $invoices = $boolFree ? $this->invoiceManager->getInvoices(true, $search, $from, $to, false) : $this->invoiceManager->getFree($search, $from, $to, false); $file = $this->invoiceManager->export($invoices, $this->container->get('claroline.exporter.' . $format)); $response = new StreamedResponse(); $response->setCallBack(function () use($file) { readfile($file); }); $response->headers->set('Content-Transfer-Encoding', 'octet-stream'); $response->headers->set('Content-Type', 'application/force-download'); $response->headers->set('Content-Disposition', 'attachment; filename=users.' . $format); switch ($format) { case 'csv': $response->headers->set('Content-Type', 'text/csv'); break; case 'xls': $response->headers->set('Content-Type', 'application/vnd.ms-excel'); break; } $response->headers->set('Connection', 'close'); return $response; }
/** * @EXT\Route( * "/api/session/event/{sessionEvent}/users/type/{type}/csv/export", * name="api_get_session_event_users_csv_export", * options = {"expose"=true} * ) * @EXT\ParamConverter("user", converter="current_user") */ public function exportCsvSessionEventUsersAction(SessionEvent $sessionEvent, $type) { $exportType = intval($type); $users = []; if ($exportType === 1 || $exportType === 3) { $users['participants'] = $this->cursusManager->getUsersBySessionEventAndStatus($sessionEvent, SessionEventUser::REGISTERED); } if ($exportType === 2 || $exportType === 3) { $users['trainers'] = $sessionEvent->getTutors(); } $response = new StreamedResponse(); $response->setCallBack(function () use($users) { $handle = fopen('php://output', 'r+'); if (count($users) === 2) { fwrite($handle, $this->translator->trans('trainers', [], 'cursus') . PHP_EOL); } if (isset($users['trainers'])) { foreach ($users['trainers'] as $user) { fwrite($handle, implode(';', [$user->getFirstName(), $user->getLastName()]) . PHP_EOL); } } if (count($users) === 2) { fwrite($handle, PHP_EOL); fwrite($handle, $this->translator->trans('participants', [], 'cursus') . PHP_EOL); } if (isset($users['participants'])) { foreach ($users['participants'] as $user) { fwrite($handle, implode(';', [$user->getFirstName(), $user->getLastName()]) . PHP_EOL); } } fclose($handle); }); $fileName = $sessionEvent->getName(); if ($exportType === 1) { $fileName .= '[' . $this->translator->trans('participants', [], 'cursus') . ']'; } elseif ($exportType === 2) { $fileName .= '[' . $this->translator->trans('trainers', [], 'cursus') . ']'; } $response->headers->set('Content-Transfer-Encoding', 'octet-stream'); $response->headers->set('Content-Type', 'application/force-download'); $response->headers->set('Content-Disposition', 'attachment; filename=' . $fileName . '.csv'); $response->headers->set('Content-Type', 'text/csv'); $response->headers->set('Connection', 'close'); return $response; }