Completed
Pull Request — master (#2609)
by
unknown
58:26 queued 43:21
created

ManipulateImageService::cropImage()   B

Complexity

Conditions 7
Paths 12

Size

Total Lines 44

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 44
rs 8.2826
c 0
b 0
f 0
cc 7
nc 12
nop 3
1
<?php
2
3
namespace Kunstmaan\MediaBundle\Helper;
4
5
use Kunstmaan\MediaBundle\Entity\EditableMediaWrapper;
6
use Kunstmaan\UtilitiesBundle\Helper\Slugifier;
7
use Liip\ImagineBundle\Service\FilterService;
8
9
class ManipulateImageService
10
{
11
    /** @var Slugifier */
12
    private $slugifier;
13
14
    /** @var FilterService */
15
    private $filterService;
16
17
    public function __construct(Slugifier $slugifier, FilterService $filterService)
18
    {
19
        $this->slugifier = $slugifier;
20
        $this->filterService = $filterService;
21
    }
22
23
    public function getFocusPointClass(EditableMediaWrapper $editableMediaWrapper, string $view = ''): string
24
    {
25
        if (null === $editableMediaWrapper->getRunTimeConfig()) {
26
            return '';
27
        }
28
29
        $runTimeConfig = json_decode($editableMediaWrapper->getRunTimeConfig(), true);
30
31
        if (!is_array($runTimeConfig) || empty($view) || !isset($runTimeConfig[$view]['class'])) {
32
            return '';
33
        }
34
35
        return $runTimeConfig[$view]['class'];
36
    }
37
38
    public function cropImage(EditableMediaWrapper $editableMediaWrapper, string $view = '', string $filter = 'optim'): string
39
    {
40
        $media = $editableMediaWrapper->getMedia();
41
        $filename = $media->getOriginalFilename();
42
        $filename = str_replace(['/', '\\', '%'], '', $filename);
43
44
        $parts = pathinfo($filename);
45
        $filename = $this->slugifier->slugify($parts['filename']);
46
        if (\array_key_exists('extension', $parts)) {
47
            $filename .= '.' . strtolower($parts['extension']);
48
        }
49
50
        $path = sprintf(
51
            'uploads/media/%s/%s',
52
            $media->getUuid(),
53
            $filename
54
        );
55
56
        $runTimeConfigForView = [];
57
        if ($editableMediaWrapper->getRunTimeConfig() !== null) {
58
            $runTimeConfig = json_decode($editableMediaWrapper->getRunTimeConfig(), true);
59
60
            if (
61
                is_array($runTimeConfig)
62
                && !empty($view)
63
                && isset($runTimeConfig[$view]['start'], $runTimeConfig[$view]['size'])
64
            ) {
65
                $runTimeConfigForView = [
66
                    'crop' => [
67
                        'start' => $runTimeConfig[$view]['start'],
68
                        'size' => $runTimeConfig[$view]['size'],
69
                    ],
70
                ];
71
            }
72
        }
73
74
        try {
75
            return $this->filterService->getUrlOfFilteredImageWithRuntimeFilters($path, $filter, $runTimeConfigForView);
76
        } catch (\Exception $exception) {
77
            $runTimeConfigForView = [];
78
79
            return $this->filterService->getUrlOfFilteredImageWithRuntimeFilters($path, $filter, $runTimeConfigForView);
80
        }
81
    }
82
}
83