Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EZP-31795: Added VersionInfo to getThumbnail method in order to utilise builtin caching mechanism #158

Merged
merged 3 commits into from
Jan 12, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions eZ/Publish/Core/FieldType/Image/ImageThumbnailStrategy.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
use eZ\Publish\API\Repository\Values\Content\Field;
use eZ\Publish\API\Repository\Values\Content\Thumbnail;
use eZ\Publish\Core\Repository\Values\Content\VersionInfo;
use eZ\Publish\API\Repository\Values\Content\VersionInfo as APIVersionInfo;
use eZ\Publish\SPI\Repository\Strategy\ContentThumbnail\Field\FieldTypeBasedThumbnailStrategy;
use eZ\Publish\SPI\Variation\VariationHandler;

Expand Down Expand Up @@ -40,10 +41,14 @@ public function getFieldTypeIdentifier(): string
return $this->fieldTypeIdentifier;
}

public function getThumbnail(Field $field): ?Thumbnail
public function getThumbnail(Field $field, ?APIVersionInfo $versionInfo = null): ?Thumbnail
{
/** @var \eZ\Publish\SPI\Variation\Values\ImageVariation $variation */
$variation = $this->variationHandler->getVariation($field, new VersionInfo(), $this->variationName);
$variation = $this->variationHandler->getVariation(
$field,
$versionInfo ?? new VersionInfo(),
$this->variationName
);

return new Thumbnail([
'resource' => $variation->uri,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
use eZ\Publish\API\Repository\Exceptions\NotFoundException;
use eZ\Publish\API\Repository\Values\Content\Field;
use eZ\Publish\API\Repository\Values\Content\Thumbnail;
use eZ\Publish\API\Repository\Values\Content\VersionInfo;
use eZ\Publish\SPI\Repository\Strategy\ContentThumbnail\Field\FieldTypeBasedThumbnailStrategy;
use eZ\Publish\SPI\Repository\Strategy\ContentThumbnail\ThumbnailStrategy as ContentThumbnailStrategy;

Expand Down Expand Up @@ -41,17 +42,22 @@ public function getFieldTypeIdentifier(): string
return $this->fieldTypeIdentifier;
}

public function getThumbnail(Field $field): ?Thumbnail
public function getThumbnail(Field $field, ?VersionInfo $versionInfo = null): ?Thumbnail
{
try {
$content = $this->contentService->loadContent((int) $field->value->destinationContentId);
$content = $this->contentService->loadContent(
(int) $field->value->destinationContentId,
null,
$versionInfo ? $versionInfo->versionNo : null
);
} catch (NotFoundException $e) {
return null;
}

return $this->thumbnailStrategy->getThumbnail(
$content->getContentType(),
$content->getFields()
$content->getFields(),
$content->versionInfo
);
}
}
6 changes: 4 additions & 2 deletions eZ/Publish/Core/Repository/Mapper/ContentDomainMapper.php
Original file line number Diff line number Diff line change
Expand Up @@ -117,11 +117,13 @@ public function buildContentDomainObject(

$internalFields = $this->buildDomainFields($spiContent->fields, $contentType, $prioritizedLanguages, $fieldAlwaysAvailableLanguage);

$versionInfo = $this->buildVersionInfoDomainObject($spiContent->versionInfo, $prioritizedLanguages);

return new Content(
[
'thumbnail' => $this->thumbnailStrategy->getThumbnail($contentType, $internalFields),
'thumbnail' => $this->thumbnailStrategy->getThumbnail($contentType, $internalFields, $versionInfo),
'internalFields' => $internalFields,
'versionInfo' => $this->buildVersionInfoDomainObject($spiContent->versionInfo, $prioritizedLanguages),
'versionInfo' => $versionInfo,
'contentType' => $contentType,
'prioritizedFieldLanguageCode' => $prioritizedFieldLanguageCode,
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

use eZ\Publish\API\Repository\Values\Content\Field;
use eZ\Publish\API\Repository\Values\Content\Thumbnail;
use eZ\Publish\API\Repository\Values\Content\VersionInfo;
use eZ\Publish\Core\Base\Exceptions\NotFoundException;
use eZ\Publish\SPI\Repository\Strategy\ContentThumbnail\Field\FieldTypeBasedThumbnailStrategy;
use eZ\Publish\SPI\Repository\Strategy\ContentThumbnail\Field\ThumbnailStrategy;
Expand All @@ -35,7 +36,7 @@ public function __construct(Traversable $strategies)
/**
* @throws \eZ\Publish\Core\Base\Exceptions\NotFoundException
*/
public function getThumbnail(Field $field): ?Thumbnail
public function getThumbnail(Field $field, ?VersionInfo $versionInfo = null): ?Thumbnail
{
if (!$this->hasStrategy($field->fieldTypeIdentifier)) {
throw new NotFoundException('Field\ThumbnailStrategy', $field->fieldTypeIdentifier);
Expand All @@ -45,7 +46,7 @@ public function getThumbnail(Field $field): ?Thumbnail

/** @var FieldTypeBasedThumbnailStrategy $fieldStrategy */
foreach ($fieldStrategies as $fieldStrategy) {
$thumbnail = $fieldStrategy->getThumbnail($field);
$thumbnail = $fieldStrategy->getThumbnail($field, $versionInfo);

if ($thumbnail !== null) {
return $thumbnail;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
use eZ\Publish\API\Repository\FieldTypeService;
use eZ\Publish\API\Repository\Values\Content\Field;
use eZ\Publish\API\Repository\Values\Content\Thumbnail;
use eZ\Publish\API\Repository\Values\Content\VersionInfo;
use eZ\Publish\API\Repository\Values\ContentType\ContentType;
use eZ\Publish\SPI\Repository\Strategy\ContentThumbnail\Field\ThumbnailStrategy as ContentFieldThumbnailStrategy;
use eZ\Publish\SPI\Repository\Strategy\ContentThumbnail\ThumbnailStrategy;
Expand All @@ -31,7 +32,7 @@ public function __construct(
$this->fieldTypeService = $fieldTypeService;
}

public function getThumbnail(ContentType $contentType, array $fields): ?Thumbnail
public function getThumbnail(ContentType $contentType, array $fields, ?VersionInfo $versionInfo = null): ?Thumbnail
{
$fieldDefinitions = $contentType->getFieldDefinitions();

Expand All @@ -49,7 +50,7 @@ public function getThumbnail(ContentType $contentType, array $fields): ?Thumbnai
&& $this->contentFieldStrategy->hasStrategy($field->fieldTypeIdentifier)
&& !$fieldType->isEmptyValue($field->value)
) {
return $this->contentFieldStrategy->getThumbnail($field);
return $this->contentFieldStrategy->getThumbnail($field, $versionInfo);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
use eZ\Publish\API\Repository\Values\Content\Thumbnail;
use eZ\Publish\API\Repository\Values\ContentType\ContentType;
use eZ\Publish\SPI\Repository\Strategy\ContentThumbnail\ThumbnailStrategy;
use eZ\Publish\API\Repository\Values\Content\VersionInfo;

final class StaticStrategy implements ThumbnailStrategy
{
Expand All @@ -22,7 +23,7 @@ public function __construct(string $staticThumbnail)
$this->staticThumbnail = $staticThumbnail;
}

public function getThumbnail(ContentType $contentType, array $fields): Thumbnail
public function getThumbnail(ContentType $contentType, array $fields, ?VersionInfo $versionInfo = null): Thumbnail
{
return new Thumbnail([
'resource' => $this->staticThumbnail,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
namespace eZ\Publish\Core\Repository\Strategy\ContentThumbnail;

use eZ\Publish\API\Repository\Values\Content\Thumbnail;
use eZ\Publish\API\Repository\Values\Content\VersionInfo;
use eZ\Publish\API\Repository\Values\ContentType\ContentType;
use eZ\Publish\SPI\Repository\Strategy\ContentThumbnail\ThumbnailStrategy;

Expand All @@ -25,10 +26,10 @@ public function __construct(iterable $strategies)
$this->strategies = $strategies;
}

public function getThumbnail(ContentType $contentType, array $fields): ?Thumbnail
public function getThumbnail(ContentType $contentType, array $fields, ?VersionInfo $versionInfo = null): ?Thumbnail
{
foreach ($this->strategies as $strategy) {
$thumbnail = $strategy->getThumbnail($contentType, $fields);
$thumbnail = $strategy->getThumbnail($contentType, $fields, $versionInfo);

if ($thumbnail !== null) {
return $thumbnail;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
use eZ\Publish\API\Repository\Exceptions\NotFoundException;
use eZ\Publish\API\Repository\Values\Content\Field;
use eZ\Publish\API\Repository\Values\Content\Thumbnail;
use eZ\Publish\API\Repository\Values\Content\VersionInfo;
use eZ\Publish\Core\Repository\Strategy\ContentThumbnail\Field\ContentFieldStrategy;
use eZ\Publish\SPI\Repository\Strategy\ContentThumbnail\Field\FieldTypeBasedThumbnailStrategy;
use PHPUnit\Framework\TestCase;
Expand All @@ -34,7 +35,7 @@ public function getFieldTypeIdentifier(): string
return $this->fieldTypeIdentifier;
}

public function getThumbnail(Field $field): ?Thumbnail
public function getThumbnail(Field $field, ?VersionInfo $versionInfo = null): ?Thumbnail
{
return new Thumbnail([
'resource' => $field->value,
Expand Down
2 changes: 2 additions & 0 deletions eZ/Publish/Core/settings/tests/integration_legacy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,3 +54,5 @@ services:
eZ\Publish\API\Repository\SettingService:
public: true
alias: eZ\Publish\Core\Event\SettingService

ezpublish.image_alias.imagine.cache.alias_generator_decorator: '@eZ\Publish\SPI\Tests\Variation\InMemoryVariationHandler'
2 changes: 1 addition & 1 deletion eZ/Publish/Core/settings/thumbnails.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ services:
eZ\Publish\Core\FieldType\Image\ImageThumbnailStrategy:
arguments:
$fieldTypeIdentifier: 'ezimage'
$variationHandler: '@eZ\Publish\SPI\Variation\VariationHandler'
$variationHandler: '@ezpublish.image_alias.imagine.cache.alias_generator_decorator'
$variationName: 'medium'
tags:
- { name: ezplatform.spi.field.thumbnail_strategy, priority: 0 }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@

use eZ\Publish\API\Repository\Values\Content\Field;
use eZ\Publish\API\Repository\Values\Content\Thumbnail;
use eZ\Publish\API\Repository\Values\Content\VersionInfo;

interface ThumbnailStrategy
{
public function getThumbnail(Field $field): ?Thumbnail;
public function getThumbnail(Field $field, ?VersionInfo $versionInfo = null): ?Thumbnail;
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@
namespace eZ\Publish\SPI\Repository\Strategy\ContentThumbnail;

use eZ\Publish\API\Repository\Values\Content\Thumbnail;
use eZ\Publish\API\Repository\Values\Content\VersionInfo;
use eZ\Publish\API\Repository\Values\ContentType\ContentType;

interface ThumbnailStrategy
{
public function getThumbnail(ContentType $contentType, array $fields): ?Thumbnail;
public function getThumbnail(ContentType $contentType, array $fields, ?VersionInfo $versionInfo = null): ?Thumbnail;
}