Skip to content

Commit 1d95bdd

Browse files
author
Bertrand Dunogier
committed
Added a singular 'variation' field to ImageFieldValue
``` { media { images { name image { variation(identifier: small) { uri } } } } } ```
1 parent 34cb89d commit 1d95bdd

3 files changed

Lines changed: 37 additions & 11 deletions

File tree

GraphQL/Resolver/ImageFieldResolver.php

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,34 @@ public function __construct(VariationHandler $variationHandler, ContentService $
3333
$this->variations = $variations;
3434
}
3535

36+
public function resolveImageVariations(ImageFieldValue $fieldValue, $args)
37+
{
38+
list($content, $field) = $this->getImageField($fieldValue);
39+
40+
$variations = [];
41+
foreach ($args['identifier'] as $identifier) {
42+
$versionInfo = $this->contentService->loadVersionInfo($content->contentInfo);
43+
$variations[] = $this->variationHandler->getVariation($field, $versionInfo, $identifier);
44+
}
45+
46+
return $variations;
47+
}
48+
3649
public function resolveImageVariation(ImageFieldValue $fieldValue, $args)
50+
{
51+
list($content, $field) = $this->getImageField($fieldValue);
52+
$versionInfo = $this->contentService->loadVersionInfo($content->contentInfo);
53+
54+
return $this->variationHandler->getVariation($field, $versionInfo, $args['identifier']);
55+
}
56+
57+
/**
58+
* @param ImageFieldValue $fieldValue
59+
* @return array
60+
* @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException
61+
* @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException
62+
*/
63+
protected function getImageField(ImageFieldValue $fieldValue): array
3764
{
3865
$idArray = explode('-', $fieldValue->imageId);
3966
if (count($idArray) != 3) {
@@ -61,15 +88,6 @@ public function resolveImageVariation(ImageFieldValue $fieldValue, $args)
6188
throw new UserError("Image file {$field->value->id} doesn't exist");
6289
}
6390

64-
$variations = [];
65-
foreach ($args['identifier'] as $identifier) {
66-
$variations[] = $this->variationHandler->getVariation(
67-
$field,
68-
$this->contentService->loadVersionInfo($content->contentInfo),
69-
$identifier
70-
);
71-
}
72-
73-
return $variations;
91+
return array($content, $field);
7492
}
7593
}

Resources/config/graphql/Field.types.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,16 @@ ImageFieldValue:
101101
type: "[ImageVariation]"
102102
args:
103103
identifier:
104-
type: "[String]"
104+
type: "[ImageVariationIdentifier]!"
105105
description: "One or more variation identifiers."
106106
resolve: "@=resolver('ImageVariation', [value.value, args])"
107+
variation:
108+
type: ImageVariation
109+
args:
110+
identifier:
111+
type: ImageVariationIdentifier!
112+
description: "A variation identifier."
113+
resolve: "@=resolver('ImageVariation', [value.value, args])"
107114
html:
108115
type: "String"
109116
args:

Resources/config/resolvers.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ services:
110110
$contentService: "@ezpublish.siteaccessaware.service.content"
111111
$variations: "$image_variations$"
112112
tags:
113+
- { name: overblog_graphql.resolver, alias: "ImageVariations", method: "resolveImageVariations" }
113114
- { name: overblog_graphql.resolver, alias: "ImageVariation", method: "resolveImageVariation" }
114115

115116
BD\EzPlatformGraphQLBundle\GraphQL\Resolver\DateResolver:

0 commit comments

Comments
 (0)