Skip to content

Commit 1807f1e

Browse files
merge magento/2.3-develop into magento-chaika/Chaika-PR-2019-08-27
2 parents 058988b + ce20a40 commit 1807f1e

File tree

73 files changed

+1669
-103
lines changed

Some content is hidden

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

73 files changed

+1669
-103
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/Catalog/Test/Mftf/Test/AdminSortingByWebsitesTest.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040
<actionGroup ref="AdminDeleteWebsiteActionGroup" stepKey="deleteTestWebsite">
4141
<argument name="websiteName" value="{{customWebsite.name}}"/>
4242
</actionGroup>
43+
<actionGroup ref="GoToProductCatalogPage" stepKey="goToProductCatalogPage"/>
44+
<actionGroup ref="resetProductGridToDefaultView" stepKey="resetProductGridColumnsInitial"/>
4345
<actionGroup ref="ResetWebUrlOptions" stepKey="resetUrlOption"/>
4446
<magentoCLI command="indexer:reindex" stepKey="reindex"/>
4547
<magentoCLI command="cache:flush" stepKey="flushCache"/>

app/code/Magento/Catalog/Test/Mftf/Test/StorefrontPurchaseProductWithCustomOptionsWithLongValuesTitle.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
<description value="Admin should be able to see the full title of the selected custom option value in the order"/>
1818
<severity value="MAJOR"/>
1919
<testCaseId value="MC-3043"/>
20+
<skip>
21+
<issueId value="MQE-1128"/>
22+
</skip>
2023
</annotations>
2124
<before>
2225
<!--Create Simple Product with Custom Options-->

app/code/Magento/CatalogSearch/Test/Mftf/Section/AdminCatalogSearchTermIndexSection.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,6 @@
2121
<element name="emptyRecords" type="text" selector="//tr[@class='data-grid-tr-no-data even']/td[@class='empty-text']"/>
2222
<element name="gridRow" type="text" selector="//tr[@data-role='row']"/>
2323
<element name="numberOfSearchTermResults" type="text" selector="//tr[@data-role='row']/td[@data-column='num_results']"/>
24+
<element name="selectMassActionCheckbox" type="select" selector="//select[@id='search_term_grid_massaction-mass-select']"/>
2425
</section>
2526
</sections>

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
/**

0 commit comments

Comments
 (0)