Completed
Pull Request — master (#2609)
by
unknown
05:53
created

ManipulateImageService::getFocusPointClass()   A

Complexity

Conditions 5
Paths 3

Size

Total Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

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