Completed
Push — location_references ( 47d67d )
by
unknown
13:55
created

LocationConfigResolver::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 2
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace eZ\Publish\Core\LocationReference\ConfigResolver;
6
7
use eZ\Publish\Core\LocationReference\LocationReference;
8
use eZ\Publish\Core\LocationReference\LocationReferenceResolverInterface;
9
use eZ\Publish\API\Repository\Values\Content\Location;
10
use eZ\Publish\Core\MVC\ConfigResolverInterface;
11
12
final class LocationConfigResolver implements LocationConfigResolverInterface
13
{
14
    /** @var \eZ\Publish\Core\MVC\ConfigResolverInterface */
15
    private $configResolver;
16
17
    /** @var \eZ\Publish\Core\LocationReference\LocationReferenceResolverInterface */
18
    private $referenceResolver;
19
20
    public function __construct(
21
        ConfigResolverInterface $configResolver,
22
        LocationReferenceResolverInterface $referenceResolver
23
    ) {
24
        $this->configResolver = $configResolver;
25
        $this->referenceResolver = $referenceResolver;
26
    }
27
28
    public function getLocation(string $name, ?string $namespace = null, ?string $scope = null): Location
29
    {
30
        return $this->referenceResolver->resolve($this->getReference($name, $namespace, $scope));
31
    }
32
33
    public function getLocationReference(
34
        string $name,
35
        ?string $namespace = null,
36
        ?string $scope = null
37
    ): LocationReference {
38
        return new LocationReference(
39
            $this->referenceResolver,
40
            $this->getReference($name, $namespace, $scope)
41
        );
42
    }
43
44
    private function getReference(string $name, ?string $namespace, ?string $scope)
45
    {
46
        $reference = $this->configResolver->getParameter($name, $namespace, $scope);
47
        if (is_int($reference)) {
48
            $reference = (string)$reference;
49
        }
50
51
        return $reference;
52
    }
53
}
54