Ejemplo n.º 1
0
 /**
  * Download a set of documents
  *
  * @param Application $app
  * @param Request     $request
  * @param Token       $token
  *
  * @return Response
  */
 public function downloadDocuments(Application $app, Request $request, Token $token)
 {
     if (false === ($list = @unserialize($token->getData()))) {
         $app->abort(500, 'Invalid datas');
     }
     if (!is_array($list)) {
         $app->abort(500, 'Invalid datas');
     }
     foreach (['export_name', 'files'] as $key) {
         if (!isset($list[$key])) {
             $app->abort(500, 'Invalid datas');
         }
     }
     $exportName = $list['export_name'];
     if ($list['count'] === 1) {
         $file = end($list['files']);
         $subdef = end($file['subdefs']);
         $exportName = sprintf('%s%s.%s', $file['export_name'], $subdef['ajout'], $subdef['exportExt']);
         $exportFile = \p4string::addEndSlash($subdef['path']) . $subdef['file'];
         $mime = $subdef['mime'];
         $list['complete'] = true;
     } else {
         $exportFile = $app['tmp.download.path'] . '/' . $token->getValue() . '.zip';
         $mime = 'application/zip';
     }
     if (!$app['filesystem']->exists($exportFile)) {
         $app->abort(404, 'Download file not found');
     }
     $app['dispatcher']->addListener(KernelEvents::RESPONSE, function (FilterResponseEvent $event) use($list, $app) {
         \set_export::log_download($app, $list, $event->getRequest()->get('type'), !!$event->getRequest()->get('anonymous', false), isset($list['email']) ? $list['email'] : '');
     });
     return $app['phraseanet.file-serve']->deliverFile($exportFile, $exportName, DeliverDataInterface::DISPOSITION_ATTACHMENT, $mime);
 }
Ejemplo n.º 2
0
 /**
  * Download a set of documents
  *
  * @param Application $app
  * @param Request     $request
  * @param String      $token
  *
  * @return Response
  */
 public function downloadDocuments(Application $app, Request $request, $token)
 {
     $datas = $app['tokens']->helloToken($token);
     if (false === ($list = @unserialize((string) $datas['datas']))) {
         $app->abort(500, 'Invalid datas');
     }
     $exportName = $list['export_name'];
     if ($list['count'] === 1) {
         $file = end($list['files']);
         $subdef = end($file['subdefs']);
         $exportName = sprintf('%s%s.%s', $file['export_name'], $subdef['ajout'], $subdef['exportExt']);
         $exportFile = \p4string::addEndSlash($subdef['path']) . $subdef['file'];
         $mime = $subdef['mime'];
         $list['complete'] = true;
     } else {
         $exportFile = $app['root.path'] . '/tmp/download/' . $datas['value'] . '.zip';
         $mime = 'application/zip';
     }
     if (!$app['filesystem']->exists($exportFile)) {
         $app->abort(404, 'Download file not found');
     }
     $app['dispatcher']->addListener(KernelEvents::TERMINATE, function (PostResponseEvent $event) use($list, $app) {
         \set_export::log_download($app, $list, $event->getRequest()->request->get('type'), null !== $event->getRequest()->request->get('anonymous') ? true : false, isset($list['email']) ? $list['email'] : '');
     });
     return $app['phraseanet.file-serve']->deliverFile($exportFile, $exportName, DeliverDataInterface::DISPOSITION_ATTACHMENT, $mime);
 }