Skip to content

Commit 471f4d3

Browse files
Merge pull request #7805 from magento-amigos/2.4-develop-prs
[Amigos] Community Contributions - 2.4-develop
2 parents b436194 + 5c2ba53 commit 471f4d3

File tree

12 files changed

+140
-108
lines changed

12 files changed

+140
-108
lines changed

app/code/Magento/Catalog/Model/Indexer/Product/Price/AbstractAction.php

+5
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ public function __construct(
164164
*/
165165
abstract public function execute($ids);
166166

167+
// phpcs:disable
167168
/**
168169
* Synchronize data between index storage and original storage
169170
*
@@ -196,6 +197,7 @@ protected function _syncData(array $processIds = [])
196197
return $this;
197198
}
198199

200+
// phpcs:enable
199201
/**
200202
* Prepare website current dates table
201203
*
@@ -456,6 +458,7 @@ private function deleteOutdatedData(array $entityIds, string $temporaryTable, st
456458
*/
457459
private function deleteIndexData(array $entityIds)
458460
{
461+
$entityIds = array_unique(array_map('intval', $entityIds));
459462
foreach ($this->dimensionCollectionFactory->create() as $dimensions) {
460463
$select = $this->getConnection()->select()->from(
461464
['index_price' => $this->tableMaintainer->getMainTableByDimensions($dimensions)],
@@ -466,6 +469,7 @@ private function deleteIndexData(array $entityIds)
466469
}
467470
}
468471

472+
// phpcs:disable
469473
/**
470474
* Copy relations product index from primary index to temporary index table by parent entity
471475
*
@@ -516,6 +520,7 @@ protected function _copyRelationIndexData($parentIds, $excludeIds = null)
516520
return $this;
517521
}
518522

523+
// phpcs:enable
519524
/**
520525
* Retrieve index table by dimension that will be used for write operations.
521526
*

app/code/Magento/Catalog/view/adminhtml/ui_component/product_listing.xml

+10
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,16 @@
192192
<label translate="true">Websites</label>
193193
</settings>
194194
</column>
195+
<column name="updated_at"
196+
class="Magento\Ui\Component\Listing\Columns\Date"
197+
component="Magento_Ui/js/grid/columns/date"
198+
sortOrder="110">
199+
<settings>
200+
<filter>dateRange</filter>
201+
<dataType>date</dataType>
202+
<label translate="true">Last Updated At</label>
203+
</settings>
204+
</column>
195205
<actionsColumn name="actions" class="Magento\Catalog\Ui\Component\Listing\Columns\ProductActions" sortOrder="200">
196206
<settings>
197207
<indexField>entity_id</indexField>

app/code/Magento/ConfigurableProduct/view/adminhtml/web/js/components/dynamic-rows-configurable.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ define([
412412
product = {
413413
'id': row.productId,
414414
'product_link': row.productUrl,
415-
'name': $('<i></i>').text(row.name).html(),
415+
'name': row.name,
416416
'sku': row.sku,
417417
'status': row.status,
418418
'price': row.price,

app/code/Magento/SalesRule/Model/ResourceModel/Rule/Collection.php

+17
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,20 @@ class Collection extends \Magento\Rule\Model\ResourceModel\Rule\Collection\Abstr
2929
*/
3030
protected $_associatedEntitiesMap;
3131

32+
/**
33+
* SaleRule Event prefix
34+
*
35+
* @var string
36+
*/
37+
protected $_eventPrefix = 'salesrule_rule_collection';
38+
39+
/**
40+
* SaleRule Event object
41+
*
42+
* @var string
43+
*/
44+
protected $_eventObject = 'rule_collection';
45+
3246
/**
3347
* @var \Magento\SalesRule\Model\ResourceModel\Rule\DateApplier
3448
* @since 100.1.0
@@ -427,6 +441,7 @@ public function addCustomerGroupFilter($customerGroupId)
427441
return $this;
428442
}
429443

444+
// phpcs:disable
430445
/**
431446
* Getter for _associatedEntitiesMap property
432447
*
@@ -437,6 +452,7 @@ private function getAssociatedEntitiesMap()
437452
{
438453
if (!$this->_associatedEntitiesMap) {
439454
$this->_associatedEntitiesMap = \Magento\Framework\App\ObjectManager::getInstance()
455+
// phpstan:ignore "Class Magento\SalesRule\Model\ResourceModel\Rule\AssociatedEntityMap not found."
440456
->get(\Magento\SalesRule\Model\ResourceModel\Rule\AssociatedEntityMap::class)
441457
->getData();
442458
}
@@ -458,4 +474,5 @@ private function getDateApplier()
458474

459475
return $this->dateApplier;
460476
}
477+
// phpcs:enable
461478
}

lib/internal/Magento/Framework/Amqp/Config.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
*/
66
namespace Magento\Framework\Amqp;
77

8+
use Magento\Framework\Amqp\Connection\Factory as ConnectionFactory;
89
use Magento\Framework\Amqp\Connection\FactoryOptions;
910
use Magento\Framework\App\DeploymentConfig;
1011
use Magento\Framework\App\ObjectManager;
11-
use PhpAmqpLib\Connection\AbstractConnection;
1212
use PhpAmqpLib\Channel\AMQPChannel;
13-
use Magento\Framework\Amqp\Connection\Factory as ConnectionFactory;
13+
use PhpAmqpLib\Connection\AbstractConnection;
1414

1515
/**
1616
* Reads the Amqp config in the deployed environment configuration
@@ -140,7 +140,7 @@ public function getValue($key)
140140
*/
141141
private function createConnection(): AbstractConnection
142142
{
143-
$sslEnabled = $this->getValue(self::SSL) && trim($this->getValue(self::SSL)) === 'true';
143+
$sslEnabled = trim($this->getValue(self::SSL) ?? '') === 'true';
144144
$options = new FactoryOptions();
145145
$options->setHost($this->getValue(self::HOST));
146146
$options->setPort($this->getValue(self::PORT));

lib/web/jquery/bootstrap/collapse.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ define([
201201
this._element.style[dimension] = '';
202202

203203
EventHandler.trigger(this._element, EVENT_SHOWN);
204-
}
204+
};
205205

206206
const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
207207
const scrollSize = `scroll${capitalizedDimension}`;
@@ -246,7 +246,7 @@ define([
246246
this._element.classList.remove(CLASS_NAME_COLLAPSING);
247247
this._element.classList.add(CLASS_NAME_COLLAPSE);
248248
EventHandler.trigger(this._element, EVENT_HIDDEN);
249-
}
249+
};
250250

251251
this._element.style[dimension] = '';
252252

lib/web/jquery/bootstrap/dom/data.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ define([], function() {
1414
* ------------------------------------------------------------------------
1515
*/
1616

17-
const elementMap = new Map()
17+
const elementMap = new Map();
1818

1919
return {
2020
set: function (element, key, instance) {
2121
if (!elementMap.has(element)) {
2222
elementMap.set(element, new Map())
2323
}
2424

25-
const instanceMap = elementMap.get(element)
25+
const instanceMap = elementMap.get(element);
2626

2727
// make it clear we only want one instance per element
2828
// can be removed later when multiple key/instances are fine to be used
@@ -48,7 +48,7 @@ define([], function() {
4848
return
4949
}
5050

51-
const instanceMap = elementMap.get(element)
51+
const instanceMap = elementMap.get(element);
5252

5353
instanceMap.delete(key)
5454

lib/web/jquery/bootstrap/dom/event-handler.js

+42-42
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,16 @@ define([
1818
* ------------------------------------------------------------------------
1919
*/
2020

21-
const namespaceRegex = /[^.]*(?=\..*)\.|.*/
22-
const stripNameRegex = /\..*/
23-
const stripUidRegex = /::\d+$/
24-
const eventRegistry = {} // Events storage
25-
let uidEvent = 1
21+
const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
22+
const stripNameRegex = /\..*/;
23+
const stripUidRegex = /::\d+$/;
24+
const eventRegistry = {}; // Events storage
25+
let uidEvent = 1;
2626
const customEvents = {
2727
mouseenter: 'mouseover',
2828
mouseleave: 'mouseout'
29-
}
30-
const customEventsRegex = /^(mouseenter|mouseleave)/i
29+
};
30+
const customEventsRegex = /^(mouseenter|mouseleave)/i;
3131
const nativeEvents = new Set([
3232
'click',
3333
'dblclick',
@@ -75,7 +75,7 @@ define([
7575
'error',
7676
'abort',
7777
'scroll'
78-
])
78+
]);
7979

8080
/**
8181
* ------------------------------------------------------------------------
@@ -88,7 +88,7 @@ define([
8888
}
8989

9090
function getEvent(element) {
91-
const uid = getUidEvent(element)
91+
const uid = getUidEvent(element);
9292

9393
element.uidEvent = uid
9494
eventRegistry[uid] = eventRegistry[uid] || {}
@@ -110,7 +110,7 @@ define([
110110

111111
function bootstrapDelegationHandler(element, selector, fn) {
112112
return function handler(event) {
113-
const domElements = element.querySelectorAll(selector)
113+
const domElements = element.querySelectorAll(selector);
114114

115115
for (let {target} = event; target && target !== this; target = target.parentNode) {
116116
for (let i = domElements.length; i--;) {
@@ -132,10 +132,10 @@ define([
132132
}
133133

134134
function findHandler(events, handler, delegationSelector = null) {
135-
const uidEventList = Object.keys(events)
135+
const uidEventList = Object.keys(events);
136136

137137
for (let i = 0, len = uidEventList.length; i < len; i++) {
138-
const event = events[uidEventList[i]]
138+
const event = events[uidEventList[i]];
139139

140140
if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {
141141
return event
@@ -146,11 +146,11 @@ define([
146146
}
147147

148148
function normalizeParams(originalTypeEvent, handler, delegationFn) {
149-
const delegation = typeof handler === 'string'
150-
const originalHandler = delegation ? delegationFn : handler
149+
const delegation = typeof handler === 'string';
150+
const originalHandler = delegation ? delegationFn : handler;
151151

152-
let typeEvent = getTypeEvent(originalTypeEvent)
153-
const isNative = nativeEvents.has(typeEvent)
152+
let typeEvent = getTypeEvent(originalTypeEvent);
153+
const isNative = nativeEvents.has(typeEvent);
154154

155155
if (!isNative) {
156156
typeEvent = originalTypeEvent
@@ -178,7 +178,7 @@ define([
178178
return fn.call(this, event)
179179
}
180180
}
181-
}
181+
};
182182

183183
if (delegationFn) {
184184
delegationFn = wrapFn(delegationFn)
@@ -187,21 +187,21 @@ define([
187187
}
188188
}
189189

190-
const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)
191-
const events = getEvent(element)
192-
const handlers = events[typeEvent] || (events[typeEvent] = {})
193-
const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)
190+
const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
191+
const events = getEvent(element);
192+
const handlers = events[typeEvent] || (events[typeEvent] = {});
193+
const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);
194194

195195
if (previousFn) {
196196
previousFn.oneOff = previousFn.oneOff && oneOff
197197

198198
return
199199
}
200200

201-
const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))
201+
const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));
202202
const fn = delegation ?
203203
bootstrapDelegationHandler(element, handler, delegationFn) :
204-
bootstrapHandler(element, handler)
204+
bootstrapHandler(element, handler);
205205

206206
fn.delegationSelector = delegation ? handler : null
207207
fn.originalHandler = originalHandler
@@ -213,7 +213,7 @@ define([
213213
}
214214

215215
function removeHandler(element, events, typeEvent, handler, delegationSelector) {
216-
const fn = findHandler(events[typeEvent], handler, delegationSelector)
216+
const fn = findHandler(events[typeEvent], handler, delegationSelector);
217217

218218
if (!fn) {
219219
return
@@ -224,11 +224,11 @@ define([
224224
}
225225

226226
function removeNamespacedHandlers(element, events, typeEvent, namespace) {
227-
const storeElementEvent = events[typeEvent] || {}
227+
const storeElementEvent = events[typeEvent] || {};
228228

229229
Object.keys(storeElementEvent).forEach(handlerKey => {
230230
if (handlerKey.includes(namespace)) {
231-
const event = storeElementEvent[handlerKey]
231+
const event = storeElementEvent[handlerKey];
232232

233233
removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)
234234
}
@@ -255,10 +255,10 @@ define([
255255
return
256256
}
257257

258-
const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)
259-
const inNamespace = typeEvent !== originalTypeEvent
260-
const events = getEvent(element)
261-
const isNamespace = originalTypeEvent.startsWith('.')
258+
const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
259+
const inNamespace = typeEvent !== originalTypeEvent;
260+
const events = getEvent(element);
261+
const isNamespace = originalTypeEvent.startsWith('.');
262262

263263
if (typeof originalHandler !== 'undefined') {
264264
// Simplest case: handler is passed, remove that listener ONLY.
@@ -276,12 +276,12 @@ define([
276276
})
277277
}
278278

279-
const storeElementEvent = events[typeEvent] || {}
279+
const storeElementEvent = events[typeEvent] || {};
280280
Object.keys(storeElementEvent).forEach(keyHandlers => {
281-
const handlerKey = keyHandlers.replace(stripUidRegex, '')
281+
const handlerKey = keyHandlers.replace(stripUidRegex, '');
282282

283283
if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
284-
const event = storeElementEvent[keyHandlers]
284+
const event = storeElementEvent[keyHandlers];
285285

286286
removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)
287287
}
@@ -293,16 +293,16 @@ define([
293293
return null
294294
}
295295

296-
const $ = getjQuery()
297-
const typeEvent = getTypeEvent(event)
298-
const inNamespace = event !== typeEvent
299-
const isNative = nativeEvents.has(typeEvent)
296+
const $ = getjQuery();
297+
const typeEvent = getTypeEvent(event);
298+
const inNamespace = event !== typeEvent;
299+
const isNative = nativeEvents.has(typeEvent);
300300

301-
let jQueryEvent
302-
let bubbles = true
303-
let nativeDispatch = true
304-
let defaultPrevented = false
305-
let evt = null
301+
let jQueryEvent;
302+
let bubbles = true;
303+
let nativeDispatch = true;
304+
let defaultPrevented = false;
305+
let evt = null;
306306

307307
if (inNamespace && $) {
308308
jQueryEvent = $.Event(event, args)

lib/web/jquery/bootstrap/dom/manipulator.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,12 @@ define([], function() {
4646
return {}
4747
}
4848

49-
const attributes = {}
49+
const attributes = {};
5050

5151
Object.keys(element.dataset)
5252
.filter(key => key.startsWith('bs'))
5353
.forEach(key => {
54-
let pureKey = key.replace(/^bs/, '')
54+
let pureKey = key.replace(/^bs/, '');
5555
pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)
5656
attributes[pureKey] = normalizeData(element.dataset[key])
5757
})
@@ -64,7 +64,7 @@ define([], function() {
6464
},
6565

6666
offset: function(element) {
67-
const rect = element.getBoundingClientRect()
67+
const rect = element.getBoundingClientRect();
6868

6969
return {
7070
top: rect.top + window.pageYOffset,

0 commit comments

Comments
 (0)