diff --git a/app/code/Magento/GiftMessage/view/frontend/web/js/view/gift-message.js b/app/code/Magento/GiftMessage/view/frontend/web/js/view/gift-message.js
index d025f6974f35..4c455c83a77a 100644
--- a/app/code/Magento/GiftMessage/view/frontend/web/js/view/gift-message.js
+++ b/app/code/Magento/GiftMessage/view/frontend/web/js/view/gift-message.js
@@ -31,8 +31,9 @@ define([
this.itemId = this.itemId || 'orderLevel';
model = new GiftMessage(this.itemId);
- giftOptions.addOption(model);
this.model = model;
+ this.isResultBlockVisible();
+ giftOptions.addOption(model);
this.model.getObservable('isClear').subscribe(function (value) {
if (value == true) { //eslint-disable-line eqeqeq
@@ -40,8 +41,6 @@ define([
self.model.getObservable('alreadyAdded')(true);
}
});
-
- this.isResultBlockVisible();
},
/**
diff --git a/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Start.php b/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Start.php
index 8f64d023c19f..e850f6af86cf 100644
--- a/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Start.php
+++ b/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Start.php
@@ -93,6 +93,20 @@ public function execute()
$this->addErrorMessages($resultBlock, $errorAggregator);
} else {
$this->importModel->invalidateIndex();
+
+ $noticeHtml = $this->historyModel->getSummary();
+
+ if ($this->historyModel->getErrorFile()) {
+ $noticeHtml .= '
';
+ }
+
+ $resultBlock->addNotice(
+ $noticeHtml
+ );
+
$this->addErrorMessages($resultBlock, $errorAggregator);
$resultBlock->addSuccess(__('Import successfully done'));
}
diff --git a/app/code/Magento/ImportExport/Model/Import.php b/app/code/Magento/ImportExport/Model/Import.php
index b5e8220e0e9b..064c696ad0a8 100644
--- a/app/code/Magento/ImportExport/Model/Import.php
+++ b/app/code/Magento/ImportExport/Model/Import.php
@@ -181,7 +181,7 @@ class Import extends \Magento\ImportExport\Model\AbstractModel
* @param Source\Import\Behavior\Factory $behaviorFactory
* @param \Magento\Framework\Indexer\IndexerRegistry $indexerRegistry
* @param History $importHistoryModel
- * @param \Magento\Framework\Stdlib\DateTime\DateTime
+ * @param \Magento\Framework\Stdlib\DateTime\DateTime $localeDate
* @param array $data
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
*/
@@ -443,6 +443,8 @@ public function importSource()
}
/**
+ * Processing of import.
+ *
* @return bool
* @throws \Magento\Framework\Exception\LocalizedException
*/
@@ -462,6 +464,8 @@ public function isImportAllowed()
}
/**
+ * Get error aggregator instance.
+ *
* @return ProcessingErrorAggregatorInterface
* @throws \Magento\Framework\Exception\LocalizedException
*/
@@ -585,6 +589,11 @@ public function validateSource(\Magento\ImportExport\Model\Import\AbstractSource
$this->addLogComment($messages);
$result = !$errorAggregator->getErrorsCount();
+ $validationStrategy = $this->getData(self::FIELD_NAME_VALIDATION_STRATEGY);
+ if ($validationStrategy === ProcessingErrorAggregatorInterface::VALIDATION_STRATEGY_SKIP_ERRORS) {
+ $result = true;
+ }
+
if ($result) {
$this->addLogComment(__('Import data validation is complete.'));
}
@@ -710,9 +719,9 @@ public function isReportEntityType($entity = null)
/**
* Create history report
*
+ * @param string $sourceFileRelative
* @param string $entity
* @param string $extension
- * @param string $sourceFileRelative
* @param array $result
* @return $this
* @throws \Magento\Framework\Exception\LocalizedException
diff --git a/app/code/Magento/ImportExport/Model/Import/Entity/AbstractEntity.php b/app/code/Magento/ImportExport/Model/Import/Entity/AbstractEntity.php
index e965e8ad207f..1fc3257ff2c1 100644
--- a/app/code/Magento/ImportExport/Model/Import/Entity/AbstractEntity.php
+++ b/app/code/Magento/ImportExport/Model/Import/Entity/AbstractEntity.php
@@ -554,7 +554,9 @@ public function getBehavior()
$this->_parameters['behavior']
) ||
$this->_parameters['behavior'] != ImportExport::BEHAVIOR_APPEND &&
+ $this->_parameters['behavior'] != ImportExport::BEHAVIOR_ADD_UPDATE &&
$this->_parameters['behavior'] != ImportExport::BEHAVIOR_REPLACE &&
+ $this->_parameters['behavior'] != ImportExport::BEHAVIOR_CUSTOM &&
$this->_parameters['behavior'] != ImportExport::BEHAVIOR_DELETE
) {
return ImportExport::getDefaultBehavior();
@@ -828,6 +830,8 @@ public function validateData()
}
/**
+ * Get error aggregator object
+ *
* @return ProcessingErrorAggregatorInterface
*/
public function getErrorAggregator()
diff --git a/app/code/Magento/ImportExport/Test/Unit/Model/Source/Import/Behavior/CustomTest.php b/app/code/Magento/ImportExport/Test/Unit/Model/Source/Import/Behavior/CustomTest.php
index d073f3866bfe..73b4f10b3b0f 100644
--- a/app/code/Magento/ImportExport/Test/Unit/Model/Source/Import/Behavior/CustomTest.php
+++ b/app/code/Magento/ImportExport/Test/Unit/Model/Source/Import/Behavior/CustomTest.php
@@ -32,7 +32,7 @@ class CustomTest extends \Magento\ImportExport\Test\Unit\Model\Source\Import\Abs
protected function setUp()
{
parent::setUp();
- $this->_model = new \Magento\ImportExport\Model\Source\Import\Behavior\Custom([]);
+ $this->_model = new \Magento\ImportExport\Model\Source\Import\Behavior\Custom();
}
/**
diff --git a/app/code/Magento/Integration/Plugin/Model/AdminUser.php b/app/code/Magento/Integration/Plugin/Model/AdminUser.php
index df3766250caa..7b2fa1981bce 100644
--- a/app/code/Magento/Integration/Plugin/Model/AdminUser.php
+++ b/app/code/Magento/Integration/Plugin/Model/AdminUser.php
@@ -3,6 +3,7 @@
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
+
namespace Magento\Integration\Plugin\Model;
use Magento\Integration\Model\AdminTokenService;
@@ -31,14 +32,15 @@ public function __construct(
*
* @param \Magento\User\Model\User $subject
* @param \Magento\Framework\DataObject $object
- * @return $this
+ * @return \Magento\User\Model\User
+ * @throws \Magento\Framework\Exception\LocalizedException
*/
public function afterSave(
\Magento\User\Model\User $subject,
\Magento\Framework\DataObject $object
- ) {
+ ): \Magento\User\Model\User {
$isActive = $object->getIsActive();
- if (isset($isActive) && $isActive == 0) {
+ if ($isActive !== null && $isActive == 0) {
$this->adminTokenService->revokeAdminAccessToken($object->getId());
}
return $subject;
diff --git a/app/code/Magento/Integration/etc/adminhtml/system.xml b/app/code/Magento/Integration/etc/adminhtml/system.xml
index 5abec8efbfdd..fe80fe105493 100644
--- a/app/code/Magento/Integration/etc/adminhtml/system.xml
+++ b/app/code/Magento/Integration/etc/adminhtml/system.xml
@@ -54,7 +54,7 @@
Maximum Number of authentication failures to lock out account.
-
+
Period of time in seconds after which account will be unlocked.
diff --git a/app/code/Magento/Integration/etc/db_schema.xml b/app/code/Magento/Integration/etc/db_schema.xml
index 79fbf0b3db17..f1824fadb97f 100644
--- a/app/code/Magento/Integration/etc/db_schema.xml
+++ b/app/code/Magento/Integration/etc/db_schema.xml
@@ -136,7 +136,7 @@
comment="User type (admin or customer)"/>
-
diff --git a/app/code/Magento/LayeredNavigation/Observer/Edit/Tab/Front/ProductAttributeFormBuildFrontTabObserver.php b/app/code/Magento/LayeredNavigation/Observer/Edit/Tab/Front/ProductAttributeFormBuildFrontTabObserver.php
index 1bb601e3a4eb..ce618f97883b 100644
--- a/app/code/Magento/LayeredNavigation/Observer/Edit/Tab/Front/ProductAttributeFormBuildFrontTabObserver.php
+++ b/app/code/Magento/LayeredNavigation/Observer/Edit/Tab/Front/ProductAttributeFormBuildFrontTabObserver.php
@@ -60,7 +60,11 @@ public function execute(\Magento\Framework\Event\Observer $observer)
'name' => 'is_filterable',
'label' => __("Use in Layered Navigation"),
'title' => __('Can be used only with catalog input type Yes/No, Dropdown, Multiple Select and Price'),
- 'note' => __('Can be used only with catalog input type Yes/No, Dropdown, Multiple Select and Price.'),
+ 'note' => __(
+ 'Can be used only with catalog input type Yes/No, Dropdown, Multiple Select and Price.
+
Price is not compatible with \'Filterable (no results)\' option -
+ it will make no affect on Price filter.'
+ ),
'values' => [
['value' => '0', 'label' => __('No')],
['value' => '1', 'label' => __('Filterable (with results)')],
diff --git a/app/code/Magento/Multishipping/Test/Mftf/Section/MultishippingSection.xml b/app/code/Magento/Multishipping/Test/Mftf/Section/MultishippingSection.xml
new file mode 100644
index 000000000000..e7d57af1172c
--- /dev/null
+++ b/app/code/Magento/Multishipping/Test/Mftf/Section/MultishippingSection.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
diff --git a/app/code/Magento/Newsletter/Model/Queue.php b/app/code/Magento/Newsletter/Model/Queue.php
index efb68fd4243d..a3279f8c8369 100644
--- a/app/code/Magento/Newsletter/Model/Queue.php
+++ b/app/code/Magento/Newsletter/Model/Queue.php
@@ -7,6 +7,7 @@
use Magento\Framework\App\TemplateTypesInterface;
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
+use Magento\Framework\Stdlib\DateTime\Timezone\LocalizedDateToUtcConverterInterface;
/**
* Newsletter queue model.
@@ -117,6 +118,11 @@ class Queue extends \Magento\Framework\Model\AbstractModel implements TemplateTy
*/
private $timezone;
+ /**
+ * @var LocalizedDateToUtcConverterInterface
+ */
+ private $utcConverter;
+
/**
* @param \Magento\Framework\Model\Context $context
* @param \Magento\Framework\Registry $registry
@@ -130,6 +136,7 @@ class Queue extends \Magento\Framework\Model\AbstractModel implements TemplateTy
* @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
* @param array $data
* @param TimezoneInterface $timezone
+ * @param LocalizedDateToUtcConverterInterface $utcConverter
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
*/
public function __construct(
@@ -144,7 +151,8 @@ public function __construct(
\Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
array $data = [],
- TimezoneInterface $timezone = null
+ TimezoneInterface $timezone = null,
+ LocalizedDateToUtcConverterInterface $utcConverter = null
) {
parent::__construct(
$context,
@@ -159,9 +167,10 @@ public function __construct(
$this->_problemFactory = $problemFactory;
$this->_subscribersCollection = $subscriberCollectionFactory->create();
$this->_transportBuilder = $transportBuilder;
- $this->timezone = $timezone ?: \Magento\Framework\App\ObjectManager::getInstance()->get(
- TimezoneInterface::class
- );
+
+ $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
+ $this->timezone = $timezone ?: $objectManager->get(TimezoneInterface::class);
+ $this->utcConverter = $utcConverter ?? $objectManager->get(LocalizedDateToUtcConverterInterface::class);
}
/**
@@ -196,7 +205,7 @@ public function setQueueStartAtByString($startAt)
if ($startAt === null || $startAt == '') {
$this->setQueueStartAt(null);
} else {
- $this->setQueueStartAt($this->timezone->convertConfigTimeToUtc($startAt));
+ $this->setQueueStartAt($this->utcConverter->convertLocalizedDateToUtc($startAt));
}
return $this;
}
diff --git a/app/code/Magento/Newsletter/i18n/en_US.csv b/app/code/Magento/Newsletter/i18n/en_US.csv
index c49fdc80da81..388b583f990b 100644
--- a/app/code/Magento/Newsletter/i18n/en_US.csv
+++ b/app/code/Magento/Newsletter/i18n/en_US.csv
@@ -67,8 +67,8 @@ Subscribers,Subscribers
"Something went wrong while saving this template.","Something went wrong while saving this template."
"Newsletter Subscription","Newsletter Subscription"
"Something went wrong while saving your subscription.","Something went wrong while saving your subscription."
-"We saved the subscription.","We saved the subscription."
-"We removed the subscription.","We removed the subscription."
+"We have saved your subscription.","We have saved your subscription."
+"We have removed your newsletter subscription.","We have removed your newsletter subscription."
"Your subscription has been confirmed.","Your subscription has been confirmed."
"This is an invalid subscription confirmation code.","This is an invalid subscription confirmation code."
"This is an invalid subscription ID.","This is an invalid subscription ID."
@@ -76,7 +76,7 @@ Subscribers,Subscribers
"Sorry, but the administrator denied subscription for guests. Please register.","Sorry, but the administrator denied subscription for guests. Please register."
"Please enter a valid email address.","Please enter a valid email address."
"This email address is already subscribed.","This email address is already subscribed."
-"The confirmation request has been sent.","The confirmation request has been sent."
+"A confirmation request has been sent.","A confirmation request has been sent."
"Thank you for your subscription.","Thank you for your subscription."
"There was a problem with the subscription: %1","There was a problem with the subscription: %1"
"Something went wrong with the subscription.","Something went wrong with the subscription."
@@ -151,3 +151,4 @@ Unconfirmed,Unconfirmed
Store,Store
"Store View","Store View"
"Newsletter Subscriptions","Newsletter Subscriptions"
+"We have updated your subscription.","We have updated your subscription."
diff --git a/app/code/Magento/Quote/Model/Quote/Address.php b/app/code/Magento/Quote/Model/Quote/Address.php
index 3eb5d6888503..bafd6634a94c 100644
--- a/app/code/Magento/Quote/Model/Quote/Address.php
+++ b/app/code/Magento/Quote/Model/Quote/Address.php
@@ -28,8 +28,8 @@
* @method Address setAddressType(string $value)
* @method int getFreeShipping()
* @method Address setFreeShipping(int $value)
- * @method int getCollectShippingRates()
- * @method Address setCollectShippingRates(int $value)
+ * @method bool getCollectShippingRates()
+ * @method Address setCollectShippingRates(bool $value)
* @method Address setShippingMethod(string $value)
* @method string getShippingDescription()
* @method Address setShippingDescription(string $value)
@@ -965,6 +965,7 @@ public function collectShippingRates()
/**
* Request shipping rates for entire address or specified address item
+ *
* Returns true if current selected shipping method code corresponds to one of the found rates
*
* @param \Magento\Quote\Model\Quote\Item\AbstractItem $item
@@ -1002,8 +1003,14 @@ public function requestShippingRates(\Magento\Quote\Model\Quote\Item\AbstractIte
/**
* Store and website identifiers specified from StoreManager
*/
- $request->setStoreId($this->storeManager->getStore()->getId());
- $request->setWebsiteId($this->storeManager->getWebsite()->getId());
+ if ($this->getQuote()->getStoreId()) {
+ $storeId = $this->getQuote()->getStoreId();
+ $request->setStoreId($storeId);
+ $request->setWebsiteId($this->storeManager->getStore($storeId)->getWebsiteId());
+ } else {
+ $request->setStoreId($this->storeManager->getStore()->getId());
+ $request->setWebsiteId($this->storeManager->getWebsite()->getId());
+ }
$request->setFreeShipping($this->getFreeShipping());
/**
* Currencies need to convert in free shipping
@@ -1348,7 +1355,7 @@ public function getAllBaseTotalAmounts()
/******************************* End Total Collector Interface *******************************************/
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
protected function _getValidationRulesBeforeSave()
{
@@ -1356,7 +1363,7 @@ protected function _getValidationRulesBeforeSave()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getCountryId()
{
@@ -1364,7 +1371,7 @@ public function getCountryId()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setCountryId($countryId)
{
@@ -1372,7 +1379,7 @@ public function setCountryId($countryId)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getStreet()
{
@@ -1381,7 +1388,7 @@ public function getStreet()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setStreet($street)
{
@@ -1389,7 +1396,7 @@ public function setStreet($street)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getCompany()
{
@@ -1397,7 +1404,7 @@ public function getCompany()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setCompany($company)
{
@@ -1405,7 +1412,7 @@ public function setCompany($company)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getTelephone()
{
@@ -1413,7 +1420,7 @@ public function getTelephone()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setTelephone($telephone)
{
@@ -1421,7 +1428,7 @@ public function setTelephone($telephone)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getFax()
{
@@ -1429,7 +1436,7 @@ public function getFax()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setFax($fax)
{
@@ -1437,7 +1444,7 @@ public function setFax($fax)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getPostcode()
{
@@ -1445,7 +1452,7 @@ public function getPostcode()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setPostcode($postcode)
{
@@ -1453,7 +1460,7 @@ public function setPostcode($postcode)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getCity()
{
@@ -1461,7 +1468,7 @@ public function getCity()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setCity($city)
{
@@ -1469,7 +1476,7 @@ public function setCity($city)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getFirstname()
{
@@ -1477,7 +1484,7 @@ public function getFirstname()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setFirstname($firstname)
{
@@ -1485,7 +1492,7 @@ public function setFirstname($firstname)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getLastname()
{
@@ -1493,7 +1500,7 @@ public function getLastname()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setLastname($lastname)
{
@@ -1501,7 +1508,7 @@ public function setLastname($lastname)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getMiddlename()
{
@@ -1509,7 +1516,7 @@ public function getMiddlename()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setMiddlename($middlename)
{
@@ -1517,7 +1524,7 @@ public function setMiddlename($middlename)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getPrefix()
{
@@ -1525,7 +1532,7 @@ public function getPrefix()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setPrefix($prefix)
{
@@ -1533,7 +1540,7 @@ public function setPrefix($prefix)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getSuffix()
{
@@ -1541,7 +1548,7 @@ public function getSuffix()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setSuffix($suffix)
{
@@ -1549,7 +1556,7 @@ public function setSuffix($suffix)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getVatId()
{
@@ -1557,7 +1564,7 @@ public function getVatId()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setVatId($vatId)
{
@@ -1565,7 +1572,7 @@ public function setVatId($vatId)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getCustomerId()
{
@@ -1573,7 +1580,7 @@ public function getCustomerId()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setCustomerId($customerId)
{
@@ -1581,7 +1588,7 @@ public function setCustomerId($customerId)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getEmail()
{
@@ -1594,7 +1601,7 @@ public function getEmail()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setEmail($email)
{
@@ -1602,7 +1609,7 @@ public function setEmail($email)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setRegion($region)
{
@@ -1610,7 +1617,7 @@ public function setRegion($region)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setRegionId($regionId)
{
@@ -1618,7 +1625,7 @@ public function setRegionId($regionId)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setRegionCode($regionCode)
{
@@ -1626,7 +1633,7 @@ public function setRegionCode($regionCode)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getSameAsBilling()
{
@@ -1634,7 +1641,7 @@ public function getSameAsBilling()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setSameAsBilling($sameAsBilling)
{
@@ -1642,7 +1649,7 @@ public function setSameAsBilling($sameAsBilling)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getCustomerAddressId()
{
@@ -1650,7 +1657,7 @@ public function getCustomerAddressId()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setCustomerAddressId($customerAddressId)
{
@@ -1681,7 +1688,7 @@ public function setSaveInAddressBook($saveInAddressBook)
//@codeCoverageIgnoreEnd
/**
- * {@inheritdoc}
+ * @inheritdoc
*
* @return \Magento\Quote\Api\Data\AddressExtensionInterface|null
*/
@@ -1691,7 +1698,7 @@ public function getExtensionAttributes()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*
* @param \Magento\Quote\Api\Data\AddressExtensionInterface $extensionAttributes
* @return $this
@@ -1712,7 +1719,7 @@ public function getShippingMethod()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
protected function getCustomAttributesCodes()
{
diff --git a/app/code/Magento/Quote/Test/Mftf/ActionGroup/ChangeStatusProductUsingProductGridActionGroup.xml b/app/code/Magento/Quote/Test/Mftf/ActionGroup/ChangeStatusProductUsingProductGridActionGroup.xml
index dba4a94f3db2..9698f9cef421 100644
--- a/app/code/Magento/Quote/Test/Mftf/ActionGroup/ChangeStatusProductUsingProductGridActionGroup.xml
+++ b/app/code/Magento/Quote/Test/Mftf/ActionGroup/ChangeStatusProductUsingProductGridActionGroup.xml
@@ -6,8 +6,7 @@
*/
-->
-
+
@@ -23,10 +22,10 @@
-
-
+
+
diff --git a/app/code/Magento/Quote/Test/Mftf/Section/AdminProductGridSection.xml b/app/code/Magento/Quote/Test/Mftf/Section/AdminProductGridSection.xml
index 32ac73aca7c0..0ca252aa7354 100644
--- a/app/code/Magento/Quote/Test/Mftf/Section/AdminProductGridSection.xml
+++ b/app/code/Magento/Quote/Test/Mftf/Section/AdminProductGridSection.xml
@@ -7,8 +7,8 @@
-->
+ xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd">
diff --git a/app/code/Magento/Reports/Test/Mftf/ActionGroup/AdminReviewOrderActionGroup.xml b/app/code/Magento/Reports/Test/Mftf/ActionGroup/AdminReviewOrderActionGroup.xml
new file mode 100644
index 000000000000..003a5e6655f3
--- /dev/null
+++ b/app/code/Magento/Reports/Test/Mftf/ActionGroup/AdminReviewOrderActionGroup.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/code/Magento/Reports/Test/Mftf/Section/OrderedProductsSection.xml b/app/code/Magento/Reports/Test/Mftf/Section/OrderedProductsSection.xml
new file mode 100644
index 000000000000..89e8497dddce
--- /dev/null
+++ b/app/code/Magento/Reports/Test/Mftf/Section/OrderedProductsSection.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/code/Magento/Sales/Model/Order/Address.php b/app/code/Magento/Sales/Model/Order/Address.php
index 77d8330a7255..083ec0089a5c 100644
--- a/app/code/Magento/Sales/Model/Order/Address.php
+++ b/app/code/Magento/Sales/Model/Order/Address.php
@@ -173,8 +173,8 @@ protected function implodeStreetValue($value)
* Enforce format of the street field
*
* @param array|string $key
- * @param null $value
- * @return \Magento\Framework\DataObject
+ * @param array|string $value
+ * @return $this
*/
public function setData($key, $value = null)
{
@@ -508,7 +508,7 @@ public function getVatRequestSuccess()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setParentId($id)
{
@@ -516,7 +516,7 @@ public function setParentId($id)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setCustomerAddressId($id)
{
@@ -524,7 +524,7 @@ public function setCustomerAddressId($id)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setRegionId($id)
{
@@ -532,7 +532,7 @@ public function setRegionId($id)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setStreet($street)
{
@@ -540,7 +540,7 @@ public function setStreet($street)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setCustomerId($id)
{
@@ -548,7 +548,7 @@ public function setCustomerId($id)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setFax($fax)
{
@@ -556,7 +556,7 @@ public function setFax($fax)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setRegion($region)
{
@@ -564,7 +564,7 @@ public function setRegion($region)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setPostcode($postcode)
{
@@ -572,7 +572,7 @@ public function setPostcode($postcode)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setLastname($lastname)
{
@@ -580,7 +580,7 @@ public function setLastname($lastname)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setCity($city)
{
@@ -588,7 +588,7 @@ public function setCity($city)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setEmail($email)
{
@@ -596,7 +596,7 @@ public function setEmail($email)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setTelephone($telephone)
{
@@ -604,7 +604,7 @@ public function setTelephone($telephone)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setCountryId($id)
{
@@ -612,7 +612,7 @@ public function setCountryId($id)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setFirstname($firstname)
{
@@ -620,7 +620,7 @@ public function setFirstname($firstname)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setAddressType($addressType)
{
@@ -628,7 +628,7 @@ public function setAddressType($addressType)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setPrefix($prefix)
{
@@ -636,7 +636,7 @@ public function setPrefix($prefix)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setMiddlename($middlename)
{
@@ -644,7 +644,7 @@ public function setMiddlename($middlename)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setSuffix($suffix)
{
@@ -652,7 +652,7 @@ public function setSuffix($suffix)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setCompany($company)
{
@@ -660,7 +660,7 @@ public function setCompany($company)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setVatId($id)
{
@@ -668,7 +668,7 @@ public function setVatId($id)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setVatIsValid($vatIsValid)
{
@@ -676,7 +676,7 @@ public function setVatIsValid($vatIsValid)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setVatRequestId($id)
{
@@ -684,7 +684,7 @@ public function setVatRequestId($id)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setRegionCode($regionCode)
{
@@ -692,7 +692,7 @@ public function setRegionCode($regionCode)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setVatRequestDate($vatRequestDate)
{
@@ -700,7 +700,7 @@ public function setVatRequestDate($vatRequestDate)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function setVatRequestSuccess($vatRequestSuccess)
{
@@ -708,7 +708,7 @@ public function setVatRequestSuccess($vatRequestSuccess)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*
* @return \Magento\Sales\Api\Data\OrderAddressExtensionInterface|null
*/
@@ -718,7 +718,7 @@ public function getExtensionAttributes()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*
* @param \Magento\Sales\Api\Data\OrderAddressExtensionInterface $extensionAttributes
* @return $this
diff --git a/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminOrderActionGroup.xml b/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminOrderActionGroup.xml
index 53dc52ca58fa..cc8a62ca4896 100644
--- a/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminOrderActionGroup.xml
+++ b/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminOrderActionGroup.xml
@@ -287,6 +287,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/code/Magento/Sales/Test/Mftf/Section/AdminInvoicePaymentShippingSection.xml b/app/code/Magento/Sales/Test/Mftf/Section/AdminInvoicePaymentShippingSection.xml
index 918a8e814b55..8d7c64733972 100644
--- a/app/code/Magento/Sales/Test/Mftf/Section/AdminInvoicePaymentShippingSection.xml
+++ b/app/code/Magento/Sales/Test/Mftf/Section/AdminInvoicePaymentShippingSection.xml
@@ -15,5 +15,7 @@
+
+
\ No newline at end of file
diff --git a/app/code/Magento/Sales/Test/Mftf/Section/AdminOrderFormPaymentSection.xml b/app/code/Magento/Sales/Test/Mftf/Section/AdminOrderFormPaymentSection.xml
index 4350ffeb0337..60d4c53418dc 100644
--- a/app/code/Magento/Sales/Test/Mftf/Section/AdminOrderFormPaymentSection.xml
+++ b/app/code/Magento/Sales/Test/Mftf/Section/AdminOrderFormPaymentSection.xml
@@ -15,4 +15,4 @@
-
\ No newline at end of file
+
diff --git a/app/code/Magento/Sales/Test/Mftf/Section/AdminOrderStoreScopeTreeSection.xml b/app/code/Magento/Sales/Test/Mftf/Section/AdminOrderStoreScopeTreeSection.xml
index 050e1ba8b2df..cbe17499319f 100644
--- a/app/code/Magento/Sales/Test/Mftf/Section/AdminOrderStoreScopeTreeSection.xml
+++ b/app/code/Magento/Sales/Test/Mftf/Section/AdminOrderStoreScopeTreeSection.xml
@@ -11,5 +11,6 @@
diff --git a/app/code/Magento/Sales/Test/Mftf/Section/AdminOrdersGridSection.xml b/app/code/Magento/Sales/Test/Mftf/Section/AdminOrdersGridSection.xml
index 7ece18fb863b..53a6cbffcdac 100644
--- a/app/code/Magento/Sales/Test/Mftf/Section/AdminOrdersGridSection.xml
+++ b/app/code/Magento/Sales/Test/Mftf/Section/AdminOrdersGridSection.xml
@@ -29,5 +29,7 @@
+
+
diff --git a/app/code/Magento/Sales/Test/Mftf/Section/OrdersGridSection.xml b/app/code/Magento/Sales/Test/Mftf/Section/OrdersGridSection.xml
index 8d99bf4872d0..717022322698 100644
--- a/app/code/Magento/Sales/Test/Mftf/Section/OrdersGridSection.xml
+++ b/app/code/Magento/Sales/Test/Mftf/Section/OrdersGridSection.xml
@@ -18,7 +18,7 @@
-
+
@@ -29,5 +29,6 @@
+
diff --git a/app/code/Magento/Sales/Test/Mftf/Test/AdminSubmitConfigurableProductOrderTest.xml b/app/code/Magento/Sales/Test/Mftf/Test/AdminSubmitConfigurableProductOrderTest.xml
index e32e6b9e6ec5..ff1e27a2efa0 100644
--- a/app/code/Magento/Sales/Test/Mftf/Test/AdminSubmitConfigurableProductOrderTest.xml
+++ b/app/code/Magento/Sales/Test/Mftf/Test/AdminSubmitConfigurableProductOrderTest.xml
@@ -1,129 +1,132 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/code/Magento/Sales/Test/Mftf/Test/CreditMemoTotalAfterShippingDiscountTest.xml b/app/code/Magento/Sales/Test/Mftf/Test/CreditMemoTotalAfterShippingDiscountTest.xml
index 60df3f27fd65..08e859b11d1b 100644
--- a/app/code/Magento/Sales/Test/Mftf/Test/CreditMemoTotalAfterShippingDiscountTest.xml
+++ b/app/code/Magento/Sales/Test/Mftf/Test/CreditMemoTotalAfterShippingDiscountTest.xml
@@ -45,6 +45,8 @@
+
+
diff --git a/app/code/Magento/Sales/etc/db_schema.xml b/app/code/Magento/Sales/etc/db_schema.xml
index 1310204dcc8f..ced999bb8601 100644
--- a/app/code/Magento/Sales/etc/db_schema.xml
+++ b/app/code/Magento/Sales/etc/db_schema.xml
@@ -9,7 +9,7 @@
xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
+ comment="Entity Id"/>
@@ -297,13 +297,13 @@
+ comment="Entity Id"/>
+ comment="Store Id"/>
+ comment="Customer Id"/>
+ comment="Entity Id"/>
+ comment="Parent Id"/>
+ comment="Customer Address Id"/>
+ comment="Quote Address Id"/>
+ comment="Region Id"/>
+ comment="Customer Id"/>
@@ -431,9 +431,9 @@
+ comment="Entity Id"/>
+ comment="Parent Id"/>
+ comment="Entity Id"/>
+ comment="Parent Id"/>
+ comment="Entity Id"/>
+ comment="Store Id"/>
+ comment="Order Id"/>
+ comment="Customer Id"/>
+ comment="Shipping Address Id"/>
+ comment="Billing Address Id"/>
@@ -762,14 +762,14 @@
+ comment="Entity Id"/>
+ comment="Store Id"/>
-
+
+ comment="Entity Id"/>
+ comment="Parent Id"/>
+ comment="Product Id"/>
+ comment="Order Item Id"/>
@@ -867,14 +867,14 @@
+ comment="Entity Id"/>
+ comment="Parent Id"/>
+ comment="Order Id"/>
@@ -901,9 +901,9 @@
+ comment="Entity Id"/>
+ comment="Parent Id"/>
+ comment="Entity Id"/>
+ comment="Store Id"/>
+ comment="Entity Id"/>
+ comment="Store Id"/>
+ comment="Order Id"/>
@@ -1136,9 +1136,9 @@
+ comment="Entity Id"/>
+ comment="Parent Id"/>
+ comment="Entity Id"/>
+ comment="Parent Id"/>
+ comment="Entity Id"/>
+ comment="Store Id"/>
+ comment="Entity Id"/>
+ comment="Order Id"/>
@@ -1366,7 +1366,7 @@
comment="Base Grand Total"/>
+ comment="Store Id"/>
@@ -1438,9 +1438,9 @@
+ comment="Entity Id"/>
+ comment="Parent Id"/>
+ comment="Product Id"/>
+ comment="Order Item Id"/>
@@ -1494,9 +1494,9 @@
+ comment="Entity Id"/>
+ comment="Parent Id"/>
+
+
diff --git a/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateBuyXGetYFreeTest.xml b/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateBuyXGetYFreeTest.xml
index c69fa97efc03..92d221de9e15 100644
--- a/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateBuyXGetYFreeTest.xml
+++ b/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateBuyXGetYFreeTest.xml
@@ -40,6 +40,8 @@
+
+
diff --git a/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateCartPriceRuleForCouponCodeTest.xml b/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateCartPriceRuleForCouponCodeTest.xml
index 49233cb4b42f..3deb688de9c3 100644
--- a/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateCartPriceRuleForCouponCodeTest.xml
+++ b/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateCartPriceRuleForCouponCodeTest.xml
@@ -42,6 +42,8 @@
+
+
diff --git a/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateCartPriceRuleForGeneratedCouponTest.xml b/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateCartPriceRuleForGeneratedCouponTest.xml
index c1aeebfca520..ec835384a52f 100644
--- a/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateCartPriceRuleForGeneratedCouponTest.xml
+++ b/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateCartPriceRuleForGeneratedCouponTest.xml
@@ -42,6 +42,8 @@
+
+
diff --git a/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateFixedAmountDiscountTest.xml b/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateFixedAmountDiscountTest.xml
index 30aa26b26ed3..08a08275ee07 100644
--- a/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateFixedAmountDiscountTest.xml
+++ b/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateFixedAmountDiscountTest.xml
@@ -40,6 +40,8 @@
+
+
diff --git a/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateFixedAmountWholeCartDiscountTest.xml b/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateFixedAmountWholeCartDiscountTest.xml
index 7ac69f82f79d..a39530f7607e 100644
--- a/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateFixedAmountWholeCartDiscountTest.xml
+++ b/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateFixedAmountWholeCartDiscountTest.xml
@@ -40,6 +40,8 @@
+
+
diff --git a/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreatePercentOfProductPriceTest.xml b/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreatePercentOfProductPriceTest.xml
index eb04ce04f071..1f7d849ac02b 100644
--- a/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreatePercentOfProductPriceTest.xml
+++ b/app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreatePercentOfProductPriceTest.xml
@@ -40,6 +40,8 @@
+
+
diff --git a/app/code/Magento/SalesRule/Test/Mftf/Test/CartPriceRuleForConfigurableProductTest.xml b/app/code/Magento/SalesRule/Test/Mftf/Test/CartPriceRuleForConfigurableProductTest.xml
index 4c194c63ec37..e2687f5f16ba 100644
--- a/app/code/Magento/SalesRule/Test/Mftf/Test/CartPriceRuleForConfigurableProductTest.xml
+++ b/app/code/Magento/SalesRule/Test/Mftf/Test/CartPriceRuleForConfigurableProductTest.xml
@@ -7,7 +7,7 @@
-->
+ xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
@@ -96,6 +96,8 @@
+
+
diff --git a/app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontCartPriceRuleCountry.xml b/app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontCartPriceRuleCountry.xml
index ca897bffe8b7..3eec020e2634 100644
--- a/app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontCartPriceRuleCountry.xml
+++ b/app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontCartPriceRuleCountry.xml
@@ -43,6 +43,8 @@
+
+
diff --git a/app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontCartPriceRulePostcode.xml b/app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontCartPriceRulePostcode.xml
index 83854c4a767c..73b5d2546f43 100644
--- a/app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontCartPriceRulePostcode.xml
+++ b/app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontCartPriceRulePostcode.xml
@@ -43,6 +43,8 @@
+
+
diff --git a/app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontCartPriceRuleQuantity.xml b/app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontCartPriceRuleQuantity.xml
index 60a19074317f..51d11b4e5cb1 100644
--- a/app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontCartPriceRuleQuantity.xml
+++ b/app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontCartPriceRuleQuantity.xml
@@ -43,6 +43,8 @@
+
+
diff --git a/app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontCartPriceRuleState.xml b/app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontCartPriceRuleState.xml
index f98f7b408436..9395e87c20ed 100644
--- a/app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontCartPriceRuleState.xml
+++ b/app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontCartPriceRuleState.xml
@@ -43,6 +43,8 @@
+
+
diff --git a/app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontCartPriceRuleSubtotal.xml b/app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontCartPriceRuleSubtotal.xml
index 6567beba198e..7c9c52e1c02a 100644
--- a/app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontCartPriceRuleSubtotal.xml
+++ b/app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontCartPriceRuleSubtotal.xml
@@ -43,6 +43,8 @@
+
+
diff --git a/app/code/Magento/Shipping/Test/Mftf/Section/AdminShipmentAddressInformationSection.xml b/app/code/Magento/Shipping/Test/Mftf/Section/AdminShipmentAddressInformationSection.xml
index 14fefd981e4e..10878310c262 100644
--- a/app/code/Magento/Shipping/Test/Mftf/Section/AdminShipmentAddressInformationSection.xml
+++ b/app/code/Magento/Shipping/Test/Mftf/Section/AdminShipmentAddressInformationSection.xml
@@ -7,11 +7,12 @@
-->
+ xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
diff --git a/app/code/Magento/Store/Test/Mftf/Data/StoreData.xml b/app/code/Magento/Store/Test/Mftf/Data/StoreData.xml
index 8f859ff3cd6b..9fae618020ff 100644
--- a/app/code/Magento/Store/Test/Mftf/Data/StoreData.xml
+++ b/app/code/Magento/Store/Test/Mftf/Data/StoreData.xml
@@ -53,4 +53,16 @@
Store View
store2
+
+ Store
+ StoreCode
+
+
+ WebSite
+ WebSiteCode
+
+
+ StoreView
+ StoreViewCode
+
diff --git a/app/code/Magento/Swatches/Helper/Data.php b/app/code/Magento/Swatches/Helper/Data.php
index 38879178235c..d82109ac1260 100644
--- a/app/code/Magento/Swatches/Helper/Data.php
+++ b/app/code/Magento/Swatches/Helper/Data.php
@@ -132,6 +132,8 @@ public function __construct(
}
/**
+ * Assemble Additional Data for Eav Attribute
+ *
* @param Attribute $attribute
* @return $this
*/
@@ -181,6 +183,8 @@ private function isMediaAvailable(ModelProduct $product, string $attributeCode):
}
/**
+ * Load first variation
+ *
* @param string $attributeCode swatch_image|image
* @param ModelProduct $configurableProduct
* @param array $requiredAttributes
@@ -204,6 +208,8 @@ private function loadFirstVariation($attributeCode, ModelProduct $configurablePr
}
/**
+ * Load first variation with swatch image
+ *
* @param Product $configurableProduct
* @param array $requiredAttributes
* @return bool|Product
@@ -214,6 +220,8 @@ public function loadFirstVariationWithSwatchImage(Product $configurableProduct,
}
/**
+ * Load first variation with image
+ *
* @param Product $configurableProduct
* @param array $requiredAttributes
* @return bool|Product
@@ -269,6 +277,8 @@ public function loadVariationByFallback(Product $parentProduct, array $attribute
}
/**
+ * Add filter by attribute
+ *
* @param ProductCollection $productCollection
* @param array $attributes
* @return void
@@ -281,6 +291,8 @@ private function addFilterByAttributes(ProductCollection $productCollection, arr
}
/**
+ * Add filter by parent
+ *
* @param ProductCollection $productCollection
* @param integer $parentId
* @return void
@@ -299,6 +311,7 @@ private function addFilterByParent(ProductCollection $productCollection, $parent
/**
* Method getting full media gallery for current Product
+ *
* Array structure: [
* ['image'] => 'http://url/pub/media/catalog/product/2/0/blabla.jpg',
* ['mediaGallery'] => [
@@ -307,7 +320,9 @@ private function addFilterByParent(ProductCollection $productCollection, $parent
* ...,
* ]
* ]
+ *
* @param ModelProduct $product
+ *
* @return array
*/
public function getProductMediaGallery(ModelProduct $product)
@@ -339,6 +354,8 @@ public function getProductMediaGallery(ModelProduct $product)
}
/**
+ * Get all size images
+ *
* @param string $imageFile
* @return array
*/
@@ -476,6 +493,8 @@ private function setCachedSwatches(array $optionIds, array $swatches)
}
/**
+ * Add fallback options
+ *
* @param array $fallbackValues
* @param array $swatches
* @return array
@@ -488,6 +507,8 @@ private function addFallbackOptions(array $fallbackValues, array $swatches)
&& $swatches[$optionId]['type'] === $optionsArray[$currentStoreId]['type']
) {
$swatches[$optionId] = $optionsArray[$currentStoreId];
+ } elseif (isset($optionsArray[$currentStoreId])) {
+ $swatches[$optionId] = $optionsArray[$currentStoreId];
} elseif (isset($optionsArray[self::DEFAULT_STORE_ID])) {
$swatches[$optionId] = $optionsArray[self::DEFAULT_STORE_ID];
}
diff --git a/app/code/Magento/Tax/Test/Mftf/Test/AdminTaxReportGridTest.xml b/app/code/Magento/Tax/Test/Mftf/Test/AdminTaxReportGridTest.xml
index 68fe8087c4fc..05b85a3a55cb 100644
--- a/app/code/Magento/Tax/Test/Mftf/Test/AdminTaxReportGridTest.xml
+++ b/app/code/Magento/Tax/Test/Mftf/Test/AdminTaxReportGridTest.xml
@@ -17,6 +17,9 @@
+
+
+
diff --git a/app/code/Magento/Tax/Test/Mftf/Test/StorefrontTaxQuoteCartTest.xml b/app/code/Magento/Tax/Test/Mftf/Test/StorefrontTaxQuoteCartTest.xml
index 3b741e7bf79e..b87ab626d397 100644
--- a/app/code/Magento/Tax/Test/Mftf/Test/StorefrontTaxQuoteCartTest.xml
+++ b/app/code/Magento/Tax/Test/Mftf/Test/StorefrontTaxQuoteCartTest.xml
@@ -17,6 +17,9 @@
+
+
+
diff --git a/app/code/Magento/Ui/view/base/web/js/form/element/country.js b/app/code/Magento/Ui/view/base/web/js/form/element/country.js
index f64a80bf535e..c75301018e19 100644
--- a/app/code/Magento/Ui/view/base/web/js/form/element/country.js
+++ b/app/code/Magento/Ui/view/base/web/js/form/element/country.js
@@ -49,7 +49,7 @@ define([
if (!this.value()) {
defaultCountry = _.filter(result, function (item) {
- return item['is_default'] && item['is_default'].includes(value);
+ return item['is_default'] && _.contains(item['is_default'], value);
});
if (defaultCountry.length) {
diff --git a/app/code/Magento/Ui/view/base/web/js/form/element/wysiwyg.js b/app/code/Magento/Ui/view/base/web/js/form/element/wysiwyg.js
index 6507da5e1a93..29a0cc0f0c29 100644
--- a/app/code/Magento/Ui/view/base/web/js/form/element/wysiwyg.js
+++ b/app/code/Magento/Ui/view/base/web/js/form/element/wysiwyg.js
@@ -20,7 +20,6 @@ define([
return Abstract.extend({
defaults: {
elementSelector: 'textarea',
- value: '',
$wysiwygEditorButton: '',
links: {
value: '${ $.provider }:${ $.dataScope }'
diff --git a/app/code/Magento/User/Controller/Adminhtml/User/Role/SaveRole.php b/app/code/Magento/User/Controller/Adminhtml/User/Role/SaveRole.php
index acd3430f5c25..97ecb778b8cb 100644
--- a/app/code/Magento/User/Controller/Adminhtml/User/Role/SaveRole.php
+++ b/app/code/Magento/User/Controller/Adminhtml/User/Role/SaveRole.php
@@ -11,6 +11,7 @@
use Magento\Authorization\Model\Acl\Role\Group as RoleGroup;
use Magento\Authorization\Model\UserContextInterface;
use Magento\Framework\Controller\ResultFactory;
+use Magento\Framework\Exception\LocalizedException;
use Magento\Framework\Exception\State\UserLockedException;
use Magento\Security\Model\SecurityCookie;
@@ -77,10 +78,8 @@ public function execute()
$rid = $this->getRequest()->getParam('role_id', false);
$resource = $this->getRequest()->getParam('resource', false);
- $roleUsers = $this->getRequest()->getParam('in_role_user', null);
- parse_str($roleUsers, $roleUsers);
- $roleUsers = array_keys($roleUsers);
-
+ $oldRoleUsers = $this->parseRequestVariable('in_role_user_old');
+ $roleUsers = $this->parseRequestVariable('in_role_user');
$isAll = $this->getRequest()->getParam('all');
if ($isAll) {
$resource = [$this->_objectManager->get(\Magento\Framework\Acl\RootResource::class)->getId()];
@@ -106,13 +105,9 @@ public function execute()
$role->save();
$this->_rulesFactory->create()->setRoleId($role->getId())->setResources($resource)->saveRel();
-
- $this->processPreviousUsers($role);
-
- foreach ($roleUsers as $nRuid) {
- $this->_addUserToRole($nRuid, $role->getId());
- }
- $this->messageManager->addSuccess(__('You saved the role.'));
+ $this->processPreviousUsers($role, $oldRoleUsers);
+ $this->processCurrentUsers($role, $roleUsers);
+ $this->messageManager->addSuccessMessage(__('You saved the role.'));
} catch (UserLockedException $e) {
$this->_auth->logout();
$this->getSecurityCookie()->setLogoutReasonCookie(
@@ -120,14 +115,14 @@ public function execute()
);
return $resultRedirect->setPath('*');
} catch (\Magento\Framework\Exception\AuthenticationException $e) {
- $this->messageManager->addError(
+ $this->messageManager->addErrorMessage(
__('The password entered for the current user is invalid. Verify the password and try again.')
);
return $this->saveDataToSessionAndRedirect($role, $this->getRequest()->getPostValue(), $resultRedirect);
} catch (\Magento\Framework\Exception\LocalizedException $e) {
- $this->messageManager->addError($e->getMessage());
+ $this->messageManager->addErrorMessage($e->getMessage());
} catch (\Exception $e) {
- $this->messageManager->addError(__('An error occurred while saving this role.'));
+ $this->messageManager->addErrorMessage(__('An error occurred while saving this role.'));
}
return $resultRedirect->setPath('*/*/');
@@ -151,19 +146,30 @@ protected function validateUser()
return $this;
}
+ /**
+ * Parse request value from string
+ *
+ * @param string $paramName
+ * @return array
+ */
+ private function parseRequestVariable($paramName): array
+ {
+ $value = $this->getRequest()->getParam($paramName, null);
+ parse_str($value, $value);
+ $value = array_keys($value);
+ return $value;
+ }
+
/**
* Process previous users
*
* @param \Magento\Authorization\Model\Role $role
+ * @param array $oldRoleUsers
* @return $this
* @throws \Exception
*/
- protected function processPreviousUsers(\Magento\Authorization\Model\Role $role)
+ protected function processPreviousUsers(\Magento\Authorization\Model\Role $role, array $oldRoleUsers): self
{
- $oldRoleUsers = $this->getRequest()->getParam('in_role_user_old');
- parse_str($oldRoleUsers, $oldRoleUsers);
- $oldRoleUsers = array_keys($oldRoleUsers);
-
foreach ($oldRoleUsers as $oUid) {
$this->_deleteUserFromRole($oUid, $role->getId());
}
@@ -171,12 +177,33 @@ protected function processPreviousUsers(\Magento\Authorization\Model\Role $role)
return $this;
}
+ /**
+ * Processes users to be assigned to roles
+ *
+ * @param \Magento\Authorization\Model\Role $role
+ * @param array $roleUsers
+ * @return $this
+ */
+ private function processCurrentUsers(\Magento\Authorization\Model\Role $role, array $roleUsers): self
+ {
+ foreach ($roleUsers as $nRuid) {
+ try {
+ $this->_addUserToRole($nRuid, $role->getId());
+ } catch (LocalizedException $e) {
+ $this->messageManager->addErrorMessage($e->getMessage());
+ }
+ }
+
+ return $this;
+ }
+
/**
* Assign user to role
*
* @param int $userId
* @param int $roleId
* @return bool
+ * @throws LocalizedException
*/
protected function _addUserToRole($userId, $roleId)
{
diff --git a/app/code/Magento/User/Test/Mftf/ActionGroup/AdminCreateUserActionGroup.xml b/app/code/Magento/User/Test/Mftf/ActionGroup/AdminCreateUserActionGroup.xml
index de887d2de670..9a0fa4a20579 100644
--- a/app/code/Magento/User/Test/Mftf/ActionGroup/AdminCreateUserActionGroup.xml
+++ b/app/code/Magento/User/Test/Mftf/ActionGroup/AdminCreateUserActionGroup.xml
@@ -31,4 +31,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/code/Magento/User/Test/Mftf/ActionGroup/AdminDeleteCreatedUserActionGroup.xml b/app/code/Magento/User/Test/Mftf/ActionGroup/AdminDeleteCreatedUserActionGroup.xml
new file mode 100644
index 000000000000..7f1ed3be1ca5
--- /dev/null
+++ b/app/code/Magento/User/Test/Mftf/ActionGroup/AdminDeleteCreatedUserActionGroup.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/code/Magento/Widget/Block/BlockInterface.php b/app/code/Magento/Widget/Block/BlockInterface.php
index ddf810f433f3..4f795d949b8c 100644
--- a/app/code/Magento/Widget/Block/BlockInterface.php
+++ b/app/code/Magento/Widget/Block/BlockInterface.php
@@ -19,6 +19,7 @@ interface BlockInterface
{
/**
* Add data to the widget.
+ *
* Retains previous data in the widget.
*
* @param array $arr
@@ -35,7 +36,7 @@ public function addData(array $arr);
*
* @param string|array $key
* @param mixed $value
- * @return \Magento\Framework\DataObject
+ * @return $this
*/
public function setData($key, $value = null);
}
diff --git a/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/header/actions-group/_search.less b/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/header/actions-group/_search.less
index 5e65faec60d4..ddc3cb455402 100644
--- a/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/header/actions-group/_search.less
+++ b/app/design/adminhtml/Magento/backend/Magento_Backend/web/css/source/module/header/actions-group/_search.less
@@ -153,7 +153,7 @@
background-color: transparent;
border: 1px solid transparent;
font-size: @search-global-input__font-size;
- height: @search-global-input__height;
+ height: @search-global-input__height + .2;
padding: @search-global-input__padding-top @search-global-input__padding-side @search-global-input__padding-bottom;
position: absolute;
right: 0;
diff --git a/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module/checkout/_shipping.less b/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module/checkout/_shipping.less
index 0a463a95e318..158cb0ebc0ed 100644
--- a/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module/checkout/_shipping.less
+++ b/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module/checkout/_shipping.less
@@ -98,11 +98,6 @@
text-align: center;
top: 0;
}
-
- .action-select-shipping-item {
- &:extend(.abs-no-display-s all);
- visibility: hidden;
- }
}
}
diff --git a/app/design/frontend/Magento/luma/Magento_Customer/layout/default.xml b/app/design/frontend/Magento/luma/Magento_Customer/layout/default.xml
index 1f8c162ef923..4b08bf28ece9 100644
--- a/app/design/frontend/Magento/luma/Magento_Customer/layout/default.xml
+++ b/app/design/frontend/Magento/luma/Magento_Customer/layout/default.xml
@@ -15,11 +15,6 @@
-
diff --git a/app/etc/di.xml b/app/etc/di.xml
index b374645240ff..1f70db5680f3 100755
--- a/app/etc/di.xml
+++ b/app/etc/di.xml
@@ -146,6 +146,7 @@
+
diff --git a/composer.json b/composer.json
index ca345c189741..3a285f4e9a79 100644
--- a/composer.json
+++ b/composer.json
@@ -31,7 +31,7 @@
"lib-libxml": "*",
"braintree/braintree_php": "3.35.0",
"colinmollenhour/cache-backend-file": "~1.4.1",
- "colinmollenhour/cache-backend-redis": "1.10.5",
+ "colinmollenhour/cache-backend-redis": "1.10.6",
"colinmollenhour/credis": "1.10.0",
"colinmollenhour/php-redis-session-abstract": "~1.4.0",
"composer/composer": "^1.6",
diff --git a/composer.lock b/composer.lock
index c6d14eb38bc6..d4ac4fc091bb 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "49fe82043cd4ae944939b6cceade1d1b",
+ "content-hash": "78153b5c8150c0d145b3372a534a45eb",
"packages": [
{
"name": "braintree/braintree_php",
@@ -88,16 +88,16 @@
},
{
"name": "colinmollenhour/cache-backend-redis",
- "version": "1.10.5",
+ "version": "1.10.6",
"source": {
"type": "git",
"url": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis.git",
- "reference": "91d949e28d939e607484a4bbf9307cff5afa689b"
+ "reference": "cc941a5f4cc017e11d3eab9061811ba9583ed6bf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/colinmollenhour/Cm_Cache_Backend_Redis/zipball/91d949e28d939e607484a4bbf9307cff5afa689b",
- "reference": "91d949e28d939e607484a4bbf9307cff5afa689b",
+ "url": "https://api.github.com/repos/colinmollenhour/Cm_Cache_Backend_Redis/zipball/cc941a5f4cc017e11d3eab9061811ba9583ed6bf",
+ "reference": "cc941a5f4cc017e11d3eab9061811ba9583ed6bf",
"shasum": ""
},
"require": {
@@ -120,7 +120,7 @@
],
"description": "Zend_Cache backend using Redis with full support for tags.",
"homepage": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis",
- "time": "2018-05-15T16:02:25+00:00"
+ "time": "2018-09-24T16:02:07+00:00"
},
{
"name": "colinmollenhour/credis",
diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/CategoryTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/CategoryTest.php
index eff2e96f4b11..a3c6298c70a5 100644
--- a/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/CategoryTest.php
+++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/CategoryTest.php
@@ -141,8 +141,7 @@ public function testCategoryProducts()
available_sort_by
level
}
- image
- image_label
+ image { url, label }
meta_description
meta_keyword
meta_title
@@ -225,16 +224,12 @@ public function testCategoryProducts()
}
short_description
sku
- small_image {
- path
- }
- small_image_label
+ small_image { url, label }
+ thumbnail { url, label }
special_from_date
special_price
special_to_date
swatch_image
- thumbnail
- thumbnail_label
tier_price
tier_prices {
customer_group_id
diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/ProductImageTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/ProductImageTest.php
new file mode 100644
index 000000000000..b55c6c1d9146
--- /dev/null
+++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/ProductImageTest.php
@@ -0,0 +1,137 @@
+objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+ }
+
+ /**
+ * @magentoApiDataFixture Magento/Catalog/_files/product_with_image.php
+ */
+ public function testProductWithBaseImage()
+ {
+ $productSku = 'simple';
+ $query = <<graphQlQuery($query);
+
+ self::assertContains('magento_image.jpg', $response['products']['items'][0]['image']['url']);
+ self::assertTrue($this->checkImageExists($response['products']['items'][0]['image']['url']));
+ self::assertEquals('Image Alt Text', $response['products']['items'][0]['image']['label']);
+ }
+
+ /**
+ * @magentoApiDataFixture Magento/Catalog/_files/product_simple.php
+ */
+ public function testProductWithoutBaseImage()
+ {
+ $this->markTestIncomplete('https://github.com/magento/graphql-ce/issues/239');
+ $productSku = 'simple';
+ $query = <<graphQlQuery($query);
+ self::assertEquals('Simple Product', $response['products']['items'][0]['image']['label']);
+ }
+
+ /**
+ * @magentoApiDataFixture Magento/Catalog/_files/product_with_image.php
+ */
+ public function testProductWithSmallImage()
+ {
+ $productSku = 'simple';
+ $query = <<graphQlQuery($query);
+
+ self::assertContains('magento_image.jpg', $response['products']['items'][0]['small_image']['url']);
+ self::assertTrue($this->checkImageExists($response['products']['items'][0]['small_image']['url']));
+ self::assertEquals('Image Alt Text', $response['products']['items'][0]['small_image']['label']);
+ }
+
+ /**
+ * @magentoApiDataFixture Magento/Catalog/_files/product_with_image.php
+ */
+ public function testProductWithThumbnail()
+ {
+ $productSku = 'simple';
+ $query = <<graphQlQuery($query);
+
+ self::assertContains('magento_image.jpg', $response['products']['items'][0]['thumbnail']['url']);
+ self::assertTrue($this->checkImageExists($response['products']['items'][0]['thumbnail']['url']));
+ self::assertEquals('Image Alt Text', $response['products']['items'][0]['thumbnail']['label']);
+ }
+
+ /**
+ * @param string $url
+ * @return bool
+ */
+ private function checkImageExists(string $url): bool
+ {
+ $connection = curl_init($url);
+ curl_setopt($connection, CURLOPT_HEADER, true);
+ curl_setopt($connection, CURLOPT_NOBODY, true);
+ curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1);
+ curl_exec($connection);
+ $responseStatus = curl_getinfo($connection, CURLINFO_HTTP_CODE);
+
+ return $responseStatus === 200 ? true : false;
+ }
+}
diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/ProductViewTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/ProductViewTest.php
index 2c003a67598d..791696b2fa29 100644
--- a/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/ProductViewTest.php
+++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/ProductViewTest.php
@@ -53,8 +53,7 @@ public function testQueryAllFieldsSimpleProduct()
available_sort_by
level
}
- image
- image_label
+ image { url, label }
meta_description
meta_keyword
meta_title
@@ -205,16 +204,12 @@ public function testQueryAllFieldsSimpleProduct()
}
short_description
sku
- small_image {
- path
- }
- small_image_label
+ small_image{ url, label }
+ thumbnail { url, label }
special_from_date
special_price
special_to_date
- swatch_image
- thumbnail
- thumbnail_label
+ swatch_image
tier_price
tier_prices
{
@@ -304,8 +299,7 @@ public function testQueryMediaGalleryEntryFieldsSimpleProduct()
description
gift_message_available
id
- image
- image_label
+ image {url, label}
meta_description
meta_keyword
meta_title
@@ -454,16 +448,12 @@ public function testQueryMediaGalleryEntryFieldsSimpleProduct()
}
short_description
sku
- small_image {
- path
- }
- small_image_label
+ small_image { url, label }
special_from_date
special_price
special_to_date
swatch_image
- thumbnail
- thumbnail_label
+ thumbnail { url, label }
tier_price
tier_prices
{
diff --git a/dev/tests/functional/tests/app/Magento/Bundle/Test/Block/Adminhtml/Product/Composite/Configure.xml b/dev/tests/functional/tests/app/Magento/Bundle/Test/Block/Adminhtml/Product/Composite/Configure.xml
index e4c0dce0c5b1..18aedfa97f9e 100644
--- a/dev/tests/functional/tests/app/Magento/Bundle/Test/Block/Adminhtml/Product/Composite/Configure.xml
+++ b/dev/tests/functional/tests/app/Magento/Bundle/Test/Block/Adminhtml/Product/Composite/Configure.xml
@@ -7,7 +7,6 @@
-->
-
div[contains(@class,"field choice") and label[contains(.,"%product_name%")]]//input
xpath
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/AddCompareProductsTest.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/AddCompareProductsTest.php
index c700dbc362cb..c40387aba460 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/AddCompareProductsTest.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/AddCompareProductsTest.php
@@ -76,7 +76,7 @@ public function tearDown()
{
$this->cmsIndex->open();
$this->cmsIndex->getLinksBlock()->openLink("Compare Products");
- for ($i = 1; $i <= count($this->products); $i++) {
+ for ($i = 1, $count = count($this->products); $i <= $count; $i++) {
$this->catalogProductCompare->getCompareProductsBlock()->removeProduct();
}
}
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertCartIsEmpty.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertCartIsEmpty.php
index c2839651b582..cf05079b0a07 100644
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertCartIsEmpty.php
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertCartIsEmpty.php
@@ -3,10 +3,10 @@
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
+declare(strict_types=1);
namespace Magento\Checkout\Test\Constraint;
-use Magento\Checkout\Test\Fixture\Cart;
use Magento\Checkout\Test\Page\CheckoutCart;
use Magento\Mtf\Client\BrowserInterface;
use Magento\Mtf\Constraint\AbstractConstraint;
@@ -30,8 +30,10 @@ class AssertCartIsEmpty extends AbstractConstraint
* @param BrowserInterface $browser
* @return void
*/
- public function processAssert(CheckoutCart $checkoutCart, BrowserInterface $browser)
- {
+ public function processAssert(
+ CheckoutCart $checkoutCart,
+ BrowserInterface $browser
+ ): void {
$checkoutCart->open();
$cartEmptyBlock = $checkoutCart->getCartEmptyBlock();
@@ -42,10 +44,12 @@ public function processAssert(CheckoutCart $checkoutCart, BrowserInterface $brow
);
$cartEmptyBlock->clickLinkToMainPage();
- \PHPUnit\Framework\Assert::assertEquals(
+ $this->assertUrlEqual(
$_ENV['app_frontend_url'],
$browser->getUrl(),
- 'Wrong link to main page on empty cart page.'
+ true,
+ 'Wrong link to main page on empty cart page: expected - ' . $_ENV['app_frontend_url']
+ . ', actual - ' . $browser->getUrl()
);
}
@@ -58,4 +62,31 @@ public function toString()
{
return 'Shopping Cart is empty.';
}
+
+ /**
+ * Asserts that two urls are equal
+ *
+ * @param string $expectedUrl
+ * @param string $actualUrl
+ * @param bool $ignoreScheme
+ * @param string $message
+ * @return void
+ */
+ private function assertUrlEqual(
+ string $expectedUrl,
+ string $actualUrl,
+ bool $ignoreScheme = false,
+ string $message = ''
+ ): void {
+ $urlArray1 = parse_url($expectedUrl);
+ $urlArray2 = parse_url($actualUrl);
+ if ($ignoreScheme) {
+ unset($urlArray1['scheme']);
+ unset($urlArray2['scheme']);
+ }
+ \PHPUnit\Framework\Assert::assertTrue(
+ $urlArray1 === $urlArray2,
+ $message
+ );
+ }
}
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/OnePageCheckoutOfflinePaymentMethodsTest.xml b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/OnePageCheckoutOfflinePaymentMethodsTest.xml
index 7c12b546d135..361c5031f331 100644
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/OnePageCheckoutOfflinePaymentMethodsTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/OnePageCheckoutOfflinePaymentMethodsTest.xml
@@ -22,7 +22,6 @@
- MAGETWO-59816: Redirect works improperly in a browser incognito mode
severity:S1
catalogProductSimple::default
register_customer
@@ -57,7 +56,7 @@
- stable:no, severity:S0
+ severity:S0
catalogProductSimple::default
active_sales_rule_for_all_groups
default
@@ -79,7 +78,7 @@
- severity:S1, stable:no
+ severity:S1
catalogProductSimple::product_with_qty_25
0
out of stock
@@ -92,7 +91,7 @@
- 375.00
banktransfer
- Precessing
+ Processing
Back, Send Email, Cancel, Hold, Invoice, Edit
banktransfer_specificcountry_gb, can_subtract_and_can_back_in_stock
@@ -102,10 +101,8 @@
- MAGETWO-66737: Magento\Checkout\Test\TestCase\OnePageCheckoutTest with OnePageCheckoutTestVariation3 and 4 is not stable
- MAGETWO-95659: Fix and Unskip MTF OnePageCheckoutOfflinePaymentMethodsTest
test_type:acceptance_test, test_type:extended_acceptance_test, severity:S0
catalogProductSimple::product_with_special_price
configurableProduct::product_with_special_price
@@ -211,7 +208,7 @@
- stable:no, severity:S1
+ severity:S1
catalogProductSimple::simple_with_tier_price_and_order_qty_3
default
login
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/OnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/OnePageCheckoutTest.xml
index 5c05d4a84000..0edd8f4183f3 100644
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/OnePageCheckoutTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/OnePageCheckoutTest.xml
@@ -7,7 +7,7 @@
-->
-
+
severity:S1
catalogProductSimple::default
customer_UK_US_addresses
@@ -49,10 +49,6 @@
-
- stable:no
- MAGETWO-94169: [MTF] - OnePageCheckoutUsingNonDefaultAddress_0 fails on 2.3-develop
-
severity:S1
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/ShoppingCartPerCustomerTest.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/ShoppingCartPerCustomerTest.php
index bdd54ce3559f..7365195d0cd4 100644
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/ShoppingCartPerCustomerTest.php
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/ShoppingCartPerCustomerTest.php
@@ -95,7 +95,7 @@ public function test(
$customers = [];
$cartFixtures = [];
- for ($i = 0; $i < count($checkoutData); $i++) {
+ for ($i = 0, $count = count($checkoutData); $i < $count; $i++) {
$customers[$i] = $this->fixtureFactory->createByCode('customer', ['dataset' => $customerDataset]);
$customers[$i]->persist();
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestStep/SelectCheckoutMethodStep.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestStep/SelectCheckoutMethodStep.php
index d951d84bab78..f79cf8d7eb7f 100644
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestStep/SelectCheckoutMethodStep.php
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestStep/SelectCheckoutMethodStep.php
@@ -59,6 +59,13 @@ class SelectCheckoutMethodStep implements TestStepInterface
*/
private $customerAccountCreatePage;
+ /**
+ * Proceed to checkout from minicart step
+ *
+ * @var proceedToCheckoutFromMiniShoppingCartStep
+ */
+ private $proceedToCheckoutFromMiniShoppingCartStep;
+
/**
* @constructor
* @param CheckoutOnepage $checkoutOnepage
@@ -66,6 +73,7 @@ class SelectCheckoutMethodStep implements TestStepInterface
* @param Customer $customer
* @param LogoutCustomerOnFrontendStep $logoutCustomerOnFrontend
* @param ClickProceedToCheckoutStep $clickProceedToCheckoutStep
+ * @param ProceedToCheckoutFromMiniShoppingCartStep $proceedToCheckoutFromMiniShoppingCartStep
* @param string $checkoutMethod
*/
public function __construct(
@@ -74,6 +82,7 @@ public function __construct(
Customer $customer,
LogoutCustomerOnFrontendStep $logoutCustomerOnFrontend,
ClickProceedToCheckoutStep $clickProceedToCheckoutStep,
+ ProceedToCheckoutFromMiniShoppingCartStep $proceedToCheckoutFromMiniShoppingCartStep,
$checkoutMethod
) {
$this->checkoutOnepage = $checkoutOnepage;
@@ -82,6 +91,7 @@ public function __construct(
$this->logoutCustomerOnFrontend = $logoutCustomerOnFrontend;
$this->clickProceedToCheckoutStep = $clickProceedToCheckoutStep;
$this->checkoutMethod = $checkoutMethod;
+ $this->proceedToCheckoutFromMiniShoppingCartStep = $proceedToCheckoutFromMiniShoppingCartStep;
}
/**
@@ -129,6 +139,7 @@ private function processRegister()
if ($this->checkoutMethod === 'register_before_checkout') {
$this->checkoutOnepage->getAuthenticationPopupBlock()->createAccount();
$this->customerAccountCreatePage->getRegisterForm()->registerCustomer($this->customer);
+ $this->proceedToCheckoutFromMiniShoppingCartStep->run();
}
}
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Composite/Configure.xml b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Composite/Configure.xml
index a66753c2adf2..f7bd155fd2d5 100644
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Composite/Configure.xml
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Composite/Configure.xml
@@ -7,7 +7,6 @@
-->
-
//div[@class="product-options"]//label[.="%s"]//following-sibling::*//select
xpath
diff --git a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Block/Adminhtml/Product/Composite/Configure.xml b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Block/Adminhtml/Product/Composite/Configure.xml
index 7a7a6d2124cb..2f721f05f5ee 100644
--- a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Block/Adminhtml/Product/Composite/Configure.xml
+++ b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Block/Adminhtml/Product/Composite/Configure.xml
@@ -7,7 +7,6 @@
-->
-
//*[@id="downloadable-links-list"]/*[contains(.,"%link_name%")]//input
xpath
diff --git a/dev/tests/functional/tests/app/Magento/ImportExport/Test/Constraint/AssertImportSuccessMessage.php b/dev/tests/functional/tests/app/Magento/ImportExport/Test/Constraint/AssertImportSuccessMessage.php
index ca75e3b203f6..a5408426514f 100644
--- a/dev/tests/functional/tests/app/Magento/ImportExport/Test/Constraint/AssertImportSuccessMessage.php
+++ b/dev/tests/functional/tests/app/Magento/ImportExport/Test/Constraint/AssertImportSuccessMessage.php
@@ -28,7 +28,7 @@ class AssertImportSuccessMessage extends AbstractConstraint
public function processAssert(AdminImportIndex $adminImportIndex)
{
$validationMessage = $adminImportIndex->getMessagesBlock()->getImportResultMessage();
- \PHPUnit\Framework\Assert::assertEquals(
+ \PHPUnit\Framework\Assert::assertStringEndsWith(
self::SUCCESS_MESSAGE,
$validationMessage,
'Wrong validation result is displayed.'
diff --git a/dev/tests/functional/tests/app/Magento/Multishipping/Test/TestStep/FillShippingInformationStep.php b/dev/tests/functional/tests/app/Magento/Multishipping/Test/TestStep/FillShippingInformationStep.php
index 67c1826f40a2..2c41ce3d8b4e 100644
--- a/dev/tests/functional/tests/app/Magento/Multishipping/Test/TestStep/FillShippingInformationStep.php
+++ b/dev/tests/functional/tests/app/Magento/Multishipping/Test/TestStep/FillShippingInformationStep.php
@@ -58,7 +58,7 @@ public function __construct(
public function run()
{
$shippingMethods = [];
- for ($i = 0; $i < count($this->customer->getAddress()); $i++) {
+ for ($i = 0, $count = count($this->customer->getAddress()); $i < $count; $i++) {
$shippingMethods[] = $this->shippingMethod;
}
$this->shippingInformation->getShippingBlock()->selectShippingMethod($shippingMethods);
diff --git a/dev/tests/functional/tests/app/Magento/Reports/Test/TestCase/ProductsInCartReportEntityTest.xml b/dev/tests/functional/tests/app/Magento/Reports/Test/TestCase/ProductsInCartReportEntityTest.xml
index fd0d16996716..e13d31342dba 100644
--- a/dev/tests/functional/tests/app/Magento/Reports/Test/TestCase/ProductsInCartReportEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Reports/Test/TestCase/ProductsInCartReportEntityTest.xml
@@ -8,14 +8,12 @@
- MQE-1160
default
1
0
- MQE-1160
default
2
1
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertProductsQtyAfterOrderCancel.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertProductsQtyAfterOrderCancel.php
index 28259c8f6d93..24027cacd9e4 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertProductsQtyAfterOrderCancel.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Constraint/AssertProductsQtyAfterOrderCancel.php
@@ -52,7 +52,7 @@ public function processAssert(
AssertProductForm $assertProductForm,
AssertConfigurableProductForm $assertConfigurableProductForm
) {
- for ($i = 0; $i < count($order->getEntityId()['products']); $i++) {
+ for ($i = 0, $count = count($order->getEntityId()['products']); $i < $count; $i++) {
$product = $order->getEntityId()['products'][$i];
$productData = $product->getData();
if ($product instanceof BundleProduct) {
diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Model/DesignTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Model/DesignTest.php
index 33f26302394f..38960ab66399 100644
--- a/dev/tests/integration/testsuite/Magento/Catalog/Model/DesignTest.php
+++ b/dev/tests/integration/testsuite/Magento/Catalog/Model/DesignTest.php
@@ -32,8 +32,12 @@ public function testApplyCustomDesign($theme)
$design = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
\Magento\Framework\View\DesignInterface::class
);
+ $translate = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
+ \Magento\Framework\TranslateInterface::class
+ );
$this->assertEquals('package', $design->getDesignTheme()->getPackageCode());
$this->assertEquals('theme', $design->getDesignTheme()->getThemeCode());
+ $this->assertEquals('themepackage/theme', $translate->getTheme());
}
/**
diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Model/Layer/Filter/Price/AlgorithmBaseTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Model/Layer/Filter/Price/AlgorithmBaseTest.php
index 4b69bcd4615d..e3a948d6c63d 100644
--- a/dev/tests/integration/testsuite/Magento/Catalog/Model/Layer/Filter/Price/AlgorithmBaseTest.php
+++ b/dev/tests/integration/testsuite/Magento/Catalog/Model/Layer/Filter/Price/AlgorithmBaseTest.php
@@ -112,7 +112,7 @@ public function testPricesSegmentation($categoryId, array $entityIds, array $int
$items = $model->calculateSeparators($interval);
$this->assertEquals(array_keys($intervalItems), array_keys($items));
- for ($i = 0; $i < count($intervalItems); ++$i) {
+ for ($i = 0, $count = count($intervalItems); $i < $count; ++$i) {
$this->assertInternalType('array', $items[$i]);
$this->assertEquals($intervalItems[$i]['from'], $items[$i]['from']);
$this->assertEquals($intervalItems[$i]['to'], $items[$i]['to']);
diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ProductTest.php b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ProductTest.php
index a48b5d43e501..2da29ec807d5 100644
--- a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ProductTest.php
+++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ProductTest.php
@@ -958,6 +958,7 @@ public function testInvalidSkuLink()
$errors = $this->_model->setParameters(
[
'behavior' => \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND,
+ Import::FIELD_NAME_VALIDATION_STRATEGY => null,
'entity' => 'catalog_product'
]
)->setSource(
diff --git a/dev/tests/integration/testsuite/Magento/Integration/Block/Adminhtml/System/Config/OauthSectionTest.php b/dev/tests/integration/testsuite/Magento/Integration/Block/Adminhtml/System/Config/OauthSectionTest.php
new file mode 100644
index 000000000000..ac5d8005180b
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Integration/Block/Adminhtml/System/Config/OauthSectionTest.php
@@ -0,0 +1,25 @@
+dispatch('backend/admin/system_config/edit/section/oauth/');
+ $body = $this->getResponse()->getBody();
+ $this->assertContains('id="oauth_access_token_lifetime-head"', $body);
+ $this->assertContains('id="oauth_cleanup-head"', $body);
+ $this->assertContains('id="oauth_consumer-head"', $body);
+ $this->assertContains('id="oauth_authentication_lock-head"', $body);
+ }
+}
diff --git a/dev/tests/static/framework/tests/unit/testsuite/Magento/Sniffs/Translation/ConstantUsageSniffTest.php b/dev/tests/static/framework/tests/unit/testsuite/Magento/Sniffs/Translation/ConstantUsageSniffTest.php
index 39ad80850dd3..65512653ce3f 100644
--- a/dev/tests/static/framework/tests/unit/testsuite/Magento/Sniffs/Translation/ConstantUsageSniffTest.php
+++ b/dev/tests/static/framework/tests/unit/testsuite/Magento/Sniffs/Translation/ConstantUsageSniffTest.php
@@ -67,7 +67,7 @@ private function tokenizeString($fileContent)
$lineNumber = 1;
$tokens = token_get_all($fileContent);
$snifferTokens = [];
- for ($i = 0; $i < count($tokens); $i++) {
+ for ($i = 0, $count = count($tokens); $i < $count; $i++) {
$content = is_array($tokens[$i]) ? $tokens[$i][1] : $tokens[$i];
$snifferTokens[$i]['line'] = $lineNumber;
$snifferTokens[$i]['content'] = $content;
diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/ObsoleteCodeTest.php b/dev/tests/static/testsuite/Magento/Test/Legacy/ObsoleteCodeTest.php
index 2a6079d619d4..fe15c06bdea4 100644
--- a/dev/tests/static/testsuite/Magento/Test/Legacy/ObsoleteCodeTest.php
+++ b/dev/tests/static/testsuite/Magento/Test/Legacy/ObsoleteCodeTest.php
@@ -501,8 +501,8 @@ private function _checkConstantWithClasspath($constant, $class, $replacement, $c
{
$classPathParts = explode('\\', $class);
$classPartialPath = '';
- for ($i = count($classPathParts) - 1; $i >= 0; $i--) {
- if ($i === (count($classPathParts) - 1)) {
+ for ($count = count($classPathParts), $i = $count - 1; $i >= 0; $i--) {
+ if ($i === ($count - 1)) {
$classPartialPath = $classPathParts[$i] . $classPartialPath;
} else {
$classPartialPath = $classPathParts[$i] . '\\' . $classPartialPath;
diff --git a/lib/internal/Magento/Framework/App/Language/Dictionary.php b/lib/internal/Magento/Framework/App/Language/Dictionary.php
index 294490a665cb..d9a5ccb00d89 100644
--- a/lib/internal/Magento/Framework/App/Language/Dictionary.php
+++ b/lib/internal/Magento/Framework/App/Language/Dictionary.php
@@ -111,7 +111,9 @@ public function getDictionary($languageCode)
/** @var Config $languageConfig */
$languageConfig = $packInfo['language'];
$dictionary = $this->readPackCsv($languageConfig->getVendor(), $languageConfig->getPackage());
- $result = array_merge($result, $dictionary);
+ foreach ($dictionary as $key => $value) {
+ $result[$key] = $value;
+ }
}
return $result;
}
diff --git a/lib/internal/Magento/Framework/App/Test/Unit/Language/DictionaryTest.php b/lib/internal/Magento/Framework/App/Test/Unit/Language/DictionaryTest.php
index 472fff4f4f28..748337443d7a 100644
--- a/lib/internal/Magento/Framework/App/Test/Unit/Language/DictionaryTest.php
+++ b/lib/internal/Magento/Framework/App/Test/Unit/Language/DictionaryTest.php
@@ -52,7 +52,7 @@ public function testDictionaryGetter()
}
$file = $this->getMockForAbstractClass(\Magento\Framework\Filesystem\File\ReadInterface::class);
- for ($i = 0; $i < count($data); $i++) {
+ for ($i = 0, $count = count($data); $i < $count; $i++) {
$file->expects($this->at($i))->method('readCsv')->will($this->returnValue($data[$i]));
}
$file->expects($this->at($i))->method('readCsv')->will($this->returnValue(false));
diff --git a/lib/internal/Magento/Framework/Archive.php b/lib/internal/Magento/Framework/Archive.php
index d43c976431b5..3b706f8e97d0 100644
--- a/lib/internal/Magento/Framework/Archive.php
+++ b/lib/internal/Magento/Framework/Archive.php
@@ -96,14 +96,14 @@ public function pack($source, $destination = 'packed.tgz', $skipRoot = false)
{
$archivers = $this->_getArchivers($destination);
$interimSource = '';
- for ($i = 0; $i < count($archivers); $i++) {
- if ($i == count($archivers) - 1) {
+ for ($i = 0, $count = count($archivers); $i < $count; $i++) {
+ if ($i == $count - 1) {
$packed = $destination;
} else {
$packed = dirname($destination) . '/~tmp-' . microtime(true) . $archivers[$i] . '.' . $archivers[$i];
}
$source = $this->_getArchiver($archivers[$i])->pack($source, $packed, $skipRoot);
- if ($interimSource && $i < count($archivers)) {
+ if ($interimSource && $i < $count) {
unlink($interimSource);
}
$interimSource = $source;
diff --git a/lib/internal/Magento/Framework/Cache/Backend/Memcached.php b/lib/internal/Magento/Framework/Cache/Backend/Memcached.php
index c5e7a7e9e7c0..0621c63acbd8 100644
--- a/lib/internal/Magento/Framework/Cache/Backend/Memcached.php
+++ b/lib/internal/Magento/Framework/Cache/Backend/Memcached.php
@@ -5,6 +5,9 @@
*/
namespace Magento\Framework\Cache\Backend;
+/**
+ * Memcached cache model
+ */
class Memcached extends \Zend_Cache_Backend_Memcached implements \Zend_Cache_Backend_ExtendedInterface
{
/**
@@ -46,7 +49,7 @@ public function __construct(array $options = [])
* Returns ID of a specific chunk on the basis of data's ID
*
* @param string $id Main data's ID
- * @param int $index Particular chunk number to return ID for
+ * @param int $index Particular chunk number to return ID for
* @return string
*/
protected function _getChunkId($id, $index)
@@ -58,7 +61,7 @@ protected function _getChunkId($id, $index)
* Remove saved chunks in case something gone wrong (e.g. some chunk from the chain can not be found)
*
* @param string $id ID of data's info cell
- * @param int $chunks Number of chunks to remove (basically, the number after '{splitted}|')
+ * @param int $chunks Number of chunks to remove (basically, the number after '{splitted}|')
* @return null
*/
protected function _cleanTheMess($id, $chunks)
@@ -84,7 +87,7 @@ public function save($data, $id, $tags = [], $specificLifetime = false)
if (is_string($data) && strlen($data) > $this->_options['slab_size']) {
$dataChunks = str_split($data, $this->_options['slab_size']);
- for ($i = 0, $cnt = count($dataChunks); $i < $cnt; $i++) {
+ for ($i = 0, $count = count($dataChunks); $i < $count; $i++) {
$chunkId = $this->_getChunkId($id, $i);
if (!parent::save($dataChunks[$i], $chunkId, $tags, $specificLifetime)) {
@@ -103,7 +106,7 @@ public function save($data, $id, $tags = [], $specificLifetime = false)
* Load data from memcached, glue from several chunks if it was splitted upon save.
*
* @param string $id @see \Zend_Cache_Backend_Memcached::load()
- * @param bool $doNotTestCacheValidity @see \Zend_Cache_Backend_Memcached::load()
+ * @param bool $doNotTestCacheValidity @see \Zend_Cache_Backend_Memcached::load()
* @return bool|false|string
*/
public function load($id, $doNotTestCacheValidity = false)
diff --git a/lib/internal/Magento/Framework/Filesystem/Driver/Http.php b/lib/internal/Magento/Framework/Filesystem/Driver/Http.php
index 236585fa6138..3668bd17477a 100644
--- a/lib/internal/Magento/Framework/Filesystem/Driver/Http.php
+++ b/lib/internal/Magento/Framework/Filesystem/Driver/Http.php
@@ -12,7 +12,6 @@
/**
* Class Http
- *
*/
class Http extends File
{
@@ -36,6 +35,11 @@ public function isExists($path)
$status = $headers[0];
+ /* Handling 302 redirection */
+ if (strpos($status, '302 Found') !== false && isset($headers[1])) {
+ $status = $headers[1];
+ }
+
if (strpos($status, '200 OK') === false) {
$result = false;
} else {
diff --git a/lib/internal/Magento/Framework/Filter/Template.php b/lib/internal/Magento/Framework/Filter/Template.php
index 10b6a17ea57d..3e5f9bcf0bd2 100644
--- a/lib/internal/Magento/Framework/Filter/Template.php
+++ b/lib/internal/Magento/Framework/Filter/Template.php
@@ -10,6 +10,8 @@
namespace Magento\Framework\Filter;
/**
+ * Template filter
+ *
* @api
*/
class Template implements \Zend_Filter_Interface
@@ -228,8 +230,9 @@ protected function afterFilter($value)
}
/**
- * Adds a callback to run after main filtering has happened. Callback must accept a single argument and return
- * a string of the processed value.
+ * Adds a callback to run after main filtering has happened.
+ *
+ * Callback must accept a single argument and return a string of the processed value.
*
* @param callable $afterFilterCallback
* @return $this
@@ -257,6 +260,8 @@ protected function resetAfterFilterCallbacks()
}
/**
+ * Get var directive
+ *
* @param string[] $construction
* @return string
*/
@@ -302,6 +307,8 @@ public function templateDirective($construction)
}
/**
+ * Get depend directive
+ *
* @param string[] $construction
* @return string
*/
@@ -320,6 +327,8 @@ public function dependDirective($construction)
}
/**
+ * If directive
+ *
* @param string[] $construction
* @return string
*/
@@ -374,7 +383,7 @@ protected function getVariable($value, $default = '{no_value_defined}')
$stackVars = $tokenizer->tokenize();
$result = $default;
$last = 0;
- for ($i = 0; $i < count($stackVars); $i++) {
+ for ($i = 0, $count = count($stackVars); $i < $count; $i++) {
if ($i == 0 && isset($this->templateVars[$stackVars[$i]['name']])) {
// Getting of template value
$stackVars[$i]['variable'] = & $this->templateVars[$stackVars[$i]['name']];
diff --git a/lib/internal/Magento/Framework/Stdlib/DateTime/Timezone.php b/lib/internal/Magento/Framework/Stdlib/DateTime/Timezone.php
index 3c2f20fcc186..cf747bfa2b73 100644
--- a/lib/internal/Magento/Framework/Stdlib/DateTime/Timezone.php
+++ b/lib/internal/Magento/Framework/Stdlib/DateTime/Timezone.php
@@ -85,7 +85,7 @@ public function __construct(
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getDefaultTimezonePath()
{
@@ -93,7 +93,7 @@ public function getDefaultTimezonePath()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getDefaultTimezone()
{
@@ -101,7 +101,7 @@ public function getDefaultTimezone()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getConfigTimezone($scopeType = null, $scopeCode = null)
{
@@ -113,7 +113,7 @@ public function getConfigTimezone($scopeType = null, $scopeCode = null)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getDateFormat($type = \IntlDateFormatter::SHORT)
{
@@ -125,7 +125,7 @@ public function getDateFormat($type = \IntlDateFormatter::SHORT)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getDateFormatWithLongYear()
{
@@ -137,7 +137,7 @@ public function getDateFormatWithLongYear()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getTimeFormat($type = \IntlDateFormatter::SHORT)
{
@@ -149,7 +149,7 @@ public function getTimeFormat($type = \IntlDateFormatter::SHORT)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getDateTimeFormat($type)
{
@@ -157,7 +157,7 @@ public function getDateTimeFormat($type)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function date($date = null, $locale = null, $useTimezone = true, $includeTime = true)
{
@@ -191,7 +191,7 @@ public function date($date = null, $locale = null, $useTimezone = true, $include
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function scopeDate($scope = null, $date = null, $includeTime = false)
{
@@ -204,7 +204,7 @@ public function scopeDate($scope = null, $date = null, $includeTime = false)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function formatDate($date = null, $format = \IntlDateFormatter::SHORT, $showTime = false)
{
@@ -218,7 +218,7 @@ public function formatDate($date = null, $format = \IntlDateFormatter::SHORT, $s
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function scopeTimeStamp($scope = null)
{
@@ -231,7 +231,7 @@ public function scopeTimeStamp($scope = null)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function isScopeDateInInterval($scope, $dateFrom = null, $dateTo = null)
{
@@ -257,13 +257,7 @@ public function isScopeDateInInterval($scope, $dateFrom = null, $dateTo = null)
}
/**
- * @param string|\DateTimeInterface $date
- * @param int $dateType
- * @param int $timeType
- * @param string|null $locale
- * @param string|null $timezone
- * @param string|null $pattern
- * @return string
+ * @inheritdoc
*/
public function formatDateTime(
$date,
@@ -299,13 +293,7 @@ public function formatDateTime(
}
/**
- * Convert date from config timezone to Utc.
- * If pass \DateTime object as argument be sure that timezone is the same with config timezone
- *
- * @param string|\DateTimeInterface $date
- * @param string $format
- * @throws LocalizedException
- * @return string
+ * @inheritdoc
*/
public function convertConfigTimeToUtc($date, $format = 'Y-m-d H:i:s')
{
diff --git a/lib/internal/Magento/Framework/Stdlib/DateTime/Timezone/LocalizedDateToUtcConverter.php b/lib/internal/Magento/Framework/Stdlib/DateTime/Timezone/LocalizedDateToUtcConverter.php
new file mode 100644
index 000000000000..420fd6e543e0
--- /dev/null
+++ b/lib/internal/Magento/Framework/Stdlib/DateTime/Timezone/LocalizedDateToUtcConverter.php
@@ -0,0 +1,74 @@
+timezone = $timezone;
+ $this->localeResolver = $localeResolver;
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function convertLocalizedDateToUtc($date)
+ {
+ $configTimezone = $this->timezone->getConfigTimezone();
+ $locale = $this->localeResolver->getLocale();
+
+ $formatter = new \IntlDateFormatter(
+ $locale,
+ \IntlDateFormatter::MEDIUM,
+ \IntlDateFormatter::MEDIUM,
+ $configTimezone
+ );
+
+ $localTimestamp = $formatter->parse($date);
+ $gmtTimestamp = $this->timezone->date($localTimestamp)->getTimestamp();
+ $formattedUniversalTime = date($this->defaultFormat, $gmtTimestamp);
+
+ $date = new \DateTime($formattedUniversalTime, new \DateTimeZone($configTimezone));
+ $date->setTimezone(new \DateTimeZone('UTC'));
+
+ return $date->format($this->defaultFormat);
+ }
+}
diff --git a/lib/internal/Magento/Framework/Stdlib/DateTime/Timezone/LocalizedDateToUtcConverterInterface.php b/lib/internal/Magento/Framework/Stdlib/DateTime/Timezone/LocalizedDateToUtcConverterInterface.php
new file mode 100644
index 000000000000..d10bd5f2fefb
--- /dev/null
+++ b/lib/internal/Magento/Framework/Stdlib/DateTime/Timezone/LocalizedDateToUtcConverterInterface.php
@@ -0,0 +1,22 @@
+_conn, $path)) {
@ftp_chdir($this->_conn, "/");
diff --git a/lib/internal/Magento/Framework/Translate.php b/lib/internal/Magento/Framework/Translate.php
index ffa8e2503106..f889549a107a 100644
--- a/lib/internal/Magento/Framework/Translate.php
+++ b/lib/internal/Magento/Framework/Translate.php
@@ -3,6 +3,7 @@
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
+declare(strict_types=1);
namespace Magento\Framework;
@@ -277,6 +278,7 @@ protected function getConfig($key)
/**
* Retrieve name of the current module
+ *
* @return mixed
*/
protected function getControllerModuleName()
@@ -339,16 +341,21 @@ protected function _addData($data)
}
/**
- * Load current theme translation
+ * Load current theme translation according to fallback
*
* @return $this
*/
protected function _loadThemeTranslation()
{
- $file = $this->_getThemeTranslationFile($this->getLocale());
- if ($file) {
- $this->_addData($this->_getFileData($file));
+ $themeFiles = $this->getThemeTranslationFilesList($this->getLocale());
+
+ /** @var string $file */
+ foreach ($themeFiles as $file) {
+ if ($file) {
+ $this->_addData($this->_getFileData($file));
+ }
}
+
return $this;
}
@@ -389,11 +396,74 @@ protected function _getModuleTranslationFile($moduleName, $locale)
return $file;
}
+ /**
+ * Get theme translation locale file name
+ *
+ * @param string $locale
+ * @param array $config
+ * @return string|null
+ */
+ private function getThemeTranslationFileName(string $locale, array $config): ?string
+ {
+ $fileName = $this->_viewFileSystem->getLocaleFileName(
+ 'i18n' . '/' . $locale . '.csv',
+ $config
+ );
+
+ return $fileName ? $fileName : null;
+ }
+
+ /**
+ * Get parent themes for the current theme in fallback order
+ *
+ * @return array
+ */
+ private function getParentThemesList(): array
+ {
+ $themes = [];
+
+ $parentTheme = $this->_viewDesign->getDesignTheme()->getParentTheme();
+ while ($parentTheme) {
+ $themes[] = $parentTheme;
+ $parentTheme = $parentTheme->getParentTheme();
+ }
+ $themes = array_reverse($themes);
+
+ return $themes;
+ }
+
+ /**
+ * Retrieve translation files for themes according to fallback
+ *
+ * @param string $locale
+ *
+ * @return array
+ */
+ private function getThemeTranslationFilesList($locale): array
+ {
+ $translationFiles = [];
+
+ /** @var \Magento\Framework\View\Design\ThemeInterface $theme */
+ foreach ($this->getParentThemesList() as $theme) {
+ $config = $this->_config;
+ $config['theme'] = $theme->getCode();
+ $translationFiles[] = $this->getThemeTranslationFileName($locale, $config);
+ }
+
+ $translationFiles[] = $this->getThemeTranslationFileName($locale, $this->_config);
+
+ return $translationFiles;
+ }
+
/**
* Retrieve translation file for theme
*
* @param string $locale
* @return string
+ *
+ * @deprecated
+ *
+ * @see \Magento\Framework\Translate::getThemeTranslationFilesList
*/
protected function _getThemeTranslationFile($locale)
{
diff --git a/php.ini.sample b/php.ini.sample
deleted file mode 100644
index 8a7d13cf42b4..000000000000
--- a/php.ini.sample
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright © Magento, Inc. All rights reserved.
-; See COPYING.txt for license details.
-; This file is for CGI/FastCGI installations.
-; Try copying it to php5.ini, if it doesn't work
-
-; adjust memory limit
-
-memory_limit = 64M
-
-max_execution_time = 18000
-
-; disable automatic session start
-; before autoload was initialized
-
-flag session.auto_start = off
-
-; enable resulting html compression
-
-zlib.output_compression = on
-
-; disable user agent verification to not break multiple image upload
-
-suhosin.session.cryptua = off
-
-; PHP for some reason ignores this setting in system php.ini
-; and disables mcrypt if this line is missing in local php.ini
-
-extension=mcrypt.so
-
-; Disable PHP errors, notices and warnings output in production mode to prevent exposing sensitive information.
-
-display_errors = Off
diff --git a/pub/index.php b/pub/index.php
index 457b83c52948..90b477826544 100644
--- a/pub/index.php
+++ b/pub/index.php
@@ -25,12 +25,15 @@
}
$params = $_SERVER;
-$params[Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS] = [
- DirectoryList::PUB => [DirectoryList::URL_PATH => ''],
- DirectoryList::MEDIA => [DirectoryList::URL_PATH => 'media'],
- DirectoryList::STATIC_VIEW => [DirectoryList::URL_PATH => 'static'],
- DirectoryList::UPLOAD => [DirectoryList::URL_PATH => 'media/upload'],
-];
+$params[Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS] = array_replace_recursive(
+ $params[Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS],
+ [
+ DirectoryList::PUB => [DirectoryList::URL_PATH => ''],
+ DirectoryList::MEDIA => [DirectoryList::URL_PATH => 'media'],
+ DirectoryList::STATIC_VIEW => [DirectoryList::URL_PATH => 'static'],
+ DirectoryList::UPLOAD => [DirectoryList::URL_PATH => 'media/upload'],
+ ]
+);
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);
/** @var \Magento\Framework\App\Http $app */
$app = $bootstrap->createApplication(\Magento\Framework\App\Http::class);
diff --git a/setup/performance-toolkit/benchmark.jmx b/setup/performance-toolkit/benchmark.jmx
index 8b295c9f5fc4..37e07d131957 100644
--- a/setup/performance-toolkit/benchmark.jmx
+++ b/setup/performance-toolkit/benchmark.jmx
@@ -40763,7 +40763,7 @@ vars.put("configurable_sku", "Configurable Product - ${__time(YMD)}-${__threadNu
false
- {"query":"{\n products(\n filter: {\n price: {gt: \"10\"}\n or: {\n sku:{like:\"%Product%\"}\n name:{like:\"%Configurable Product%\"}\n }\n }\n pageSize: 200\n currentPage: 1\n sort: {\n price: ASC\n name:DESC\n }\n ) {\n total_count\n items {\n attribute_set_id\n country_of_manufacture\n created_at\n description\n gift_message_available\n image\n image_label\n meta_description\n meta_keyword\n meta_title\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n short_description\n sku\n small_image {\n url\n }\n small_image_label\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n thumbnail_label\n tier_price\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n \t... on PhysicalProductInterface {\n \tweight\n \t}\n }\n page_info {\n page_size\n current_page\n }\n }\n}\n","variables":null,"operationName":null}
+ {"query":"{\n products(\n filter: {\n price: {gt: \"10\"}\n or: {\n sku:{like:\"%Product%\"}\n name:{like:\"%Configurable Product%\"}\n }\n }\n pageSize: 200\n currentPage: 1\n sort: {\n price: ASC\n name:DESC\n }\n ) {\n total_count\n items {\n attribute_set_id\n country_of_manufacture\n created_at\n description\n gift_message_available\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n short_description\n sku\n small_image {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n \t... on PhysicalProductInterface {\n \tweight\n \t}\n }\n page_info {\n page_size\n current_page\n }\n }\n}\n","variables":null,"operationName":null}
=
@@ -40820,7 +40820,7 @@ vars.put("configurable_sku", "Configurable Product - ${__time(YMD)}-${__threadNu
false
- {"query":"{\n products(filter: {sku: { eq: \"${simple_product_sku}\" } })\n {\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n image_label\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image {\n url\n }\n small_image_label\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n thumbnail_label\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n \t\t\tweight\n \t\t }\n }\n }\n}\n","variables":null,"operationName":null}
+ {"query":"{\n products(filter: {sku: { eq: \"${simple_product_sku}\" } })\n {\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n \t\t\tweight\n \t\t }\n }\n }\n}\n","variables":null,"operationName":null}
=
@@ -40896,7 +40896,7 @@ if (totalCount == null) {
false
- {"query":"{\n products(filter: {sku: {eq:\"${configurable_product_sku}\"} }) {\n total_count\n items {\n ... on PhysicalProductInterface {\n weight\n }\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n image_label\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image {\n url\n }\n small_image_label\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n thumbnail_label\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on ConfigurableProduct {\n configurable_options {\n id\n attribute_id\n label\n position\n use_default\n attribute_code\n values {\n value_index\n label\n store_label\n default_label\n use_default_value\n }\n product_id\n }\n variants {\n product {\n ... on PhysicalProductInterface {\n weight\n }\n sku\n color\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n image_label\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image {\n url\n }\n small_image_label\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n thumbnail_label\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n\n\n }\n attributes {\n label\n code\n value_index\n }\n }\n }\n }\n }\n}\n","variables":null,"operationName":null}
+ {"query":"{\n products(filter: {sku: {eq:\"${configurable_product_sku}\"} }) {\n total_count\n items {\n ... on PhysicalProductInterface {\n weight\n }\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on ConfigurableProduct {\n configurable_options {\n id\n attribute_id\n label\n position\n use_default\n attribute_code\n values {\n value_index\n label\n store_label\n default_label\n use_default_value\n }\n product_id\n }\n variants {\n product {\n ... on PhysicalProductInterface {\n weight\n }\n sku\n color\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n\n\n }\n attributes {\n label\n code\n value_index\n }\n }\n }\n }\n }\n}\n","variables":null,"operationName":null}
=
@@ -40965,7 +40965,7 @@ if (totalCount == null) {
false
- {"query":"{\n products(\n search: \"configurable\"\n filter: {price: {gteq: \"1\"} }\n ) {\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n image_label\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image {\n url\n }\n small_image_label\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n thumbnail_label\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n \t\t\tweight\n \t\t\t}\n ... on ConfigurableProduct {\n configurable_options {\n id\n attribute_id\n label\n position\n use_default\n attribute_code\n values {\n value_index\n label\n store_label\n default_label\n use_default_value\n }\n product_id\n }\n variants {\n product {\n ... on PhysicalProductInterface {\n weight\n }\n sku\n color\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n image_label\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image {\n url\n }\n small_image_label\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n thumbnail_label\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n\n\n }\n attributes {\n label\n code\n value_index\n }\n }\n }\n }\n }\n}\n","variables":null,"operationName":null}
+ {"query":"{\n products(\n search: \"configurable\"\n filter: {price: {gteq: \"1\"} }\n ) {\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n \t\t\tweight\n \t\t\t}\n ... on ConfigurableProduct {\n configurable_options {\n id\n attribute_id\n label\n position\n use_default\n attribute_code\n values {\n value_index\n label\n store_label\n default_label\n use_default_value\n }\n product_id\n }\n variants {\n product {\n ... on PhysicalProductInterface {\n weight\n }\n sku\n color\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n\n\n }\n attributes {\n label\n code\n value_index\n }\n }\n }\n }\n }\n}\n","variables":null,"operationName":null}
=
@@ -41025,7 +41025,7 @@ if (totalCount == null) {
false
- {"query":"{\n products(search: \"configurable\") {\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n image_label\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image {\n url\n }\n small_image_label\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n thumbnail_label\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n \t\t\tweight\n \t\t\t}\n ... on ConfigurableProduct {\n configurable_options {\n id\n attribute_id\n label\n position\n use_default\n attribute_code\n values {\n value_index\n label\n store_label\n default_label\n use_default_value\n }\n product_id\n }\n variants {\n product {\n ... on PhysicalProductInterface {\n weight\n }\n sku\n color\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n image_label\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image {\n url\n }\n small_image_label\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n thumbnail_label\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n\n\n }\n attributes {\n label\n code\n value_index\n }\n }\n }\n }\n }\n}\n","variables":null,"operationName":null}
+ {"query":"{\n products(search: \"configurable\") {\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n \t\t\tweight\n \t\t\t}\n ... on ConfigurableProduct {\n configurable_options {\n id\n attribute_id\n label\n position\n use_default\n attribute_code\n values {\n value_index\n label\n store_label\n default_label\n use_default_value\n }\n product_id\n }\n variants {\n product {\n ... on PhysicalProductInterface {\n weight\n }\n sku\n color\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n\n\n }\n attributes {\n label\n code\n value_index\n }\n }\n }\n }\n }\n}\n","variables":null,"operationName":null}
=
@@ -41085,7 +41085,7 @@ if (totalCount == null) {
false
- {"query":"{\n products(search: \"color\") {\n filters {\n name\n filter_items_count\n request_var\n filter_items {\n label\n value_string\n items_count\n ... on SwatchLayerFilterItemInterface {\n swatch_data {\n type\n value\n }\n }\n }\n }\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n image_label\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image {\n url\n }\n small_image_label\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n thumbnail_label\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n weight\n }\n ... on ConfigurableProduct {\n configurable_options {\n id\n attribute_id\n label\n position\n use_default\n attribute_code\n values {\n value_index\n label\n store_label\n default_label\n use_default_value\n }\n product_id\n }\n variants {\n product {\n ... on PhysicalProductInterface {\n weight\n }\n sku\n color\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n image_label\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image {\n url\n }\n small_image_label\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n thumbnail_label\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n\n\n }\n attributes {\n label\n code\n value_index\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null}
+ {"query":"{\n products(search: \"color\") {\n filters {\n name\n filter_items_count\n request_var\n filter_items {\n label\n value_string\n items_count\n ... on SwatchLayerFilterItemInterface {\n swatch_data {\n type\n value\n }\n }\n }\n }\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n weight\n }\n ... on ConfigurableProduct {\n configurable_options {\n id\n attribute_id\n label\n position\n use_default\n attribute_code\n values {\n value_index\n label\n store_label\n default_label\n use_default_value\n }\n product_id\n }\n variants {\n product {\n ... on PhysicalProductInterface {\n weight\n }\n sku\n color\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n\n\n }\n attributes {\n label\n code\n value_index\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null}
=
@@ -41145,7 +41145,7 @@ if (totalCount == null) {
false
- {"query":"{\nproducts(filter: {sku: {eq:\"${bundle_product_sku}\"} }) {\n total_count\n items {\n ... on PhysicalProductInterface {\n weight\n }\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n image_label\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image {\n url\n }\n small_image_label\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n thumbnail_label\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on BundleProduct {\n weight\n price_view\n dynamic_price\n dynamic_sku\n ship_bundle_items\n dynamic_weight\n items {\n option_id\n title\n required\n type\n position\n sku\n options {\n id\n qty\n position\n is_default\n price\n price_type\n can_change_quantity\n product {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n image_label\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image {\n url\n }\n small_image_label\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n thumbnail_label\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n }\n }\n }\n }\n }\n }\n}\n","variables":null,"operationName":null}
+ {"query":"{\nproducts(filter: {sku: {eq:\"${bundle_product_sku}\"} }) {\n total_count\n items {\n ... on PhysicalProductInterface {\n weight\n }\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on BundleProduct {\n weight\n price_view\n dynamic_price\n dynamic_sku\n ship_bundle_items\n dynamic_weight\n items {\n option_id\n title\n required\n type\n position\n sku\n options {\n id\n qty\n position\n is_default\n price\n price_type\n can_change_quantity\n product {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n }\n }\n }\n }\n }\n }\n}\n","variables":null,"operationName":null}
=
@@ -41214,7 +41214,7 @@ if (totalCount == null) {
false
- {"query":"{\n products(filter: {sku: { eq: \"${downloadable_product_sku}\" } })\n {\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n image_label\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image {\n url\n }\n small_image_label\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n thumbnail_label\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n \t\t\tweight\n \t\t }\n ... on DownloadableProduct {\n links_purchased_separately\n links_title\n downloadable_product_samples {\n id\n title\n sort_order\n sample_type\n sample_file\n sample_url\n }\n downloadable_product_links {\n id\n title\n sort_order\n is_shareable\n price\n number_of_downloads\n link_type\n sample_type\n sample_file\n sample_url\n }\n }\n }\n }\n}\n","variables":null,"operationName":null}
+ {"query":"{\n products(filter: {sku: { eq: \"${downloadable_product_sku}\" } })\n {\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n \t\t\tweight\n \t\t }\n ... on DownloadableProduct {\n links_purchased_separately\n links_title\n downloadable_product_samples {\n id\n title\n sort_order\n sample_type\n sample_file\n sample_url\n }\n downloadable_product_links {\n id\n title\n sort_order\n is_shareable\n price\n number_of_downloads\n link_type\n sample_type\n sample_file\n sample_url\n }\n }\n }\n }\n}\n","variables":null,"operationName":null}
=
@@ -41301,7 +41301,7 @@ if (totalCount == null) {
false
- {"query":"{\n products(filter: {sku: { eq: \"${virtual_product_sku}\" } })\n {\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n image_label\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image {\n url\n }\n small_image_label\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n thumbnail_label\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n \t\t\tweight\n \t\t }\n }\n }\n}\n","variables":null,"operationName":null}
+ {"query":"{\n products(filter: {sku: { eq: \"${virtual_product_sku}\" } })\n {\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n \t\t\tweight\n \t\t }\n }\n }\n}\n","variables":null,"operationName":null}
=
@@ -41368,7 +41368,7 @@ if (totalCount == null) {
false
- {"query":"{\nproducts(filter: {sku: {eq:\"${grouped_product_sku}\"} }) {\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n image_label\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image {\n url\n }\n small_image_label\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n thumbnail_label\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on GroupedProduct {\n weight\n items {\n qty\n position\n product {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n image_label\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image {\n url\n }\n small_image_label\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n thumbnail_label\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n }\n }\n }\n }\n }\n}\n","variables":null,"operationName":null}
+ {"query":"{\nproducts(filter: {sku: {eq:\"${grouped_product_sku}\"} }) {\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on GroupedProduct {\n weight\n items {\n qty\n position\n product {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n }\n }\n }\n }\n }\n}\n","variables":null,"operationName":null}
=
diff --git a/setup/src/Magento/Setup/Console/Command/ConfigSetCommand.php b/setup/src/Magento/Setup/Console/Command/ConfigSetCommand.php
index 64b934061b6c..e8ff8f09c345 100644
--- a/setup/src/Magento/Setup/Console/Command/ConfigSetCommand.php
+++ b/setup/src/Magento/Setup/Console/Command/ConfigSetCommand.php
@@ -14,6 +14,9 @@
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Question\Question;
+/**
+ * Config Set Command
+ */
class ConfigSetCommand extends AbstractSetupCommand
{
/**
@@ -68,7 +71,7 @@ protected function configure()
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
@@ -84,7 +87,8 @@ protected function execute(InputInterface $input, OutputInterface $output)
if (($currentValue !== null) && ($inputOptions[$option->getName()] !== null)) {
$dialog = $this->getHelperSet()->get('question');
$question = new Question(
- 'Overwrite the existing configuration for ' . $option->getName() . '?[Y/n]'
+ 'Overwrite the existing configuration for ' . $option->getName() . '?[Y/n]',
+ 'y'
);
if (strtolower($dialog->ask($input, $output, $question)) !== 'y') {
$inputOptions[$option->getName()] = null;
@@ -131,7 +135,7 @@ function ($value) {
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
protected function initialize(InputInterface $input, OutputInterface $output)
{
diff --git a/setup/src/Magento/Setup/Module/I18n/Parser/Adapter/Html.php b/setup/src/Magento/Setup/Module/I18n/Parser/Adapter/Html.php
index a4e3063abece..cf38fd70884f 100644
--- a/setup/src/Magento/Setup/Module/I18n/Parser/Adapter/Html.php
+++ b/setup/src/Magento/Setup/Module/I18n/Parser/Adapter/Html.php
@@ -20,7 +20,7 @@ class Html extends AbstractAdapter
const HTML_FILTER = "/i18n:\s?'(?[^'\\\\]*(?:\\\\.[^'\\\\]*)*)'/i";
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
protected function _parse()
{
@@ -31,7 +31,7 @@ protected function _parse()
$results = [];
preg_match_all(Filter::CONSTRUCTION_PATTERN, $data, $results, PREG_SET_ORDER);
- for ($i = 0; $i < count($results); $i++) {
+ for ($i = 0, $count = count($results); $i < $count; $i++) {
if ($results[$i][1] === Filter::TRANS_DIRECTIVE_NAME) {
$directive = [];
if (preg_match(Filter::TRANS_DIRECTIVE_REGEX, $results[$i][2], $directive) !== 1) {
@@ -43,7 +43,7 @@ protected function _parse()
}
preg_match_all(self::HTML_FILTER, $data, $results, PREG_SET_ORDER);
- for ($i = 0; $i < count($results); $i++) {
+ for ($i = 0, $count = count($results); $i < $count; $i++) {
if (!empty($results[$i]['value'])) {
$this->_addPhrase($results[$i]['value']);
}
diff --git a/setup/src/Magento/Setup/Module/I18n/Parser/Adapter/Js.php b/setup/src/Magento/Setup/Module/I18n/Parser/Adapter/Js.php
index 4095b12c9a6c..4678af60d63f 100644
--- a/setup/src/Magento/Setup/Module/I18n/Parser/Adapter/Js.php
+++ b/setup/src/Magento/Setup/Module/I18n/Parser/Adapter/Js.php
@@ -11,7 +11,7 @@
class Js extends AbstractAdapter
{
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
protected function _parse()
{
@@ -22,7 +22,7 @@ protected function _parse()
$fileRow = fgets($fileHandle, 4096);
$results = [];
preg_match_all('/mage\.__\(\s*([\'"])(.*?[^\\\])\1.*?[),]/', $fileRow, $results, PREG_SET_ORDER);
- for ($i = 0; $i < count($results); $i++) {
+ for ($i = 0, $count = count($results); $i < $count; $i++) {
if (isset($results[$i][2])) {
$quote = $results[$i][1];
$this->_addPhrase($quote . $results[$i][2] . $quote, $lineNumber);
@@ -30,7 +30,7 @@ protected function _parse()
}
preg_match_all('/\\$t\(\s*([\'"])(.*?[^\\\])\1.*?[),]/', $fileRow, $results, PREG_SET_ORDER);
- for ($i = 0; $i < count($results); $i++) {
+ for ($i = 0, $count = count($results); $i < $count; $i++) {
if (isset($results[$i][2])) {
$quote = $results[$i][1];
$this->_addPhrase($quote . $results[$i][2] . $quote, $lineNumber);