UploadListener   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 0
Metric Value
wmc 3
lcom 1
cbo 5
dl 0
loc 55
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A onUpload() 0 13 1
A createFileHistory() 0 13 1
1
<?php
2
3
/**
4
 * Copyright 2014 Jonathan Bouzekri. All rights reserved.
5
 *
6
 * @copyright Copyright 2014 Jonathan Bouzekri <[email protected]>
7
 * @license https://github.com/jbouzekri/FileUploaderBundle/blob/master/LICENSE
8
 * @link https://github.com/jbouzekri/FileUploaderBundle
9
 */
10
11
namespace Jb\Bundle\FileUploaderBundle\EventListener\Upload;
12
13
use Oneup\UploaderBundle\Event\PostPersistEvent;
14
use Jb\Bundle\FileUploaderBundle\Entity\FileHistory;
15
use Jb\Bundle\FileUploaderBundle\Service\FileHistoryManagerInterface;
16
17
/**
18
 * UploadListener
19
 * Append the filename and route to the response
20
 */
21
class UploadListener
22
{
23
    /**
24
     * @var FileHistoryManagerInterface
25
     */
26
    protected $fileHistoryManager;
27
28
    /**
29
     * Constructor
30
     *
31
     * @param FileHistoryManagerInterface $fileHistoryManager
32
     */
33
    public function __construct(FileHistoryManagerInterface $fileHistoryManager)
34
    {
35
        $this->fileHistoryManager = $fileHistoryManager;
36
    }
37
38
    /**
39
     * {@inheritDoc}
40
     */
41
    public function onUpload(PostPersistEvent $event)
42
    {
43
        // Create and persist a file history object
44
        $fileHistory = $this->createFileHistory($event);
45
46
        // Add filename information to response
47
        $response = $event->getResponse();
48
        $response['filename'] = $fileHistory->getFileName();
49
        $response['originalname'] = $fileHistory->getOriginalName();
50
        $response['filepath'] = $this->fileHistoryManager->getUrl($fileHistory);
51
52
        return $response;
53
    }
54
55
    /**
56
     * Create a filehistory to retrieve original name and uploading user
57
     *
58
     * @param PostPersistEvent $event
59
     *
60
     * @return FileHistory
61
     */
62
    protected function createFileHistory(PostPersistEvent $event)
63
    {
64
        // Find original filename in request uploaded file
65
        $files = $event->getRequest()->files->all();
66
        $uploadedFile = array_pop($files);
67
        $originalFileName = $uploadedFile->getClientOriginalName();
68
69
        // Get generated filename
70
        $fileName = $event->getFile()->getBasename();
71
72
        // Fill FileHistory object
73
        return $this->fileHistoryManager->createAndSave($fileName, $originalFileName, $event->getType());
74
    }
75
}
76