1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
/** |
4
|
|
|
* MIT License |
5
|
|
|
* Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file. |
6
|
|
|
*/ |
7
|
|
|
|
8
|
|
|
namespace SprykerEco\Client\FactFinderSdk\Business\Api\Converter; |
9
|
|
|
|
10
|
|
|
use ArrayObject; |
11
|
|
|
use FACTFinder\Adapter\Search as FactFinderSearchAdapter; |
12
|
|
|
use FACTFinder\Data\AfterSearchNavigation; |
13
|
|
|
use FACTFinder\Data\ArticleNumberSearchStatus; |
14
|
|
|
use FACTFinder\Data\BreadCrumbTrail; |
15
|
|
|
use FACTFinder\Data\CampaignIterator; |
16
|
|
|
use FACTFinder\Data\Result; |
17
|
|
|
use FACTFinder\Data\ResultsPerPageOptions; |
18
|
|
|
use FACTFinder\Data\Sorting; |
19
|
|
|
use FACTFinder\Data\SuggestQuery; |
20
|
|
|
use Generated\Shared\Transfer\FactFinderSdkDataAfterSearchNavigationTransfer; |
|
|
|
|
21
|
|
|
use Generated\Shared\Transfer\FactFinderSdkDataBreadCrumbTransfer; |
|
|
|
|
22
|
|
|
use Generated\Shared\Transfer\FactFinderSdkDataCampaignIteratorTransfer; |
|
|
|
|
23
|
|
|
use Generated\Shared\Transfer\FactFinderSdkDataCampaignTransfer; |
|
|
|
|
24
|
|
|
use Generated\Shared\Transfer\FactFinderSdkDataResultsPerPageOptionsTransfer; |
|
|
|
|
25
|
|
|
use Generated\Shared\Transfer\FactFinderSdkDataResultTransfer; |
|
|
|
|
26
|
|
|
use Generated\Shared\Transfer\FactFinderSdkDataSingleWordSearchItemTransfer; |
|
|
|
|
27
|
|
|
use Generated\Shared\Transfer\FactFinderSdkDataSuggestQueryTransfer; |
|
|
|
|
28
|
|
|
use Generated\Shared\Transfer\FactFinderSdkSearchResponseTransfer; |
|
|
|
|
29
|
|
|
use Generated\Shared\Transfer\FactFinderSearchRedirectTransfer; |
|
|
|
|
30
|
|
|
use SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\AdvisorQuestionConverterInterface; |
31
|
|
|
use SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\FilterGroupConverterInterface; |
32
|
|
|
use SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\ItemConverterInterface; |
33
|
|
|
use SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\PagingConverterInterface; |
34
|
|
|
use SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\RecordConverterInterface; |
35
|
|
|
use SprykerEco\Client\FactFinderSdk\FactFinderSdkConfig; |
36
|
|
|
use SprykerEco\Shared\FactFinderSdk\FactFinderSdkConstants; |
37
|
|
|
|
38
|
|
|
class SearchResponseConverter extends BaseConverter implements ConverterInterface |
39
|
|
|
{ |
40
|
|
|
/** |
41
|
|
|
* @var \FACTFinder\Adapter\Search |
42
|
|
|
*/ |
43
|
|
|
protected $searchAdapter; |
44
|
|
|
|
45
|
|
|
/** |
46
|
|
|
* @var \Generated\Shared\Transfer\FactFinderSdkSearchResponseTransfer |
47
|
|
|
*/ |
48
|
|
|
protected $responseTransfer; |
49
|
|
|
|
50
|
|
|
/** |
51
|
|
|
* @var \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\PagingConverterInterface |
52
|
|
|
*/ |
53
|
|
|
protected $pagingConverter; |
54
|
|
|
|
55
|
|
|
/** |
56
|
|
|
* @var \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\ItemConverterInterface |
57
|
|
|
*/ |
58
|
|
|
protected $itemConverter; |
59
|
|
|
|
60
|
|
|
/** |
61
|
|
|
* @var \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\RecordConverterInterface |
62
|
|
|
*/ |
63
|
|
|
protected $recordConverter; |
64
|
|
|
|
65
|
|
|
/** |
66
|
|
|
* @var \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\FilterGroupConverterInterface |
67
|
|
|
*/ |
68
|
|
|
protected $filterGroupConverter; |
69
|
|
|
|
70
|
|
|
/** |
71
|
|
|
* @var \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\AdvisorQuestionConverterInterface |
72
|
|
|
*/ |
73
|
|
|
protected $advisorQuestionConverter; |
74
|
|
|
|
75
|
|
|
/** |
76
|
|
|
* @var \SprykerEco\Client\FactFinderSdk\FactFinderSdkConfig |
77
|
|
|
*/ |
78
|
|
|
private $factFinderSdkConfig; |
79
|
|
|
|
80
|
|
|
/** |
81
|
|
|
* @param \FACTFinder\Adapter\Search $searchAdapter |
82
|
|
|
* @param \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\PagingConverterInterface $pagingConverter |
83
|
|
|
* @param \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\ItemConverterInterface $itemConverter |
84
|
|
|
* @param \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\RecordConverterInterface $recordConverter |
85
|
|
|
* @param \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\FilterGroupConverterInterface $filterGroupConverter |
86
|
|
|
* @param \SprykerEco\Client\FactFinderSdk\Business\Api\Converter\Data\AdvisorQuestionConverterInterface $advisorQuestionConverter |
87
|
|
|
* @param \SprykerEco\Client\FactFinderSdk\FactFinderSdkConfig $factFinderSdkConfig |
88
|
|
|
*/ |
89
|
|
|
public function __construct( |
90
|
|
|
FactFinderSearchAdapter $searchAdapter, |
91
|
|
|
PagingConverterInterface $pagingConverter, |
92
|
|
|
ItemConverterInterface $itemConverter, |
93
|
|
|
RecordConverterInterface $recordConverter, |
94
|
|
|
FilterGroupConverterInterface $filterGroupConverter, |
95
|
|
|
AdvisorQuestionConverterInterface $advisorQuestionConverter, |
96
|
|
|
FactFinderSdkConfig $factFinderSdkConfig |
97
|
|
|
) { |
98
|
|
|
$this->searchAdapter = $searchAdapter; |
99
|
|
|
$this->pagingConverter = $pagingConverter; |
100
|
|
|
$this->itemConverter = $itemConverter; |
101
|
|
|
$this->recordConverter = $recordConverter; |
102
|
|
|
$this->filterGroupConverter = $filterGroupConverter; |
103
|
|
|
$this->advisorQuestionConverter = $advisorQuestionConverter; |
104
|
|
|
$this->factFinderSdkConfig = $factFinderSdkConfig; |
105
|
|
|
} |
106
|
|
|
|
107
|
|
|
/** |
108
|
|
|
* @return \Generated\Shared\Transfer\FactFinderSdkSearchResponseTransfer |
109
|
|
|
*/ |
110
|
|
|
public function convert() |
111
|
|
|
{ |
112
|
|
|
$this->responseTransfer = new FactFinderSdkSearchResponseTransfer(); |
113
|
|
|
|
114
|
|
|
$this->responseTransfer->setCampaignIterator( |
115
|
|
|
$this->convertCampaigns($this->searchAdapter->getCampaigns()) |
116
|
|
|
); |
117
|
|
|
$this->responseTransfer->setAfterSearchNavigation( |
118
|
|
|
$this->convertAfterSearchNavigation($this->searchAdapter->getAfterSearchNavigation()) |
119
|
|
|
); |
120
|
|
|
$this->responseTransfer->setBreadCrumbs( |
121
|
|
|
$this->convertBreadCrumbTrail($this->searchAdapter->getBreadCrumbTrail()) |
122
|
|
|
); |
123
|
|
|
$this->pagingConverter->setPaging($this->searchAdapter->getPaging()); |
124
|
|
|
$this->responseTransfer->setPaging( |
125
|
|
|
$this->pagingConverter->convert() |
126
|
|
|
); |
127
|
|
|
$this->responseTransfer->setResult( |
128
|
|
|
$this->convertResult($this->searchAdapter->getResult()) |
129
|
|
|
); |
130
|
|
|
$this->responseTransfer->setResultsPerPageOptions( |
131
|
|
|
$this->convertResultsPerPageOptions($this->searchAdapter->getResultsPerPageOptions()) |
132
|
|
|
); |
133
|
|
|
$this->responseTransfer->setSingleWordSearchItems( |
134
|
|
|
$this->convertSingleWordSearch($this->searchAdapter->getSingleWordSearch()) |
135
|
|
|
); |
136
|
|
|
$this->responseTransfer->setSortingItems( |
137
|
|
|
$this->convertSorting($this->searchAdapter->getSorting()) |
138
|
|
|
); |
139
|
|
|
$this->responseTransfer->setIsSearchTimedOut( |
140
|
|
|
$this->searchAdapter->isSearchTimedOut() |
141
|
|
|
); |
142
|
|
|
$this->responseTransfer->setFollowSearchValue( |
143
|
|
|
$this->searchAdapter->getFollowSearchValue() |
144
|
|
|
); |
145
|
|
|
$this->responseTransfer->setSearchRedirect( |
146
|
|
|
$this->getSearchRedirect($this->responseTransfer) |
147
|
|
|
); |
148
|
|
|
|
149
|
|
|
return $this->responseTransfer; |
150
|
|
|
} |
151
|
|
|
|
152
|
|
|
/** |
153
|
|
|
* @param \FACTFinder\Data\CampaignIterator $campaigns |
154
|
|
|
* |
155
|
|
|
* @return \Generated\Shared\Transfer\FactFinderSdkDataCampaignIteratorTransfer |
156
|
|
|
*/ |
157
|
|
|
protected function convertCampaigns(CampaignIterator $campaigns) |
158
|
|
|
{ |
159
|
|
|
$factFinderDataCampaignIteratorTransfer = new FactFinderSdkDataCampaignIteratorTransfer(); |
160
|
|
|
$factFinderDataCampaignIteratorTransfer->setHasRedirect($campaigns->hasRedirect()); |
161
|
|
|
$factFinderDataCampaignIteratorTransfer->setRedirectUrl($campaigns->getRedirectUrl()); |
162
|
|
|
$factFinderDataCampaignIteratorTransfer->setHasFeedback($campaigns->hasFeedback()); |
163
|
|
|
$factFinderDataCampaignIteratorTransfer->setHasPushedProducts($campaigns->hasPushedProducts()); |
164
|
|
|
/** @var \FACTFinder\Data\Record $pushedProduct */ |
165
|
|
|
foreach ($campaigns->getPushedProducts() as $pushedProduct) { |
166
|
|
|
$this->recordConverter->setRecord($pushedProduct); |
167
|
|
|
$factFinderDataCampaignIteratorTransfer->addPushedProducts( |
168
|
|
|
$this->recordConverter->convert() |
169
|
|
|
); |
170
|
|
|
} |
171
|
|
|
$factFinderDataCampaignIteratorTransfer->setHasActiveQuestions($campaigns->hasActiveQuestions()); |
172
|
|
|
$factFinderDataCampaignIteratorTransfer->setHasAdvisorTree($campaigns->hasAdvisorTree()); |
173
|
|
|
/** @var \FACTFinder\Data\Record $advisorTree */ |
174
|
|
|
foreach ($campaigns->getAdvisorTree() as $advisorTree) { |
175
|
|
|
$this->recordConverter->setRecord($advisorTree); |
176
|
|
|
$factFinderDataCampaignIteratorTransfer->addAdvisorTree( |
177
|
|
|
$this->recordConverter->convert() |
178
|
|
|
); |
179
|
|
|
} |
180
|
|
|
|
181
|
|
|
/** @var \FACTFinder\Data\Campaign $campaign */ |
182
|
|
|
foreach ($campaigns as $campaign) { |
183
|
|
|
$factFinderDataCampaignTransfer = new FactFinderSdkDataCampaignTransfer(); |
184
|
|
|
$factFinderDataCampaignTransfer->setName($campaign->getName()); |
185
|
|
|
$factFinderDataCampaignTransfer->setCategory($campaign->getCategory()); |
186
|
|
|
$factFinderDataCampaignTransfer->setRedirectUrl($campaign->getRedirectUrl()); |
187
|
|
|
$factFinderDataCampaignTransfer->setFeedback($campaign->getFeedbackArray()); |
188
|
|
|
$factFinderDataCampaignTransfer->setHasRedirect($campaign->hasRedirect()); |
189
|
|
|
$factFinderDataCampaignTransfer->setHasPushedProducts($campaign->hasPushedProducts()); |
190
|
|
|
/** @var \FACTFinder\Data\Record $pushedProduct */ |
191
|
|
|
foreach ($campaign->getPushedProducts() as $pushedProduct) { |
192
|
|
|
$this->recordConverter->setRecord($pushedProduct); |
193
|
|
|
$factFinderDataCampaignTransfer->addPushedProducts( |
194
|
|
|
$this->recordConverter->convert() |
195
|
|
|
); |
196
|
|
|
} |
197
|
|
|
/** @var \FACTFinder\Data\AdvisorQuestion $activeQuestion */ |
198
|
|
|
foreach ($campaign->getActiveQuestions() as $activeQuestion) { |
199
|
|
|
$this->advisorQuestionConverter->setAdvisorQuestion($activeQuestion); |
200
|
|
|
$factFinderDataCampaignTransfer->addActiveQuestions( |
201
|
|
|
$this->advisorQuestionConverter->convert($activeQuestion) |
202
|
|
|
); |
203
|
|
|
} |
204
|
|
|
/** @var \FACTFinder\Data\AdvisorQuestion $advisorTree */ |
205
|
|
|
foreach ($campaign->getAdvisorTree() as $advisorTree) { |
206
|
|
|
$this->advisorQuestionConverter->setAdvisorQuestion($advisorTree); |
207
|
|
|
$factFinderDataCampaignTransfer->addAdvisorTree( |
208
|
|
|
$this->advisorQuestionConverter->convert() |
209
|
|
|
); |
210
|
|
|
} |
211
|
|
|
|
212
|
|
|
$factFinderDataCampaignIteratorTransfer->addCampaigns($factFinderDataCampaignTransfer); |
213
|
|
|
} |
214
|
|
|
|
215
|
|
|
return $factFinderDataCampaignIteratorTransfer; |
216
|
|
|
} |
217
|
|
|
|
218
|
|
|
/** |
219
|
|
|
* @param \FACTFinder\Data\AfterSearchNavigation $afterSearchNavigation |
220
|
|
|
* |
221
|
|
|
* @return \Generated\Shared\Transfer\FactFinderSdkDataAfterSearchNavigationTransfer |
222
|
|
|
*/ |
223
|
|
|
protected function convertAfterSearchNavigation(AfterSearchNavigation $afterSearchNavigation) |
224
|
|
|
{ |
225
|
|
|
$factFinderDataAfterSearchNavigationTransfer = new FactFinderSdkDataAfterSearchNavigationTransfer(); |
226
|
|
|
$factFinderDataAfterSearchNavigationTransfer->setHasPreviewImages($afterSearchNavigation->hasPreviewImages()); |
227
|
|
|
|
228
|
|
|
/** @var \FACTFinder\Data\FilterGroup $filterGroup */ |
229
|
|
|
foreach ($afterSearchNavigation as $filterGroup) { |
230
|
|
|
$this->filterGroupConverter->setFilterGroup($filterGroup); |
231
|
|
|
$factFinderDataAfterSearchNavigationTransfer->addFilterGroups( |
232
|
|
|
$this->filterGroupConverter->convert() |
233
|
|
|
); |
234
|
|
|
} |
235
|
|
|
|
236
|
|
|
return $factFinderDataAfterSearchNavigationTransfer; |
237
|
|
|
} |
238
|
|
|
|
239
|
|
|
/** |
240
|
|
|
* @param \FACTFinder\Data\BreadCrumbTrail $breadCrumbTrail |
241
|
|
|
* |
242
|
|
|
* @return \ArrayObject|\Generated\Shared\Transfer\FactFinderSdkDataBreadCrumbTransfer[] |
243
|
|
|
*/ |
244
|
|
|
protected function convertBreadCrumbTrail(BreadCrumbTrail $breadCrumbTrail) |
245
|
|
|
{ |
246
|
|
|
$breadCrumbs = new ArrayObject(); |
247
|
|
|
/** @var \FACTFinder\Data\BreadCrumb $breadCrumb */ |
248
|
|
|
foreach ($breadCrumbTrail as $breadCrumb) { |
249
|
|
|
$factFinderDataBreadCrumbTransfer = new FactFinderSdkDataBreadCrumbTransfer(); |
250
|
|
|
$factFinderDataBreadCrumbTransfer->setIsSearchBreadCrumb($breadCrumb->isSearchBreadCrumb()); |
251
|
|
|
$factFinderDataBreadCrumbTransfer->setIsFilterBreadCrumb($breadCrumb->isFilterBreadCrumb()); |
252
|
|
|
$factFinderDataBreadCrumbTransfer->setFieldName($breadCrumb->getFieldName()); |
253
|
|
|
|
254
|
|
|
$this->itemConverter->setItem($breadCrumb); |
255
|
|
|
$factFinderDataBreadCrumbTransfer->setItem($this->itemConverter->convert()); |
256
|
|
|
|
257
|
|
|
$breadCrumbs->append($factFinderDataBreadCrumbTransfer); |
258
|
|
|
} |
259
|
|
|
|
260
|
|
|
return $breadCrumbs; |
261
|
|
|
} |
262
|
|
|
|
263
|
|
|
/** |
264
|
|
|
* @param \FACTFinder\Data\Result $result |
265
|
|
|
* |
266
|
|
|
* @return \Generated\Shared\Transfer\FactFinderSdkDataResultTransfer |
267
|
|
|
*/ |
268
|
|
|
protected function convertResult(Result $result) |
269
|
|
|
{ |
270
|
|
|
$factFinderDataResultTransfer = new FactFinderSdkDataResultTransfer(); |
271
|
|
|
$factFinderDataResultTransfer->setFoundRecordsCount($result->getFoundRecordsCount()); |
272
|
|
|
$factFinderDataResultTransfer->setFieldNames($this->factFinderSdkConfig->getItemFields()); |
273
|
|
|
/** @var \FACTFinder\Data\Record $record */ |
274
|
|
|
foreach ($result as $record) { |
275
|
|
|
$this->recordConverter->setRecord($record); |
276
|
|
|
$factFinderDataResultTransfer->addRecords( |
277
|
|
|
$this->recordConverter->convert() |
278
|
|
|
); |
279
|
|
|
} |
280
|
|
|
|
281
|
|
|
return $factFinderDataResultTransfer; |
282
|
|
|
} |
283
|
|
|
|
284
|
|
|
/** |
285
|
|
|
* @param \FACTFinder\Data\ResultsPerPageOptions|null $resultsPerPageOptions |
286
|
|
|
* |
287
|
|
|
* @return \Generated\Shared\Transfer\FactFinderSdkDataResultsPerPageOptionsTransfer |
288
|
|
|
*/ |
289
|
|
|
protected function convertResultsPerPageOptions(?ResultsPerPageOptions $resultsPerPageOptions = null) |
290
|
|
|
{ |
291
|
|
|
$factFinderDataResultsPerPageOptionsTransfer = new FactFinderSdkDataResultsPerPageOptionsTransfer(); |
292
|
|
|
|
293
|
|
|
if ($resultsPerPageOptions === null) { |
294
|
|
|
return $factFinderDataResultsPerPageOptionsTransfer; |
295
|
|
|
} |
296
|
|
|
|
297
|
|
|
$this->itemConverter->setItem($resultsPerPageOptions->getDefaultOption()); |
298
|
|
|
$factFinderDataResultsPerPageOptionsTransfer->setDefaultOption( |
299
|
|
|
$this->itemConverter->convert() |
300
|
|
|
); |
301
|
|
|
$this->itemConverter->setItem($resultsPerPageOptions->getSelectedOption()); |
302
|
|
|
$factFinderDataResultsPerPageOptionsTransfer->setSelectedOption( |
303
|
|
|
$this->itemConverter->convert() |
304
|
|
|
); |
305
|
|
|
/** @var \FACTFinder\Data\Item $resultsPerPageOption */ |
306
|
|
|
foreach ($resultsPerPageOptions as $resultsPerPageOption) { |
307
|
|
|
$this->itemConverter->setItem($resultsPerPageOption); |
308
|
|
|
$factFinderDataResultsPerPageOptionsTransfer->addItems( |
309
|
|
|
$this->itemConverter->convert() |
310
|
|
|
); |
311
|
|
|
} |
312
|
|
|
|
313
|
|
|
return $factFinderDataResultsPerPageOptionsTransfer; |
314
|
|
|
} |
315
|
|
|
|
316
|
|
|
/** |
317
|
|
|
* @param \FACTFinder\Data\SingleWordSearchItem[] $singleWordSearch |
318
|
|
|
* |
319
|
|
|
* @return \ArrayObject|\Generated\Shared\Transfer\FactFinderSdkDataSingleWordSearchItemTransfer[] |
320
|
|
|
*/ |
321
|
|
|
protected function convertSingleWordSearch($singleWordSearch) |
322
|
|
|
{ |
323
|
|
|
$singleWordSearchItems = new ArrayObject(); |
324
|
|
|
foreach ($singleWordSearch as $singleWordSearchItem) { |
325
|
|
|
$factFinderDataSingleWordSearchItemTransfer = new FactFinderSdkDataSingleWordSearchItemTransfer(); |
326
|
|
|
/** @var \FACTFinder\Data\Record $previewRecord */ |
327
|
|
|
foreach ($singleWordSearchItem->getPreviewRecords() as $previewRecord) { |
328
|
|
|
$this->recordConverter->setRecord($previewRecord); |
329
|
|
|
$factFinderDataSingleWordSearchItemTransfer->addPreviewRecords( |
330
|
|
|
$this->recordConverter->convert() |
331
|
|
|
); |
332
|
|
|
} |
333
|
|
|
$factFinderDataSingleWordSearchItemTransfer->setSuggestQuery( |
334
|
|
|
$this->convertSuggestQuery($singleWordSearchItem) |
335
|
|
|
); |
336
|
|
|
|
337
|
|
|
$singleWordSearchItems->append($factFinderDataSingleWordSearchItemTransfer); |
338
|
|
|
} |
339
|
|
|
|
340
|
|
|
return $singleWordSearchItems; |
341
|
|
|
} |
342
|
|
|
|
343
|
|
|
/** |
344
|
|
|
* @param \FACTFinder\Data\SuggestQuery $suggestQuery |
345
|
|
|
* |
346
|
|
|
* @return \Generated\Shared\Transfer\FactFinderSdkDataSuggestQueryTransfer |
347
|
|
|
*/ |
348
|
|
|
protected function convertSuggestQuery(SuggestQuery $suggestQuery) |
349
|
|
|
{ |
350
|
|
|
$factFinderDataSuggestQueryTransfer = new FactFinderSdkDataSuggestQueryTransfer(); |
351
|
|
|
$factFinderDataSuggestQueryTransfer->setHitCount($suggestQuery->getHitCount()); |
352
|
|
|
$factFinderDataSuggestQueryTransfer->setType($suggestQuery->getType()); |
353
|
|
|
$factFinderDataSuggestQueryTransfer->setImageUrl($suggestQuery->getImageUrl()); |
354
|
|
|
$factFinderDataSuggestQueryTransfer->setAttributes($suggestQuery->getAttributes()); |
355
|
|
|
|
356
|
|
|
return $factFinderDataSuggestQueryTransfer; |
357
|
|
|
} |
358
|
|
|
|
359
|
|
|
/** |
360
|
|
|
* @param \FACTFinder\Data\Sorting|null $sorting |
361
|
|
|
* |
362
|
|
|
* @return \ArrayObject|\Generated\Shared\Transfer\FactFinderSdkDataItemTransfer[] |
363
|
|
|
*/ |
364
|
|
|
protected function convertSorting(?Sorting $sorting = null) |
365
|
|
|
{ |
366
|
|
|
$sortingItems = new ArrayObject(); |
367
|
|
|
|
368
|
|
|
if ($sorting === null) { |
369
|
|
|
return $sortingItems; |
370
|
|
|
} |
371
|
|
|
|
372
|
|
|
/** @var \FACTFinder\Data\Item $sortingItem */ |
373
|
|
|
foreach ($sorting as $sortingItem) { |
374
|
|
|
$this->itemConverter->setItem($sortingItem); |
375
|
|
|
|
376
|
|
|
$sortingItems->append($this->itemConverter->convert()); |
377
|
|
|
} |
378
|
|
|
|
379
|
|
|
return $sortingItems; |
380
|
|
|
} |
381
|
|
|
|
382
|
|
|
/** |
383
|
|
|
* @param \Generated\Shared\Transfer\FactFinderSdkSearchResponseTransfer $sdkSearchResponseTransfer |
384
|
|
|
* |
385
|
|
|
* @return \Generated\Shared\Transfer\FactFinderSearchRedirectTransfer |
386
|
|
|
*/ |
387
|
|
|
protected function getSearchRedirect(FactFinderSdkSearchResponseTransfer $sdkSearchResponseTransfer) |
388
|
|
|
{ |
389
|
|
|
$searchRedirectTransfer = new FactFinderSearchRedirectTransfer(); |
390
|
|
|
$articleNumberStatus = $this->searchAdapter->getArticleNumberStatus(); |
391
|
|
|
$foundRecordsCount = $sdkSearchResponseTransfer->getResult()->getFoundRecordsCount(); |
392
|
|
|
|
393
|
|
|
if ($foundRecordsCount !== 1 || $articleNumberStatus !== ArticleNumberSearchStatus::IsArticleNumberResultFound()) { |
394
|
|
|
return $searchRedirectTransfer; |
395
|
|
|
} |
396
|
|
|
|
397
|
|
|
$record = $sdkSearchResponseTransfer->getResult()->getRecords()[0]; |
398
|
|
|
$productUrl = $record->getFields()[FactFinderSdkConstants::ITEM_PRODUCT_URL]; |
399
|
|
|
$searchRedirectTransfer->setUrl($productUrl); |
400
|
|
|
$searchRedirectTransfer->setRedirect(true); |
401
|
|
|
|
402
|
|
|
return $searchRedirectTransfer; |
403
|
|
|
} |
404
|
|
|
} |
405
|
|
|
|
The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g.
excluded_paths: ["lib/*"]
, you can move it to the dependency path list as follows:For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths