vendor/oi/file/src/Listener/UploadListener.php line 45

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: eph
  5.  * Date: 18/03/15
  6.  * Time: 12:00
  7.  */
  8. namespace Oi\FileBundle\Listener;
  9. use Oi\FileBundle\Entity\Upload;
  10. use Oi\FileBundle\Exceptions\AlphaException;
  11. use Oi\FileBundle\Exceptions\MimetypeException;
  12. use Oi\FileBundle\Exceptions\SizeException;
  13. use Oi\FileBundle\Service\FileHandlerInterface;
  14. use Oi\FileBundle\Singleton\MimeTypeSingleton;
  15. use Oneup\UploaderBundle\Event\PostPersistEvent;
  16. use Oneup\UploaderBundle\Uploader\Response\EmptyResponse;
  17. use Symfony\Component\Routing\Router;
  18. use Symfony\Component\Routing\RouterInterface;
  19. class UploadListener
  20. {
  21.     /**
  22.      * @var RouterInterface
  23.      */
  24.     protected $router;
  25.     /**
  26.      * @var FileHandlerInterface
  27.      */
  28.     protected $fileHandler;
  29.     /**
  30.      * UploadListener constructor.
  31.      * @param RouterInterface $router
  32.      * @param FileHandlerInterface $fileHandler
  33.      */
  34.     public function __construct(RouterInterface $routerFileHandlerInterface $fileHandler)
  35.     {
  36.         $this->router $router;
  37.         $this->fileHandler $fileHandler;
  38.     }
  39.     public function onUpload(PostPersistEvent $event)
  40.     {
  41.         /* @var $file \Symfony\Component\HttpFoundation\File\File */
  42.         $file $event->getFile();
  43.         $request $event->getRequest();
  44.         $r null;
  45.         try {
  46.             $upload $this->fileHandler->makeUploadFromUploadedFile($file$request);
  47.             $r $upload->getJson();
  48.             $r['id'] = $upload->getId();
  49.             $r['bytes'] = $upload->getBytes();
  50.             if ($request->get('mode') == 'ckeditor') {
  51.                 $url str_replace('app_dev.php/'''$this->router->generate('homepage', array(), Router::ABSOLUTE_URL));
  52.                 echo json_encode([
  53.                     'uploaded' => 1,
  54.                     'filename' => $upload->getFilename(),
  55.                     'url' => str_replace(' ''%20'substr($url0strlen($url) - 1) . $r['url'])
  56.                 ]);
  57.                 exit;
  58.             }
  59.         } catch (MimetypeException $exception) {
  60.             $r = [
  61.                 'error' => 'upload.error.mimetype_not_allowed',
  62.                 'params' => [
  63.                     'mimetype' => $exception->getMimetype(),
  64.                     'valid' => $exception->getAcceptedMimetypes(),
  65.                 ]
  66.             ];
  67.         } catch (AlphaException $exception) {
  68.             $r = [
  69.                 'error' => 'upload.error.min_alpha',
  70.                 'params' => [
  71.                     'expected' => $exception->getExpectedAlpha(),
  72.                     'given' => $exception->getGivenAlpha(),
  73.                 ]
  74.             ];
  75.         } catch (SizeException $exception) {
  76.             $r = [
  77.                 'error' => 'upload.error.size_not_allowed',
  78.                 'params' => [
  79.                     'expected' => $exception->getExpectedSize(),
  80.                     'given' => $exception->getGivenSize(),
  81.                 ]
  82.             ];
  83.         } catch (\Exception $exception) {
  84.             $r = [
  85.                 'error' => $exception->getMessage(),
  86.                 'params' => [],
  87.             ];
  88.         }
  89.         $response $event->getResponse();
  90.         /* @var $response EmptyResponse */
  91.         $response['files'] = [$r];
  92.     }
  93. }