5
5
namespace Shopsys \FrontendApiBundle \Model \Resolver \Image ;
6
6
7
7
use Shopsys \FrameworkBundle \Component \Domain \Domain ;
8
- use Shopsys \FrameworkBundle \Component \Image \Config \Exception \ImageSizeNotFoundException ;
9
- use Shopsys \FrameworkBundle \Component \Image \Config \Exception \ImageTypeNotFoundException ;
10
8
use Shopsys \FrameworkBundle \Component \Image \Config \ImageConfig ;
11
- use Shopsys \FrameworkBundle \Component \Image \Config \ImageEntityConfig ;
12
- use Shopsys \FrameworkBundle \Component \Image \Config \ImageSizeConfig ;
13
9
use Shopsys \FrameworkBundle \Component \Image \Image ;
14
10
use Shopsys \FrameworkBundle \Component \Image \ImageFacade ;
15
11
use Shopsys \FrameworkBundle \Model \Advert \Advert ;
16
12
use Shopsys \FrameworkBundle \Model \Product \Product ;
17
13
use Shopsys \FrontendApiBundle \Component \Image \ImageFacade as FrontendApiImageFacade ;
18
14
use Shopsys \FrontendApiBundle \Model \Resolver \AbstractQuery ;
19
- use Shopsys \FrontendApiBundle \Model \Resolver \Image \Exception \ImageSizeInvalidUserError ;
20
- use Shopsys \FrontendApiBundle \Model \Resolver \Image \Exception \ImageTypeInvalidUserError ;
21
15
22
16
class ImagesQuery extends AbstractQuery
23
17
{
24
18
protected const IMAGE_ENTITY_PRODUCT = 'product ' ;
25
- protected const IMAGE_ENTITY_ADVERT = 'noticer ' ;
26
19
27
20
/**
28
21
* @param \Shopsys\FrameworkBundle\Component\Image\ImageFacade $imageFacade
@@ -41,36 +34,33 @@ public function __construct(
41
34
/**
42
35
* @param object $entity
43
36
* @param string|null $type
44
- * @param string|null $size
45
37
* @return array
46
38
*/
47
- public function imagesByEntityQuery (object $ entity , ?string $ type, ? string $ size ): array
39
+ public function imagesByEntityQuery (object $ entity , ?string $ type ): array
48
40
{
49
41
$ entityName = $ this ->imageConfig ->getEntityName ($ entity );
50
42
51
- return $ this ->resolveByEntityId ($ entity ->getId (), $ entityName , $ type, $ size );
43
+ return $ this ->resolveByEntityId ($ entity ->getId (), $ entityName , $ type );
52
44
}
53
45
54
46
/**
55
47
* @param \Shopsys\FrameworkBundle\Model\Product\Product|array $data
56
48
* @param string|null $type
57
- * @param string|null $size
58
49
* @return array
59
50
*/
60
- public function imagesByProductQuery ($ data , ?string $ type, ? string $ size ): array
51
+ public function imagesByProductQuery ($ data , ?string $ type ): array
61
52
{
62
53
$ productId = $ data instanceof Product ? $ data ->getId () : $ data ['id ' ];
63
54
64
- return $ this ->resolveByEntityId ($ productId , static ::IMAGE_ENTITY_PRODUCT , $ type, $ size );
55
+ return $ this ->resolveByEntityId ($ productId , static ::IMAGE_ENTITY_PRODUCT , $ type );
65
56
}
66
57
67
58
/**
68
59
* @param \Shopsys\FrameworkBundle\Model\Advert\Advert $advert
69
60
* @param string|null $type
70
- * @param string|null $size
71
61
* @return array
72
62
*/
73
- public function imagesByAdvertQuery (Advert $ advert , ?string $ type, ? string $ size ): array
63
+ public function imagesByAdvertQuery (Advert $ advert , ?string $ type ): array
74
64
{
75
65
$ entityName = $ this ->imageConfig ->getEntityName ($ advert );
76
66
@@ -80,120 +70,50 @@ public function imagesByAdvertQuery(Advert $advert, ?string $type, ?string $size
80
70
$ entityName ,
81
71
$ type ,
82
72
),
83
- $ this ->getSizeConfigsForAdvert ($ advert , $ type , $ size ),
84
73
);
85
74
}
86
75
87
76
/**
88
77
* @param int $entityId
89
78
* @param string $entityName
90
79
* @param string|null $type
91
- * @param string|null $size
92
80
* @return array
93
81
*/
94
- protected function resolveByEntityId (int $ entityId , string $ entityName , ?string $ type, ? string $ size ): array
82
+ protected function resolveByEntityId (int $ entityId , string $ entityName , ?string $ type ): array
95
83
{
96
- $ sizeConfigs = $ this ->getSizeConfigs ($ type , $ size , $ entityName );
97
84
$ images = $ this ->frontendApiImageFacade ->getImagesByEntityIdAndNameIndexedById ($ entityId , $ entityName , $ type );
98
85
99
- return $ this ->getResolvedImages ($ images , $ sizeConfigs );
100
- }
101
-
102
- /**
103
- * @param string|null $type
104
- * @param string|null $size
105
- * @param string $entityName
106
- * @return \Shopsys\FrameworkBundle\Component\Image\Config\ImageSizeConfig[]
107
- */
108
- protected function getSizeConfigs (?string $ type , ?string $ size , string $ entityName ): array
109
- {
110
- $ imageConfig = $ this ->imageConfig ->getEntityConfigByEntityName ($ entityName );
111
-
112
- if ($ size === ImageConfig::DEFAULT_SIZE_NAME ) {
113
- $ size = ImageEntityConfig::WITHOUT_NAME_KEY ;
114
- }
115
-
116
- try {
117
- if ($ type === null ) {
118
- if ($ size === null ) {
119
- $ sizeConfigs = $ imageConfig ->getSizeConfigs ();
120
- } else {
121
- $ sizeConfigs = [$ imageConfig ->getSizeConfig ($ size )];
122
- }
123
- } else {
124
- if ($ size === null ) {
125
- $ sizeConfigs = $ imageConfig ->getSizeConfigsByType ($ type );
126
- } else {
127
- $ sizeConfigs = [$ imageConfig ->getSizeConfigByType ($ type , $ size )];
128
- }
129
- }
130
- } catch (ImageSizeNotFoundException $ e ) {
131
- throw new ImageSizeInvalidUserError (sprintf ('Image size %s not found for %s ' , $ size , $ entityName ));
132
- } catch (ImageTypeNotFoundException $ e ) {
133
- throw new ImageTypeInvalidUserError (sprintf ('Image type %s not found for %s ' , $ type , $ entityName ));
134
- }
135
-
136
- return $ sizeConfigs ;
86
+ return $ this ->getResolvedImages ($ images );
137
87
}
138
88
139
89
/**
140
90
* @param \Shopsys\FrameworkBundle\Component\Image\Image[] $images
141
- * @param \Shopsys\FrameworkBundle\Component\Image\Config\ImageSizeConfig[] $sizeConfigs
142
- * @return array
91
+ * @return array<int, array{url: string, name: string|null}>
143
92
*/
144
- protected function getResolvedImages (array $ images, array $ sizeConfigs ): array
93
+ protected function getResolvedImages (array $ images ): array
145
94
{
146
95
$ resolvedImages = [];
147
96
148
97
foreach ($ images as $ image ) {
149
- foreach ($ sizeConfigs as $ sizeConfig ) {
150
- $ resolvedImages [] = $ this ->getResolvedImage ($ image , $ sizeConfig );
151
- }
98
+ $ resolvedImages [] = $ this ->getResolvedImage ($ image );
152
99
}
153
100
154
101
return $ resolvedImages ;
155
102
}
156
103
157
104
/**
158
105
* @param \Shopsys\FrameworkBundle\Component\Image\Image $image
159
- * @param \Shopsys\FrameworkBundle\Component\Image\Config\ImageSizeConfig $sizeConfig
160
- * @return array
106
+ * @return array{url: string, name: string|null}
161
107
*/
162
- protected function getResolvedImage (Image $ image, ImageSizeConfig $ sizeConfig ): array
108
+ protected function getResolvedImage (Image $ image ): array
163
109
{
164
110
return [
165
111
'name ' => $ image ->getName (),
166
- 'type ' => $ image ->getType (),
167
- 'position ' => $ image ->getPosition (),
168
- 'width ' => $ sizeConfig ->getWidth (),
169
- 'height ' => $ sizeConfig ->getHeight (),
170
- 'size ' => $ sizeConfig ->getName () === null ? ImageConfig::DEFAULT_SIZE_NAME : $ sizeConfig ->getName (),
171
112
'url ' => $ this ->imageFacade ->getImageUrl (
172
113
$ this ->domain ->getCurrentDomainConfig (),
173
114
$ image ,
174
- $ sizeConfig ->getName (),
175
115
$ image ->getType (),
176
116
),
177
117
];
178
118
}
179
-
180
- /**
181
- * @param \Shopsys\FrameworkBundle\Model\Advert\Advert $advert
182
- * @param string|null $type
183
- * @param string|null $size
184
- * @return \Shopsys\FrameworkBundle\Component\Image\Config\ImageSizeConfig[]
185
- */
186
- protected function getSizeConfigsForAdvert (Advert $ advert , ?string $ type , ?string $ size ): array
187
- {
188
- $ entityName = static ::IMAGE_ENTITY_ADVERT ;
189
-
190
- if ($ size === null ) {
191
- return array_merge (
192
- $ this ->getSizeConfigs ($ type , $ advert ->getPositionName (), $ entityName ),
193
- $ this ->getSizeConfigs ($ type , ImageConfig::ORIGINAL_SIZE_NAME , $ entityName ),
194
- );
195
- }
196
-
197
- return $ this ->getSizeConfigs ($ type , $ size , $ entityName );
198
- }
199
119
}
0 commit comments