Skip to content

Commit ce088ac

Browse files
committed
Merge branch '2.3-develop' into 2.3-develop-new-relic-dependency
2 parents 66fddf2 + 2bd4cb5 commit ce088ac

File tree

83 files changed

+1774
-198
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+1774
-198
lines changed

app/code/Magento/AsynchronousOperations/Model/BulkStatus.php

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -87,22 +87,6 @@ public function getFailedOperationsByBulkId($bulkUuid, $failureType = null)
8787
*/
8888
public function getOperationsCountByBulkIdAndStatus($bulkUuid, $status)
8989
{
90-
if ($status === OperationInterface::STATUS_TYPE_OPEN) {
91-
/**
92-
* Total number of operations that has been scheduled within the given bulk
93-
*/
94-
$allOperationsQty = $this->getOperationCount($bulkUuid);
95-
96-
/**
97-
* Number of operations that has been processed (i.e. operations with any status but 'open')
98-
*/
99-
$allProcessedOperationsQty = (int)$this->operationCollectionFactory->create()
100-
->addFieldToFilter('bulk_uuid', $bulkUuid)
101-
->getSize();
102-
103-
return $allOperationsQty - $allProcessedOperationsQty;
104-
}
105-
10690
/** @var \Magento\AsynchronousOperations\Model\ResourceModel\Operation\Collection $collection */
10791
$collection = $this->operationCollectionFactory->create();
10892
return $collection->addFieldToFilter('bulk_uuid', $bulkUuid)

app/code/Magento/Bundle/view/adminhtml/templates/product/composite/fieldset/options/type/checkbox.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<?php $_selections = $_option->getSelections(); ?>
1111
<?php $_skipSaleableCheck = $this->helper(Magento\Catalog\Helper\Product::class)->getSkipSaleableCheck(); ?>
1212

13-
<div class="field admin__field options<?php if ($_option->getRequired()) { echo ' required _required'; } ?>">
13+
<div class="field admin__field options<?php if ($_option->getRequired()) { echo ' _required'; } ?>">
1414
<label class="label admin__field-label">
1515
<span><?= $block->escapeHtml($_option->getTitle()) ?></span>
1616
</label>

app/code/Magento/Bundle/view/adminhtml/templates/product/composite/fieldset/options/type/multi.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<?php $_option = $block->getOption(); ?>
1010
<?php $_selections = $_option->getSelections(); ?>
1111
<?php $_skipSaleableCheck = $this->helper(Magento\Catalog\Helper\Product::class)->getSkipSaleableCheck(); ?>
12-
<div class="field admin__field <?php if ($_option->getRequired()) { echo ' required'; } ?><?php if ($_option->getDecoratedIsLast()) :?> last<?php endif; ?>">
12+
<div class="field admin__field <?php if ($_option->getRequired()) { echo ' _required'; } ?><?php if ($_option->getDecoratedIsLast()) :?> last<?php endif; ?>">
1313
<label class="label admin__field-label"><span><?= $block->escapeHtml($_option->getTitle()) ?></span></label>
1414
<div class="control admin__field-control">
1515
<?php if (count($_selections) == 1 && $_option->getRequired()) : ?>

app/code/Magento/Bundle/view/adminhtml/templates/product/composite/fieldset/options/type/radio.phtml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<?php $_skipSaleableCheck = $this->helper(Magento\Catalog\Helper\Product::class)->getSkipSaleableCheck(); ?>
1313
<?php list($_defaultQty, $_canChangeQty) = $block->getDefaultValues(); ?>
1414

15-
<div class="field admin__field options<?php if ($_option->getRequired()) { echo ' required'; } ?>">
15+
<div class="field admin__field options<?php if ($_option->getRequired()) { echo ' _required'; } ?>">
1616
<label class="label admin__field-label"><span><?= $block->escapeHtml($_option->getTitle()) ?></span></label>
1717
<div class="control admin__field-control">
1818
<div class="nested<?php if ($_option->getDecoratedIsLast()) :?> last<?php endif; ?>">
@@ -39,7 +39,7 @@
3939
<?php foreach ($_selections as $_selection) : ?>
4040
<div class="field choice admin__field admin__field-option">
4141
<input type="radio"
42-
class="radio admin__control-radio <?= $_option->getRequired() ? ' validate-one-required-by-name' : '' ?> change-container-classname"
42+
class="radio admin__control-radio <?= $_option->getRequired() ? ' required-entry' : '' ?> change-container-classname"
4343
id="bundle-option-<?= $block->escapeHtmlAttr($_option->getId()) ?>-<?= $block->escapeHtmlAttr($_selection->getSelectionId()) ?>"
4444
name="bundle_option[<?= $block->escapeHtmlAttr($_option->getId()) ?>]"
4545
<?php if ($block->isSelected($_selection)) { echo ' checked="checked"'; } ?>
@@ -66,7 +66,7 @@
6666
</label>
6767
<div class="control admin__field-control"><input <?php if (!$_canChangeQty) { echo ' disabled="disabled"'; } ?>
6868
id="bundle-option-<?= $block->escapeHtmlAttr($_option->getId()) ?>-qty-input"
69-
class="input-text admin__control-text qty<?php if (!$_canChangeQty) { echo ' qty-disabled'; } ?>"
69+
class="input-text admin__control-text qty validate-greater-than-zero<?php if (!$_canChangeQty) { echo ' qty-disabled'; } ?>"
7070
type="text"
7171
name="bundle_option_qty[<?= $block->escapeHtmlAttr($_option->getId()) ?>]"
7272
value="<?= $block->escapeHtmlAttr($_defaultQty) ?>" />

app/code/Magento/Bundle/view/adminhtml/templates/product/composite/fieldset/options/type/select.phtml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<?php $_skipSaleableCheck = $this->helper(Magento\Catalog\Helper\Product::class)->getSkipSaleableCheck(); ?>
1313
<?php list($_defaultQty, $_canChangeQty) = $block->getDefaultValues(); ?>
1414

15-
<div class="field admin__field option<?php if ($_option->getDecoratedIsLast()) :?> last<?php endif; ?><?php if ($_option->getRequired()) { echo ' required _required'; } ?>">
15+
<div class="field admin__field option<?php if ($_option->getDecoratedIsLast()) :?> last<?php endif; ?><?php if ($_option->getRequired()) { echo ' _required'; } ?>">
1616
<label class="label admin__field-label"><span><?= $block->escapeHtml($_option->getTitle()) ?></span></label>
1717
<div class="control admin__field-control">
1818
<?php if ($block->showSingle()) : ?>
@@ -49,7 +49,7 @@
4949
<div class="control admin__field-control">
5050
<input <?php if (!$_canChangeQty) { echo ' disabled="disabled"'; } ?>
5151
id="bundle-option-<?= $block->escapeHtmlAttr($_option->getId()) ?>-qty-input"
52-
class="input-text admin__control-text qty<?php if (!$_canChangeQty) { echo ' qty-disabled'; } ?>"
52+
class="input-text admin__control-text qty validate-greater-than-zero<?php if (!$_canChangeQty) { echo ' qty-disabled'; } ?>"
5353
type="text"
5454
name="bundle_option_qty[<?= $block->escapeHtmlAttr($_option->getId()) ?>]"
5555
value="<?= $block->escapeHtmlAttr($_defaultQty) ?>" />
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
declare(strict_types=1);
8+
9+
namespace Magento\Captcha\Test\Unit\CustomerData;
10+
11+
use Magento\Captcha\Helper\Data as CaptchaHelper;
12+
use Magento\Customer\Model\Session as CustomerSession;
13+
use Magento\Captcha\CustomerData\Captcha;
14+
use Magento\Captcha\Model\DefaultModel;
15+
use Magento\Customer\Api\Data\CustomerInterface as CustomerData;
16+
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
17+
use PHPUnit\Framework\TestCase;
18+
19+
class CaptchaTest extends TestCase
20+
{
21+
/**
22+
* @var CaptchaHelper|\PHPUnit_Framework_MockObject_MockObject
23+
*/
24+
private $helperMock;
25+
26+
/**
27+
* @var CustomerSession|\PHPUnit_Framework_MockObject_MockObject
28+
*/
29+
private $customerSessionMock;
30+
31+
/**
32+
* @var Captcha
33+
*/
34+
private $model;
35+
36+
/**
37+
* @var array
38+
*/
39+
private $formIds;
40+
41+
/**
42+
* @var ObjectManagerHelper
43+
*/
44+
protected $objectManagerHelper;
45+
46+
/**
47+
* Create mocks and model
48+
*/
49+
protected function setUp()
50+
{
51+
$this->helperMock = $this->createMock(CaptchaHelper::class);
52+
$this->customerSessionMock = $this->createMock(CustomerSession::class);
53+
$this->formIds = [
54+
'user_login'
55+
];
56+
$this->objectManagerHelper = new ObjectManagerHelper($this);
57+
$this->model = $this->objectManagerHelper->getObject(
58+
Captcha::class,
59+
[
60+
'helper' => $this->helperMock,
61+
'formIds' => $this->formIds,
62+
'customerSession' => $this->customerSessionMock
63+
]
64+
);
65+
}
66+
67+
/**
68+
* Test getSectionData() when user is login and require captcha
69+
*/
70+
public function testGetSectionDataWhenLoginAndRequireCaptcha()
71+
{
72+
$emailLogin = 'test@localhost.com';
73+
74+
$userLoginModel = $this->createMock(DefaultModel::class);
75+
$userLoginModel->expects($this->any())->method('isRequired')->with($emailLogin)
76+
->willReturn(true);
77+
$this->helperMock->expects($this->any())->method('getCaptcha')->with('user_login')->willReturn($userLoginModel);
78+
79+
$this->customerSessionMock->expects($this->any())->method('isLoggedIn')
80+
->willReturn(true);
81+
82+
$customerDataMock = $this->createMock(CustomerData::class);
83+
$customerDataMock->expects($this->any())->method('getEmail')->willReturn($emailLogin);
84+
$this->customerSessionMock->expects($this->any())->method('getCustomerData')
85+
->willReturn($customerDataMock);
86+
87+
/* Assert to test */
88+
$this->assertEquals(
89+
[
90+
"user_login" => [
91+
"isRequired" => true,
92+
"timestamp" => time()
93+
]
94+
],
95+
$this->model->getSectionData()
96+
);
97+
}
98+
}

app/code/Magento/Catalog/Block/Adminhtml/Category/Tree.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,7 @@ protected function _getNodeJson($node, $level = 0)
407407
public function buildNodeName($node)
408408
{
409409
$result = $this->escapeHtml($node->getName());
410+
$result .= ' (ID: ' . $node->getId() . ')';
410411
if ($this->_withProductCount) {
411412
$result .= ' (' . $node->getProductCount() . ')';
412413
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ public function execute($product, $arguments = [])
162162

163163
if (!empty($image['removed'])) {
164164
$clearImages[] = $image['file'];
165-
} elseif (empty($image['value_id'])) {
165+
} elseif (empty($image['value_id']) || !empty($image['recreate'])) {
166166
$newFile = $this->moveImageFromTmp($image['file']);
167167
$image['new_file'] = $newFile;
168168
$newImages[$image['file']] = $image;

app/code/Magento/Catalog/Model/Product/Gallery/GalleryManagement.php

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,12 @@ public function create($sku, ProductAttributeMediaGalleryEntryInterface $entry)
7171
$product->setMediaGalleryEntries($existingMediaGalleryEntries);
7272
try {
7373
$product = $this->productRepository->save($product);
74-
} catch (InputException $inputException) {
75-
throw $inputException;
7674
} catch (\Exception $e) {
77-
throw new StateException(__("The product can't be saved."));
75+
if ($e instanceof InputException) {
76+
throw $e;
77+
} else {
78+
throw new StateException(__("The product can't be saved."));
79+
}
7880
}
7981

8082
foreach ($product->getMediaGalleryEntries() as $entry) {
@@ -98,19 +100,13 @@ public function update($sku, ProductAttributeMediaGalleryEntryInterface $entry)
98100
);
99101
}
100102
$found = false;
103+
$entryTypes = (array)$entry->getTypes();
101104
foreach ($existingMediaGalleryEntries as $key => $existingEntry) {
102-
$entryTypes = (array)$entry->getTypes();
103-
$existingEntryTypes = (array)$existingMediaGalleryEntries[$key]->getTypes();
104-
$existingMediaGalleryEntries[$key]->setTypes(array_diff($existingEntryTypes, $entryTypes));
105+
$existingEntryTypes = (array)$existingEntry->getTypes();
106+
$existingEntry->setTypes(array_diff($existingEntryTypes, $entryTypes));
105107

106108
if ($existingEntry->getId() == $entry->getId()) {
107109
$found = true;
108-
109-
$file = $entry->getContent();
110-
111-
if ($file && $file->getBase64EncodedData() || $entry->getFile()) {
112-
$entry->setId(null);
113-
}
114110
$existingMediaGalleryEntries[$key] = $entry;
115111
}
116112
}

app/code/Magento/Catalog/Model/Product/Gallery/UpdateHandler.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*/
66
namespace Magento\Catalog\Model\Product\Gallery;
77

8+
use Magento\Catalog\Model\ResourceModel\Product\Gallery;
89
use Magento\Framework\EntityManager\Operation\ExtensionInterface;
910

1011
/**
@@ -75,6 +76,16 @@ protected function processNewImage($product, array &$image)
7576
$image['value_id'],
7677
$product->getData($this->metadata->getLinkField())
7778
);
79+
} elseif (!empty($image['recreate'])) {
80+
$data['value_id'] = $image['value_id'];
81+
$data['value'] = $image['file'];
82+
$data['attribute_id'] = $this->getAttribute()->getAttributeId();
83+
84+
if (!empty($image['media_type'])) {
85+
$data['media_type'] = $image['media_type'];
86+
}
87+
88+
$this->resourceModel->saveDataRow(Gallery::GALLERY_TABLE, $data);
7889
}
7990

8091
return $data;

0 commit comments

Comments
 (0)