Skip to content

Commit fab635e

Browse files
authored
fix: remove usage of database connection in constructs (#33)
fixes #31
1 parent 2849de5 commit fab635e

File tree

2 files changed

+55
-17
lines changed

2 files changed

+55
-17
lines changed

src/Service/ThumbnailUrlTemplate.php

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,41 @@
66

77
class ThumbnailUrlTemplate implements ThumbnailUrlTemplateInterface
88
{
9-
/** @var string */
9+
/** @var string|null */
1010
private $pattern;
1111

12+
/**
13+
* @var SystemConfigService
14+
*/
15+
private $systemConfigService;
16+
1217
public function __construct(SystemConfigService $systemConfigService)
1318
{
14-
$patternConfig = $systemConfigService->get('FroshPlatformThumbnailProcessor.config.ThumbnailPattern');
15-
16-
if ($patternConfig && is_string($patternConfig)) {
17-
$this->pattern = $patternConfig;
18-
} else {
19-
$this->pattern = '{mediaUrl}/{mediaPath}?width={width}';
20-
}
19+
$this->systemConfigService = $systemConfigService;
2120
}
2221

2322
public function getUrl(string $mediaUrl, string $mediaPath, string $width, string $height = ''): string
2423
{
25-
$result = $this->pattern;
2624
return str_replace(
2725
['{mediaUrl}', '{mediaPath}', '{width}', '{height}'],
2826
[$mediaUrl, $mediaPath, $width, ''],
29-
$result
27+
$this->getPattern()
3028
);
3129
}
30+
31+
private function getPattern(): string
32+
{
33+
if ($this->pattern) {
34+
return $this->pattern;
35+
}
36+
37+
$pattern = $this->systemConfigService->get('FroshPlatformThumbnailProcessor.config.ThumbnailPattern');
38+
if ($pattern && is_string($pattern)) {
39+
$this->pattern = $pattern;
40+
} else {
41+
$this->pattern = '{mediaUrl}/{mediaPath}?width={width}';
42+
}
43+
44+
return $this->pattern;
45+
}
3246
}

src/Service/UrlGeneratorDecorator.php

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,20 @@ class UrlGeneratorDecorator implements UrlGeneratorInterface
3232
private $thumbnailUrlTemplate;
3333

3434
/**
35-
* @var bool
35+
* @var bool|null
3636
*/
3737
private $processSVG;
3838

3939
/**
40-
* @var bool
40+
* @var bool|null
4141
*/
4242
private $processOriginalImages;
4343

44+
/**
45+
* @var SystemConfigService
46+
*/
47+
private $systemConfigService;
48+
4449
public function __construct(
4550
UrlGeneratorInterface $decoratedService,
4651
ThumbnailUrlTemplateInterface $thumbnailUrlTemplate,
@@ -55,8 +60,7 @@ public function __construct(
5560
$this->baseUrl = $this->normalizeBaseUrl($baseUrl);
5661

5762
$this->thumbnailUrlTemplate = $thumbnailUrlTemplate;
58-
$this->processSVG = (bool)$systemConfigService->get('FroshPlatformThumbnailProcessor.config.ProcessSVG');
59-
$this->processOriginalImages = (bool)$systemConfigService->get('FroshPlatformThumbnailProcessor.config.ProcessOriginalImages');
63+
$this->systemConfigService = $systemConfigService;
6064
}
6165

6266
public function getAbsoluteMediaUrl(MediaEntity $media): string
@@ -65,11 +69,11 @@ public function getAbsoluteMediaUrl(MediaEntity $media): string
6569
return $this->decoratedService->getAbsoluteMediaUrl($media);
6670
}
6771

68-
if (!$this->processOriginalImages) {
72+
if (!$this->canProcessOriginalImages()) {
6973
return $this->decoratedService->getAbsoluteMediaUrl($media);
7074
}
7175

72-
if (!$this->processSVG && $media->getFileExtension() === 'svg') {
76+
if (!$this->canProcessSVG() && $media->getFileExtension() === 'svg') {
7377
return $this->decoratedService->getAbsoluteMediaUrl($media);
7478
}
7579

@@ -88,7 +92,7 @@ public function getRelativeMediaUrl(MediaEntity $media): string
8892

8993
public function getAbsoluteThumbnailUrl(MediaEntity $media, MediaThumbnailEntity $thumbnail): string
9094
{
91-
if (!$this->processSVG && $media->getFileExtension() === 'svg') {
95+
if (!$this->canProcessSVG() && $media->getFileExtension() === 'svg') {
9296
return $this->decoratedService->getAbsoluteMediaUrl($media);
9397
}
9498

@@ -133,4 +137,24 @@ private function createFallbackUrl(): string
133137

134138
return '';
135139
}
140+
141+
private function canProcessSVG(): bool
142+
{
143+
if ($this->processSVG !== null) {
144+
return $this->processSVG;
145+
}
146+
147+
$this->processSVG = (bool)$this->systemConfigService->get('FroshPlatformThumbnailProcessor.config.ProcessSVG');
148+
return $this->processSVG;
149+
}
150+
151+
private function canProcessOriginalImages(): bool
152+
{
153+
if ($this->processOriginalImages !== null) {
154+
return $this->processOriginalImages;
155+
}
156+
157+
$this->processOriginalImages = (bool)$this->systemConfigService->get('FroshPlatformThumbnailProcessor.config.ProcessOriginalImages');
158+
return $this->processOriginalImages;
159+
}
136160
}

0 commit comments

Comments
 (0)