Skip to content

Commit 7a3e795

Browse files
author
olysenko
committed
Merge remote-tracking branch 'origin/MAGETWO-94029' into chaika_august2
2 parents 273ee99 + a746d1b commit 7a3e795

File tree

4 files changed

+216
-94
lines changed

4 files changed

+216
-94
lines changed

app/code/Magento/ProductVideo/Block/Product/View/Gallery.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,8 @@
99
*
1010
* @author Magento Core Team <core@magentocommerce.com>
1111
*/
12-
namespace Magento\ProductVideo\Block\Product\View;
1312

14-
use Magento\Catalog\Model\Product\Image\UrlBuilder;
13+
namespace Magento\ProductVideo\Block\Product\View;
1514

1615
/**
1716
* @api
@@ -93,6 +92,6 @@ public function getVideoSettingsJson()
9392
*/
9493
public function getOptionsMediaGalleryDataJson()
9594
{
96-
return $this->jsonEncoder->encode([]);
95+
return $this->jsonEncoder->encode([]);
9796
}
9897
}

app/code/Magento/ProductVideo/Model/Plugin/Catalog/Product/Gallery/CreateHandler.php

Lines changed: 51 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
67
namespace Magento\ProductVideo\Model\Plugin\Catalog\Product\Gallery;
78

89
use Magento\ProductVideo\Model\Product\Attribute\Media\ExternalVideoEntryConverter;
@@ -29,14 +30,15 @@ public function beforeExecute(
2930
\Magento\Catalog\Model\Product $product,
3031
array $arguments = []
3132
) {
33+
/** @var \Magento\Catalog\Model\ResourceModel\Eav\Attribute $attribute */
3234
$attribute = $mediaGalleryCreateHandler->getAttribute();
3335
$mediaCollection = $this->getMediaEntriesDataCollection($product, $attribute);
3436
if (!empty($mediaCollection)) {
3537
$storeDataCollection = $this->loadStoreViewVideoData($mediaCollection, $product->getStoreId());
3638
$mediaCollection = $this->addAdditionalStoreData($mediaCollection, $storeDataCollection);
3739
$product->setData(
3840
$attribute->getAttributeCode(),
39-
$mediaCollection + $product->getData($attribute->getAttributeCode())
41+
$mediaCollection
4042
);
4143
}
4244
}
@@ -56,6 +58,9 @@ public function afterExecute(
5658
);
5759

5860
if (!empty($mediaCollection)) {
61+
$newVideoCollection = $this->collectNewVideos($mediaCollection);
62+
$this->saveVideoData($newVideoCollection, 0);
63+
5964
$videoDataCollection = $this->collectVideoData($mediaCollection);
6065
$this->saveVideoData($videoDataCollection, $product->getStoreId());
6166
$this->saveAdditionalStoreData($videoDataCollection);
@@ -167,10 +172,7 @@ protected function collectVideoData(array $mediaCollection)
167172
{
168173
$videoDataCollection = [];
169174
foreach ($mediaCollection as $item) {
170-
if (!empty($item['media_type'])
171-
&& empty($item['removed'])
172-
&& $item['media_type'] == ExternalVideoEntryConverter::MEDIA_TYPE_CODE
173-
) {
175+
if ($this->isVideoItem($item)) {
174176
$videoData = $this->extractVideoDataFromRowData($item);
175177
$videoDataCollection[] = $videoData;
176178
}
@@ -199,11 +201,7 @@ protected function collectVideoEntriesIdsToAdditionalLoad(array $mediaCollection
199201
{
200202
$ids = [];
201203
foreach ($mediaCollection as $item) {
202-
if (!empty($item['media_type'])
203-
&& empty($item['removed'])
204-
&& $item['media_type'] == ExternalVideoEntryConverter::MEDIA_TYPE_CODE
205-
&& isset($item['save_data_from'])
206-
) {
204+
if ($this->isVideoItem($item) && isset($item['save_data_from'])) {
207205
$ids[] = $item['save_data_from'];
208206
}
209207
}
@@ -215,26 +213,27 @@ protected function collectVideoEntriesIdsToAdditionalLoad(array $mediaCollection
215213
* @param array $data
216214
* @return array
217215
*/
218-
protected function addAdditionalStoreData(array $mediaCollection, array $data)
216+
protected function addAdditionalStoreData(array $mediaCollection, array $data): array
219217
{
220-
foreach ($mediaCollection as &$mediaItem) {
218+
$return = [];
219+
foreach ($mediaCollection as $key => $mediaItem) {
221220
if (!empty($mediaItem['save_data_from'])) {
222221
$additionalData = $this->createAdditionalStoreDataCollection($data, $mediaItem['save_data_from']);
223222
if (!empty($additionalData)) {
224223
$mediaItem[self::ADDITIONAL_STORE_DATA_KEY] = $additionalData;
225224
}
226225
}
226+
$return[$key] = $mediaItem;
227227
}
228-
229-
return ['images' => $mediaCollection];
228+
return ['images' => $return];
230229
}
231230

232231
/**
233232
* @param array $storeData
234233
* @param int $valueId
235234
* @return array
236235
*/
237-
protected function createAdditionalStoreDataCollection(array $storeData, $valueId)
236+
protected function createAdditionalStoreDataCollection(array $storeData, $valueId): array
238237
{
239238
$result = [];
240239
foreach ($storeData as $item) {
@@ -246,4 +245,41 @@ protected function createAdditionalStoreDataCollection(array $storeData, $valueI
246245

247246
return $result;
248247
}
248+
249+
/**
250+
* @param array $mediaCollection
251+
* @return array
252+
*/
253+
private function collectNewVideos(array $mediaCollection): array
254+
{
255+
$return = [];
256+
foreach ($mediaCollection as $item) {
257+
if ($this->isVideoItem($item) && $this->isNewVideo($item)) {
258+
$return[] = $this->extractVideoDataFromRowData($item);
259+
}
260+
}
261+
return $return;
262+
}
263+
264+
/**
265+
* @param array $item
266+
* @return bool
267+
*/
268+
private function isVideoItem(array $item): bool
269+
{
270+
return !empty($item['media_type'])
271+
&& empty($item['removed'])
272+
&& $item['media_type'] == ExternalVideoEntryConverter::MEDIA_TYPE_CODE;
273+
}
274+
275+
/**
276+
* @param array $item
277+
* @return bool
278+
*/
279+
private function isNewVideo(array $item): bool
280+
{
281+
return !isset($item['video_url_default'], $item['video_title_default'])
282+
|| empty($item['video_url_default'])
283+
|| empty($item['video_title_default']);
284+
}
249285
}

app/code/Magento/ProductVideo/Model/Plugin/Catalog/Product/Gallery/ReadHandler.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
67
namespace Magento\ProductVideo\Model\Plugin\Catalog\Product\Gallery;
78

89
use Magento\ProductVideo\Model\Product\Attribute\Media\ExternalVideoEntryConverter;
@@ -55,8 +56,8 @@ protected function collectVideoEntriesIds(array $mediaCollection)
5556
{
5657
$ids = [];
5758
foreach ($mediaCollection as $item) {
58-
if ($item['media_type'] == ExternalVideoEntryConverter::MEDIA_TYPE_CODE
59-
&& !array_key_exists('video_url', $item)
59+
if ($item['media_type'] === ExternalVideoEntryConverter::MEDIA_TYPE_CODE
60+
&& !isset($item['video_url'])
6061
) {
6162
$ids[] = $item['value_id'];
6263
}
@@ -72,7 +73,7 @@ protected function collectVideoEntriesIds(array $mediaCollection)
7273
protected function loadVideoDataById(array $ids, $storeId = null)
7374
{
7475
$mainTableAlias = $this->resourceModel->getMainTableAlias();
75-
$joinConditions = $mainTableAlias.'.value_id = store_value.value_id';
76+
$joinConditions = $mainTableAlias . '.value_id = store_value.value_id';
7677
if (null !== $storeId) {
7778
$joinConditions = implode(
7879
' AND ',
@@ -138,10 +139,10 @@ protected function addVideoDataToMediaEntries(array $mediaCollection, array $dat
138139
protected function substituteNullsWithDefaultValues(array $rowData)
139140
{
140141
foreach ($this->getVideoProperties(false) as $key) {
141-
if (empty($rowData[$key]) && !empty($rowData[$key.'_default'])) {
142-
$rowData[$key] = $rowData[$key.'_default'];
142+
if (empty($rowData[$key]) && !empty($rowData[$key . '_default'])) {
143+
$rowData[$key] = $rowData[$key . '_default'];
143144
}
144-
unset($rowData[$key.'_default']);
145+
unset($rowData[$key . '_default']);
145146
}
146147

147148
return $rowData;
@@ -154,8 +155,7 @@ protected function substituteNullsWithDefaultValues(array $rowData)
154155
protected function getVideoProperties($withDbMapping = true)
155156
{
156157
$properties = $this->videoPropertiesDbMapping;
157-
unset($properties['value_id']);
158-
unset($properties['store_id']);
158+
unset($properties['value_id'], $properties['store_id']);
159159

160160
return $withDbMapping ? $properties : array_keys($properties);
161161
}

0 commit comments

Comments
 (0)