Completed
Push — ezp-30882-thumbnail ( d9f236...3bd997 )
by
unknown
30:29 queued 14:17
created

ContentFieldStrategy::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 1
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace eZ\Publish\Core\Repository\Strategy\ContentThumbnail\Field;
4
5
use eZ\Publish\API\Repository\Values\Content\Field;
6
use eZ\Publish\API\Repository\Values\Content\Thumbnail;
7
use eZ\Publish\Core\Base\Exceptions\NotFoundException;
8
use eZ\Publish\SPI\Repository\Strategy\ContentThumbnail\Field\ThumbnailStrategy;
9
10
class ContentFieldStrategy implements ThumbnailStrategy
11
{
12
    /** @var \eZ\Publish\SPI\Repository\Strategy\ContentThumbnail\Field\ThumbnailStrategy[] */
13
    protected $strategies = [];
14
15
    public function __construct(array $strategies = [])
16
    {
17
        $this->setStrategies($strategies);
18
    }
19
20
    /**
21
     * @throws \eZ\Publish\Core\Base\Exceptions\NotFoundException
22
     */
23
    public function getThumbnail(Field $field): ?Thumbnail
24
    {
25
        if (!$this->hasStrategy($field->fieldTypeIdentifier)) {
26
            throw new NotFoundException('Field\ThumbnailStrategy', $field->fieldTypeIdentifier);
27
        }
28
29
        return $this->strategies[$field->fieldTypeIdentifier]->getThumbnail($field);
30
    }
31
32
    public function hasStrategy(string $fieldTypeIdentifier): bool
33
    {
34
        return isset($this->strategies[$fieldTypeIdentifier]);
35
    }
36
37
    public function addStrategy(string $fieldTypeIdentifier, ThumbnailStrategy $thumbnailStrategy): void
38
    {
39
        $this->strategies[$fieldTypeIdentifier] = $thumbnailStrategy;
40
    }
41
42
    public function setStrategies(array $thumbnailStrategies): void
43
    {
44
        foreach ($thumbnailStrategies as $fieldTypeIdentifier => $thumbnailStrategy) {
45
            $this->addStrategy($fieldTypeIdentifier, $thumbnailStrategy);
46
        }
47
    }
48
}