Skip to content

Commit 5816123

Browse files
merge magento/2.3-develop into magento-epam/EPAM-PR-69
2 parents 9b83b6e + 0a92770 commit 5816123

File tree

27 files changed

+739
-25
lines changed

27 files changed

+739
-25
lines changed
Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,48 @@
1-
This component is designed to provide response for client who launched the bulk operation as soon as possible and postpone handling of operations moving them to background handler.
1+
# Magento_AsynchronousOperations module
2+
3+
This component is designed to provide a response for a client that launched the bulk operation as soon as possible and postpone handling of operations moving them to the background handler.
4+
5+
## Installation details
6+
7+
The Magento_AsynchronousOperations module creates the following tables in the database:
8+
9+
- `magento_bulk`
10+
- `magento_operation`
11+
- `magento_acknowledged_bulk`
12+
13+
Before disabling or uninstalling this module, note that the following modules depends on this module:
14+
15+
- Magento_WebapiAsync
16+
17+
For information about module installation in Magento 2, see [Enable or disable modules](https://devdocs.magento.com/guides/v2.3/install-gde/install/cli/install-cli-subcommands-enable.html).
18+
19+
## Extensibility
20+
21+
Extension developers can interact with the Magento_AsynchronousOperations module. For more information about the Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.3/extension-dev-guide/plugins.html).
22+
23+
[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.3/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_AsynchronousOperations module.
24+
25+
### Layouts
26+
27+
This module introduces the following layouts and layout handles in the `view/adminhtml/layout` directory:
28+
29+
- `bulk_bulk_details`
30+
- `bulk_bulk_details_modal`
31+
- `bulk_index_index`
32+
33+
For more information about layouts in Magento 2, see the [Layout documentation](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/layouts/layout-overview.html).
34+
35+
### UI components
36+
37+
You can extend Magento_AsynchronousOperations module using the following configuration files in the `view/adminhtml/ui_component/` directory:
38+
39+
- `bulk_details_form`
40+
- `bulk_details_form_modal`
41+
- `bulk_listing`
42+
- `failed_operation_listing`
43+
- `failed_operation_modal_listing`
44+
- `notification_area`
45+
- `retriable_operation_listing`
46+
- `retriable_operation_modal_listing`
47+
48+
For information about UI components in Magento 2, see [Overview of UI components](https://devdocs.magento.com/guides/v2.3/ui_comp_guide/bk-ui_comps.html).
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,29 @@
1+
# Magento_AuthorizenetAcceptjs module
2+
13
The Magento_AuthorizenetAcceptjs module implements the integration with the Authorize.Net payment gateway and makes the latter available as a payment method in Magento.
4+
5+
## Installation details
6+
7+
Before disabling or uninstalling this module, note that the `Magento_AuthorizenetCardinal` module depends on this module.
8+
9+
For information about module installation in Magento 2, see [Enable or disable modules](https://devdocs.magento.com/guides/v2.3/install-gde/install/cli/install-cli-subcommands-enable.html).
10+
11+
## Structure
12+
13+
`Gateway/` - the directory that contains payment gateway command interfaces and service classes.
14+
15+
For information about typical file structure of a module in Magento 2, see [Module file structure](http://devdocs.magento.com/guides/v2.3/extension-dev-guide/build/module-file-structure.html#module-file-structure).
16+
17+
## Extensibility
18+
19+
Extension developers can interact with the Magento_AuthorizenetAcceptjs module. For more information about the Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.3/extension-dev-guide/plugins.html).
20+
21+
[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.3/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_AuthorizenetAcceptjs module.
22+
23+
### Events
24+
25+
This module observes the following events:
26+
27+
- `payment_method_assign_data_authorizenet_acceptjs` event in the `Magento\AuthorizenetAcceptjs\Observer\DataAssignObserver` file.
28+
29+
For information about an event in Magento 2, see [Events and observers](https://devdocs.magento.com/guides/v2.3/extension-dev-guide/events-and-observers.html#events).
Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,23 @@
1-
The AuthorizenetCardinal module provides a possibility to enable 3-D Secure 2.0 support for AuthorizenetAcceptjs payment integration.
1+
# Magento_AuthorizenetCardinal module
2+
3+
Use the Magento_AuthorizenetCardinal module to enable 3D Secure 2.0 support for AuthorizenetAcceptjs payment integrations.
4+
5+
## Structure
6+
7+
`Gateway/` - the directory that contains payment gateway command interfaces and service classes.
8+
9+
For information about typical file structure of a module in Magento 2, see [Module file structure](https://devdocs.magento.com/guides/v2.3/extension-dev-guide/build/module-file-structure.html#module-file-structure).
10+
11+
## Extensibility
12+
13+
Extension developers can interact with the Magento_AuthorizenetCardinal module. For more information about the Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.3/extension-dev-guide/plugins.html).
14+
15+
[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.3/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_AuthorizenetCardinal module.
16+
17+
### Events
18+
19+
This module observes the following events:
20+
21+
- `payment_method_assign_data_authorizenet_acceptjs` event in the `Magento\AuthorizenetCardinal\Observer\DataAssignObserver` file.
22+
23+
For information about an event in Magento 2, see [Events and observers](https://devdocs.magento.com/guides/v2.3/extension-dev-guide/events-and-observers.html#events).
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1-
# AuthorizenetGraphQl
1+
# Magento_AuthorizenetGraphQl module
22

3-
**AuthorizenetGraphQl** defines the data types needed to pass payment information data from the client to Magento.
3+
The Magento_AuthorizenetGraphQl module defines the data types needed to pass payment information data from the client to Magento.
4+
5+
## Extensibility
6+
7+
Extension developers can interact with the Magento_AuthorizenetGraphQl module. For more information about the Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.3/extension-dev-guide/plugins.html).
8+
9+
[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.3/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_AuthorizenetGraphQl module.

app/code/Magento/Catalog/Model/ResourceModel/AbstractResource.php

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
/**
1616
* Catalog entity abstract model
1717
*
18+
* phpcs:disable Magento2.Classes.AbstractApi
1819
* @api
1920
*
2021
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
@@ -468,7 +469,7 @@ protected function _getOrigObject($object)
468469
*
469470
* @param AbstractAttribute $attribute
470471
* @param mixed $value New value of the attribute.
471-
* @param array &$origData
472+
* @param array $origData
472473
* @return bool
473474
*/
474475
protected function _canUpdateAttribute(AbstractAttribute $attribute, $value, array &$origData)
@@ -560,15 +561,19 @@ public function getAttributeRawValue($entityId, $attribute, $store)
560561
$store = (int) $store;
561562
if ($typedAttributes) {
562563
foreach ($typedAttributes as $table => $_attributes) {
564+
$defaultJoinCondition = [
565+
$connection->quoteInto('default_value.attribute_id IN (?)', array_keys($_attributes)),
566+
"default_value.{$this->getLinkField()} = e.{$this->getLinkField()}",
567+
'default_value.store_id = 0',
568+
];
569+
563570
$select = $connection->select()
564-
->from(['default_value' => $table], ['attribute_id'])
565-
->join(
566-
['e' => $this->getTable($this->getEntityTable())],
567-
'e.' . $this->getLinkField() . ' = ' . 'default_value.' . $this->getLinkField(),
568-
''
569-
)->where('default_value.attribute_id IN (?)', array_keys($_attributes))
570-
->where("e.entity_id = :entity_id")
571-
->where('default_value.store_id = ?', 0);
571+
->from(['e' => $this->getTable($this->getEntityTable())], [])
572+
->joinLeft(
573+
['default_value' => $table],
574+
implode(' AND ', $defaultJoinCondition),
575+
[]
576+
)->where("e.entity_id = :entity_id");
572577

573578
$bind = ['entity_id' => $entityId];
574579

@@ -578,6 +583,11 @@ public function getAttributeRawValue($entityId, $attribute, $store)
578583
'default_value.value',
579584
'store_value.value'
580585
);
586+
$attributeIdExpr = $connection->getCheckSql(
587+
'store_value.attribute_id IS NULL',
588+
'default_value.attribute_id',
589+
'store_value.attribute_id'
590+
);
581591
$joinCondition = [
582592
$connection->quoteInto('store_value.attribute_id IN (?)', array_keys($_attributes)),
583593
"store_value.{$this->getLinkField()} = e.{$this->getLinkField()}",
@@ -587,23 +597,28 @@ public function getAttributeRawValue($entityId, $attribute, $store)
587597
$select->joinLeft(
588598
['store_value' => $table],
589599
implode(' AND ', $joinCondition),
590-
['attr_value' => $valueExpr]
600+
['attribute_id' => $attributeIdExpr, 'attr_value' => $valueExpr]
591601
);
592602

593603
$bind['store_id'] = $store;
594604
} else {
595-
$select->columns(['attr_value' => 'value'], 'default_value');
605+
$select->columns(
606+
['attribute_id' => 'attribute_id', 'attr_value' => 'value'],
607+
'default_value'
608+
);
596609
}
597610

598611
$result = $connection->fetchPairs($select, $bind);
599612
foreach ($result as $attrId => $value) {
600-
$attrCode = $typedAttributes[$table][$attrId];
601-
$attributesData[$attrCode] = $value;
613+
if ($attrId !== '') {
614+
$attrCode = $typedAttributes[$table][$attrId];
615+
$attributesData[$attrCode] = $value;
616+
}
602617
}
603618
}
604619
}
605620

606-
if (is_array($attributesData) && sizeof($attributesData) == 1) {
621+
if (is_array($attributesData) && count($attributesData) == 1) {
607622
$attributesData = array_shift($attributesData);
608623
}
609624

app/code/Magento/Checkout/Model/Session.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
* @api
1818
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
1919
* @SuppressWarnings(PHPMD.CookieAndSessionMisuse)
20+
* @SuppressWarnings(PHPMD.TooManyFields)
2021
*/
2122
class Session extends \Magento\Framework\Session\SessionManager
2223
{
@@ -46,6 +47,15 @@ class Session extends \Magento\Framework\Session\SessionManager
4647
*/
4748
protected $_loadInactive = false;
4849

50+
/**
51+
* A flag to track when the quote is being loaded and attached to the session object.
52+
*
53+
* Used in trigger_recollect infinite loop detection.
54+
*
55+
* @var bool
56+
*/
57+
private $isLoading = false;
58+
4959
/**
5060
* Loaded order instance
5161
*
@@ -227,6 +237,10 @@ public function getQuote()
227237
$this->_eventManager->dispatch('custom_quote_process', ['checkout_session' => $this]);
228238

229239
if ($this->_quote === null) {
240+
if ($this->isLoading) {
241+
throw new \LogicException("Infinite loop detected, review the trace for the looping path");
242+
}
243+
$this->isLoading = true;
230244
$quote = $this->quoteFactory->create();
231245
if ($this->getQuoteId()) {
232246
try {
@@ -289,6 +303,7 @@ public function getQuote()
289303

290304
$quote->setStore($this->_storeManager->getStore());
291305
$this->_quote = $quote;
306+
$this->isLoading = false;
292307
}
293308

294309
if (!$this->isQuoteMasked() && !$this->_customerSession->isLoggedIn() && $this->getQuoteId()) {

app/code/Magento/Checkout/view/frontend/web/js/view/shipping-information.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,16 @@ define([
2828
* @return {String}
2929
*/
3030
getShippingMethodTitle: function () {
31-
var shippingMethod = quote.shippingMethod();
31+
var shippingMethod = quote.shippingMethod(),
32+
shippingMethodTitle = '';
3233

33-
return shippingMethod ? shippingMethod['carrier_title'] + ' - ' + shippingMethod['method_title'] : '';
34+
if (typeof shippingMethod['method_title'] !== 'undefined') {
35+
shippingMethodTitle = ' - ' + shippingMethod['method_title'];
36+
}
37+
38+
return shippingMethod ?
39+
shippingMethod['carrier_title'] + shippingMethodTitle :
40+
shippingMethod['carrier_title'];
3441
},
3542

3643
/**

app/code/Magento/Newsletter/i18n/en_US.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,3 +152,4 @@ Store,Store
152152
"Store View","Store View"
153153
"Newsletter Subscriptions","Newsletter Subscriptions"
154154
"We have updated your subscription.","We have updated your subscription."
155+
"Are you sure you want to delete the selected subscriber(s)?","Are you sure you want to delete the selected subscriber(s)?"

app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_subscriber_block.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
<item name="delete" xsi:type="array">
3030
<item name="label" xsi:type="string" translate="true">Delete</item>
3131
<item name="url" xsi:type="string">*/*/massDelete</item>
32+
<item name="confirm" xsi:type="string" translate="true">Are you sure you want to delete the selected subscriber(s)?</item>
3233
</item>
3334
</argument>
3435
</arguments>

app/code/Magento/SalesRule/view/adminhtml/templates/promo/salesrulejs.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ function generateCouponCodes(idPrefix, generateUrl, grid) {
6464
try {
6565
response = JSON.parse(transport.responseText);
6666
} catch (e) {
67-
console.warn('An error occured while parsing response');
67+
console.warn('An error occurred while parsing response');
6868
}
6969
}
7070
if (couponCodesGrid) {

0 commit comments

Comments
 (0)