for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace eZ\Publish\Core\Repository\Strategy\ContentThumbnail;
use eZ\Publish\API\Repository\Values\Content\Thumbnail;
use eZ\Publish\API\Repository\Values\ContentType\ContentType;
use eZ\Publish\SPI\Repository\Strategy\ContentThumbnail\ThumbnailStrategy;
class ThumbnailChainStrategy implements ThumbnailStrategy
{
protected $strategies = [];
public function __construct(array $strategies)
$this->setStrategies($strategies);
}
public function getThumbnail(ContentType $contentType, array $fields): ?Thumbnail
foreach ($this->strategies as $priority => $strategies) {
/** @var \eZ\Publish\SPI\Repository\Strategy\ContentThumbnail\ThumbnailStrategy $strategy */
foreach ($strategies as $strategy) {
$thumbnail = $strategy->getThumbnail($contentType, $fields);
if ($thumbnail !== null) {
return $thumbnail;
return null;
public function setStrategies(array $strategies): void
$this->strategies = [];
foreach ($strategies as $priority => $strategy) {
$this->addStrategy($strategy, $priority);
public function addStrategy(ThumbnailStrategy $strategy, int $priority = 0): void
$this->strategies[$priority][] = $strategy;
ksort($this->strategies);