Skip to content
This repository was archived by the owner on Apr 29, 2019. It is now read-only.

Commit ad4fd4f

Browse files
author
Oleksandr Iegorov
committed
Merge branch '2.3-develop' of github.com:magento/magento2ce into PR-2012
2 parents 36c499f + c4fb1ee commit ad4fd4f

File tree

149 files changed

+5486
-365
lines changed

Some content is hidden

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

149 files changed

+5486
-365
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,6 @@ script:
6464

6565
# The scripts for grunt/phpunit type tests
6666
- if [ $TEST_SUITE == "functional" ]; then dev/tests/functional/vendor/phpunit/phpunit/phpunit -c dev/tests/$TEST_SUITE $TEST_FILTER; fi
67-
- if [ $TEST_SUITE != "functional" ] && [ $TEST_SUITE != "js"] && [ $TEST_SUITE != "graphql-api-functional" ]; then phpunit -c dev/tests/$TEST_SUITE $TEST_FILTER; fi
67+
- if [ $TEST_SUITE != "functional" ] && [ $TEST_SUITE != "js" ] && [ $TEST_SUITE != "graphql-api-functional" ]; then phpunit -c dev/tests/$TEST_SUITE $TEST_FILTER; fi
6868
- if [ $TEST_SUITE == "js" ]; then grunt $GRUNT_COMMAND; fi
6969
- if [ $TEST_SUITE == "graphql-api-functional" ]; then phpunit -c dev/tests/api-functional; fi

app/code/Magento/Analytics/Model/Cryptographer.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,12 @@ private function getInitializationVector()
129129
*/
130130
private function validateCipherMethod($cipherMethod)
131131
{
132-
$methods = openssl_get_cipher_methods();
132+
$methods = array_map(
133+
'strtolower',
134+
openssl_get_cipher_methods()
135+
);
136+
$cipherMethod = strtolower($cipherMethod);
137+
133138
return (false !== array_search($cipherMethod, $methods));
134139
}
135140
}

app/code/Magento/Braintree/Test/Mftf/ActionGroup/AdminOrderBraintreeFillActionGroup.xml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,26 @@
1111
<actionGroup name="AdminOrderBraintreeFillActionGroup">
1212
<!--Select Braintree Payment method on Admin Order Create Page-->
1313
<click stepKey="chooseBraintree" selector="{{NewOrderSection.creditCardBraintree}}"/>
14-
<waitForPageLoad stepKey="waitForBraintreeConfigs" time="5"/>
14+
<waitForPageLoad stepKey="waitForBraintreeConfigs"/>
1515
<click stepKey="openCardTypes" selector="{{NewOrderSection.openCardTypes}}"/>
16-
<waitForPageLoad stepKey="waitForCardTypes" time="3"/>
16+
<waitForPageLoad stepKey="waitForCardTypes"/>
1717
<click stepKey="chooseCardType" selector="{{NewOrderSection.masterCard}}"/>
18-
<waitForPageLoad stepKey="waitForCardSelected" time="3"/>
18+
<waitForPageLoad stepKey="waitForCardSelected"/>
1919

2020
<!--Choose Master Card from drop-down list-->
2121
<switchToIFrame stepKey="switchToCardNumber" selector="{{NewOrderSection.cardFrame}}"/>
2222
<fillField stepKey="fillCardNumber" selector="{{NewOrderSection.creditCardNumber}}" userInput="{{PaymentAndShippingInfo.cardNumber}}"/>
23-
<waitForPageLoad stepKey="waitForFillCardNumber" time="1"/>
23+
<waitForPageLoad stepKey="waitForFillCardNumber"/>
2424
<switchToIFrame stepKey="switchBackFromCard"/>
2525

2626
<!--Fill expire date-->
2727
<switchToIFrame stepKey="switchToExpirationMonth" selector="{{NewOrderSection.monthFrame}}"/>
2828
<fillField stepKey="fillMonth" selector="{{NewOrderSection.expirationMonth}}" userInput="{{PaymentAndShippingInfo.month}}"/>
29-
<waitForPageLoad stepKey="waitForFillMonth" time="1"/>
29+
<waitForPageLoad stepKey="waitForFillMonth"/>
3030
<switchToIFrame stepKey="switchBackFromMonth"/>
3131
<switchToIFrame stepKey="switchToExpirationYear" selector="{{NewOrderSection.yearFrame}}"/>
3232
<fillField stepKey="fillYear" selector="{{NewOrderSection.expirationYear}}" userInput="{{PaymentAndShippingInfo.year}}"/>
33-
<waitForPageLoad stepKey="waitForFillYear" time="1"/>
33+
<waitForPageLoad stepKey="waitForFillYear"/>
3434
<switchToIFrame stepKey="switchBackFromYear"/>
3535

3636
<!--Fill CVW code-->

app/code/Magento/Braintree/Test/Mftf/Test/CretateAdminOrderWithOnlinePaymentIncludingTaxAndDiscount.xml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<test name="CreateAdminOrderPayedWithOnlinePaymentIncludingTaxAndDiscount">
1212
<annotations>
1313
<features value="Braintree"/>
14-
<stories value="Get access to a New Credit Memo Page from Invocie for Order payed with online payment via Admin"/>
14+
<stories value="Get access to a New Credit Memo Page from Invoice for Order payed with online payment via Admin"/>
1515
<title value="Admin should be able to open a New Credit Memo Page from Invoice Page for Order with tax and discount and payed using online payment method"/>
1616
<description value="Admin should be able to open a New Credit Memo Page from Invoice Page for Order with tax and discount and payed using online payment method"/>
1717
<severity value="CRITICAL"/>
@@ -72,9 +72,9 @@
7272

7373
<!-- Create a cart price rule with 10% discount for whole cart -->
7474
<click selector="{{AdminMenuSection.marketing}}" stepKey="clickOnMarketing" />
75-
<waitForPageLoad stepKey="waitForMarketing" time="3"/>
75+
<waitForPageLoad stepKey="waitForMarketing"/>
7676
<click selector="{{CartPriceRulesSubmenuSection.cartPriceRules}}" stepKey="clickOnCartPriceRules"/>
77-
<waitForPageLoad stepKey="waitForCartPriceRules" time="3"/>
77+
<waitForPageLoad stepKey="waitForCartPriceRules"/>
7878
<click selector="{{AdminCartPriceRulesSection.addNewRuleButton}}" stepKey="clickAddNewRule"/>
7979
<fillField selector="{{AdminCartPriceRulesFormSection.ruleName}}" userInput="{{SimpleSalesRule.name}}" stepKey="fillRuleName"/>
8080
<selectOption selector="{{AdminCartPriceRulesFormSection.websites}}" userInput="Main Website" stepKey="selectWebsites"/>
@@ -83,7 +83,7 @@
8383
<selectOption selector="{{AdminCartPriceRulesFormSection.apply}}" userInput="Percent of product price discount" stepKey="selectActionType"/>
8484
<fillField selector="{{AdminCartPriceRulesFormSection.discountAmount}}" userInput="10" stepKey="fillDiscountAmount"/>
8585
<click selector="{{AdminCartPriceRulesFormSection.save}}" stepKey="clickSaveButton"/>
86-
<waitForPageLoad stepKey="waitForCartRuleLoad" time="3"/>
86+
<waitForPageLoad stepKey="waitForCartRuleLoad"/>
8787
<see selector="{{AdminCartPriceRulesSection.messages}}" userInput="You saved the rule." stepKey="seeSuccessMessage"/>
8888

8989
<!--Set Taxable Goods for Shipping Tax Class-->
@@ -112,15 +112,15 @@
112112

113113
<!--Submit Order-->
114114
<click stepKey="submitOrder" selector="{{NewOrderSection.submitOrder}}"/>
115-
<waitForPageLoad stepKey="waitForSubmitOrder" time="5"/>
115+
<waitForPageLoad stepKey="waitForSubmitOrder"/>
116116
<see selector="{{AdminOrderDetailsMessagesSection.successMessage}}" userInput="You created the order." stepKey="seeOrderSuccessMessage" after="waitForSubmitOrder"/>
117117

118118
<!-- Create New invoice-->
119119
<actionGroup ref="adminFastCreateInvoice" stepKey="createInvoice"/>
120120

121121
<!--Get access to Credit Memo page from Invoice page-->
122122
<click selector="{{AdminInvoiceMainActionsSection.openNewCreditMemoFromInvoice}}" stepKey="clickCreateNewCreditMemo"/>
123-
<waitForPageLoad stepKey="waitForLoadNewCreditMemoPage" time="5"/>
123+
<waitForPageLoad stepKey="waitForLoadNewCreditMemoPage"/>
124124
<see selector="{{AdminCreditMemoOrderInformationSection.orderStatus}}" userInput="Processing" stepKey="seeNewCreditMemo"/>
125125
</test>
126-
</tests>
126+
</tests>

app/code/Magento/Bundle/Controller/Adminhtml/Bundle/Product/Edit/Crosssell.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,16 @@
66
*/
77
namespace Magento\Bundle\Controller\Adminhtml\Bundle\Product\Edit;
88

9-
class Crosssell extends \Magento\Catalog\Controller\Adminhtml\Product\Crosssell
9+
use Magento\Catalog\Controller\Adminhtml\Product\Crosssell as CatalogCrossel;
10+
use Magento\Framework\App\Action\HttpPostActionInterface;
11+
12+
/**
13+
* Class Crosssell
14+
*
15+
* @package Magento\Bundle\Controller\Adminhtml\Bundle\Product\Edit
16+
* @deprecated Not used since cross-sell products grid moved to UI components.
17+
* @see Magento_Catalog::view/adminhtml/ui_component/crosssell_product_listing.xml
18+
*/
19+
class Crosssell extends CatalogCrossel implements HttpPostActionInterface
1020
{
1121
}

app/code/Magento/Bundle/Controller/Adminhtml/Bundle/Product/Edit/CrosssellGrid.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,16 @@
66
*/
77
namespace Magento\Bundle\Controller\Adminhtml\Bundle\Product\Edit;
88

9-
class CrosssellGrid extends \Magento\Catalog\Controller\Adminhtml\Product\CrosssellGrid
9+
use Magento\Catalog\Controller\Adminhtml\Product\CrosssellGrid as CatalogCrosssellGrid;
10+
use Magento\Framework\App\Action\HttpPostActionInterface;
11+
12+
/**
13+
* Class CrosssellGrid
14+
*
15+
* @package Magento\Bundle\Controller\Adminhtml\Bundle\Product\Edit
16+
* @deprecated Not used since cross-sell products grid moved to UI components.
17+
* @see Magento_Catalog::view/adminhtml/ui_component/crosssell_product_listing.xml
18+
*/
19+
class CrosssellGrid extends CatalogCrosssellGrid implements HttpPostActionInterface
1020
{
1121
}

app/code/Magento/Bundle/Controller/Adminhtml/Bundle/Product/Edit/Related.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,16 @@
66
*/
77
namespace Magento\Bundle\Controller\Adminhtml\Bundle\Product\Edit;
88

9-
class Related extends \Magento\Catalog\Controller\Adminhtml\Product\Related
9+
use Magento\Catalog\Controller\Adminhtml\Product\Related as CatalogRelated;
10+
use Magento\Framework\App\Action\HttpPostActionInterface;
11+
12+
/**
13+
* Class Related
14+
*
15+
* @package Magento\Bundle\Controller\Adminhtml\Bundle\Product\Edit
16+
* @deprecated Not used since related products grid moved to UI components.
17+
* @see Magento_Catalog::view/adminhtml/ui_component/related_product_listing.xml
18+
*/
19+
class Related extends CatalogRelated implements HttpPostActionInterface
1020
{
1121
}

app/code/Magento/Bundle/Controller/Adminhtml/Bundle/Product/Edit/RelatedGrid.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,16 @@
66
*/
77
namespace Magento\Bundle\Controller\Adminhtml\Bundle\Product\Edit;
88

9-
class RelatedGrid extends \Magento\Catalog\Controller\Adminhtml\Product\RelatedGrid
9+
use Magento\Catalog\Controller\Adminhtml\Product\RelatedGrid as CatalogRelatedGrid;
10+
use Magento\Framework\App\Action\HttpPostActionInterface;
11+
12+
/**
13+
* Class RelatedGrid
14+
*
15+
* @package Magento\Bundle\Controller\Adminhtml\Bundle\Product\Edit
16+
* @deprecated Not used since related products grid moved to UI components.
17+
* @see Magento_Catalog::view/adminhtml/ui_component/related_product_listing.xml
18+
*/
19+
class RelatedGrid extends CatalogRelatedGrid implements HttpPostActionInterface
1020
{
1121
}

app/code/Magento/Bundle/Controller/Adminhtml/Bundle/Product/Edit/Upsell.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,16 @@
66
*/
77
namespace Magento\Bundle\Controller\Adminhtml\Bundle\Product\Edit;
88

9-
class Upsell extends \Magento\Catalog\Controller\Adminhtml\Product\Upsell
9+
use Magento\Catalog\Controller\Adminhtml\Product\Upsell as CatalogUpsell;
10+
use Magento\Framework\App\Action\HttpPostActionInterface;
11+
12+
/**
13+
* Class Upsell
14+
*
15+
* @package Magento\Bundle\Controller\Adminhtml\Bundle\Product\Edit
16+
* @deprecated Not used since upsell products grid moved to UI components.
17+
* @see Magento_Catalog::view/adminhtml/ui_component/upsell_product_listing.xml
18+
*/
19+
class Upsell extends CatalogUpsell implements HttpPostActionInterface
1020
{
1121
}

app/code/Magento/Bundle/Controller/Adminhtml/Bundle/Product/Edit/UpsellGrid.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@
66
*/
77
namespace Magento\Bundle\Controller\Adminhtml\Bundle\Product\Edit;
88

9+
/**
10+
* Class UpsellGrid
11+
*
12+
* @package Magento\Bundle\Controller\Adminhtml\Bundle\Product\Edit
13+
* @deprecated Not used since upsell products grid moved to UI components.
14+
* @see Magento_Catalog::view/adminhtml/ui_component/upsell_product_listing.xml
15+
*/
916
class UpsellGrid extends \Magento\Catalog\Controller\Adminhtml\Product\UpsellGrid
1017
{
1118
}

app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Crosssell.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,13 @@
1010
use Magento\Catalog\Model\Product;
1111

1212
/**
13+
* Crossel product edit tab
14+
*
1315
* @api
1416
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
1517
* @since 100.0.2
18+
* @deprecated Not used since cross-sell products grid moved to UI components.
19+
* @see \Magento\Catalog\Ui\DataProvider\Product\Related\CrossSellDataProvider
1620
*/
1721
class Crosssell extends Extended
1822
{

app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Related.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,12 @@
99
use Magento\Backend\Block\Widget\Grid\Extended;
1010

1111
/**
12+
* Related product edit tab
13+
*
1214
* @api
1315
* @since 100.0.2
16+
* @deprecated Not used since related products grid moved to UI components.
17+
* @see \Magento\Catalog\Ui\DataProvider\Product\Related\RelatedDataProvider
1418
*/
1519
class Related extends Extended
1620
{

app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Upsell.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,12 @@
66
namespace Magento\Catalog\Block\Adminhtml\Product\Edit\Tab;
77

88
/**
9+
* Upsell product edit tab
10+
*
911
* @api
1012
* @since 100.0.2
13+
* @deprecated Not used since upsell products grid moved to UI components.
14+
* @see \Magento\Catalog\Ui\DataProvider\Product\Related\CrossSellDataProvider
1115
*/
1216
class Upsell extends \Magento\Backend\Block\Widget\Grid\Extended
1317
{

app/code/Magento/Catalog/Controller/Adminhtml/Product/Crosssell.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,17 @@
66
*/
77
namespace Magento\Catalog\Controller\Adminhtml\Product;
88

9-
class Crosssell extends \Magento\Catalog\Controller\Adminhtml\Product
9+
use Magento\Catalog\Controller\Adminhtml\Product;
10+
use Magento\Framework\App\Action\HttpPostActionInterface;
11+
12+
/**
13+
* Class Crosssell
14+
*
15+
* @package Magento\Catalog\Controller\Adminhtml\Product
16+
* @deprecated Not used since cross-sell products grid moved to UI components.
17+
* @see Magento_Catalog::view/adminhtml/ui_component/crosssell_product_listing.xml
18+
*/
19+
class Crosssell extends Product implements HttpPostActionInterface
1020
{
1121
/**
1222
* @var \Magento\Framework\View\Result\LayoutFactory

app/code/Magento/Catalog/Controller/Adminhtml/Product/CrosssellGrid.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,17 @@
66
*/
77
namespace Magento\Catalog\Controller\Adminhtml\Product;
88

9-
class CrosssellGrid extends \Magento\Catalog\Controller\Adminhtml\Product
9+
use Magento\Catalog\Controller\Adminhtml\Product;
10+
use Magento\Framework\App\Action\HttpPostActionInterface;
11+
12+
/**
13+
* Class CrosssellGrid
14+
*
15+
* @package Magento\Catalog\Controller\Adminhtml\Product
16+
* @deprecated Not used since cross-sell products grid moved to UI components.
17+
* @see Magento_Catalog::view/adminhtml/ui_component/crosssell_product_listing.xml
18+
*/
19+
class CrosssellGrid extends Product implements HttpPostActionInterface
1020
{
1121
/**
1222
* @var \Magento\Framework\View\Result\LayoutFactory

app/code/Magento/Catalog/Controller/Adminhtml/Product/Related.php

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,17 @@
77
*/
88
namespace Magento\Catalog\Controller\Adminhtml\Product;
99

10-
class Related extends \Magento\Catalog\Controller\Adminhtml\Product
10+
use Magento\Catalog\Controller\Adminhtml\Product;
11+
use Magento\Framework\App\Action\HttpPostActionInterface;
12+
13+
/**
14+
* Class Related
15+
*
16+
* @package Magento\Catalog\Controller\Adminhtml\Product
17+
* @deprecated Not used since related products grid moved to UI components.
18+
* @see Magento_Catalog::view/adminhtml/ui_component/related_product_listing.xml
19+
*/
20+
class Related extends Product implements HttpPostActionInterface
1121
{
1222
/**
1323
* @var \Magento\Framework\View\Result\LayoutFactory
@@ -29,6 +39,8 @@ public function __construct(
2939
}
3040

3141
/**
42+
* Execute
43+
*
3244
* @return \Magento\Framework\View\Result\Layout
3345
*/
3446
public function execute()

app/code/Magento/Catalog/Controller/Adminhtml/Product/RelatedGrid.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@
77
*/
88
namespace Magento\Catalog\Controller\Adminhtml\Product;
99

10-
class RelatedGrid extends Related
10+
use Magento\Framework\App\Action\HttpPostActionInterface;
11+
12+
/**
13+
* Class RelatedGrid
14+
*
15+
* @package Magento\Catalog\Controller\Adminhtml\Product
16+
* @deprecated Not used since related products grid moved to UI components.
17+
* @see Magento_Catalog::view/adminhtml/ui_component/related_product_listing.xml
18+
*/
19+
class RelatedGrid extends Related implements HttpPostActionInterface
1120
{
1221
}

app/code/Magento/Catalog/Controller/Adminhtml/Product/Upsell.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,17 @@
66
*/
77
namespace Magento\Catalog\Controller\Adminhtml\Product;
88

9-
class Upsell extends \Magento\Catalog\Controller\Adminhtml\Product
9+
use Magento\Catalog\Controller\Adminhtml\Product;
10+
use Magento\Framework\App\Action\HttpPostActionInterface;
11+
12+
/**
13+
* Class Upsell
14+
*
15+
* @package Magento\Catalog\Controller\Adminhtml\Product
16+
* @deprecated Not used since upsell products grid moved to UI components.
17+
* @see Magento_Catalog::view/adminhtml/ui_component/upsell_product_listing.xml
18+
*/
19+
class Upsell extends Product implements HttpPostActionInterface
1020
{
1121
/**
1222
* @var \Magento\Framework\View\Result\LayoutFactory

app/code/Magento/Catalog/Controller/Adminhtml/Product/UpsellGrid.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,17 @@
66
*/
77
namespace Magento\Catalog\Controller\Adminhtml\Product;
88

9-
class UpsellGrid extends \Magento\Catalog\Controller\Adminhtml\Product
9+
use Magento\Catalog\Controller\Adminhtml\Product;
10+
use Magento\Framework\App\Action\HttpPostActionInterface;
11+
12+
/**
13+
* Class UpsellGrid
14+
*
15+
* @package Magento\Catalog\Controller\Adminhtml\Product
16+
* @deprecated Not used since upsell products grid moved to UI components.
17+
* @see Magento_Catalog::view/adminhtml/ui_component/upsell_product_listing.xml
18+
*/
19+
class UpsellGrid extends Product implements HttpPostActionInterface
1020
{
1121
/**
1222
* @var \Magento\Framework\View\Result\LayoutFactory

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -727,7 +727,7 @@ public function getIdBySku($sku)
727727
public function getCategoryId()
728728
{
729729
$category = $this->_registry->registry('current_category');
730-
if ($category) {
730+
if ($category && in_array($category->getId(), $this->getCategoryIds())) {
731731
return $category->getId();
732732
}
733733
return false;

app/code/Magento/Catalog/Model/Product/Attribute/Backend/Boolean.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
7+
68
namespace Magento\Catalog\Model\Product\Attribute\Backend;
79

810
use Magento\Catalog\Model\Product\Attribute\Source\Boolean as BooleanSource;
@@ -25,7 +27,9 @@ public function beforeSave($object)
2527
$attributeCode = $this->getAttribute()->getName();
2628
if ($object->getData('use_config_' . $attributeCode)) {
2729
$object->setData($attributeCode, BooleanSource::VALUE_USE_CONFIG);
30+
return $this;
2831
}
29-
return $this;
32+
33+
return parent::beforeSave($object);
3034
}
3135
}

0 commit comments

Comments
 (0)