Skip to content

Commit cb615c7

Browse files
committed
Merge remote-tracking branch 'origin/MAGETWO-96930' into 2.2.8-develop-pr71
2 parents 6c2ac24 + 773274a commit cb615c7

File tree

150 files changed

+3623
-1026
lines changed

Some content is hidden

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

150 files changed

+3623
-1026
lines changed

app/code/Magento/Backend/view/adminhtml/templates/widget/tabshoriz.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<?php $_tabType = (!preg_match('/\s?ajax\s?/', $_tabClass) && $block->getTabUrl($_tab) != '#') ? 'link' : '' ?>
1919
<?php $_tabHref = $block->getTabUrl($_tab) == '#' ? '#' . $block->getTabId($_tab) . '_content' : $block->getTabUrl($_tab) ?>
2020
<li>
21-
<a href="<?= /* @escapeNotVerified */ $_tabHref ?>" id="<?= /* @escapeNotVerified */ $block->getTabId($_tab) ?>" title="<?= /* @escapeNotVerified */ $block->getTabTitle($_tab) ?>" class="<?php $_tabClass ?>" data-tab-type="<?php $_tabType ?>">
21+
<a href="<?= $block->escapeHtmlAttr($_tabHref) ?>" id="<?= $block->escapeHtmlAttr($block->getTabId($_tab)) ?>" title="<?= $block->escapeHtmlAttr($block->getTabTitle($_tab)) ?>" class="<?= $block->escapeHtmlAttr($_tabClass) ?>" data-tab-type="<?= $block->escapeHtmlAttr($_tabType) ?>">
2222
<span>
2323
<span class="changed" title="<?= /* @escapeNotVerified */ __('The information in this tab has been changed.') ?>"></span>
2424
<span class="error" title="<?= /* @escapeNotVerified */ __('This tab contains invalid data. Please resolve this before saving.') ?>"></span>

app/code/Magento/Braintree/view/adminhtml/templates/form/cc.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ $ccType = $block->getInfoData('cc_type');
8383
id="<?= /* @noEscape */ $code ?>_vault"
8484
name="payment[is_active_payment_token_enabler]"
8585
class="admin__control-checkbox"/>
86-
<label class="label" for="<?= /* @noEscape */ $code ?>_vault">
86+
<label class="label admin__field-label" for="<?= /* @noEscape */ $code ?>_vault">
8787
<span><?= $block->escapeHtml(__('Save for later use.')) ?></span>
8888
</label>
8989
</div>

app/code/Magento/Bundle/view/frontend/templates/sales/order/items/renderer.phtml

Lines changed: 81 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -7,129 +7,150 @@
77
// @codingStandardsIgnoreFile
88

99
/** @var $block \Magento\Bundle\Block\Sales\Order\Items\Renderer */
10+
$parentItem = $block->getItem();
11+
$items = array_merge([$parentItem], $parentItem->getChildrenItems());
12+
$index = 0;
13+
$prevOptionId = '';
1014
?>
11-
<?php $parentItem = $block->getItem() ?>
12-
<?php $items = array_merge([$parentItem], $parentItem->getChildrenItems()); ?>
13-
<?php $_index = 0 ?>
1415

15-
<?php $_prevOptionId = '' ?>
16+
<?php foreach ($items as $item): ?>
1617

17-
<?php foreach ($items as $_item): ?>
18-
19-
<?php if ($block->getItemOptions() || $parentItem->getDescription() || $this->helper('Magento\GiftMessage\Helper\Message')->isMessagesAllowed('order_item', $parentItem) && $parentItem->getGiftMessageId()): ?>
20-
<?php $_showlastRow = true ?>
18+
<?php if ($block->getItemOptions()
19+
|| $parentItem->getDescription()
20+
|| $this->helper('Magento\GiftMessage\Helper\Message')->isMessagesAllowed('order_item', $parentItem)
21+
&& $parentItem->getGiftMessageId()): ?>
22+
<?php $showLastRow = true; ?>
2123
<?php else: ?>
22-
<?php $_showlastRow = false ?>
24+
<?php $showLastRow = false; ?>
2325
<?php endif; ?>
2426

25-
<?php if ($_item->getParentItem()): ?>
26-
<?php $attributes = $block->getSelectionAttributes($_item) ?>
27-
<?php if ($_prevOptionId != $attributes['option_id']): ?>
27+
<?php if ($item->getParentItem()): ?>
28+
<?php $attributes = $block->getSelectionAttributes($item) ?>
29+
<?php if ($prevOptionId != $attributes['option_id']): ?>
2830
<tr class="options-label">
29-
<td class="col label" colspan="5"><?= /* @escapeNotVerified */ $attributes['option_label'] ?></td>
31+
<td class="col label" colspan="5"><?= $block->escapeHtml($attributes['option_label']); ?></td>
3032
</tr>
31-
<?php $_prevOptionId = $attributes['option_id'] ?>
33+
<?php $prevOptionId = $attributes['option_id'] ?>
3234
<?php endif; ?>
3335
<?php endif; ?>
34-
<tr id="order-item-row-<?= /* @escapeNotVerified */ $_item->getId() ?>" class="<?php if ($_item->getParentItem()): ?>item-options-container<?php else: ?>item-parent<?php endif; ?>"<?php if ($_item->getParentItem()): ?> data-th="<?= /* @escapeNotVerified */ $attributes['option_label'] ?>"<?php endif; ?>>
35-
<?php if (!$_item->getParentItem()): ?>
36-
<td class="col name" data-th="<?= $block->escapeHtml(__('Product Name')) ?>">
37-
<strong class="product name product-item-name"><?= $block->escapeHtml($_item->getName()) ?></strong>
36+
<tr id="order-item-row-<?= /* @noEscape */ $item->getId() ?>"
37+
class="<?php if ($item->getParentItem()): ?>
38+
item-options-container
39+
<?php else: ?>
40+
item-parent
41+
<?php endif; ?>"
42+
<?php if ($item->getParentItem()): ?>
43+
data-th="<?= $block->escapeHtml($attributes['option_label']); ?>"
44+
<?php endif; ?>>
45+
<?php if (!$item->getParentItem()): ?>
46+
<td class="col name" data-th="<?= $block->escapeHtml(__('Product Name')); ?>">
47+
<strong class="product name product-item-name"><?= $block->escapeHtml($item->getName()); ?></strong>
3848
</td>
3949
<?php else: ?>
40-
<td class="col value" data-th="<?= $block->escapeHtml(__('Product Name')) ?>"><?= $block->getValueHtml($_item) ?></td>
50+
<td class="col value" data-th="<?= $block->escapeHtml(__('Product Name')); ?>">
51+
<?= $block->getValueHtml($item); ?>
52+
</td>
4153
<?php endif; ?>
42-
<td class="col sku" data-th="<?= $block->escapeHtml(__('SKU')) ?>"><?= /* @escapeNotVerified */ $block->prepareSku($_item->getSku()) ?></td>
43-
<td class="col price" data-th="<?= $block->escapeHtml(__('Price')) ?>">
44-
<?php if (!$_item->getParentItem()): ?>
45-
<?= $block->getItemPriceHtml() ?>
54+
<td class="col sku" data-th="<?= $block->escapeHtml(__('SKU')); ?>">
55+
<?= /* @noEscape */ $block->prepareSku($item->getSku()); ?>
56+
</td>
57+
<td class="col price" data-th="<?= $block->escapeHtml(__('Price')); ?>">
58+
<?php if (!$item->getParentItem()): ?>
59+
<?= /* @noEscape */ $block->getItemPriceHtml(); ?>
4660
<?php else: ?>
4761
&nbsp;
4862
<?php endif; ?>
4963
</td>
50-
<td class="col qty" data-th="<?= $block->escapeHtml(__('Quantity')) ?>">
64+
<td class="col qty" data-th="<?= $block->escapeHtml(__('Quantity')); ?>">
5165
<?php if (
52-
($_item->getParentItem() && $block->isChildCalculated()) ||
53-
(!$_item->getParentItem() && !$block->isChildCalculated()) || ($_item->getQtyShipped() > 0 && $_item->getParentItem() && $block->isShipmentSeparately())):?>
66+
($item->getParentItem() && $block->isChildCalculated()) ||
67+
(!$item->getParentItem() && !$block->isChildCalculated()) ||
68+
($item->getQtyShipped() > 0 && $item->getParentItem() && $block->isShipmentSeparately())): ?>
5469
<ul class="items-qty">
5570
<?php endif; ?>
56-
<?php if (($_item->getParentItem() && $block->isChildCalculated()) ||
57-
(!$_item->getParentItem() && !$block->isChildCalculated())): ?>
58-
<?php if ($_item->getQtyOrdered() > 0): ?>
71+
<?php if (($item->getParentItem() && $block->isChildCalculated()) ||
72+
(!$item->getParentItem() && !$block->isChildCalculated())): ?>
73+
<?php if ($item->getQtyOrdered() > 0): ?>
5974
<li class="item">
60-
<span class="title"><?= /* @escapeNotVerified */ __('Ordered') ?></span>
61-
<span class="content"><?= /* @escapeNotVerified */ $_item->getQtyOrdered()*1 ?></span>
75+
<span class="title"><?= $block->escapeHtml(__('Ordered')); ?></span>
76+
<span class="content"><?= /* @noEscape */ $item->getQtyOrdered() * 1; ?></span>
6277
</li>
6378
<?php endif; ?>
64-
<?php if ($_item->getQtyShipped() > 0 && !$block->isShipmentSeparately()): ?>
79+
<?php if ($item->getQtyShipped() > 0 && !$block->isShipmentSeparately()): ?>
6580
<li class="item">
66-
<span class="title"><?= /* @escapeNotVerified */ __('Shipped') ?></span>
67-
<span class="content"><?= /* @escapeNotVerified */ $_item->getQtyShipped()*1 ?></span>
81+
<span class="title"><?= $block->escapeHtml(__('Shipped')); ?></span>
82+
<span class="content"><?= /* @noEscape */ $item->getQtyShipped() * 1; ?></span>
6883
</li>
6984
<?php endif; ?>
70-
<?php if ($_item->getQtyCanceled() > 0): ?>
85+
<?php if ($item->getQtyCanceled() > 0): ?>
7186
<li class="item">
72-
<span class="title"><?= /* @escapeNotVerified */ __('Canceled') ?></span>
73-
<span class="content"><?= /* @escapeNotVerified */ $_item->getQtyCanceled()*1 ?></span>
87+
<span class="title"><?= $block->escapeHtml(__('Canceled')); ?></span>
88+
<span class="content"><?= /* @noEscape */ $item->getQtyCanceled() * 1; ?></span>
7489
</li>
7590
<?php endif; ?>
76-
<?php if ($_item->getQtyRefunded() > 0): ?>
91+
<?php if ($item->getQtyRefunded() > 0): ?>
7792
<li class="item">
78-
<span class="title"><?= /* @escapeNotVerified */ __('Refunded') ?></span>
79-
<span class="content"><?= /* @escapeNotVerified */ $_item->getQtyRefunded()*1 ?></span>
93+
<span class="title"><?= $block->escapeHtml(__('Refunded')); ?></span>
94+
<span class="content"><?= /* @noEscape */ $item->getQtyRefunded() * 1; ?></span>
8095
</li>
8196
<?php endif; ?>
82-
<?php elseif ($_item->getQtyShipped() > 0 && $_item->getParentItem() && $block->isShipmentSeparately()): ?>
97+
<?php elseif ($item->getQtyShipped() > 0 && $item->getParentItem() && $block->isShipmentSeparately()): ?>
8398
<li class="item">
84-
<span class="title"><?= /* @escapeNotVerified */ __('Shipped') ?></span>
85-
<span class="content"><?= /* @escapeNotVerified */ $_item->getQtyShipped()*1 ?></span>
99+
<span class="title"><?= $block->escapeHtml(__('Shipped')); ?></span>
100+
<span class="content"><?= /* @noEscape */ $item->getQtyShipped() * 1; ?></span>
86101
</li>
87102
<?php else: ?>
88-
&nbsp;
103+
<span class="content"><?= /* @noEscape */ $parentItem->getQtyOrdered() * 1; ?></span>
89104
<?php endif; ?>
90105
<?php if (
91-
($_item->getParentItem() && $block->isChildCalculated()) ||
92-
(!$_item->getParentItem() && !$block->isChildCalculated()) || ($_item->getQtyShipped() > 0 && $_item->getParentItem() && $block->isShipmentSeparately())):?>
106+
($item->getParentItem() && $block->isChildCalculated()) ||
107+
(!$item->getParentItem() && !$block->isChildCalculated()) ||
108+
($item->getQtyShipped() > 0 && $item->getParentItem() && $block->isShipmentSeparately())):?>
93109
</ul>
94110
<?php endif; ?>
95111
</td>
96112
<td class="col subtotal" data-th="<?= $block->escapeHtml(__('Subtotal')) ?>">
97-
<?php if (!$_item->getParentItem()): ?>
98-
<?= $block->getItemRowTotalHtml() ?>
113+
<?php if (!$item->getParentItem()): ?>
114+
<?= /* @noEscape */ $block->getItemRowTotalHtml(); ?>
99115
<?php else: ?>
100116
&nbsp;
101117
<?php endif; ?>
102118
</td>
103119
</tr>
104120
<?php endforeach; ?>
105121

106-
<?php if ($_showlastRow && (($_options = $block->getItemOptions()) || $block->escapeHtml($_item->getDescription()))): ?>
122+
<?php if ($showLastRow && (($options = $block->getItemOptions()) || $block->escapeHtml($item->getDescription()))): ?>
107123
<tr>
108124
<td class="col options" colspan="5">
109-
<?php if ($_options = $block->getItemOptions()): ?>
125+
<?php if ($options = $block->getItemOptions()): ?>
110126
<dl class="item-options">
111-
<?php foreach ($_options as $_option) : ?>
112-
<dt><?= $block->escapeHtml($_option['label']) ?></dt>
127+
<?php foreach ($options as $option) : ?>
128+
<dt><?= $block->escapeHtml($option['label']) ?></dt>
113129
<?php if (!$block->getPrintStatus()): ?>
114-
<?php $_formatedOptionValue = $block->getFormatedOptionValue($_option) ?>
115-
<dd<?php if (isset($_formatedOptionValue['full_view'])): ?> class="tooltip wrapper"<?php endif; ?>>
116-
<?= /* @escapeNotVerified */ $_formatedOptionValue['value'] ?>
117-
<?php if (isset($_formatedOptionValue['full_view'])): ?>
130+
<?php $formattedOptionValue = $block->getFormatedOptionValue($option) ?>
131+
<dd<?php if (isset($formattedOptionValue['full_view'])): ?>
132+
class="tooltip wrapper"
133+
<?php endif; ?>>
134+
<?= /* @noEscape */ $formattedOptionValue['value'] ?>
135+
<?php if (isset($formattedOptionValue['full_view'])): ?>
118136
<div class="tooltip content">
119137
<dl class="item options">
120-
<dt><?= $block->escapeHtml($_option['label']) ?></dt>
121-
<dd><?= /* @escapeNotVerified */ $_formatedOptionValue['full_view'] ?></dd>
138+
<dt><?= $block->escapeHtml($option['label']); ?></dt>
139+
<dd><?= /* @noEscape */ $formattedOptionValue['full_view']; ?></dd>
122140
</dl>
123141
</div>
124142
<?php endif; ?>
125143
</dd>
126144
<?php else: ?>
127-
<dd><?= $block->escapeHtml((isset($_option['print_value']) ? $_option['print_value'] : $_option['value'])) ?></dd>
145+
<dd><?= $block->escapeHtml((isset($option['print_value']) ?
146+
$option['print_value'] :
147+
$option['value'])); ?>
148+
</dd>
128149
<?php endif; ?>
129150
<?php endforeach; ?>
130151
</dl>
131152
<?php endif; ?>
132-
<?= $block->escapeHtml($_item->getDescription()) ?>
153+
<?= $block->escapeHtml($item->getDescription()); ?>
133154
</td>
134155
</tr>
135156
<?php endif; ?>

app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Validate.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public function execute()
100100
$attributeCode
101101
);
102102

103-
if ($attribute->getId() && !$attributeId) {
103+
if ($attribute->getId() && !$attributeId || $attributeCode === 'product_type') {
104104
$message = strlen($this->getRequest()->getParam('attribute_code'))
105105
? __('An attribute with this code already exists.')
106106
: __('An attribute with the same code (%1) already exists.', $attributeCode);

app/code/Magento/Catalog/Model/Indexer/Product/Flat/TableBuilder.php

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,6 @@ class TableBuilder
3434
*/
3535
private $tableBuilderFactory;
3636

37-
/**
38-
* Check whether builder was executed
39-
*
40-
* @var bool
41-
*/
42-
protected $_isExecuted = false;
43-
4437
/**
4538
* Constructor
4639
*
@@ -70,9 +63,6 @@ public function __construct(
7063
*/
7164
public function build($storeId, $changedIds, $valueFieldSuffix)
7265
{
73-
if ($this->_isExecuted) {
74-
return;
75-
}
7666
$entityTableName = $this->_productIndexerHelper->getTable('catalog_product_entity');
7767
$attributes = $this->_productIndexerHelper->getAttributes();
7868
$eavAttributes = $this->_productIndexerHelper->getTablesStructure($attributes);
@@ -117,7 +107,6 @@ public function build($storeId, $changedIds, $valueFieldSuffix)
117107
//Fill temporary tables with attributes grouped by it type
118108
$this->_fillTemporaryTable($tableName, $columns, $changedIds, $valueFieldSuffix, $storeId);
119109
}
120-
$this->_isExecuted = true;
121110
}
122111

123112
/**

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -714,7 +714,7 @@ public function getIdBySku($sku)
714714
public function getCategoryId()
715715
{
716716
$category = $this->_registry->registry('current_category');
717-
if ($category) {
717+
if ($category && in_array($category->getId(), $this->getCategoryIds())) {
718718
return $category->getId();
719719
}
720720
return false;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ protected function duplicate($product)
308308

309309
$this->resourceModel->duplicate(
310310
$this->getAttribute()->getAttributeId(),
311-
isset($mediaGalleryData['duplicate']) ? $mediaGalleryData['duplicate'] : [],
311+
$mediaGalleryData['duplicate'] ?? [],
312312
$product->getOriginalLinkId(),
313313
$product->getData($this->metadata->getLinkField())
314314
);
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Catalog\Model\ResourceModel\Category;
9+
10+
use Magento\Catalog\Api\CategoryListInterface;
11+
use Magento\Framework\Api\SearchCriteriaBuilder;
12+
13+
/**
14+
* Check if Image is currently used in any category as Category Image.
15+
*/
16+
class RedundantCategoryImageChecker
17+
{
18+
/**
19+
* @var SearchCriteriaBuilder
20+
*/
21+
private $searchCriteriaBuilder;
22+
23+
/**
24+
* @var CategoryListInterface
25+
*/
26+
private $categoryList;
27+
28+
public function __construct(
29+
CategoryListInterface $categoryList,
30+
SearchCriteriaBuilder $searchCriteriaBuilder
31+
) {
32+
$this->categoryList = $categoryList;
33+
$this->searchCriteriaBuilder = $searchCriteriaBuilder;
34+
}
35+
36+
/**
37+
* Checks if Image is currently used in any category as Category Image.
38+
*
39+
* Returns true if not.
40+
*
41+
* @param string $imageName
42+
* @return bool
43+
*/
44+
public function execute(string $imageName): bool
45+
{
46+
/** @var SearchCriteriaBuilder $searchCriteriaBuilder */
47+
$searchCriteria = $this->searchCriteriaBuilder->addFilter('image', $imageName)->create();
48+
$categories = $this->categoryList->getList($searchCriteria)->getItems();
49+
50+
return empty($categories);
51+
}
52+
}

0 commit comments

Comments
 (0)