Completed
Push — master ( d698c5...d714a0 )
by
unknown
09:33
created

CRUDController   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 50
Duplicated Lines 40 %

Coupling/Cohesion

Components 1
Dependencies 6

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 6
dl 20
loc 50
ccs 17
cts 17
cp 1
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A createAction() 0 16 3
A downloadAction() 8 8 1
A imageAction() 8 8 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
3
namespace MediaMonks\SonataMediaBundle\Controller;
4
5
use MediaMonks\SonataMediaBundle\ParameterBag\DownloadParameterBag;
6
use MediaMonks\SonataMediaBundle\ParameterBag\ImageParameterBag;
7
use Sonata\AdminBundle\Controller\CRUDController as BaseCRUDController;
8
use Symfony\Component\HttpFoundation\RedirectResponse;
9
use Symfony\Component\HttpFoundation\Request;
10
use Symfony\Component\HttpFoundation\StreamedResponse;
11
12
class CRUDController extends BaseCRUDController
13
{
14
    /**
15
     * @return \Symfony\Component\HttpFoundation\Response
16
     */
17 12
    public function createAction()
18
    {
19 12
        if (!$this->getRequest()->get('provider') && $this->getRequest()->isMethod('get')) {
20 1
            return $this->render(
21 1
                '@MediaMonksSonataMedia/CRUD/select_provider.html.twig',
22
                [
23 1
                    'providers' => $this->get('mediamonks.sonata_media.provider.pool')->getProviders(),
24 1
                    'base_template' => $this->getBaseTemplate(),
25 1
                    'admin' => $this->admin,
26 1
                    'action' => 'create',
27
                ]
28
            );
29
        }
30
31 11
        return parent::createAction();
32
    }
33
34
    /**
35
     * @param Request $request
36
     * @param $id
37
     * @return StreamedResponse
38
     */
39 1 View Code Duplication
    public function downloadAction(Request $request, $id)
40
    {
41 1
        $object = $this->admin->getObject($id);
42
43 1
        $this->admin->checkAccess('show', $object);
44
45 1
        return $this->get('mediamonks.sonata_media.utility.download')->getStreamedResponse($object, new DownloadParameterBag($request->query->all()));
46
    }
47
48
    /**
49
     * @param Request $request
50
     * @param int $id
51
     * @return RedirectResponse
52
     */
53 4 View Code Duplication
    public function imageAction(Request $request, $id, $width, $height)
54
    {
55 4
        $object = $this->admin->getObject($id);
56
57 4
        $this->admin->checkAccess('show', $object);
58
59 4
        return $this->get('mediamonks.sonata_media.utility.image')->getRedirectResponse($object, new ImageParameterBag($width, $height, $request->query->all()));
60
    }
61
}
62