PlaceholderPostProcessor   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 86
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 22
dl 0
loc 86
rs 10
c 0
b 0
f 0
wmc 8

4 Methods

Rating   Name   Duplication   Size   Complexity  
A setFallbackPlaceholderReplacement() 0 6 1
A addReplacement() 0 24 3
A resolvePlaceholderReplacementRenderer() 0 10 3
A __construct() 0 6 1
1
<?php
2
3
/**
4
 * Copyright © 2016-present Spryker Systems GmbH. All rights reserved.
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerEco\Yves\Coremedia\ApiResponse\PostProcessor;
9
10
use Generated\Shared\Transfer\CoremediaPlaceholderTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...ediaPlaceholderTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
11
use SprykerEco\Yves\Coremedia\ApiResponse\Executor\IncorrectPlaceholderDataExecutorInterface;
12
use SprykerEco\Yves\Coremedia\ApiResponse\Renderer\PlaceholderReplacementRendererInterface;
13
14
class PlaceholderPostProcessor implements PlaceholderPostProcessorInterface
15
{
16
    /**
17
     * @var \SprykerEco\Yves\Coremedia\ApiResponse\Renderer\PlaceholderReplacementRendererInterface[]
18
     */
19
    protected $placeholderReplacementRenderers;
20
21
    /**
22
     * @var \SprykerEco\Yves\Coremedia\ApiResponse\Executor\IncorrectPlaceholderDataExecutorInterface
23
     */
24
    protected $incorrectPlaceholderDataExecutor;
25
26
    /**
27
     * @param \SprykerEco\Yves\Coremedia\ApiResponse\Renderer\PlaceholderReplacementRendererInterface[] $placeholderReplacementRenderers
28
     * @param \SprykerEco\Yves\Coremedia\ApiResponse\Executor\IncorrectPlaceholderDataExecutorInterface $incorrectPlaceholderDataExecutor
29
     */
30
    public function __construct(
31
        array $placeholderReplacementRenderers,
32
        IncorrectPlaceholderDataExecutorInterface $incorrectPlaceholderDataExecutor
33
    ) {
34
        $this->placeholderReplacementRenderers = $placeholderReplacementRenderers;
35
        $this->incorrectPlaceholderDataExecutor = $incorrectPlaceholderDataExecutor;
36
    }
37
38
    /**
39
     * @param \Generated\Shared\Transfer\CoremediaPlaceholderTransfer $coreMediaPlaceholderTransfer
40
     * @param string $locale
41
     *
42
     * @return \Generated\Shared\Transfer\CoremediaPlaceholderTransfer
43
     */
44
    public function addReplacement(
45
        CoremediaPlaceholderTransfer $coreMediaPlaceholderTransfer,
46
        string $locale
47
    ): CoremediaPlaceholderTransfer {
48
        $placeholderReplacementRenderer = $this->resolvePlaceholderReplacementRenderer($coreMediaPlaceholderTransfer);
49
50
        if (!$placeholderReplacementRenderer) {
51
            return $coreMediaPlaceholderTransfer;
52
        }
53
54
        $placeholderReplacement = $placeholderReplacementRenderer->getPlaceholderReplacement(
55
            $coreMediaPlaceholderTransfer,
56
            $locale
57
        );
58
59
        if (!$placeholderReplacement) {
60
            $this->incorrectPlaceholderDataExecutor->executeIncorrectPlaceholderData($coreMediaPlaceholderTransfer, $locale);
61
62
            return $this->setFallbackPlaceholderReplacement($placeholderReplacementRenderer, $coreMediaPlaceholderTransfer);
63
        }
64
65
        $coreMediaPlaceholderTransfer->setPlaceholderReplacement($placeholderReplacement);
66
67
        return $coreMediaPlaceholderTransfer;
68
    }
69
70
    /**
71
     * @param \SprykerEco\Yves\Coremedia\ApiResponse\Renderer\PlaceholderReplacementRendererInterface $placeholderReplacementRenderer
72
     * @param \Generated\Shared\Transfer\CoremediaPlaceholderTransfer $coreMediaPlaceholderTransfer
73
     *
74
     * @return \Generated\Shared\Transfer\CoremediaPlaceholderTransfer
75
     */
76
    protected function setFallbackPlaceholderReplacement(
77
        PlaceholderReplacementRendererInterface $placeholderReplacementRenderer,
78
        CoremediaPlaceholderTransfer $coreMediaPlaceholderTransfer
79
    ): CoremediaPlaceholderTransfer {
80
        return $coreMediaPlaceholderTransfer->setPlaceholderReplacement(
81
            $placeholderReplacementRenderer->getFallbackPlaceholderReplacement()
82
        );
83
    }
84
85
    /**
86
     * @param \Generated\Shared\Transfer\CoremediaPlaceholderTransfer $coreMediaPlaceholderTransfer
87
     *
88
     * @return \SprykerEco\Yves\Coremedia\ApiResponse\Renderer\PlaceholderReplacementRendererInterface|null
89
     */
90
    protected function resolvePlaceholderReplacementRenderer(
91
        CoremediaPlaceholderTransfer $coreMediaPlaceholderTransfer
92
    ): ?PlaceholderReplacementRendererInterface {
93
        foreach ($this->placeholderReplacementRenderers as $placeholderReplacementRenderer) {
94
            if ($placeholderReplacementRenderer->isApplicable($coreMediaPlaceholderTransfer)) {
95
                return $placeholderReplacementRenderer;
96
            }
97
        }
98
99
        return null;
100
    }
101
}
102