diff --git a/app/code/Magento/AdminNotification/Block/System/Messages.php b/app/code/Magento/AdminNotification/Block/System/Messages.php
index b950f5583e599..d98d20df54c3c 100644
--- a/app/code/Magento/AdminNotification/Block/System/Messages.php
+++ b/app/code/Magento/AdminNotification/Block/System/Messages.php
@@ -16,7 +16,7 @@ class Messages extends \Magento\Backend\Block\Template
/**
* @var \Magento\Framework\Json\Helper\Data
- * @deprecated
+ * @deprecated 100.3.0
*/
protected $jsonHelper;
diff --git a/app/code/Magento/AdminNotification/Controller/Adminhtml/System/Message/ListAction.php b/app/code/Magento/AdminNotification/Controller/Adminhtml/System/Message/ListAction.php
index d58a7ec31f77d..f3d3cd64ddc64 100644
--- a/app/code/Magento/AdminNotification/Controller/Adminhtml/System/Message/ListAction.php
+++ b/app/code/Magento/AdminNotification/Controller/Adminhtml/System/Message/ListAction.php
@@ -17,7 +17,7 @@ class ListAction extends \Magento\Backend\App\AbstractAction
/**
* @var \Magento\Framework\Json\Helper\Data
- * @deprecated
+ * @deprecated 100.3.0
*/
protected $jsonHelper;
diff --git a/app/code/Magento/AdminNotification/composer.json b/app/code/Magento/AdminNotification/composer.json
index e5cf487908cd7..a397ceaccf7a9 100644
--- a/app/code/Magento/AdminNotification/composer.json
+++ b/app/code/Magento/AdminNotification/composer.json
@@ -7,11 +7,11 @@
"require": {
"php": "~7.1.3||~7.2.0",
"lib-libxml": "*",
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-media-storage": "*",
- "magento/module-store": "*",
- "magento/module-ui": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-media-storage": "100.3.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-ui": "101.1.*"
},
"type": "magento2-module",
"license": [
@@ -25,5 +25,6 @@
"psr-4": {
"Magento\\AdminNotification\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/AdvancedPricingImportExport/Model/Export/AdvancedPricing.php b/app/code/Magento/AdvancedPricingImportExport/Model/Export/AdvancedPricing.php
index fda6ae9530135..520df996cc913 100644
--- a/app/code/Magento/AdvancedPricingImportExport/Model/Export/AdvancedPricing.php
+++ b/app/code/Magento/AdvancedPricingImportExport/Model/Export/AdvancedPricing.php
@@ -384,7 +384,7 @@ private function prepareExportData(
* @param array $exportData
* @return array
* @SuppressWarnings(PHPMD.UnusedLocalVariable)
- * @deprecated
+ * @deprecated 100.3.0
* @see prepareExportData
*/
protected function correctExportData($exportData)
@@ -513,7 +513,7 @@ private function fetchTierPrices(array $productIds): array
* @return array|bool
* @SuppressWarnings(PHPMD.NPathComplexity)
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
- * @deprecated
+ * @deprecated 100.3.0
* @see fetchTierPrices
*/
protected function getTierPrices(array $listSku, $table)
diff --git a/app/code/Magento/AdvancedPricingImportExport/composer.json b/app/code/Magento/AdvancedPricingImportExport/composer.json
index 12e1d9938f4bd..e36a8cd7963ed 100644
--- a/app/code/Magento/AdvancedPricingImportExport/composer.json
+++ b/app/code/Magento/AdvancedPricingImportExport/composer.json
@@ -6,14 +6,14 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-catalog": "*",
- "magento/module-catalog-import-export": "*",
- "magento/module-catalog-inventory": "*",
- "magento/module-customer": "*",
- "magento/module-eav": "*",
- "magento/module-import-export": "*",
- "magento/module-store": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-catalog-import-export": "101.0.*",
+ "magento/module-catalog-inventory": "100.3.*",
+ "magento/module-customer": "102.0.*",
+ "magento/module-eav": "102.0.*",
+ "magento/module-import-export": "100.3.*",
+ "magento/module-store": "101.0.*"
},
"type": "magento2-module",
"license": [
@@ -27,5 +27,6 @@
"psr-4": {
"Magento\\AdvancedPricingImportExport\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/AdvancedSearch/Model/Client/ClientResolver.php b/app/code/Magento/AdvancedSearch/Model/Client/ClientResolver.php
index fbcaf412e3562..1ed4de756c4dc 100644
--- a/app/code/Magento/AdvancedSearch/Model/Client/ClientResolver.php
+++ b/app/code/Magento/AdvancedSearch/Model/Client/ClientResolver.php
@@ -19,7 +19,7 @@ class ClientResolver
*
* @var ScopeConfigInterface
* @since 100.1.0
- * @deprecated since it is not used anymore
+ * @deprecated 100.3.0 since it is not used anymore
*/
protected $scopeConfig;
@@ -55,14 +55,14 @@ class ClientResolver
*
* @var string
* @since 100.1.0
- * @deprecated since it is not used anymore
+ * @deprecated 100.3.0 since it is not used anymore
*/
protected $path;
/**
* Config Scope
* @since 100.1.0
- * @deprecated since it is not used anymore
+ * @deprecated 100.3.0 since it is not used anymore
*/
protected $scope;
diff --git a/app/code/Magento/AdvancedSearch/composer.json b/app/code/Magento/AdvancedSearch/composer.json
index c6a5af07e60a7..03f7b5d1a75f8 100644
--- a/app/code/Magento/AdvancedSearch/composer.json
+++ b/app/code/Magento/AdvancedSearch/composer.json
@@ -5,14 +5,14 @@
"sort-packages": true
},
"require": {
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-catalog": "*",
- "magento/module-catalog-search": "*",
- "magento/module-config": "*",
- "magento/module-customer": "*",
- "magento/module-search": "*",
- "magento/module-store": "*",
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-catalog-search": "101.0.*",
+ "magento/module-config": "101.1.*",
+ "magento/module-customer": "102.0.*",
+ "magento/module-search": "101.0.*",
+ "magento/module-store": "101.0.*",
"php": "~7.1.3||~7.2.0"
},
"type": "magento2-module",
@@ -27,5 +27,6 @@
"psr-4": {
"Magento\\AdvancedSearch\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/Amqp/composer.json b/app/code/Magento/Amqp/composer.json
index b50e951b46f81..7d18c885cbf19 100644
--- a/app/code/Magento/Amqp/composer.json
+++ b/app/code/Magento/Amqp/composer.json
@@ -5,9 +5,9 @@
"sort-packages": true
},
"require": {
- "magento/framework": "*",
- "magento/framework-amqp": "*",
- "magento/framework-message-queue": "*",
+ "magento/framework": "102.0.*",
+ "magento/framework-amqp": "100.3.*",
+ "magento/framework-message-queue": "100.3.*",
"php": "~7.1.3||~7.2.0"
},
"type": "magento2-module",
@@ -22,5 +22,6 @@
"psr-4": {
"Magento\\Amqp\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/Analytics/Model/Connector/Http/ConverterInterface.php b/app/code/Magento/Analytics/Model/Connector/Http/ConverterInterface.php
index ddd9fcba21109..f6abb0f1ab2d1 100644
--- a/app/code/Magento/Analytics/Model/Connector/Http/ConverterInterface.php
+++ b/app/code/Magento/Analytics/Model/Connector/Http/ConverterInterface.php
@@ -9,6 +9,7 @@
* Represents converter interface for http request and response body.
*
* @api
+ * @since 100.2.0
*/
interface ConverterInterface
{
@@ -16,6 +17,7 @@ interface ConverterInterface
* @param string $body
*
* @return array
+ * @since 100.2.0
*/
public function fromBody($body);
@@ -23,16 +25,19 @@ public function fromBody($body);
* @param array $data
*
* @return string
+ * @since 100.2.0
*/
public function toBody(array $data);
/**
* @return string
+ * @since 100.2.0
*/
public function getContentTypeHeader();
/**
* @return string
+ * @since 100.3.0
*/
public function getContentMediaType(): string;
}
diff --git a/app/code/Magento/Analytics/ReportXml/Query.php b/app/code/Magento/Analytics/ReportXml/Query.php
index edf5ed08ee55f..b7c31d4334e20 100644
--- a/app/code/Magento/Analytics/ReportXml/Query.php
+++ b/app/code/Magento/Analytics/ReportXml/Query.php
@@ -81,7 +81,6 @@ public function getConfig()
* @link http://php.net/manual/en/jsonserializable.jsonserialize.php
* @return mixed data which can be serialized by json_encode,
* which is a value of any type other than a resource.
- * @since 5.4.0
*/
public function jsonSerialize()
{
diff --git a/app/code/Magento/Analytics/composer.json b/app/code/Magento/Analytics/composer.json
index 88127f3c62a92..b20f3c81b1769 100644
--- a/app/code/Magento/Analytics/composer.json
+++ b/app/code/Magento/Analytics/composer.json
@@ -3,11 +3,11 @@
"description": "N/A",
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/module-backend": "*",
- "magento/module-config": "*",
- "magento/module-integration": "*",
- "magento/module-store": "*",
- "magento/framework": "*"
+ "magento/module-backend": "101.0.*",
+ "magento/module-config": "101.1.*",
+ "magento/module-integration": "100.3.*",
+ "magento/module-store": "101.0.*",
+ "magento/framework": "102.0.*"
},
"type": "magento2-module",
"license": [
@@ -21,5 +21,6 @@
"psr-4": {
"Magento\\Analytics\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/AsynchronousOperations/Api/BulkStatusInterface.php b/app/code/Magento/AsynchronousOperations/Api/BulkStatusInterface.php
index 76410794900e2..b40fdf19d466f 100644
--- a/app/code/Magento/AsynchronousOperations/Api/BulkStatusInterface.php
+++ b/app/code/Magento/AsynchronousOperations/Api/BulkStatusInterface.php
@@ -14,6 +14,7 @@
* Bulk summary data with list of operations items short data.
*
* @api
+ * @since 100.2.3
*/
interface BulkStatusInterface extends \Magento\Framework\Bulk\BulkStatusInterface
{
@@ -23,6 +24,7 @@ interface BulkStatusInterface extends \Magento\Framework\Bulk\BulkStatusInterfac
* @param string $bulkUuid
* @return \Magento\AsynchronousOperations\Api\Data\DetailedBulkOperationsStatusInterface
* @throws \Magento\Framework\Exception\NoSuchEntityException
+ * @since 100.2.3
*/
public function getBulkDetailedStatus($bulkUuid);
@@ -32,6 +34,7 @@ public function getBulkDetailedStatus($bulkUuid);
* @param string $bulkUuid
* @return \Magento\AsynchronousOperations\Api\Data\BulkOperationsStatusInterface
* @throws \Magento\Framework\Exception\NoSuchEntityException
+ * @since 100.2.3
*/
public function getBulkShortStatus($bulkUuid);
}
diff --git a/app/code/Magento/AsynchronousOperations/Api/Data/AsyncResponseInterface.php b/app/code/Magento/AsynchronousOperations/Api/Data/AsyncResponseInterface.php
index c7edd5c8ff9cd..c0390e40899e8 100644
--- a/app/code/Magento/AsynchronousOperations/Api/Data/AsyncResponseInterface.php
+++ b/app/code/Magento/AsynchronousOperations/Api/Data/AsyncResponseInterface.php
@@ -13,6 +13,7 @@
* Temporary data object to give response from webapi async router
*
* @api
+ * @since 100.2.3
*/
interface AsyncResponseInterface
{
@@ -24,6 +25,7 @@ interface AsyncResponseInterface
* Gets the bulk uuid.
*
* @return string Bulk Uuid.
+ * @since 100.2.3
*/
public function getBulkUuid();
@@ -32,6 +34,7 @@ public function getBulkUuid();
*
* @param string $bulkUuid
* @return $this
+ * @since 100.2.3
*/
public function setBulkUuid($bulkUuid);
@@ -39,6 +42,7 @@ public function setBulkUuid($bulkUuid);
* Gets the list of request items with status data.
*
* @return \Magento\AsynchronousOperations\Api\Data\ItemStatusInterface[]
+ * @since 100.2.3
*/
public function getRequestItems();
@@ -47,12 +51,14 @@ public function getRequestItems();
*
* @param \Magento\AsynchronousOperations\Api\Data\ItemStatusInterface[] $requestItems
* @return $this
+ * @since 100.2.3
*/
public function setRequestItems($requestItems);
/**
* @param bool $isErrors
* @return $this
+ * @since 100.2.3
*/
public function setErrors($isErrors = false);
@@ -60,6 +66,7 @@ public function setErrors($isErrors = false);
* Is there errors during processing bulk
*
* @return boolean
+ * @since 100.2.3
*/
public function isErrors();
@@ -67,6 +74,7 @@ public function isErrors();
* Retrieve existing extension attributes object.
*
* @return \Magento\AsynchronousOperations\Api\Data\AsyncResponseExtensionInterface|null
+ * @since 100.2.3
*/
public function getExtensionAttributes();
@@ -75,6 +83,7 @@ public function getExtensionAttributes();
*
* @param \Magento\AsynchronousOperations\Api\Data\AsyncResponseExtensionInterface $extensionAttributes
* @return $this
+ * @since 100.2.3
*/
public function setExtensionAttributes(
\Magento\AsynchronousOperations\Api\Data\AsyncResponseExtensionInterface $extensionAttributes
diff --git a/app/code/Magento/AsynchronousOperations/Api/Data/BulkOperationsStatusInterface.php b/app/code/Magento/AsynchronousOperations/Api/Data/BulkOperationsStatusInterface.php
index f8b7e389d387d..5fedf675e5579 100644
--- a/app/code/Magento/AsynchronousOperations/Api/Data/BulkOperationsStatusInterface.php
+++ b/app/code/Magento/AsynchronousOperations/Api/Data/BulkOperationsStatusInterface.php
@@ -14,6 +14,7 @@
* Bulk summary data with list of operations items summary data.
*
* @api
+ * @since 100.2.3
*/
interface BulkOperationsStatusInterface extends BulkSummaryInterface
{
@@ -24,6 +25,7 @@ interface BulkOperationsStatusInterface extends BulkSummaryInterface
* Retrieve list of operation with statuses (short data).
*
* @return \Magento\AsynchronousOperations\Api\Data\SummaryOperationStatusInterface[]
+ * @since 100.2.3
*/
public function getOperationsList();
@@ -32,6 +34,7 @@ public function getOperationsList();
*
* @param \Magento\AsynchronousOperations\Api\Data\SummaryOperationStatusInterface[] $operationStatusList
* @return $this
+ * @since 100.2.3
*/
public function setOperationsList($operationStatusList);
}
diff --git a/app/code/Magento/AsynchronousOperations/Api/Data/BulkSummaryInterface.php b/app/code/Magento/AsynchronousOperations/Api/Data/BulkSummaryInterface.php
index a433ec0953a83..5e2cff0b6da3d 100644
--- a/app/code/Magento/AsynchronousOperations/Api/Data/BulkSummaryInterface.php
+++ b/app/code/Magento/AsynchronousOperations/Api/Data/BulkSummaryInterface.php
@@ -38,6 +38,7 @@ public function setExtensionAttributes(
* Get user type
*
* @return int
+ * @since 100.3.0
*/
public function getUserType();
@@ -46,6 +47,7 @@ public function getUserType();
*
* @param int $userType
* @return $this
+ * @since 100.3.0
*/
public function setUserType($userType);
}
diff --git a/app/code/Magento/AsynchronousOperations/Api/Data/DetailedBulkOperationsStatusInterface.php b/app/code/Magento/AsynchronousOperations/Api/Data/DetailedBulkOperationsStatusInterface.php
index 6e39177630857..62bead9f9956e 100644
--- a/app/code/Magento/AsynchronousOperations/Api/Data/DetailedBulkOperationsStatusInterface.php
+++ b/app/code/Magento/AsynchronousOperations/Api/Data/DetailedBulkOperationsStatusInterface.php
@@ -14,6 +14,7 @@
* Bulk summary data with list of operations items full data.
*
* @api
+ * @since 100.2.3
*/
interface DetailedBulkOperationsStatusInterface extends BulkSummaryInterface
{
@@ -24,6 +25,7 @@ interface DetailedBulkOperationsStatusInterface extends BulkSummaryInterface
* Retrieve operations list.
*
* @return \Magento\AsynchronousOperations\Api\Data\OperationInterface[]
+ * @since 100.2.3
*/
public function getOperationsList();
@@ -32,6 +34,7 @@ public function getOperationsList();
*
* @param \Magento\AsynchronousOperations\Api\Data\OperationInterface[] $operationStatusList
* @return $this
+ * @since 100.2.3
*/
public function setOperationsList($operationStatusList);
}
diff --git a/app/code/Magento/AsynchronousOperations/Api/Data/ItemStatusInterface.php b/app/code/Magento/AsynchronousOperations/Api/Data/ItemStatusInterface.php
index 3294078c2c1ea..8919e87c55bec 100644
--- a/app/code/Magento/AsynchronousOperations/Api/Data/ItemStatusInterface.php
+++ b/app/code/Magento/AsynchronousOperations/Api/Data/ItemStatusInterface.php
@@ -14,6 +14,7 @@
* Indicate if entity param was Accepted|Rejected to bulk schedule
*
* @api
+ * @since 100.2.3
*/
interface ItemStatusInterface
{
@@ -30,6 +31,7 @@ interface ItemStatusInterface
* Get entity Id.
*
* @return int
+ * @since 100.2.3
*/
public function getId();
@@ -38,6 +40,7 @@ public function getId();
*
* @param int $entityId
* @return $this
+ * @since 100.2.3
*/
public function setId($entityId);
@@ -45,6 +48,7 @@ public function setId($entityId);
* Get hash of entity data.
*
* @return string md5 hash of entity params array.
+ * @since 100.2.3
*/
public function getDataHash();
@@ -53,6 +57,7 @@ public function getDataHash();
*
* @param string $hash md5 hash of entity params array.
* @return $this
+ * @since 100.2.3
*/
public function setDataHash($hash);
@@ -60,6 +65,7 @@ public function setDataHash($hash);
* Get status.
*
* @return string accepted|rejected
+ * @since 100.2.3
*/
public function getStatus();
@@ -68,6 +74,7 @@ public function getStatus();
*
* @param string $status accepted|rejected
* @return $this
+ * @since 100.2.3
*/
public function setStatus($status = self::STATUS_ACCEPTED);
@@ -75,6 +82,7 @@ public function setStatus($status = self::STATUS_ACCEPTED);
* Get error information.
*
* @return string|null
+ * @since 100.2.3
*/
public function getErrorMessage();
@@ -83,6 +91,7 @@ public function getErrorMessage();
*
* @param string|null|\Exception $error
* @return $this
+ * @since 100.2.3
*/
public function setErrorMessage($error = null);
@@ -90,6 +99,7 @@ public function setErrorMessage($error = null);
* Get error code.
*
* @return int|null
+ * @since 100.2.3
*/
public function getErrorCode();
@@ -98,6 +108,7 @@ public function getErrorCode();
*
* @param int|null|\Exception $errorCode Default: null
* @return $this
+ * @since 100.2.3
*/
public function setErrorCode($errorCode = null);
}
diff --git a/app/code/Magento/AsynchronousOperations/Api/Data/OperationSearchResultsInterface.php b/app/code/Magento/AsynchronousOperations/Api/Data/OperationSearchResultsInterface.php
index c3d221b7ef4f8..f8e1457366777 100644
--- a/app/code/Magento/AsynchronousOperations/Api/Data/OperationSearchResultsInterface.php
+++ b/app/code/Magento/AsynchronousOperations/Api/Data/OperationSearchResultsInterface.php
@@ -13,6 +13,7 @@
*
* An bulk is a group of queue messages. An bulk operation item is a queue message.
* @api
+ * @since 100.3.0
*/
interface OperationSearchResultsInterface extends \Magento\Framework\Api\SearchResultsInterface
{
@@ -20,6 +21,7 @@ interface OperationSearchResultsInterface extends \Magento\Framework\Api\SearchR
* Get list of operations.
*
* @return \Magento\AsynchronousOperations\Api\Data\OperationInterface[]
+ * @since 100.3.0
*/
public function getItems();
@@ -28,6 +30,7 @@ public function getItems();
*
* @param \Magento\AsynchronousOperations\Api\Data\OperationInterface[] $items
* @return $this
+ * @since 100.3.0
*/
public function setItems(array $items);
}
diff --git a/app/code/Magento/AsynchronousOperations/Api/Data/SummaryOperationStatusInterface.php b/app/code/Magento/AsynchronousOperations/Api/Data/SummaryOperationStatusInterface.php
index 3b9f53b34162a..051dbd955c4a9 100644
--- a/app/code/Magento/AsynchronousOperations/Api/Data/SummaryOperationStatusInterface.php
+++ b/app/code/Magento/AsynchronousOperations/Api/Data/SummaryOperationStatusInterface.php
@@ -15,6 +15,7 @@
* without serialized_data and result_serialized_data
*
* @api
+ * @since 100.2.3
*/
interface SummaryOperationStatusInterface
{
@@ -22,6 +23,7 @@ interface SummaryOperationStatusInterface
* Operation id
*
* @return int
+ * @since 100.2.3
*/
public function getId();
@@ -31,6 +33,7 @@ public function getId();
* OPEN | COMPLETE | RETRIABLY_FAILED | NOT_RETRIABLY_FAILED
*
* @return int
+ * @since 100.2.3
*/
public function getStatus();
@@ -38,6 +41,7 @@ public function getStatus();
* Get result message
*
* @return string
+ * @since 100.2.3
*/
public function getResultMessage();
@@ -45,6 +49,7 @@ public function getResultMessage();
* Get error code
*
* @return int
+ * @since 100.2.3
*/
public function getErrorCode();
}
diff --git a/app/code/Magento/AsynchronousOperations/Api/OperationRepositoryInterface.php b/app/code/Magento/AsynchronousOperations/Api/OperationRepositoryInterface.php
index 17547321b827f..6cb6a93143918 100644
--- a/app/code/Magento/AsynchronousOperations/Api/OperationRepositoryInterface.php
+++ b/app/code/Magento/AsynchronousOperations/Api/OperationRepositoryInterface.php
@@ -13,6 +13,7 @@
*
* An bulk is a group of queue messages. An bulk operation item is a queue message.
* @api
+ * @since 100.3.0
*/
interface OperationRepositoryInterface
{
@@ -21,6 +22,7 @@ interface OperationRepositoryInterface
*
* @param \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria
* @return \Magento\AsynchronousOperations\Api\Data\OperationSearchResultsInterface
+ * @since 100.3.0
*/
public function getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria);
}
diff --git a/app/code/Magento/AsynchronousOperations/Model/ConfigInterface.php b/app/code/Magento/AsynchronousOperations/Model/ConfigInterface.php
index de0f89a71650a..593ab52bbdf29 100644
--- a/app/code/Magento/AsynchronousOperations/Model/ConfigInterface.php
+++ b/app/code/Magento/AsynchronousOperations/Model/ConfigInterface.php
@@ -15,6 +15,7 @@
* Class for accessing to Webapi_Async configuration.
*
* @api
+ * @since 100.2.3
*/
interface ConfigInterface
{
@@ -45,6 +46,7 @@ interface ConfigInterface
* Get array of generated topics name and related to this topic service class and methods
*
* @return array
+ * @since 100.2.3
*/
public function getServices();
@@ -55,6 +57,7 @@ public function getServices();
* @param string $httpMethod GET|POST|PUT|DELETE
* @return string
* @throws \Magento\Framework\Exception\LocalizedException
+ * @since 100.2.3
*/
public function getTopicName($routeUrl, $httpMethod);
}
diff --git a/app/code/Magento/AsynchronousOperations/composer.json b/app/code/Magento/AsynchronousOperations/composer.json
index 18927b5f4ecca..c3331868b273b 100644
--- a/app/code/Magento/AsynchronousOperations/composer.json
+++ b/app/code/Magento/AsynchronousOperations/composer.json
@@ -5,16 +5,16 @@
"sort-packages": true
},
"require": {
- "magento/framework": "*",
- "magento/framework-bulk": "*",
- "magento/module-authorization": "*",
- "magento/module-backend": "*",
- "magento/module-ui": "*",
+ "magento/framework": "102.0.*",
+ "magento/framework-bulk": "100.3.*",
+ "magento/module-authorization": "100.3.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-ui": "101.1.*",
"php": "~7.1.3||~7.2.0"
},
"suggest": {
- "magento/module-admin-notification": "*",
- "magento/module-logging": "*"
+ "magento/module-admin-notification": "100.3.*",
+ "magento/module-logging": "101.1.*"
},
"type": "magento2-module",
"license": [
@@ -28,5 +28,6 @@
"psr-4": {
"Magento\\AsynchronousOperations\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/Authorization/composer.json b/app/code/Magento/Authorization/composer.json
index 5f5e7c62ef83b..b904e69867439 100644
--- a/app/code/Magento/Authorization/composer.json
+++ b/app/code/Magento/Authorization/composer.json
@@ -6,8 +6,8 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-backend": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*"
},
"type": "magento2-module",
"license": [
@@ -21,5 +21,6 @@
"psr-4": {
"Magento\\Authorization\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/Authorizenet/Block/Adminhtml/Order/View/Info/FraudDetails.php b/app/code/Magento/Authorizenet/Block/Adminhtml/Order/View/Info/FraudDetails.php
index c693ebe95d52b..c94227f3fd387 100644
--- a/app/code/Magento/Authorizenet/Block/Adminhtml/Order/View/Info/FraudDetails.php
+++ b/app/code/Magento/Authorizenet/Block/Adminhtml/Order/View/Info/FraudDetails.php
@@ -14,7 +14,7 @@
*
* @api
* @since 100.0.2
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class FraudDetails extends \Magento\Backend\Block\Template
{
diff --git a/app/code/Magento/Authorizenet/Block/Adminhtml/Order/View/Info/PaymentDetails.php b/app/code/Magento/Authorizenet/Block/Adminhtml/Order/View/Info/PaymentDetails.php
index 23034270640dd..bfe145f2ca3f4 100644
--- a/app/code/Magento/Authorizenet/Block/Adminhtml/Order/View/Info/PaymentDetails.php
+++ b/app/code/Magento/Authorizenet/Block/Adminhtml/Order/View/Info/PaymentDetails.php
@@ -12,7 +12,7 @@
/**
* Payment information block for Authorize.net payment method
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class PaymentDetails extends ConfigurableInfo
{
diff --git a/app/code/Magento/Authorizenet/Block/Transparent/Iframe.php b/app/code/Magento/Authorizenet/Block/Transparent/Iframe.php
index 65161413cb18f..819b4a844a152 100644
--- a/app/code/Magento/Authorizenet/Block/Transparent/Iframe.php
+++ b/app/code/Magento/Authorizenet/Block/Transparent/Iframe.php
@@ -13,7 +13,7 @@
* Transparent Iframe block for Authorize.net payments
* @api
* @since 100.0.2
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Iframe extends TransparentIframe
{
diff --git a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/AddConfigured.php b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/AddConfigured.php
index f71314613fc1f..aeeec9688a7b5 100644
--- a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/AddConfigured.php
+++ b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/AddConfigured.php
@@ -13,7 +13,7 @@
/**
* Class AddConfigured
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class AddConfigured extends BaseAddConfigured implements HttpPutActionInterface
{
diff --git a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Cancel.php b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Cancel.php
index 3ebea4704db7e..05af5f4bae55b 100644
--- a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Cancel.php
+++ b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Cancel.php
@@ -13,7 +13,7 @@
/**
* Class Cancel
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Cancel extends BaseCancel implements HttpPostActionInterface
{
diff --git a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ConfigureProductToAdd.php b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ConfigureProductToAdd.php
index 19eb4571a852e..66ce14fc75ce4 100644
--- a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ConfigureProductToAdd.php
+++ b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ConfigureProductToAdd.php
@@ -13,7 +13,7 @@
/**
* Class ConfigureProductToAdd
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class ConfigureProductToAdd extends BaseConfigureProductToAdd implements HttpPutActionInterface
{
diff --git a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ConfigureQuoteItems.php b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ConfigureQuoteItems.php
index d314149059c72..6cd94afd7aa3b 100644
--- a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ConfigureQuoteItems.php
+++ b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ConfigureQuoteItems.php
@@ -13,7 +13,7 @@
/**
* Class ConfigureQuoteItems
- * @deprecated 2.3 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class ConfigureQuoteItems extends BaseConfigureQuoteItems implements HttpPutActionInterface
{
diff --git a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Index.php b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Index.php
index 33ac620499e71..eb2fd72dc07d3 100644
--- a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Index.php
+++ b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Index.php
@@ -10,7 +10,7 @@
/**
* Class Index
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Index extends \Magento\Sales\Controller\Adminhtml\Order\Create\Index
{
diff --git a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/LoadBlock.php b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/LoadBlock.php
index 577840c0a9ba4..97c32298442dd 100644
--- a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/LoadBlock.php
+++ b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/LoadBlock.php
@@ -10,7 +10,7 @@
/**
* Class LoadBlock
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class LoadBlock extends \Magento\Sales\Controller\Adminhtml\Order\Create\LoadBlock
{
diff --git a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Place.php b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Place.php
index fc4cce07bd08f..f54fa656860a0 100644
--- a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Place.php
+++ b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Place.php
@@ -20,7 +20,7 @@
* Class Place
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Place extends Create implements HttpPostActionInterface
{
diff --git a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ProcessData.php b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ProcessData.php
index 3d0d572bd6265..e8d093aef984a 100644
--- a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ProcessData.php
+++ b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ProcessData.php
@@ -13,7 +13,7 @@
/**
* Class ProcessData
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class ProcessData extends BaseProcessData implements HttpPostActionInterface
{
diff --git a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Redirect.php b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Redirect.php
index 333751f93653a..5b1b7d511d953 100644
--- a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Redirect.php
+++ b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Redirect.php
@@ -19,7 +19,7 @@
/**
* Class Redirect
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Redirect extends Create implements HttpGetActionInterface, HttpPostActionInterface
{
diff --git a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Reorder.php b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Reorder.php
index 06a6403915ff1..6bb8385dd2fca 100644
--- a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Reorder.php
+++ b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Reorder.php
@@ -13,7 +13,7 @@
/**
* Class Reorder
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Reorder extends BaseReorder implements HttpPostActionInterface
{
diff --git a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ReturnQuote.php b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ReturnQuote.php
index c42e7ecbeef00..dc9c7186e77fc 100644
--- a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ReturnQuote.php
+++ b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ReturnQuote.php
@@ -14,7 +14,7 @@
/**
* Class ReturnQuote
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class ReturnQuote extends Create implements HttpPostActionInterface, HttpGetActionInterface
{
diff --git a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Save.php b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Save.php
index cc93ce5daedeb..50cb0fd6d1469 100644
--- a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Save.php
+++ b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Save.php
@@ -10,7 +10,7 @@
/**
* Class Save
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Save extends \Magento\Sales\Controller\Adminhtml\Order\Create\Save
{
diff --git a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ShowUpdateResult.php b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ShowUpdateResult.php
index af80bde10831a..ad70a2d09b87a 100644
--- a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ShowUpdateResult.php
+++ b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/ShowUpdateResult.php
@@ -10,7 +10,7 @@
/**
* Class ShowUpdateResult
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class ShowUpdateResult extends \Magento\Sales\Controller\Adminhtml\Order\Create\ShowUpdateResult
{
diff --git a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Start.php b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Start.php
index 689b30d63be68..30f25ee9f506f 100644
--- a/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Start.php
+++ b/app/code/Magento/Authorizenet/Controller/Adminhtml/Authorizenet/Directpost/Payment/Start.php
@@ -13,7 +13,7 @@
/**
* Class Start
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
abstract class Start extends Create implements HttpPostActionInterface
{
diff --git a/app/code/Magento/Authorizenet/Controller/Directpost/Payment.php b/app/code/Magento/Authorizenet/Controller/Directpost/Payment.php
index cfaa5f1cfcd08..2ee8f72918aee 100644
--- a/app/code/Magento/Authorizenet/Controller/Directpost/Payment.php
+++ b/app/code/Magento/Authorizenet/Controller/Directpost/Payment.php
@@ -16,7 +16,7 @@
* DirectPost Payment Controller
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
abstract class Payment extends Action implements HttpGetActionInterface, HttpPostActionInterface
{
diff --git a/app/code/Magento/Authorizenet/Controller/Directpost/Payment/BackendResponse.php b/app/code/Magento/Authorizenet/Controller/Directpost/Payment/BackendResponse.php
index e0610a92feb6a..3cab529c6e058 100644
--- a/app/code/Magento/Authorizenet/Controller/Directpost/Payment/BackendResponse.php
+++ b/app/code/Magento/Authorizenet/Controller/Directpost/Payment/BackendResponse.php
@@ -24,7 +24,7 @@
/**
* Class BackendResponse
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class BackendResponse extends \Magento\Authorizenet\Controller\Directpost\Payment implements
CsrfAwareActionInterface,
diff --git a/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Place.php b/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Place.php
index 7d672a75f5b17..f9ead6c144492 100644
--- a/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Place.php
+++ b/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Place.php
@@ -26,7 +26,7 @@
* Class Place
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Place extends Payment implements HttpPostActionInterface
{
diff --git a/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Redirect.php b/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Redirect.php
index 8c9510243f610..28de674afd023 100644
--- a/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Redirect.php
+++ b/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Redirect.php
@@ -15,7 +15,7 @@
/**
* Class Redirect
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Redirect extends Payment implements HttpGetActionInterface, HttpPostActionInterface
{
diff --git a/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Response.php b/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Response.php
index 17fc3cb72e454..6ad8076e92fa9 100644
--- a/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Response.php
+++ b/app/code/Magento/Authorizenet/Controller/Directpost/Payment/Response.php
@@ -17,7 +17,7 @@
/**
* Class Response
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Response extends Payment implements CsrfAwareActionInterface, HttpGetActionInterface, HttpPostActionInterface
{
diff --git a/app/code/Magento/Authorizenet/Controller/Directpost/Payment/ReturnQuote.php b/app/code/Magento/Authorizenet/Controller/Directpost/Payment/ReturnQuote.php
index c974632f584b0..c4e15a48056f0 100644
--- a/app/code/Magento/Authorizenet/Controller/Directpost/Payment/ReturnQuote.php
+++ b/app/code/Magento/Authorizenet/Controller/Directpost/Payment/ReturnQuote.php
@@ -14,7 +14,7 @@
/**
* Class ReturnQuote
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class ReturnQuote extends Payment implements HttpPostActionInterface, HttpGetActionInterface
{
diff --git a/app/code/Magento/Authorizenet/Helper/Backend/Data.php b/app/code/Magento/Authorizenet/Helper/Backend/Data.php
index d291125ccae06..fbf61b2c3a0c1 100644
--- a/app/code/Magento/Authorizenet/Helper/Backend/Data.php
+++ b/app/code/Magento/Authorizenet/Helper/Backend/Data.php
@@ -18,7 +18,7 @@
*
* @api
* @since 100.0.2
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Data extends FrontendDataHelper
{
diff --git a/app/code/Magento/Authorizenet/Helper/Data.php b/app/code/Magento/Authorizenet/Helper/Data.php
index e240cd692a13f..32fbcd7489224 100644
--- a/app/code/Magento/Authorizenet/Helper/Data.php
+++ b/app/code/Magento/Authorizenet/Helper/Data.php
@@ -19,7 +19,7 @@
*
* @api
* @since 100.0.2
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Data extends AbstractHelper
{
diff --git a/app/code/Magento/Authorizenet/Helper/DataFactory.php b/app/code/Magento/Authorizenet/Helper/DataFactory.php
index 71f16ab4af646..ba69d9529de79 100644
--- a/app/code/Magento/Authorizenet/Helper/DataFactory.php
+++ b/app/code/Magento/Authorizenet/Helper/DataFactory.php
@@ -12,7 +12,7 @@
/**
* Class DataFactory
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class DataFactory
{
diff --git a/app/code/Magento/Authorizenet/Model/Authorizenet.php b/app/code/Magento/Authorizenet/Model/Authorizenet.php
index 9370b649a23c7..bc7567866ec61 100644
--- a/app/code/Magento/Authorizenet/Model/Authorizenet.php
+++ b/app/code/Magento/Authorizenet/Model/Authorizenet.php
@@ -16,7 +16,7 @@
* @SuppressWarnings(PHPMD.TooManyFields)
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
abstract class Authorizenet extends \Magento\Payment\Model\Method\Cc
{
diff --git a/app/code/Magento/Authorizenet/Model/Debug.php b/app/code/Magento/Authorizenet/Model/Debug.php
index 93d508cc744e1..6d695ad71cfc1 100644
--- a/app/code/Magento/Authorizenet/Model/Debug.php
+++ b/app/code/Magento/Authorizenet/Model/Debug.php
@@ -22,7 +22,7 @@
* @method \Magento\Authorizenet\Model\Debug setRequestDump(string $value)
* @method string getResultDump()
* @method \Magento\Authorizenet\Model\Debug setResultDump(string $value)
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Debug extends \Magento\Framework\Model\AbstractModel
{
diff --git a/app/code/Magento/Authorizenet/Model/Directpost.php b/app/code/Magento/Authorizenet/Model/Directpost.php
index 946ec8ba01a0e..93a1f8236cc3f 100644
--- a/app/code/Magento/Authorizenet/Model/Directpost.php
+++ b/app/code/Magento/Authorizenet/Model/Directpost.php
@@ -16,7 +16,7 @@
* @SuppressWarnings(PHPMD.TooManyFields)
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Directpost extends \Magento\Authorizenet\Model\Authorizenet implements TransparentInterface, ConfigInterface
{
diff --git a/app/code/Magento/Authorizenet/Model/Directpost/Request.php b/app/code/Magento/Authorizenet/Model/Directpost/Request.php
index 10be4cd5febf6..4c1a27429d0ec 100644
--- a/app/code/Magento/Authorizenet/Model/Directpost/Request.php
+++ b/app/code/Magento/Authorizenet/Model/Directpost/Request.php
@@ -13,7 +13,7 @@
/**
* Authorize.net request model for DirectPost model
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Request extends AuthorizenetRequest
{
diff --git a/app/code/Magento/Authorizenet/Model/Directpost/Request/Factory.php b/app/code/Magento/Authorizenet/Model/Directpost/Request/Factory.php
index 6036935f57be1..3829b47442bf6 100644
--- a/app/code/Magento/Authorizenet/Model/Directpost/Request/Factory.php
+++ b/app/code/Magento/Authorizenet/Model/Directpost/Request/Factory.php
@@ -11,7 +11,7 @@
/**
* Factory class for @see \Magento\Authorizenet\Model\Directpost\Request
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Factory extends AuthorizenetRequestFactory
{
diff --git a/app/code/Magento/Authorizenet/Model/Directpost/Response.php b/app/code/Magento/Authorizenet/Model/Directpost/Response.php
index b5604a78cb9cd..676042f4ea489 100644
--- a/app/code/Magento/Authorizenet/Model/Directpost/Response.php
+++ b/app/code/Magento/Authorizenet/Model/Directpost/Response.php
@@ -12,7 +12,7 @@
/**
* Authorize.net response model for DirectPost model
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Response extends AuthorizenetResponse
{
diff --git a/app/code/Magento/Authorizenet/Model/Directpost/Response/Factory.php b/app/code/Magento/Authorizenet/Model/Directpost/Response/Factory.php
index 4fda5ac62b498..7e7380415068f 100644
--- a/app/code/Magento/Authorizenet/Model/Directpost/Response/Factory.php
+++ b/app/code/Magento/Authorizenet/Model/Directpost/Response/Factory.php
@@ -11,7 +11,7 @@
/**
* Factory class for @see \Magento\Authorizenet\Model\Directpost\Response
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Factory extends AuthorizenetResponseFactory
{
diff --git a/app/code/Magento/Authorizenet/Model/Directpost/Session.php b/app/code/Magento/Authorizenet/Model/Directpost/Session.php
index 26c5ff0cb7e36..40763631afb1b 100644
--- a/app/code/Magento/Authorizenet/Model/Directpost/Session.php
+++ b/app/code/Magento/Authorizenet/Model/Directpost/Session.php
@@ -13,7 +13,7 @@
* Authorize.net DirectPost session model
*
* @SuppressWarnings(PHPMD.CookieAndSessionMisuse)
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Session extends SessionManager
{
diff --git a/app/code/Magento/Authorizenet/Model/Request.php b/app/code/Magento/Authorizenet/Model/Request.php
index 552439fc8bb9b..9f3ecfbd8c331 100644
--- a/app/code/Magento/Authorizenet/Model/Request.php
+++ b/app/code/Magento/Authorizenet/Model/Request.php
@@ -11,7 +11,7 @@
/**
* Request object
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Request extends DataObject
{
diff --git a/app/code/Magento/Authorizenet/Model/Request/Factory.php b/app/code/Magento/Authorizenet/Model/Request/Factory.php
index a7a636280e28d..7cca2703b4935 100644
--- a/app/code/Magento/Authorizenet/Model/Request/Factory.php
+++ b/app/code/Magento/Authorizenet/Model/Request/Factory.php
@@ -9,7 +9,7 @@
/**
* Factory class for @see \Magento\Authorizenet\Model\Request
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Factory
{
diff --git a/app/code/Magento/Authorizenet/Model/ResourceModel/Debug.php b/app/code/Magento/Authorizenet/Model/ResourceModel/Debug.php
index 2c21d0e2e28e0..2053c8bf83301 100644
--- a/app/code/Magento/Authorizenet/Model/ResourceModel/Debug.php
+++ b/app/code/Magento/Authorizenet/Model/ResourceModel/Debug.php
@@ -9,7 +9,7 @@
/**
* Resource Authorize.net debug model
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Debug extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
{
diff --git a/app/code/Magento/Authorizenet/Model/ResourceModel/Debug/Collection.php b/app/code/Magento/Authorizenet/Model/ResourceModel/Debug/Collection.php
index b84ee1e72a2d4..746611ee01c1d 100644
--- a/app/code/Magento/Authorizenet/Model/ResourceModel/Debug/Collection.php
+++ b/app/code/Magento/Authorizenet/Model/ResourceModel/Debug/Collection.php
@@ -9,7 +9,7 @@
/**
* Resource Authorize.net debug collection model
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection
{
diff --git a/app/code/Magento/Authorizenet/Model/Response.php b/app/code/Magento/Authorizenet/Model/Response.php
index c552663a15373..0ed1d8d6eae98 100644
--- a/app/code/Magento/Authorizenet/Model/Response.php
+++ b/app/code/Magento/Authorizenet/Model/Response.php
@@ -11,7 +11,7 @@
/**
* Response object
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Response extends DataObject
{
diff --git a/app/code/Magento/Authorizenet/Model/Response/Factory.php b/app/code/Magento/Authorizenet/Model/Response/Factory.php
index 4578095566004..c1dbb4eb0b4f8 100644
--- a/app/code/Magento/Authorizenet/Model/Response/Factory.php
+++ b/app/code/Magento/Authorizenet/Model/Response/Factory.php
@@ -9,7 +9,7 @@
/**
* Factory class for @see \Magento\Authorizenet\Model\Response
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Factory
{
diff --git a/app/code/Magento/Authorizenet/Model/Source/Cctype.php b/app/code/Magento/Authorizenet/Model/Source/Cctype.php
index ffb3584722450..fa27f18017ff7 100644
--- a/app/code/Magento/Authorizenet/Model/Source/Cctype.php
+++ b/app/code/Magento/Authorizenet/Model/Source/Cctype.php
@@ -11,7 +11,7 @@
/**
* Authorize.net Payment CC Types Source Model
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class Cctype extends PaymentCctype
{
diff --git a/app/code/Magento/Authorizenet/Model/Source/PaymentAction.php b/app/code/Magento/Authorizenet/Model/Source/PaymentAction.php
index c6e57557f65c5..4b877efcb41aa 100644
--- a/app/code/Magento/Authorizenet/Model/Source/PaymentAction.php
+++ b/app/code/Magento/Authorizenet/Model/Source/PaymentAction.php
@@ -11,7 +11,7 @@
/**
* Authorize.net Payment Action Dropdown source
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class PaymentAction implements ArrayInterface
{
diff --git a/app/code/Magento/Authorizenet/Model/TransactionService.php b/app/code/Magento/Authorizenet/Model/TransactionService.php
index af0b02e94cf45..5c83f15753289 100644
--- a/app/code/Magento/Authorizenet/Model/TransactionService.php
+++ b/app/code/Magento/Authorizenet/Model/TransactionService.php
@@ -16,7 +16,7 @@
/**
* Class TransactionService
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class TransactionService
{
diff --git a/app/code/Magento/Authorizenet/Observer/AddFieldsToResponseObserver.php b/app/code/Magento/Authorizenet/Observer/AddFieldsToResponseObserver.php
index bdd10437927c8..961828e66462f 100644
--- a/app/code/Magento/Authorizenet/Observer/AddFieldsToResponseObserver.php
+++ b/app/code/Magento/Authorizenet/Observer/AddFieldsToResponseObserver.php
@@ -14,7 +14,7 @@
* Class AddFieldsToResponseObserver
*
* @SuppressWarnings(PHPMD.CookieAndSessionMisuse)
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class AddFieldsToResponseObserver implements ObserverInterface
{
diff --git a/app/code/Magento/Authorizenet/Observer/SaveOrderAfterSubmitObserver.php b/app/code/Magento/Authorizenet/Observer/SaveOrderAfterSubmitObserver.php
index 45f0adfa96f4f..07899e1ccf596 100644
--- a/app/code/Magento/Authorizenet/Observer/SaveOrderAfterSubmitObserver.php
+++ b/app/code/Magento/Authorizenet/Observer/SaveOrderAfterSubmitObserver.php
@@ -12,7 +12,7 @@
/**
* Class SaveOrderAfterSubmitObserver
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class SaveOrderAfterSubmitObserver implements ObserverInterface
{
diff --git a/app/code/Magento/Authorizenet/Observer/UpdateAllEditIncrementsObserver.php b/app/code/Magento/Authorizenet/Observer/UpdateAllEditIncrementsObserver.php
index d6cc51eb63c01..caaef5ea29fa6 100644
--- a/app/code/Magento/Authorizenet/Observer/UpdateAllEditIncrementsObserver.php
+++ b/app/code/Magento/Authorizenet/Observer/UpdateAllEditIncrementsObserver.php
@@ -12,7 +12,7 @@
/**
* Class UpdateAllEditIncrementsObserver
- * @deprecated 2.3.1 Authorize.net is removing all support for this payment method
+ * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
*/
class UpdateAllEditIncrementsObserver implements ObserverInterface
{
diff --git a/app/code/Magento/Authorizenet/composer.json b/app/code/Magento/Authorizenet/composer.json
index 4e646004d9a6d..c0c06a97fc058 100644
--- a/app/code/Magento/Authorizenet/composer.json
+++ b/app/code/Magento/Authorizenet/composer.json
@@ -6,17 +6,17 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-catalog": "*",
- "magento/module-checkout": "*",
- "magento/module-payment": "*",
- "magento/module-quote": "*",
- "magento/module-sales": "*",
- "magento/module-store": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-checkout": "100.3.*",
+ "magento/module-payment": "100.3.*",
+ "magento/module-quote": "101.1.*",
+ "magento/module-sales": "102.0.*",
+ "magento/module-store": "101.0.*"
},
"suggest": {
- "magento/module-config": "*"
+ "magento/module-config": "101.1.*"
},
"type": "magento2-module",
"license": [
@@ -30,5 +30,6 @@
"psr-4": {
"Magento\\Authorizenet\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/AuthorizenetAcceptjs/Block/Form.php b/app/code/Magento/AuthorizenetAcceptjs/Block/Form.php
index 9f10b2df40e9f..5f945235fd2d9 100644
--- a/app/code/Magento/AuthorizenetAcceptjs/Block/Form.php
+++ b/app/code/Magento/AuthorizenetAcceptjs/Block/Form.php
@@ -18,6 +18,7 @@
* Block for representing the payment form
*
* @api
+ * @since 100.3.0
*/
class Form extends Cc
{
@@ -54,6 +55,7 @@ public function __construct(
* Check if cvv validation is available
*
* @return boolean
+ * @since 100.3.0
*/
public function isCvvEnabled(): bool
{
diff --git a/app/code/Magento/AuthorizenetAcceptjs/Block/Info.php b/app/code/Magento/AuthorizenetAcceptjs/Block/Info.php
index ea476eaa55716..e2ce62fdd511f 100644
--- a/app/code/Magento/AuthorizenetAcceptjs/Block/Info.php
+++ b/app/code/Magento/AuthorizenetAcceptjs/Block/Info.php
@@ -15,6 +15,7 @@
* Translates the labels for the info block
*
* @api
+ * @since 100.3.0
*/
class Info extends ConfigurableInfo
{
@@ -23,6 +24,7 @@ class Info extends ConfigurableInfo
*
* @param string $field
* @return Phrase
+ * @since 100.3.0
*/
protected function getLabel($field): Phrase
{
diff --git a/app/code/Magento/AuthorizenetAcceptjs/Block/Payment.php b/app/code/Magento/AuthorizenetAcceptjs/Block/Payment.php
index 059bba0c805e8..317a69de82c59 100644
--- a/app/code/Magento/AuthorizenetAcceptjs/Block/Payment.php
+++ b/app/code/Magento/AuthorizenetAcceptjs/Block/Payment.php
@@ -18,6 +18,7 @@
* Represents the payment block for the admin checkout form
*
* @api
+ * @since 100.3.0
*/
class Payment extends Template
{
@@ -52,6 +53,7 @@ public function __construct(
* Retrieves the config that should be used by the block
*
* @return string
+ * @since 100.3.0
*/
public function getPaymentConfig(): string
{
@@ -66,6 +68,7 @@ public function getPaymentConfig(): string
* Returns the method code for this payment method
*
* @return string
+ * @since 100.3.0
*/
public function getMethodCode(): string
{
diff --git a/app/code/Magento/AuthorizenetAcceptjs/composer.json b/app/code/Magento/AuthorizenetAcceptjs/composer.json
index be2cd6d4e70f8..d1ae34726bcac 100644
--- a/app/code/Magento/AuthorizenetAcceptjs/composer.json
+++ b/app/code/Magento/AuthorizenetAcceptjs/composer.json
@@ -6,14 +6,14 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-payment": "*",
- "magento/module-sales": "*",
- "magento/module-config": "*",
- "magento/module-backend": "*",
- "magento/module-checkout": "*",
- "magento/module-store": "*",
- "magento/module-quote": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-payment": "100.3.*",
+ "magento/module-sales": "102.0.*",
+ "magento/module-config": "101.1.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-checkout": "100.3.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-quote": "101.1.*"
},
"type": "magento2-module",
"license": [
@@ -27,5 +27,6 @@
"psr-4": {
"Magento\\AuthorizenetAcceptjs\\": ""
}
- }
+ },
+ "version": "100.3.1"
}
diff --git a/app/code/Magento/Backend/Block/Dashboard/Graph.php b/app/code/Magento/Backend/Block/Dashboard/Graph.php
index b76421e4e6f67..b6b40ad2f8981 100644
--- a/app/code/Magento/Backend/Block/Dashboard/Graph.php
+++ b/app/code/Magento/Backend/Block/Dashboard/Graph.php
@@ -78,7 +78,7 @@ class Graph extends \Magento\Backend\Block\Dashboard\AbstractDashboard
/**
* Google chart api data encoding
*
- * @deprecated since the Google Image Charts API not accessible from March 14, 2019
+ * @deprecated 101.0.2 since the Google Image Charts API not accessible from March 14, 2019
* @var string
*/
protected $_encoding = 'e';
diff --git a/app/code/Magento/Backend/Block/Media/Uploader.php b/app/code/Magento/Backend/Block/Media/Uploader.php
index 84fa487281ac8..1900f1a3e7cbd 100644
--- a/app/code/Magento/Backend/Block/Media/Uploader.php
+++ b/app/code/Magento/Backend/Block/Media/Uploader.php
@@ -46,7 +46,7 @@ class Uploader extends \Magento\Backend\Block\Widget
/**
* @var UploadConfigInterface
- * @deprecated
+ * @deprecated 101.0.1
* @see \Magento\Backend\Model\Image\UploadResizeConfigInterface
*/
private $imageConfig;
@@ -120,6 +120,7 @@ public function getFileSizeService()
* Get Image Upload Maximum Width Config.
*
* @return int
+ * @since 100.2.7
*/
public function getImageUploadMaxWidth()
{
@@ -130,6 +131,7 @@ public function getImageUploadMaxWidth()
* Get Image Upload Maximum Height Config.
*
* @return int
+ * @since 100.2.7
*/
public function getImageUploadMaxHeight()
{
diff --git a/app/code/Magento/Backend/Block/Page/Footer.php b/app/code/Magento/Backend/Block/Page/Footer.php
index e0c173a4cbfec..610d28b0f53e3 100644
--- a/app/code/Magento/Backend/Block/Page/Footer.php
+++ b/app/code/Magento/Backend/Block/Page/Footer.php
@@ -60,6 +60,7 @@ public function getMagentoVersion()
/**
* @inheritdoc
+ * @since 101.0.0
*/
protected function getCacheLifetime()
{
diff --git a/app/code/Magento/Backend/Block/Page/System/Config/Robots/Reset.php b/app/code/Magento/Backend/Block/Page/System/Config/Robots/Reset.php
index 2abb987db0723..d290b89b2a6bc 100644
--- a/app/code/Magento/Backend/Block/Page/System/Config/Robots/Reset.php
+++ b/app/code/Magento/Backend/Block/Page/System/Config/Robots/Reset.php
@@ -11,7 +11,7 @@
/**
* "Reset to Defaults" button renderer
*
- * @deprecated 100.2.0
+ * @deprecated 100.1.6
* @author Magento Core Team
*/
class Reset extends \Magento\Config\Block\System\Config\Form\Field
diff --git a/app/code/Magento/Backend/Block/Widget/Form/Element/ElementCreator.php b/app/code/Magento/Backend/Block/Widget/Form/Element/ElementCreator.php
index b9cdd259796d0..1b89746b3a98a 100644
--- a/app/code/Magento/Backend/Block/Widget/Form/Element/ElementCreator.php
+++ b/app/code/Magento/Backend/Block/Widget/Form/Element/ElementCreator.php
@@ -14,7 +14,7 @@
/**
* Class ElementCreator
*
- * @deprecated 100.3.0 in favour of UI component implementation
+ * @deprecated 101.0.1 in favour of UI component implementation
* @package Magento\Backend\Block\Widget\Form\Element
*/
class ElementCreator
diff --git a/app/code/Magento/Backend/Block/Widget/Grid/Massaction.php b/app/code/Magento/Backend/Block/Widget/Grid/Massaction.php
index 662cbedaed8db..53e52fc7252b3 100644
--- a/app/code/Magento/Backend/Block/Widget/Grid/Massaction.php
+++ b/app/code/Magento/Backend/Block/Widget/Grid/Massaction.php
@@ -64,6 +64,7 @@ public function __construct(
* @param array|DataObject $item
*
* @return $this
+ * @since 100.2.3
*/
public function addItem($itemId, $item)
{
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Store.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Store.php
index a9be14b77b29c..7bef74862f029 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Store.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Store.php
@@ -88,7 +88,7 @@ protected function createPage()
*
* @return bool
*
- * @deprecated Backup module is to be removed.
+ * @deprecated 100.2.7 Backup module is to be removed.
*/
protected function _backupDatabase()
{
diff --git a/app/code/Magento/Backend/Test/Mftf/Section/AdminSlideOutDialogSection.xml b/app/code/Magento/Backend/Test/Mftf/Section/AdminSlideOutDialogSection.xml
index a01e025ba3dca..2f799721a8cef 100644
--- a/app/code/Magento/Backend/Test/Mftf/Section/AdminSlideOutDialogSection.xml
+++ b/app/code/Magento/Backend/Test/Mftf/Section/AdminSlideOutDialogSection.xml
@@ -8,7 +8,7 @@
-
+
diff --git a/app/code/Magento/Backend/Test/Mftf/Test/AdminDashboardWithChartsChart.xml b/app/code/Magento/Backend/Test/Mftf/Test/AdminDashboardWithChartsChart.xml
index 55cb5a71505a5..24531067e373f 100644
--- a/app/code/Magento/Backend/Test/Mftf/Test/AdminDashboardWithChartsChart.xml
+++ b/app/code/Magento/Backend/Test/Mftf/Test/AdminDashboardWithChartsChart.xml
@@ -11,6 +11,7 @@
+
diff --git a/app/code/Magento/Backend/Test/Mftf/Test/AdminUserLoginWithStoreCodeInUrlTest.xml b/app/code/Magento/Backend/Test/Mftf/Test/AdminUserLoginWithStoreCodeInUrlTest.xml
index 5485dcaea33ee..0bdd9a8942dc8 100644
--- a/app/code/Magento/Backend/Test/Mftf/Test/AdminUserLoginWithStoreCodeInUrlTest.xml
+++ b/app/code/Magento/Backend/Test/Mftf/Test/AdminUserLoginWithStoreCodeInUrlTest.xml
@@ -11,6 +11,7 @@
+
diff --git a/app/code/Magento/Backend/Ui/Component/Control/DeleteButton.php b/app/code/Magento/Backend/Ui/Component/Control/DeleteButton.php
index 3f4f3669ab75b..d3c177fa907ab 100644
--- a/app/code/Magento/Backend/Ui/Component/Control/DeleteButton.php
+++ b/app/code/Magento/Backend/Ui/Component/Control/DeleteButton.php
@@ -17,6 +17,7 @@
* Provide an ability to show confirmation message on click on the "Delete" button
*
* @api
+ * @since 101.0.0
*/
class DeleteButton implements ButtonProviderInterface
{
@@ -84,6 +85,7 @@ public function __construct(
/**
* {@inheritdoc}
+ * @since 101.0.0
*/
public function getButtonData()
{
diff --git a/app/code/Magento/Backend/Ui/Component/Control/SaveSplitButton.php b/app/code/Magento/Backend/Ui/Component/Control/SaveSplitButton.php
index 75d6bad06e239..f85264e532057 100644
--- a/app/code/Magento/Backend/Ui/Component/Control/SaveSplitButton.php
+++ b/app/code/Magento/Backend/Ui/Component/Control/SaveSplitButton.php
@@ -13,6 +13,7 @@
* Provide an ability to show drop-down list with options clicking on the "Save" button
*
* @api
+ * @since 101.0.0
*/
class SaveSplitButton implements ButtonProviderInterface
{
@@ -31,6 +32,7 @@ public function __construct(string $targetName)
/**
* {@inheritdoc}
+ * @since 101.0.0
*/
public function getButtonData()
{
diff --git a/app/code/Magento/Backend/Ui/Component/Listing/Column/EditAction.php b/app/code/Magento/Backend/Ui/Component/Listing/Column/EditAction.php
index fb0aa6987f4d9..1769bd7b3bb64 100644
--- a/app/code/Magento/Backend/Ui/Component/Listing/Column/EditAction.php
+++ b/app/code/Magento/Backend/Ui/Component/Listing/Column/EditAction.php
@@ -14,6 +14,7 @@
* Represents Edit link in grid for entity by its identifier field
*
* @api
+ * @since 101.0.0
*/
class EditAction extends Column
{
@@ -43,6 +44,7 @@ public function __construct(
/**
* @param array $dataSource
* @return array
+ * @since 101.0.0
*/
public function prepareDataSource(array $dataSource)
{
diff --git a/app/code/Magento/Backend/composer.json b/app/code/Magento/Backend/composer.json
index f9408768136bb..14f833cf89d60 100644
--- a/app/code/Magento/Backend/composer.json
+++ b/app/code/Magento/Backend/composer.json
@@ -5,27 +5,27 @@
"sort-packages": true
},
"require": {
- "php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-backup": "*",
- "magento/module-catalog": "*",
- "magento/module-config": "*",
- "magento/module-customer": "*",
- "magento/module-developer": "*",
- "magento/module-directory": "*",
- "magento/module-eav": "*",
- "magento/module-quote": "*",
- "magento/module-reports": "*",
- "magento/module-require-js": "*",
- "magento/module-sales": "*",
- "magento/module-security": "*",
- "magento/module-store": "*",
- "magento/module-translation": "*",
- "magento/module-ui": "*",
- "magento/module-user": "*"
+ "php": "~7.1.3||~7.2.0",
+ "magento/framework": "102.0.*",
+ "magento/module-backup": "100.3.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-config": "101.1.*",
+ "magento/module-customer": "102.0.*",
+ "magento/module-developer": "100.3.*",
+ "magento/module-directory": "100.3.*",
+ "magento/module-eav": "102.0.*",
+ "magento/module-quote": "101.1.*",
+ "magento/module-reports": "100.3.*",
+ "magento/module-require-js": "100.3.*",
+ "magento/module-sales": "102.0.*",
+ "magento/module-security": "100.3.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-translation": "100.3.*",
+ "magento/module-ui": "101.1.*",
+ "magento/module-user": "101.1.*"
},
"suggest": {
- "magento/module-theme": "*"
+ "magento/module-theme": "101.0.*"
},
"type": "magento2-module",
"license": [
@@ -39,5 +39,6 @@
"psr-4": {
"Magento\\Backend\\": ""
}
- }
+ },
+ "version": "101.0.2-p2"
}
diff --git a/app/code/Magento/Backend/etc/adminhtml/system.xml b/app/code/Magento/Backend/etc/adminhtml/system.xml
index c762dbf58de62..2a7075b4dfb29 100644
--- a/app/code/Magento/Backend/etc/adminhtml/system.xml
+++ b/app/code/Magento/Backend/etc/adminhtml/system.xml
@@ -583,11 +583,6 @@
Magento\Config\Model\Config\Source\Yesno
-
-
- Allows customers to stay logged in when switching between different stores.
- Magento\Config\Model\Config\Source\Yesno
-
diff --git a/app/code/Magento/Backup/Controller/Adminhtml/Index.php b/app/code/Magento/Backup/Controller/Adminhtml/Index.php
index b62963947d7bf..64052254f5233 100644
--- a/app/code/Magento/Backup/Controller/Adminhtml/Index.php
+++ b/app/code/Magento/Backup/Controller/Adminhtml/Index.php
@@ -87,6 +87,7 @@ public function __construct(
/**
* @inheritDoc
+ * @since 100.2.6
*/
public function dispatch(\Magento\Framework\App\RequestInterface $request)
{
diff --git a/app/code/Magento/Backup/Helper/Data.php b/app/code/Magento/Backup/Helper/Data.php
index c6df6a7366852..a29aa01e64d46 100644
--- a/app/code/Magento/Backup/Helper/Data.php
+++ b/app/code/Magento/Backup/Helper/Data.php
@@ -293,6 +293,7 @@ public function extractDataFromFilename($filename)
* Is backup functionality enabled.
*
* @return bool
+ * @since 100.2.6
*/
public function isEnabled(): bool
{
diff --git a/app/code/Magento/Backup/Model/Db.php b/app/code/Magento/Backup/Model/Db.php
index 084b35448a823..0d117a7dff818 100644
--- a/app/code/Magento/Backup/Model/Db.php
+++ b/app/code/Magento/Backup/Model/Db.php
@@ -16,7 +16,7 @@
*
* @api
* @since 100.0.2
- * @deprecated Backup module is to be removed.
+ * @deprecated 100.2.6 Backup module is to be removed.
*/
class Db implements \Magento\Framework\Backup\Db\BackupDbInterface
{
diff --git a/app/code/Magento/Backup/Model/ResourceModel/Db.php b/app/code/Magento/Backup/Model/ResourceModel/Db.php
index 6e7d6f9863f33..c38a7b3005e21 100644
--- a/app/code/Magento/Backup/Model/ResourceModel/Db.php
+++ b/app/code/Magento/Backup/Model/ResourceModel/Db.php
@@ -120,6 +120,7 @@ public function getTableForeignKeysSql($tableName = null)
* @param string|null $tableName
* @param bool $addDropIfExists
* @return string
+ * @since 100.2.3
*/
public function getTableTriggersSql($tableName = null, $addDropIfExists = true)
{
diff --git a/app/code/Magento/Backup/Model/ResourceModel/Helper.php b/app/code/Magento/Backup/Model/ResourceModel/Helper.php
index dace56fd60688..b5a5faae1fde4 100644
--- a/app/code/Magento/Backup/Model/ResourceModel/Helper.php
+++ b/app/code/Magento/Backup/Model/ResourceModel/Helper.php
@@ -345,6 +345,7 @@ public function restoreTransactionIsolationLevel()
* @param boolean $addDropIfExists
* @param boolean $stripDefiner
* @return string
+ * @since 100.2.3
*/
public function getTableTriggersSql($tableName, $addDropIfExists = false, $stripDefiner = true)
{
diff --git a/app/code/Magento/Backup/composer.json b/app/code/Magento/Backup/composer.json
index 81225430b0fc8..f8fde7fa39d6f 100644
--- a/app/code/Magento/Backup/composer.json
+++ b/app/code/Magento/Backup/composer.json
@@ -6,10 +6,10 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-cron": "*",
- "magento/module-store": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-cron": "100.3.*",
+ "magento/module-store": "101.0.*"
},
"type": "magento2-module",
"license": [
@@ -23,5 +23,6 @@
"psr-4": {
"Magento\\Backup\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/Braintree/Model/Adapter/BraintreeAdapter.php b/app/code/Magento/Braintree/Model/Adapter/BraintreeAdapter.php
index fd1fe81b5eba8..b827b4448c7b3 100644
--- a/app/code/Magento/Braintree/Model/Adapter/BraintreeAdapter.php
+++ b/app/code/Magento/Braintree/Model/Adapter/BraintreeAdapter.php
@@ -48,7 +48,7 @@ public function __construct($merchantId, $publicKey, $privateKey, $environment)
* Initializes credentials.
*
* @return void
- * @deprecated is not used anymore
+ * @deprecated 100.2.2 is not used anymore
*/
protected function initCredentials()
{
diff --git a/app/code/Magento/Braintree/composer.json b/app/code/Magento/Braintree/composer.json
index 2f956076f3846..10bfb19865ac5 100644
--- a/app/code/Magento/Braintree/composer.json
+++ b/app/code/Magento/Braintree/composer.json
@@ -7,26 +7,26 @@
"require": {
"php": "~7.1.3||~7.2.0",
"braintree/braintree_php": "3.35.0",
- "magento/framework": "*",
+ "magento/framework": "102.0.*",
"magento/magento-composer-installer": "*",
- "magento/module-catalog": "*",
- "magento/module-backend": "*",
- "magento/module-checkout": "*",
- "magento/module-config": "*",
- "magento/module-customer": "*",
- "magento/module-directory": "*",
- "magento/module-instant-purchase": "*",
- "magento/module-payment": "*",
- "magento/module-paypal": "*",
- "magento/module-quote": "*",
- "magento/module-sales": "*",
- "magento/module-ui": "*",
- "magento/module-vault": "*",
- "magento/module-multishipping": "*"
+ "magento/module-catalog": "103.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-checkout": "100.3.*",
+ "magento/module-config": "101.1.*",
+ "magento/module-customer": "102.0.*",
+ "magento/module-directory": "100.3.*",
+ "magento/module-instant-purchase": "100.3.*",
+ "magento/module-payment": "100.3.*",
+ "magento/module-paypal": "100.3.*",
+ "magento/module-quote": "101.1.*",
+ "magento/module-sales": "102.0.*",
+ "magento/module-ui": "101.1.*",
+ "magento/module-vault": "101.1.*",
+ "magento/module-multishipping": "100.3.*"
},
"suggest": {
- "magento/module-checkout-agreements": "*",
- "magento/module-theme": "*"
+ "magento/module-checkout-agreements": "100.3.*",
+ "magento/module-theme": "101.0.*"
},
"type": "magento2-module",
"license": [
@@ -40,5 +40,6 @@
"psr-4": {
"Magento\\Braintree\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Checkbox.php b/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Checkbox.php
index 46db8a9907341..b3ea050076793 100644
--- a/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Checkbox.php
+++ b/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Checkbox.php
@@ -35,6 +35,7 @@ public function setValidationContainer($elementId, $containerId)
/**
* @inheritdoc
+ * @since 100.3.1
*/
public function getSelectionPrice($selection)
{
diff --git a/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Multi.php b/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Multi.php
index 629f08dc75106..b0f4cd042f4ab 100644
--- a/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Multi.php
+++ b/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Multi.php
@@ -35,6 +35,7 @@ public function setValidationContainer($elementId, $containerId)
/**
* @inheritdoc
+ * @since 100.3.1
*/
public function getSelectionPrice($selection)
{
diff --git a/app/code/Magento/Bundle/Pricing/Price/BundleOptionPrice.php b/app/code/Magento/Bundle/Pricing/Price/BundleOptionPrice.php
index 1c724caaa28d8..96c6d45ff3645 100644
--- a/app/code/Magento/Bundle/Pricing/Price/BundleOptionPrice.php
+++ b/app/code/Magento/Bundle/Pricing/Price/BundleOptionPrice.php
@@ -27,7 +27,7 @@ class BundleOptionPrice extends AbstractPrice implements BundleOptionPriceInterf
/**
* @var BundleSelectionFactory
- * @deprecated
+ * @deprecated 100.2.3
*/
protected $selectionFactory;
@@ -79,7 +79,7 @@ public function getValue()
* Getter for maximal price of options.
*
* @return bool|float
- * @deprecated
+ * @deprecated 100.2.3
*/
public function getMaxValue()
{
diff --git a/app/code/Magento/Bundle/Pricing/Price/ConfiguredPrice.php b/app/code/Magento/Bundle/Pricing/Price/ConfiguredPrice.php
index 11f7e2f3d1f15..4b5ec32bf61aa 100644
--- a/app/code/Magento/Bundle/Pricing/Price/ConfiguredPrice.php
+++ b/app/code/Magento/Bundle/Pricing/Price/ConfiguredPrice.php
@@ -18,6 +18,7 @@
/**
* Configured price model
* @api
+ * @since 100.0.2
*/
class ConfiguredPrice extends CatalogPrice\FinalPrice implements ConfiguredPriceInterface
{
diff --git a/app/code/Magento/Bundle/composer.json b/app/code/Magento/Bundle/composer.json
index 84c9a97698b71..02cafaf3eeb2b 100644
--- a/app/code/Magento/Bundle/composer.json
+++ b/app/code/Magento/Bundle/composer.json
@@ -6,27 +6,27 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-catalog": "*",
- "magento/module-catalog-inventory": "*",
- "magento/module-catalog-rule": "*",
- "magento/module-checkout": "*",
- "magento/module-config": "*",
- "magento/module-customer": "*",
- "magento/module-eav": "*",
- "magento/module-gift-message": "*",
- "magento/module-media-storage": "*",
- "magento/module-quote": "*",
- "magento/module-sales": "*",
- "magento/module-store": "*",
- "magento/module-tax": "*",
- "magento/module-ui": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-catalog-inventory": "100.3.*",
+ "magento/module-catalog-rule": "101.1.*",
+ "magento/module-checkout": "100.3.*",
+ "magento/module-config": "101.1.*",
+ "magento/module-customer": "102.0.*",
+ "magento/module-eav": "102.0.*",
+ "magento/module-gift-message": "100.3.*",
+ "magento/module-media-storage": "100.3.*",
+ "magento/module-quote": "101.1.*",
+ "magento/module-sales": "102.0.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-tax": "100.3.*",
+ "magento/module-ui": "101.1.*"
},
"suggest": {
- "magento/module-webapi": "*",
- "magento/module-bundle-sample-data": "*",
- "magento/module-sales-rule": "*"
+ "magento/module-webapi": "100.3.*",
+ "magento/module-bundle-sample-data": "Sample Data version: 100.3.*",
+ "magento/module-sales-rule": "101.1.*"
},
"type": "magento2-module",
"license": [
@@ -40,5 +40,6 @@
"psr-4": {
"Magento\\Bundle\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/BundleGraphQl/composer.json b/app/code/Magento/BundleGraphQl/composer.json
index aea55cb5c644c..7c5b27cfce5c3 100644
--- a/app/code/Magento/BundleGraphQl/composer.json
+++ b/app/code/Magento/BundleGraphQl/composer.json
@@ -4,11 +4,11 @@
"type": "magento2-module",
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/module-catalog": "*",
- "magento/module-bundle": "*",
- "magento/module-catalog-graph-ql": "*",
- "magento/module-store": "*",
- "magento/framework": "*"
+ "magento/module-catalog": "103.0.*",
+ "magento/module-bundle": "100.3.*",
+ "magento/module-catalog-graph-ql": "100.3.*",
+ "magento/module-store": "101.0.*",
+ "magento/framework": "102.0.*"
},
"license": [
"OSL-3.0",
@@ -21,5 +21,6 @@
"psr-4": {
"Magento\\BundleGraphQl\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/BundleImportExport/Model/Import/Product/Type/Bundle.php b/app/code/Magento/BundleImportExport/Model/Import/Product/Type/Bundle.php
index 81a47d72602b7..494c8a9bb60f6 100644
--- a/app/code/Magento/BundleImportExport/Model/Import/Product/Type/Bundle.php
+++ b/app/code/Magento/BundleImportExport/Model/Import/Product/Type/Bundle.php
@@ -352,7 +352,7 @@ protected function populateSelectionTemplate($selection, $optionId, $parentId, $
/**
* Deprecated method for retrieving mapping between skus and products.
*
- * @deprecated Misspelled method
+ * @deprecated 100.3.0 Misspelled method
* @see retrieveProductsByCachedSkus
*/
protected function retrieveProducsByCachedSkus()
diff --git a/app/code/Magento/BundleImportExport/composer.json b/app/code/Magento/BundleImportExport/composer.json
index 42d9dc558d31e..e3211aaa71c8f 100644
--- a/app/code/Magento/BundleImportExport/composer.json
+++ b/app/code/Magento/BundleImportExport/composer.json
@@ -6,13 +6,13 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-bundle": "*",
- "magento/module-store": "*",
- "magento/module-catalog": "*",
- "magento/module-catalog-import-export": "*",
- "magento/module-eav": "*",
- "magento/module-import-export": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-bundle": "100.3.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-catalog-import-export": "101.0.*",
+ "magento/module-eav": "102.0.*",
+ "magento/module-import-export": "100.3.*"
},
"type": "magento2-module",
"license": [
@@ -26,5 +26,6 @@
"psr-4": {
"Magento\\BundleImportExport\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/CacheInvalidate/composer.json b/app/code/Magento/CacheInvalidate/composer.json
index 01ac4d30d844d..4772b15c79479 100644
--- a/app/code/Magento/CacheInvalidate/composer.json
+++ b/app/code/Magento/CacheInvalidate/composer.json
@@ -6,8 +6,8 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-page-cache": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-page-cache": "100.3.*"
},
"type": "magento2-module",
"license": [
@@ -21,5 +21,6 @@
"psr-4": {
"Magento\\CacheInvalidate\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/Captcha/composer.json b/app/code/Magento/Captcha/composer.json
index 62f586ba82ae0..74cab4178b332 100644
--- a/app/code/Magento/Captcha/composer.json
+++ b/app/code/Magento/Captcha/composer.json
@@ -6,11 +6,11 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-checkout": "*",
- "magento/module-customer": "*",
- "magento/module-store": "*",
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-checkout": "100.3.*",
+ "magento/module-customer": "102.0.*",
+ "magento/module-store": "101.0.*",
"zendframework/zend-captcha": "^2.7.1",
"zendframework/zend-db": "^2.8.2",
"zendframework/zend-session": "^2.7.3"
@@ -27,5 +27,6 @@
"psr-4": {
"Magento\\Captcha\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/Catalog/Api/BasePriceStorageInterface.php b/app/code/Magento/Catalog/Api/BasePriceStorageInterface.php
index 05e5106b287a0..2afa14d874e4b 100644
--- a/app/code/Magento/Catalog/Api/BasePriceStorageInterface.php
+++ b/app/code/Magento/Catalog/Api/BasePriceStorageInterface.php
@@ -9,7 +9,7 @@
/**
* Base prices storage.
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface BasePriceStorageInterface
{
@@ -18,7 +18,7 @@ interface BasePriceStorageInterface
*
* @param string[] $skus
* @return \Magento\Catalog\Api\Data\BasePriceInterface[]
- * @since 101.1.0
+ * @since 102.0.0
*/
public function get(array $skus);
@@ -33,7 +33,7 @@ public function get(array $skus);
* @param \Magento\Catalog\Api\Data\BasePriceInterface[] $prices
* @return \Magento\Catalog\Api\Data\PriceUpdateResultInterface[]
* @throws \Magento\Framework\Exception\CouldNotSaveException
- * @since 101.1.0
+ * @since 102.0.0
*/
public function update(array $prices);
}
diff --git a/app/code/Magento/Catalog/Api/CategoryListInterface.php b/app/code/Magento/Catalog/Api/CategoryListInterface.php
index 22a9da00eaffc..2f6cd1f38730a 100644
--- a/app/code/Magento/Catalog/Api/CategoryListInterface.php
+++ b/app/code/Magento/Catalog/Api/CategoryListInterface.php
@@ -7,7 +7,7 @@
/**
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface CategoryListInterface
{
@@ -16,7 +16,7 @@ interface CategoryListInterface
*
* @param \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria
* @return \Magento\Catalog\Api\Data\CategorySearchResultsInterface
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria);
}
diff --git a/app/code/Magento/Catalog/Api/CostStorageInterface.php b/app/code/Magento/Catalog/Api/CostStorageInterface.php
index a52d290bd46d8..debb791a7b756 100644
--- a/app/code/Magento/Catalog/Api/CostStorageInterface.php
+++ b/app/code/Magento/Catalog/Api/CostStorageInterface.php
@@ -9,7 +9,7 @@
/**
* Product cost storage.
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface CostStorageInterface
{
@@ -19,7 +19,7 @@ interface CostStorageInterface
* @param string[] $skus
* @return \Magento\Catalog\Api\Data\CostInterface[]
* @throws \Magento\Framework\Exception\NoSuchEntityException
- * @since 101.1.0
+ * @since 102.0.0
*/
public function get(array $skus);
@@ -33,7 +33,7 @@ public function get(array $skus);
*
* @param \Magento\Catalog\Api\Data\CostInterface[] $prices
* @return \Magento\Catalog\Api\Data\PriceUpdateResultInterface[]
- * @since 101.1.0
+ * @since 102.0.0
*/
public function update(array $prices);
@@ -45,7 +45,7 @@ public function update(array $prices);
* @return bool Will return True if deleted.
* @throws \Magento\Framework\Exception\NoSuchEntityException
* @throws \Magento\Framework\Exception\CouldNotDeleteException
- * @since 101.1.0
+ * @since 102.0.0
*/
public function delete(array $skus);
}
diff --git a/app/code/Magento/Catalog/Api/Data/BasePriceInterface.php b/app/code/Magento/Catalog/Api/Data/BasePriceInterface.php
index a527bbfe947ab..1bce067650313 100644
--- a/app/code/Magento/Catalog/Api/Data/BasePriceInterface.php
+++ b/app/code/Magento/Catalog/Api/Data/BasePriceInterface.php
@@ -9,7 +9,7 @@
/**
* Price interface.
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface BasePriceInterface extends \Magento\Framework\Api\ExtensibleDataInterface
{
@@ -26,7 +26,7 @@ interface BasePriceInterface extends \Magento\Framework\Api\ExtensibleDataInterf
*
* @param float $price
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setPrice($price);
@@ -34,7 +34,7 @@ public function setPrice($price);
* Get price.
*
* @return float
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getPrice();
@@ -43,7 +43,7 @@ public function getPrice();
*
* @param int $storeId
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setStoreId($storeId);
@@ -51,7 +51,7 @@ public function setStoreId($storeId);
* Get store id.
*
* @return int
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getStoreId();
@@ -60,7 +60,7 @@ public function getStoreId();
*
* @param string $sku
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setSku($sku);
@@ -68,7 +68,7 @@ public function setSku($sku);
* Get SKU.
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getSku();
@@ -76,7 +76,7 @@ public function getSku();
* Retrieve existing extension attributes object or create a new one.
*
* @return \Magento\Catalog\Api\Data\BasePriceExtensionInterface|null
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getExtensionAttributes();
@@ -85,7 +85,7 @@ public function getExtensionAttributes();
*
* @param \Magento\Catalog\Api\Data\BasePriceExtensionInterface $extensionAttributes
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setExtensionAttributes(
\Magento\Catalog\Api\Data\BasePriceExtensionInterface $extensionAttributes
diff --git a/app/code/Magento/Catalog/Api/Data/CategoryLinkInterface.php b/app/code/Magento/Catalog/Api/Data/CategoryLinkInterface.php
index e9c0e04c4f746..c9ca57dc1eff1 100644
--- a/app/code/Magento/Catalog/Api/Data/CategoryLinkInterface.php
+++ b/app/code/Magento/Catalog/Api/Data/CategoryLinkInterface.php
@@ -10,20 +10,20 @@
/**
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface CategoryLinkInterface extends ExtensibleDataInterface
{
/**
* @return int|null
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getPosition();
/**
* @param int $position
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setPosition($position);
@@ -31,7 +31,7 @@ public function setPosition($position);
* Get category id
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getCategoryId();
@@ -40,7 +40,7 @@ public function getCategoryId();
*
* @param string $categoryId
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setCategoryId($categoryId);
@@ -48,7 +48,7 @@ public function setCategoryId($categoryId);
* Retrieve existing extension attributes object.
*
* @return \Magento\Catalog\Api\Data\CategoryLinkExtensionInterface|null
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getExtensionAttributes();
@@ -57,7 +57,7 @@ public function getExtensionAttributes();
*
* @param \Magento\Catalog\Api\Data\CategoryLinkExtensionInterface $extensionAttributes
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setExtensionAttributes(
\Magento\Catalog\Api\Data\CategoryLinkExtensionInterface $extensionAttributes
diff --git a/app/code/Magento/Catalog/Api/Data/CategorySearchResultsInterface.php b/app/code/Magento/Catalog/Api/Data/CategorySearchResultsInterface.php
index 38f3f89d6a0c5..0ed03c2d56519 100644
--- a/app/code/Magento/Catalog/Api/Data/CategorySearchResultsInterface.php
+++ b/app/code/Magento/Catalog/Api/Data/CategorySearchResultsInterface.php
@@ -9,7 +9,7 @@
/**
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface CategorySearchResultsInterface extends SearchResultsInterface
{
@@ -17,7 +17,7 @@ interface CategorySearchResultsInterface extends SearchResultsInterface
* Get categories
*
* @return \Magento\Catalog\Api\Data\CategoryInterface[]
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getItems();
@@ -26,7 +26,7 @@ public function getItems();
*
* @param \Magento\Catalog\Api\Data\CategoryInterface[] $items
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setItems(array $items);
}
diff --git a/app/code/Magento/Catalog/Api/Data/CostInterface.php b/app/code/Magento/Catalog/Api/Data/CostInterface.php
index a9966f56bafa3..ed5e8cd8a2bb2 100644
--- a/app/code/Magento/Catalog/Api/Data/CostInterface.php
+++ b/app/code/Magento/Catalog/Api/Data/CostInterface.php
@@ -9,7 +9,7 @@
/**
* Cost interface.
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface CostInterface extends \Magento\Framework\Api\ExtensibleDataInterface
{
@@ -26,7 +26,7 @@ interface CostInterface extends \Magento\Framework\Api\ExtensibleDataInterface
*
* @param float $cost
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setCost($cost);
@@ -34,7 +34,7 @@ public function setCost($cost);
* Get cost value.
*
* @return float
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getCost();
@@ -43,7 +43,7 @@ public function getCost();
*
* @param int $storeId
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setStoreId($storeId);
@@ -51,7 +51,7 @@ public function setStoreId($storeId);
* Get store id.
*
* @return int
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getStoreId();
@@ -60,7 +60,7 @@ public function getStoreId();
*
* @param string $sku
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setSku($sku);
@@ -68,7 +68,7 @@ public function setSku($sku);
* Get SKU.
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getSku();
@@ -76,7 +76,7 @@ public function getSku();
* Retrieve existing extension attributes object or create a new one.
*
* @return \Magento\Catalog\Api\Data\CostExtensionInterface|null
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getExtensionAttributes();
@@ -85,7 +85,7 @@ public function getExtensionAttributes();
*
* @param \Magento\Catalog\Api\Data\CostExtensionInterface $extensionAttributes
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setExtensionAttributes(
\Magento\Catalog\Api\Data\CostExtensionInterface $extensionAttributes
diff --git a/app/code/Magento/Catalog/Api/Data/EavAttributeInterface.php b/app/code/Magento/Catalog/Api/Data/EavAttributeInterface.php
index dabd3234c6dab..08696156fa11a 100644
--- a/app/code/Magento/Catalog/Api/Data/EavAttributeInterface.php
+++ b/app/code/Magento/Catalog/Api/Data/EavAttributeInterface.php
@@ -145,7 +145,7 @@ public function getIsFilterableInGrid();
*
* @param bool|null $isUsedInGrid
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setIsUsedInGrid($isUsedInGrid);
@@ -154,7 +154,7 @@ public function setIsUsedInGrid($isUsedInGrid);
*
* @param bool|null $isVisibleInGrid
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setIsVisibleInGrid($isVisibleInGrid);
@@ -163,7 +163,7 @@ public function setIsVisibleInGrid($isVisibleInGrid);
*
* @param bool|null $isFilterableInGrid
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setIsFilterableInGrid($isFilterableInGrid);
diff --git a/app/code/Magento/Catalog/Api/Data/PriceUpdateResultInterface.php b/app/code/Magento/Catalog/Api/Data/PriceUpdateResultInterface.php
index 426c5becc7a24..25bd9eeb438c9 100644
--- a/app/code/Magento/Catalog/Api/Data/PriceUpdateResultInterface.php
+++ b/app/code/Magento/Catalog/Api/Data/PriceUpdateResultInterface.php
@@ -9,7 +9,7 @@
/**
* Interface returned in case of incorrect price passed to efficient price API.
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface PriceUpdateResultInterface extends \Magento\Framework\Api\ExtensibleDataInterface
{
@@ -24,7 +24,7 @@ interface PriceUpdateResultInterface extends \Magento\Framework\Api\ExtensibleDa
* Get error message, that contains description of error occurred during price update.
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getMessage();
@@ -33,7 +33,7 @@ public function getMessage();
*
* @param string $message
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setMessage($message);
@@ -41,7 +41,7 @@ public function setMessage($message);
* Get parameters, that could be displayed in error message placeholders.
*
* @return string[]
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getParameters();
@@ -50,7 +50,7 @@ public function getParameters();
*
* @param string[] $parameters
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setParameters(array $parameters);
@@ -59,7 +59,7 @@ public function setParameters(array $parameters);
* If extension attributes do not exist return null.
*
* @return \Magento\Catalog\Api\Data\PriceUpdateResultExtensionInterface|null
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getExtensionAttributes();
@@ -68,7 +68,7 @@ public function getExtensionAttributes();
*
* @param \Magento\Catalog\Api\Data\PriceUpdateResultExtensionInterface $extensionAttributes
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setExtensionAttributes(
\Magento\Catalog\Api\Data\PriceUpdateResultExtensionInterface $extensionAttributes
diff --git a/app/code/Magento/Catalog/Api/Data/ProductAttributeInterface.php b/app/code/Magento/Catalog/Api/Data/ProductAttributeInterface.php
index 590c23a0aa0b1..15fd17f41e158 100644
--- a/app/code/Magento/Catalog/Api/Data/ProductAttributeInterface.php
+++ b/app/code/Magento/Catalog/Api/Data/ProductAttributeInterface.php
@@ -35,6 +35,7 @@ interface ProductAttributeInterface extends \Magento\Catalog\Api\Data\EavAttribu
/**
* @return \Magento\Eav\Api\Data\AttributeExtensionInterface|null
+ * @since 103.0.0
*/
public function getExtensionAttributes();
}
diff --git a/app/code/Magento/Catalog/Api/Data/ProductFrontendActionInterface.php b/app/code/Magento/Catalog/Api/Data/ProductFrontendActionInterface.php
index 9a6cfebc71fa0..610c457215853 100644
--- a/app/code/Magento/Catalog/Api/Data/ProductFrontendActionInterface.php
+++ b/app/code/Magento/Catalog/Api/Data/ProductFrontendActionInterface.php
@@ -9,7 +9,7 @@
* Represents Data Object for a Product Frontend Action like Product View or Comparison
*
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface ProductFrontendActionInterface
{
@@ -17,7 +17,7 @@ interface ProductFrontendActionInterface
* Gets Identifier of a Product Frontend Action
*
* @return int
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getActionId();
@@ -26,7 +26,7 @@ public function getActionId();
*
* @param int $actionId
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setActionId($actionId);
@@ -34,7 +34,7 @@ public function setActionId($actionId);
* Gets Identifier of Visitor who performs a Product Frontend Action
*
* @return int
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getVisitorId();
@@ -43,7 +43,7 @@ public function getVisitorId();
*
* @param int $visitorId
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setVisitorId($visitorId);
@@ -51,7 +51,7 @@ public function setVisitorId($visitorId);
* Gets Identifier of Customer who performs a Product Frontend Action
*
* @return int
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getCustomerId();
@@ -60,7 +60,7 @@ public function getCustomerId();
*
* @param int $customerId
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setCustomerId($customerId);
@@ -68,7 +68,7 @@ public function setCustomerId($customerId);
* Gets Identifier of Product a Product Frontend Action is performed on
*
* @return int
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getProductId();
@@ -77,7 +77,7 @@ public function getProductId();
*
* @param int $productId
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setProductId($productId);
@@ -85,7 +85,7 @@ public function setProductId($productId);
* Gets Identifier of Type of a Product Frontend Action
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getTypeId();
@@ -94,7 +94,7 @@ public function getTypeId();
*
* @param string $typeId
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setTypeId($typeId);
@@ -102,7 +102,7 @@ public function setTypeId($typeId);
* Gets JS timestamp of a Product Frontend Action (in microseconds)
*
* @return int
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getAddedAt();
@@ -111,7 +111,7 @@ public function getAddedAt();
*
* @param int $addedAt
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setAddedAt($addedAt);
}
diff --git a/app/code/Magento/Catalog/Api/Data/ProductRender/ButtonInterface.php b/app/code/Magento/Catalog/Api/Data/ProductRender/ButtonInterface.php
index e2f4dfa201593..592b47d216ae9 100644
--- a/app/code/Magento/Catalog/Api/Data/ProductRender/ButtonInterface.php
+++ b/app/code/Magento/Catalog/Api/Data/ProductRender/ButtonInterface.php
@@ -14,7 +14,7 @@
* This interface represents all manner of product buttons: add to cart, add to compare, etc...
* The buttons describes by this interface should have interaction with backend
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface ButtonInterface extends ExtensibleDataInterface
{
@@ -22,7 +22,7 @@ interface ButtonInterface extends ExtensibleDataInterface
* @param string $postData Post data should be serialized (JSON/serialized) string
* Post data can be empty
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setPostData($postData);
@@ -33,7 +33,7 @@ public function setPostData($postData);
* to handle product action
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getPostData();
@@ -44,7 +44,7 @@ public function getPostData();
*
* @param string $url
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setUrl($url);
@@ -52,7 +52,7 @@ public function setUrl($url);
* Retrieve url, needed to add product to cart
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getUrl();
@@ -62,7 +62,7 @@ public function getUrl();
*
* @param bool $requiredOptions
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setRequiredOptions($requiredOptions);
@@ -70,7 +70,7 @@ public function setRequiredOptions($requiredOptions);
* Retrieve flag whether a product has options or not
*
* @return bool
- * @since 101.1.0
+ * @since 102.0.0
*/
public function hasRequiredOptions();
@@ -78,7 +78,7 @@ public function hasRequiredOptions();
* Retrieve existing extension attributes object or create a new one.
*
* @return \Magento\Catalog\Api\Data\ProductRender\ButtonExtensionInterface|null
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getExtensionAttributes();
@@ -87,7 +87,7 @@ public function getExtensionAttributes();
*
* @param \Magento\Catalog\Api\Data\ProductRender\ButtonExtensionInterface $extensionAttributes
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setExtensionAttributes(
\Magento\Catalog\Api\Data\ProductRender\ButtonExtensionInterface $extensionAttributes
diff --git a/app/code/Magento/Catalog/Api/Data/ProductRender/FormattedPriceInfoInterface.php b/app/code/Magento/Catalog/Api/Data/ProductRender/FormattedPriceInfoInterface.php
index 43e0de4f20176..f86302bc596e1 100644
--- a/app/code/Magento/Catalog/Api/Data/ProductRender/FormattedPriceInfoInterface.php
+++ b/app/code/Magento/Catalog/Api/Data/ProductRender/FormattedPriceInfoInterface.php
@@ -15,7 +15,7 @@
* Consider currency, rounding and html
*
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface FormattedPriceInfoInterface extends \Magento\Framework\Api\ExtensibleDataInterface
{
@@ -23,7 +23,7 @@ interface FormattedPriceInfoInterface extends \Magento\Framework\Api\ExtensibleD
* Retrieve html with final price
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getFinalPrice();
@@ -33,7 +33,7 @@ public function getFinalPrice();
*
* @param string $finalPrice
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setFinalPrice($finalPrice);
@@ -42,7 +42,7 @@ public function setFinalPrice($finalPrice);
* E.g. for product with custom options is price with the most expensive custom option
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getMaxPrice();
@@ -51,7 +51,7 @@ public function getMaxPrice();
*
* @param string $maxPrice
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setMaxPrice($maxPrice);
@@ -60,7 +60,7 @@ public function setMaxPrice($maxPrice);
* The minimal price is for example, the lowest price of all variations for complex product
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getMinimalPrice();
@@ -71,7 +71,7 @@ public function getMinimalPrice();
*
* @param string $maxRegularPrice
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setMaxRegularPrice($maxRegularPrice);
@@ -79,7 +79,7 @@ public function setMaxRegularPrice($maxRegularPrice);
* Retrieve max regular price
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getMaxRegularPrice();
@@ -88,7 +88,7 @@ public function getMaxRegularPrice();
*
* @param string $minRegularPrice
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setMinimalRegularPrice($minRegularPrice);
@@ -96,7 +96,7 @@ public function setMinimalRegularPrice($minRegularPrice);
* Retrieve minimal regular price
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getMinimalRegularPrice();
@@ -107,7 +107,7 @@ public function getMinimalRegularPrice();
*
* @param string $specialPrice
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setSpecialPrice($specialPrice);
@@ -115,7 +115,7 @@ public function setSpecialPrice($specialPrice);
* Retrieve special price
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getSpecialPrice();
@@ -124,7 +124,7 @@ public function getSpecialPrice();
*
* @param string $minimalPrice
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setMinimalPrice($minimalPrice);
@@ -133,7 +133,7 @@ public function setMinimalPrice($minimalPrice);
* Usually this price is corresponding to price in admin panel of product
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getRegularPrice();
@@ -142,7 +142,7 @@ public function getRegularPrice();
*
* @param string $regularPrice
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setRegularPrice($regularPrice);
@@ -150,7 +150,7 @@ public function setRegularPrice($regularPrice);
* Retrieve existing extension attributes object or create a new one.
*
* @return \Magento\Catalog\Api\Data\ProductRender\FormattedPriceInfoExtensionInterface|null
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getExtensionAttributes();
@@ -159,7 +159,7 @@ public function getExtensionAttributes();
*
* @param \Magento\Catalog\Api\Data\ProductRender\FormattedPriceInfoExtensionInterface $extensionAttributes
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setExtensionAttributes(
\Magento\Catalog\Api\Data\ProductRender\FormattedPriceInfoExtensionInterface $extensionAttributes
diff --git a/app/code/Magento/Catalog/Api/Data/ProductRender/ImageInterface.php b/app/code/Magento/Catalog/Api/Data/ProductRender/ImageInterface.php
index 45b070d2706dc..49789e5ce9ed7 100644
--- a/app/code/Magento/Catalog/Api/Data/ProductRender/ImageInterface.php
+++ b/app/code/Magento/Catalog/Api/Data/ProductRender/ImageInterface.php
@@ -14,7 +14,7 @@
* Represents physical characteristics of image, that can be used in product listing or product view
*
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface ImageInterface extends ExtensibleDataInterface
{
@@ -24,7 +24,7 @@ interface ImageInterface extends ExtensibleDataInterface
*
* @param string $url
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setUrl($url);
@@ -32,7 +32,7 @@ public function setUrl($url);
* Retrieve image url
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getUrl();
@@ -43,7 +43,7 @@ public function getUrl();
* What size should this image have, etc...
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getCode();
@@ -52,7 +52,7 @@ public function getCode();
*
* @param string $code
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setCode($code);
@@ -61,7 +61,7 @@ public function setCode($code);
*
* @param string $height
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setHeight($height);
@@ -69,7 +69,7 @@ public function setHeight($height);
* Retrieve image height
*
* @return float
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getHeight();
@@ -77,7 +77,7 @@ public function getHeight();
* Set image width in px
*
* @return float
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getWidth();
@@ -86,7 +86,7 @@ public function getWidth();
*
* @param string $width
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setWidth($width);
@@ -96,7 +96,7 @@ public function setWidth($width);
* Image label is short description of this image
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getLabel();
@@ -105,7 +105,7 @@ public function getLabel();
*
* @param string $label
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setLabel($label);
@@ -115,7 +115,7 @@ public function setLabel($label);
* This width is image dimension, which represents the width, that can be used for performance improvements
*
* @return float
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getResizedWidth();
@@ -124,7 +124,7 @@ public function getResizedWidth();
*
* @param string $width
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setResizedWidth($width);
@@ -133,7 +133,7 @@ public function setResizedWidth($width);
*
* @param string $height
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setResizedHeight($height);
@@ -141,7 +141,7 @@ public function setResizedHeight($height);
* Retrieve resize height
*
* @return float
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getResizedHeight();
@@ -149,7 +149,7 @@ public function getResizedHeight();
* Retrieve existing extension attributes object or create a new one.
*
* @return \Magento\Catalog\Api\Data\ProductRender\ImageExtensionInterface|null
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getExtensionAttributes();
@@ -158,7 +158,7 @@ public function getExtensionAttributes();
*
* @param \Magento\Catalog\Api\Data\ProductRender\ImageExtensionInterface $extensionAttributes
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setExtensionAttributes(
\Magento\Catalog\Api\Data\ProductRender\ImageExtensionInterface $extensionAttributes
diff --git a/app/code/Magento/Catalog/Api/Data/ProductRender/PriceInfoInterface.php b/app/code/Magento/Catalog/Api/Data/ProductRender/PriceInfoInterface.php
index 9768b3c08c8ab..0e9b1c53fcd14 100644
--- a/app/code/Magento/Catalog/Api/Data/ProductRender/PriceInfoInterface.php
+++ b/app/code/Magento/Catalog/Api/Data/ProductRender/PriceInfoInterface.php
@@ -10,7 +10,7 @@
* Price interface.
*
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface PriceInfoInterface extends \Magento\Framework\Api\ExtensibleDataInterface
{
@@ -18,7 +18,7 @@ interface PriceInfoInterface extends \Magento\Framework\Api\ExtensibleDataInterf
* Retrieve final price
*
* @return float
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getFinalPrice();
@@ -29,7 +29,7 @@ public function getFinalPrice();
*
* @param float $finalPrice
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setFinalPrice($finalPrice);
@@ -39,7 +39,7 @@ public function setFinalPrice($finalPrice);
* E.g. for product with custom options is price with the most expensive custom option
*
* @return float
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getMaxPrice();
@@ -48,7 +48,7 @@ public function getMaxPrice();
*
* @param float $maxPrice
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setMaxPrice($maxPrice);
@@ -60,7 +60,7 @@ public function setMaxPrice($maxPrice);
*
* @param float $maxRegularPrice
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setMaxRegularPrice($maxRegularPrice);
@@ -68,7 +68,7 @@ public function setMaxRegularPrice($maxRegularPrice);
* Retrieve max regular price
*
* @return float
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getMaxRegularPrice();
@@ -77,7 +77,7 @@ public function getMaxRegularPrice();
*
* @param float $minRegularPrice
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setMinimalRegularPrice($minRegularPrice);
@@ -85,7 +85,7 @@ public function setMinimalRegularPrice($minRegularPrice);
* Retrieve minimal regular price
*
* @return float
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getMinimalRegularPrice();
@@ -96,7 +96,7 @@ public function getMinimalRegularPrice();
*
* @param float $specialPrice
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setSpecialPrice($specialPrice);
@@ -104,7 +104,7 @@ public function setSpecialPrice($specialPrice);
* Retrieve special price
*
* @return float
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getSpecialPrice();
@@ -112,7 +112,7 @@ public function getSpecialPrice();
* Retrieve minimal price
*
* @return float
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getMinimalPrice();
@@ -121,7 +121,7 @@ public function getMinimalPrice();
*
* @param float $minimalPrice
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setMinimalPrice($minimalPrice);
@@ -129,7 +129,7 @@ public function setMinimalPrice($minimalPrice);
* Retrieve regular price
*
* @return float
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getRegularPrice();
@@ -140,7 +140,7 @@ public function getRegularPrice();
*
* @param float $regularPrice
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setRegularPrice($regularPrice);
@@ -148,7 +148,7 @@ public function setRegularPrice($regularPrice);
* Retrieve dto with formatted prices
*
* @return \Magento\Catalog\Api\Data\ProductRender\FormattedPriceInfoInterface
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getFormattedPrices();
@@ -157,7 +157,7 @@ public function getFormattedPrices();
*
* @param FormattedPriceInfoInterface $formattedPriceInfo
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setFormattedPrices(FormattedPriceInfoInterface $formattedPriceInfo);
@@ -165,7 +165,7 @@ public function setFormattedPrices(FormattedPriceInfoInterface $formattedPriceIn
* Retrieve existing extension attributes object or create a new one.
*
* @return \Magento\Catalog\Api\Data\ProductRender\PriceInfoExtensionInterface|null
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getExtensionAttributes();
@@ -174,7 +174,7 @@ public function getExtensionAttributes();
*
* @param \Magento\Catalog\Api\Data\ProductRender\PriceInfoExtensionInterface $extensionAttributes
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setExtensionAttributes(
\Magento\Catalog\Api\Data\ProductRender\PriceInfoExtensionInterface $extensionAttributes
diff --git a/app/code/Magento/Catalog/Api/Data/ProductRenderInterface.php b/app/code/Magento/Catalog/Api/Data/ProductRenderInterface.php
index 166a1aba76b61..e1bd1a7899b67 100644
--- a/app/code/Magento/Catalog/Api/Data/ProductRenderInterface.php
+++ b/app/code/Magento/Catalog/Api/Data/ProductRenderInterface.php
@@ -15,7 +15,7 @@
* This information is put into part as Add To Cart or Add to Compare Data or Price Data
*
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface ProductRenderInterface extends ExtensibleDataInterface
{
@@ -23,7 +23,7 @@ interface ProductRenderInterface extends ExtensibleDataInterface
* Provide information needed for render "Add To Cart" button on front
*
* @return \Magento\Catalog\Api\Data\ProductRender\ButtonInterface
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getAddToCartButton();
@@ -32,7 +32,7 @@ public function getAddToCartButton();
*
* @param ButtonInterface $cartAddToCartButton
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setAddToCartButton(ButtonInterface $cartAddToCartButton);
@@ -40,7 +40,7 @@ public function setAddToCartButton(ButtonInterface $cartAddToCartButton);
* Provide information needed for render "Add To Compare" button on front
*
* @return \Magento\Catalog\Api\Data\ProductRender\ButtonInterface
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getAddToCompareButton();
@@ -49,7 +49,7 @@ public function getAddToCompareButton();
*
* @param ButtonInterface $compareButton
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setAddToCompareButton(ButtonInterface $compareButton);
@@ -59,7 +59,7 @@ public function setAddToCompareButton(ButtonInterface $compareButton);
* Prices are represented in raw format and in current currency
*
* @return \Magento\Catalog\Api\Data\ProductRender\PriceInfoInterface
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getPriceInfo();
@@ -68,7 +68,7 @@ public function getPriceInfo();
*
* @param \Magento\Catalog\Api\Data\ProductRender\PriceInfoInterface $priceInfo
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setPriceInfo(PriceInfoInterface $priceInfo);
@@ -78,7 +78,7 @@ public function setPriceInfo(PriceInfoInterface $priceInfo);
* Images can be separated by image codes
*
* @return \Magento\Catalog\Api\Data\ProductRender\ImageInterface[]
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getImages();
@@ -87,7 +87,7 @@ public function getImages();
*
* @param \Magento\Catalog\Api\Data\ProductRender\ImageInterface[] $images
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setImages(array $images);
@@ -95,7 +95,7 @@ public function setImages(array $images);
* Provide product url
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getUrl();
@@ -104,7 +104,7 @@ public function getUrl();
*
* @param string $url
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setUrl($url);
@@ -112,7 +112,7 @@ public function setUrl($url);
* Provide product identifier
*
* @return int
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getId();
@@ -121,7 +121,7 @@ public function getId();
*
* @param int $id
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setId($id);
@@ -129,7 +129,7 @@ public function setId($id);
* Provide product name
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getName();
@@ -138,7 +138,7 @@ public function getName();
*
* @param string $name
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setName($name);
@@ -146,7 +146,7 @@ public function setName($name);
* Provide product type. Such as bundle, grouped, simple, etc...
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getType();
@@ -155,7 +155,7 @@ public function getType();
*
* @param string $productType
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setType($productType);
@@ -163,7 +163,7 @@ public function setType($productType);
* Provide information about product saleability (In Stock)
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getIsSalable();
@@ -175,7 +175,7 @@ public function getIsSalable();
*
* @param string $isSalable
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setIsSalable($isSalable);
@@ -186,7 +186,7 @@ public function setIsSalable($isSalable);
* This setting affect store scope attributes
*
* @return int
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getStoreId();
@@ -195,7 +195,7 @@ public function getStoreId();
*
* @param int $storeId
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setStoreId($storeId);
@@ -205,7 +205,7 @@ public function setStoreId($storeId);
* This setting affect formatted prices*
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getCurrencyCode();
@@ -214,7 +214,7 @@ public function getCurrencyCode();
*
* @param string $currencyCode
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setCurrencyCode($currencyCode);
@@ -222,7 +222,7 @@ public function setCurrencyCode($currencyCode);
* Retrieve existing extension attributes object or create a new one.
*
* @return \Magento\Catalog\Api\Data\ProductRenderExtensionInterface
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getExtensionAttributes();
@@ -231,7 +231,7 @@ public function getExtensionAttributes();
*
* @param \Magento\Catalog\Api\Data\ProductRenderExtensionInterface $extensionAttributes
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setExtensionAttributes(
\Magento\Catalog\Api\Data\ProductRenderExtensionInterface $extensionAttributes
diff --git a/app/code/Magento/Catalog/Api/Data/SpecialPriceInterface.php b/app/code/Magento/Catalog/Api/Data/SpecialPriceInterface.php
index 62028ed788dd5..ec4feb5076238 100644
--- a/app/code/Magento/Catalog/Api/Data/SpecialPriceInterface.php
+++ b/app/code/Magento/Catalog/Api/Data/SpecialPriceInterface.php
@@ -9,7 +9,7 @@
/**
* Product Special Price Interface is used to encapsulate data that can be processed by efficient price API.
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface SpecialPriceInterface extends \Magento\Framework\Api\ExtensibleDataInterface
{
@@ -28,7 +28,7 @@ interface SpecialPriceInterface extends \Magento\Framework\Api\ExtensibleDataInt
*
* @param float $price
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setPrice($price);
@@ -36,7 +36,7 @@ public function setPrice($price);
* Get product special price value.
*
* @return float
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getPrice();
@@ -45,7 +45,7 @@ public function getPrice();
*
* @param int $storeId
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setStoreId($storeId);
@@ -53,7 +53,7 @@ public function setStoreId($storeId);
* Get ID of store, that contains special price value.
*
* @return int
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getStoreId();
@@ -62,7 +62,7 @@ public function getStoreId();
*
* @param string $sku
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setSku($sku);
@@ -70,7 +70,7 @@ public function setSku($sku);
* Get SKU of product, that contains special price value.
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getSku();
@@ -79,7 +79,7 @@ public function getSku();
*
* @param string $datetime
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setPriceFrom($datetime);
@@ -87,7 +87,7 @@ public function setPriceFrom($datetime);
* Get start date for special price in Y-m-d H:i:s format.
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getPriceFrom();
@@ -96,7 +96,7 @@ public function getPriceFrom();
*
* @param string $datetime
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setPriceTo($datetime);
@@ -104,7 +104,7 @@ public function setPriceTo($datetime);
* Get end date for special price in Y-m-d H:i:s format.
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getPriceTo();
@@ -113,7 +113,7 @@ public function getPriceTo();
* If extension attributes do not exist return null.
*
* @return \Magento\Catalog\Api\Data\SpecialPriceExtensionInterface|null
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getExtensionAttributes();
@@ -122,7 +122,7 @@ public function getExtensionAttributes();
*
* @param \Magento\Catalog\Api\Data\SpecialPriceExtensionInterface $extensionAttributes
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setExtensionAttributes(
\Magento\Catalog\Api\Data\SpecialPriceExtensionInterface $extensionAttributes
diff --git a/app/code/Magento/Catalog/Api/Data/TierPriceInterface.php b/app/code/Magento/Catalog/Api/Data/TierPriceInterface.php
index eaa1d22726d7c..dae43722bf42c 100644
--- a/app/code/Magento/Catalog/Api/Data/TierPriceInterface.php
+++ b/app/code/Magento/Catalog/Api/Data/TierPriceInterface.php
@@ -9,7 +9,7 @@
/**
* Tier price interface.
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface TierPriceInterface extends \Magento\Framework\Api\ExtensibleDataInterface
{
@@ -31,7 +31,7 @@ interface TierPriceInterface extends \Magento\Framework\Api\ExtensibleDataInterf
*
* @param float $price
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setPrice($price);
@@ -39,7 +39,7 @@ public function setPrice($price);
* Get tier price.
*
* @return float
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getPrice();
@@ -48,7 +48,7 @@ public function getPrice();
*
* @param string $type
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setPriceType($type);
@@ -56,7 +56,7 @@ public function setPriceType($type);
* Get tier price type.
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getPriceType();
@@ -65,7 +65,7 @@ public function getPriceType();
*
* @param int $websiteId
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setWebsiteId($websiteId);
@@ -73,7 +73,7 @@ public function setWebsiteId($websiteId);
* Get website id.
*
* @return int
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getWebsiteId();
@@ -82,7 +82,7 @@ public function getWebsiteId();
*
* @param string $sku
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setSku($sku);
@@ -90,7 +90,7 @@ public function setSku($sku);
* Get SKU.
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getSku();
@@ -99,7 +99,7 @@ public function getSku();
*
* @param string $group
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setCustomerGroup($group);
@@ -107,7 +107,7 @@ public function setCustomerGroup($group);
* Get customer group.
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getCustomerGroup();
@@ -116,7 +116,7 @@ public function getCustomerGroup();
*
* @param float $quantity
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setQuantity($quantity);
@@ -124,7 +124,7 @@ public function setQuantity($quantity);
* Get quantity.
*
* @return float
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getQuantity();
@@ -132,7 +132,7 @@ public function getQuantity();
* Retrieve existing extension attributes object or create a new one.
*
* @return \Magento\Catalog\Api\Data\TierPriceExtensionInterface|null
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getExtensionAttributes();
@@ -141,7 +141,7 @@ public function getExtensionAttributes();
*
* @param \Magento\Catalog\Api\Data\TierPriceExtensionInterface $extensionAttributes
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setExtensionAttributes(
\Magento\Catalog\Api\Data\TierPriceExtensionInterface $extensionAttributes
diff --git a/app/code/Magento/Catalog/Api/ProductRenderListInterface.php b/app/code/Magento/Catalog/Api/ProductRenderListInterface.php
index 954acd35a07db..ddd0f1406f68e 100644
--- a/app/code/Magento/Catalog/Api/ProductRenderListInterface.php
+++ b/app/code/Magento/Catalog/Api/ProductRenderListInterface.php
@@ -11,7 +11,7 @@
* Interface which provides product renders information for products.
*
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface ProductRenderListInterface
{
@@ -26,7 +26,7 @@ interface ProductRenderListInterface
* @param int $storeId
* @param string $currencyCode
* @return \Magento\Catalog\Api\Data\ProductRenderSearchResultsInterface
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria, $storeId, $currencyCode);
}
diff --git a/app/code/Magento/Catalog/Api/ProductTierPriceManagementInterface.php b/app/code/Magento/Catalog/Api/ProductTierPriceManagementInterface.php
index a6c3e975bfd79..dcb17a6f467f8 100644
--- a/app/code/Magento/Catalog/Api/ProductTierPriceManagementInterface.php
+++ b/app/code/Magento/Catalog/Api/ProductTierPriceManagementInterface.php
@@ -8,7 +8,7 @@
/**
* @api
- * @deprecated 101.1.0 use ScopedProductTierPriceManagementInterface instead
+ * @deprecated 102.0.0 use ScopedProductTierPriceManagementInterface instead
* @since 100.0.2
*/
interface ProductTierPriceManagementInterface
diff --git a/app/code/Magento/Catalog/Api/ScopedProductTierPriceManagementInterface.php b/app/code/Magento/Catalog/Api/ScopedProductTierPriceManagementInterface.php
index 1a3d05de5bcd1..2b005bc685b23 100644
--- a/app/code/Magento/Catalog/Api/ScopedProductTierPriceManagementInterface.php
+++ b/app/code/Magento/Catalog/Api/ScopedProductTierPriceManagementInterface.php
@@ -8,7 +8,7 @@
/**
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface ScopedProductTierPriceManagementInterface
{
@@ -20,7 +20,7 @@ interface ScopedProductTierPriceManagementInterface
* @return boolean
* @throws \Magento\Framework\Exception\NoSuchEntityException
* @throws \Magento\Framework\Exception\CouldNotSaveException
- * @since 101.1.0
+ * @since 102.0.0
*/
public function add($sku, \Magento\Catalog\Api\Data\ProductTierPriceInterface $tierPrice);
@@ -32,7 +32,7 @@ public function add($sku, \Magento\Catalog\Api\Data\ProductTierPriceInterface $t
* @return boolean
* @throws \Magento\Framework\Exception\NoSuchEntityException
* @throws \Magento\Framework\Exception\CouldNotSaveException
- * @since 101.1.0
+ * @since 102.0.0
*/
public function remove($sku, \Magento\Catalog\Api\Data\ProductTierPriceInterface $tierPrice);
@@ -43,7 +43,7 @@ public function remove($sku, \Magento\Catalog\Api\Data\ProductTierPriceInterface
* @param string $customerGroupId 'all' can be used to specify 'ALL GROUPS'
* @return \Magento\Catalog\Api\Data\ProductTierPriceInterface[]
* @throws \Magento\Framework\Exception\NoSuchEntityException
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getList($sku, $customerGroupId);
}
diff --git a/app/code/Magento/Catalog/Api/SpecialPriceInterface.php b/app/code/Magento/Catalog/Api/SpecialPriceInterface.php
index 86dca59004132..543eab2263cbe 100644
--- a/app/code/Magento/Catalog/Api/SpecialPriceInterface.php
+++ b/app/code/Magento/Catalog/Api/SpecialPriceInterface.php
@@ -9,7 +9,7 @@
/**
* Special prices resource model.
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface SpecialPriceInterface
{
@@ -30,6 +30,7 @@ interface SpecialPriceInterface
* 'price_to' => (string) Special price to date value in UTC.
* ]
* @since 101.1.0
+ * @since 102.0.0
*/
public function get(array $skus);
@@ -47,7 +48,7 @@ public function get(array $skus);
* ];
* @return bool
* @throws \Magento\Framework\Exception\CouldNotSaveException Thrown if error occurred during price save.
- * @since 101.1.0
+ * @since 102.0.0
*/
public function update(array $prices);
@@ -65,7 +66,7 @@ public function update(array $prices);
* ];
* @return bool
* @throws \Magento\Framework\Exception\CouldNotDeleteException Thrown if error occurred during price delete.
- * @since 101.1.0
+ * @since 102.0.0
*/
public function delete(array $prices);
}
diff --git a/app/code/Magento/Catalog/Api/SpecialPriceStorageInterface.php b/app/code/Magento/Catalog/Api/SpecialPriceStorageInterface.php
index 2442af103a4e9..6c2d89b51278c 100644
--- a/app/code/Magento/Catalog/Api/SpecialPriceStorageInterface.php
+++ b/app/code/Magento/Catalog/Api/SpecialPriceStorageInterface.php
@@ -9,7 +9,7 @@
/**
* Special price storage presents efficient price API and is used to retrieve, update or delete special prices.
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface SpecialPriceStorageInterface
{
@@ -19,7 +19,7 @@ interface SpecialPriceStorageInterface
* @param string[] $skus
* @return \Magento\Catalog\Api\Data\SpecialPriceInterface[]
* @throws \Magento\Framework\Exception\NoSuchEntityException
- * @since 101.1.0
+ * @since 102.0.0
*/
public function get(array $skus);
@@ -33,7 +33,7 @@ public function get(array $skus);
* @param \Magento\Catalog\Api\Data\SpecialPriceInterface[] $prices
* @return \Magento\Catalog\Api\Data\PriceUpdateResultInterface[]
* @throws \Magento\Framework\Exception\CouldNotSaveException
- * @since 101.1.0
+ * @since 102.0.0
*/
public function update(array $prices);
@@ -47,7 +47,7 @@ public function update(array $prices);
* @param \Magento\Catalog\Api\Data\SpecialPriceInterface[] $prices
* @return \Magento\Catalog\Api\Data\PriceUpdateResultInterface[]
* @throws \Magento\Framework\Exception\CouldNotDeleteException
- * @since 101.1.0
+ * @since 102.0.0
*/
public function delete(array $prices);
}
diff --git a/app/code/Magento/Catalog/Api/TierPriceStorageInterface.php b/app/code/Magento/Catalog/Api/TierPriceStorageInterface.php
index 584daa9864588..b9102fcfc075c 100644
--- a/app/code/Magento/Catalog/Api/TierPriceStorageInterface.php
+++ b/app/code/Magento/Catalog/Api/TierPriceStorageInterface.php
@@ -9,7 +9,7 @@
/**
* Tier prices storage.
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface TierPriceStorageInterface
{
@@ -19,7 +19,7 @@ interface TierPriceStorageInterface
* @param string[] $skus
* @return \Magento\Catalog\Api\Data\TierPriceInterface[]
* @throws \Magento\Framework\Exception\NoSuchEntityException
- * @since 101.1.0
+ * @since 102.0.0
*/
public function get(array $skus);
@@ -33,7 +33,7 @@ public function get(array $skus);
*
* @param \Magento\Catalog\Api\Data\TierPriceInterface[] $prices
* @return \Magento\Catalog\Api\Data\PriceUpdateResultInterface[]
- * @since 101.1.0
+ * @since 102.0.0
*/
public function update(array $prices);
@@ -47,7 +47,7 @@ public function update(array $prices);
*
* @param \Magento\Catalog\Api\Data\TierPriceInterface[] $prices
* @return \Magento\Catalog\Api\Data\PriceUpdateResultInterface[]
- * @since 101.1.0
+ * @since 102.0.0
*/
public function replace(array $prices);
@@ -61,7 +61,7 @@ public function replace(array $prices);
*
* @param \Magento\Catalog\Api\Data\TierPriceInterface[] $prices
* @return \Magento\Catalog\Api\Data\PriceUpdateResultInterface[]
- * @since 101.1.0
+ * @since 102.0.0
*/
public function delete(array $prices);
}
diff --git a/app/code/Magento/Catalog/Block/Adminhtml/Product/Edit.php b/app/code/Magento/Catalog/Block/Adminhtml/Product/Edit.php
index 285caa974fd17..26846b9d42ed1 100644
--- a/app/code/Magento/Catalog/Block/Adminhtml/Product/Edit.php
+++ b/app/code/Magento/Catalog/Block/Adminhtml/Product/Edit.php
@@ -249,7 +249,7 @@ public function getDuplicateUrl()
}
/**
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
* @return string
*/
public function getHeader()
diff --git a/app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Ajax/Serializer.php b/app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Ajax/Serializer.php
index 3d131a6e08810..2962e63313cdc 100644
--- a/app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Ajax/Serializer.php
+++ b/app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Ajax/Serializer.php
@@ -10,7 +10,7 @@
/**
* Class Serializer
* @package Magento\Catalog\Block\Adminhtml\Product\Edit\Tab\Ajax
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
*/
class Serializer extends \Magento\Framework\View\Element\Template
{
@@ -47,7 +47,7 @@ public function _construct()
/**
* @return string
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
*/
public function getProductsJSON()
{
diff --git a/app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Crosssell.php b/app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Crosssell.php
index e5ce59c550af1..40e7136da5bf6 100644
--- a/app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Crosssell.php
+++ b/app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Crosssell.php
@@ -15,7 +15,7 @@
* @api
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @since 100.0.2
- * @deprecated Not used since cross-sell products grid moved to UI components.
+ * @deprecated 103.0.1 Not used since cross-sell products grid moved to UI components.
* @see \Magento\Catalog\Ui\DataProvider\Product\Related\CrossSellDataProvider
*/
class Crosssell extends Extended
diff --git a/app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Related.php b/app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Related.php
index 23b927598e8e7..c73ffe5764dfb 100644
--- a/app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Related.php
+++ b/app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Related.php
@@ -13,7 +13,7 @@
*
* @api
* @since 100.0.2
- * @deprecated Not used since related products grid moved to UI components.
+ * @deprecated 103.0.1 Not used since related products grid moved to UI components.
* @see \Magento\Catalog\Ui\DataProvider\Product\Related\RelatedDataProvider
*/
class Related extends Extended
diff --git a/app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Upsell.php b/app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Upsell.php
index 41ad72ca39e53..d196f82f8b48d 100644
--- a/app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Upsell.php
+++ b/app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Upsell.php
@@ -10,7 +10,7 @@
*
* @api
* @since 100.0.2
- * @deprecated Not used since upsell products grid moved to UI components.
+ * @deprecated 103.0.1 Not used since upsell products grid moved to UI components.
* @see \Magento\Catalog\Ui\DataProvider\Product\Related\CrossSellDataProvider
*/
class Upsell extends \Magento\Backend\Block\Widget\Grid\Extended
diff --git a/app/code/Magento/Catalog/Block/FrontendStorageManager.php b/app/code/Magento/Catalog/Block/FrontendStorageManager.php
index 0c826b95cbb49..112058baf4e05 100644
--- a/app/code/Magento/Catalog/Block/FrontendStorageManager.php
+++ b/app/code/Magento/Catalog/Block/FrontendStorageManager.php
@@ -15,7 +15,7 @@
* Provide information to frontend storage manager
*
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
class FrontendStorageManager extends \Magento\Framework\View\Element\Template
{
@@ -51,7 +51,7 @@ public function __construct(
* in json format
*
* @return string
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getConfigurationJson()
{
diff --git a/app/code/Magento/Catalog/Block/Product/AbstractProduct.php b/app/code/Magento/Catalog/Block/Product/AbstractProduct.php
index c8da0f70f73b6..26af19fb85bcb 100644
--- a/app/code/Magento/Catalog/Block/Product/AbstractProduct.php
+++ b/app/code/Magento/Catalog/Block/Product/AbstractProduct.php
@@ -8,7 +8,7 @@
/**
* Class AbstractProduct
* @api
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
* @SuppressWarnings(PHPMD.NumberOfChildren)
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @since 100.0.2
@@ -99,7 +99,7 @@ class AbstractProduct extends \Magento\Framework\View\Element\Template
/**
* @var ImageBuilder
- * @since 101.1.0
+ * @since 102.0.0
*/
protected $imageBuilder;
diff --git a/app/code/Magento/Catalog/Block/Product/Compare/ListCompare.php b/app/code/Magento/Catalog/Block/Product/Compare/ListCompare.php
index 76f5dbd1bea88..772bc92e378f4 100644
--- a/app/code/Magento/Catalog/Block/Product/Compare/ListCompare.php
+++ b/app/code/Magento/Catalog/Block/Product/Compare/ListCompare.php
@@ -213,6 +213,7 @@ public function getProductAttributeValue($product, $attribute)
*
* @param \Magento\Catalog\Model\ResourceModel\Eav\Attribute $attribute
* @return bool
+ * @since 102.0.6
*/
public function hasAttributeValueForProducts($attribute)
{
diff --git a/app/code/Magento/Catalog/Block/Product/Context.php b/app/code/Magento/Catalog/Block/Product/Context.php
index db18eb2bc8a7d..36a3214cab079 100644
--- a/app/code/Magento/Catalog/Block/Product/Context.php
+++ b/app/code/Magento/Catalog/Block/Product/Context.php
@@ -18,7 +18,7 @@
* As Magento moves from inheritance-based APIs all such classes will be deprecated together with
* the classes they were introduced for.
*
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
* @SuppressWarnings(PHPMD)
*/
class Context extends \Magento\Framework\View\Element\Template\Context
diff --git a/app/code/Magento/Catalog/Block/Product/Image.php b/app/code/Magento/Catalog/Block/Product/Image.php
index 7a7f9c0affc7d..613dd67a99f7b 100644
--- a/app/code/Magento/Catalog/Block/Product/Image.php
+++ b/app/code/Magento/Catalog/Block/Product/Image.php
@@ -21,19 +21,19 @@
class Image extends \Magento\Framework\View\Element\Template
{
/**
- * @deprecated Property isn't used
+ * @deprecated 102.0.5 Property isn't used
* @var \Magento\Catalog\Helper\Image
*/
protected $imageHelper;
/**
- * @deprecated Property isn't used
+ * @deprecated 102.0.5 Property isn't used
* @var \Magento\Catalog\Model\Product
*/
protected $product;
/**
- * @deprecated Property isn't used
+ * @deprecated 102.0.5 Property isn't used
* @var array
*/
protected $attributes = [];
diff --git a/app/code/Magento/Catalog/Block/Product/ImageBuilder.php b/app/code/Magento/Catalog/Block/Product/ImageBuilder.php
index 06d4fb39109d8..702410a530ea4 100644
--- a/app/code/Magento/Catalog/Block/Product/ImageBuilder.php
+++ b/app/code/Magento/Catalog/Block/Product/ImageBuilder.php
@@ -11,7 +11,7 @@
use Magento\Catalog\Model\Product;
/**
- * @deprecated
+ * @deprecated 103.0.0
* @see ImageFactory
*/
class ImageBuilder
diff --git a/app/code/Magento/Catalog/Block/Product/ProductList/Toolbar.php b/app/code/Magento/Catalog/Block/Product/ProductList/Toolbar.php
index c530ba4785ad9..e88922ec28e60 100644
--- a/app/code/Magento/Catalog/Block/Product/ProductList/Toolbar.php
+++ b/app/code/Magento/Catalog/Block/Product/ProductList/Toolbar.php
@@ -79,7 +79,7 @@ class Toolbar extends \Magento\Framework\View\Element\Template
/**
* @var bool $_paramsMemorizeAllowed
- * @deprecated
+ * @deprecated 103.0.1
*/
protected $_paramsMemorizeAllowed = true;
@@ -99,7 +99,7 @@ class Toolbar extends \Magento\Framework\View\Element\Template
* Catalog session
*
* @var \Magento\Catalog\Model\Session
- * @deprecated
+ * @deprecated 103.0.1
*/
protected $_catalogSession;
@@ -188,7 +188,7 @@ public function __construct(
* Disable list state params memorizing
*
* @return $this
- * @deprecated
+ * @deprecated 103.0.1
*/
public function disableParamsMemorizing()
{
@@ -202,7 +202,7 @@ public function disableParamsMemorizing()
* @param string $param parameter name
* @param mixed $value parameter value
* @return $this
- * @deprecated
+ * @deprecated 103.0.1
*/
protected function _memorizeParam($param, $value)
{
diff --git a/app/code/Magento/Catalog/Block/Product/View.php b/app/code/Magento/Catalog/Block/Product/View.php
index 8055d17a64a84..fa03f72a4ba5c 100644
--- a/app/code/Magento/Catalog/Block/Product/View.php
+++ b/app/code/Magento/Catalog/Block/Product/View.php
@@ -30,7 +30,7 @@ class View extends AbstractProduct implements \Magento\Framework\DataObject\Iden
/**
* @var \Magento\Framework\Pricing\PriceCurrencyInterface
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
*/
protected $priceCurrency;
diff --git a/app/code/Magento/Catalog/Block/Product/View/AbstractView.php b/app/code/Magento/Catalog/Block/Product/View/AbstractView.php
index ec16bc1d2334f..9c569725d98de 100644
--- a/app/code/Magento/Catalog/Block/Product/View/AbstractView.php
+++ b/app/code/Magento/Catalog/Block/Product/View/AbstractView.php
@@ -9,7 +9,7 @@
* Product view abstract block
*
* @api
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
* @since 100.0.2
*/
abstract class AbstractView extends \Magento\Catalog\Block\Product\AbstractProduct
diff --git a/app/code/Magento/Catalog/Block/Product/View/Attributes.php b/app/code/Magento/Catalog/Block/Product/View/Attributes.php
index 5b9777cbfd1e7..9fd840b264085 100644
--- a/app/code/Magento/Catalog/Block/Product/View/Attributes.php
+++ b/app/code/Magento/Catalog/Block/Product/View/Attributes.php
@@ -110,6 +110,7 @@ public function getAdditionalData(array $excludeAttr = [])
* @param \Magento\Eav\Model\Entity\Attribute\AbstractAttribute $attribute
* @param array $excludeAttr
* @return bool
+ * @since 103.0.0
*/
protected function isVisibleOnFrontend(
\Magento\Eav\Model\Entity\Attribute\AbstractAttribute $attribute,
diff --git a/app/code/Magento/Catalog/Block/Product/View/Details.php b/app/code/Magento/Catalog/Block/Product/View/Details.php
index e76c5bf201334..92f1ca9456cac 100644
--- a/app/code/Magento/Catalog/Block/Product/View/Details.php
+++ b/app/code/Magento/Catalog/Block/Product/View/Details.php
@@ -14,6 +14,7 @@
* Holds a group of blocks to show as tabs.
*
* @api
+ * @since 103.0.1
*/
class Details extends \Magento\Framework\View\Element\Template
{
@@ -25,6 +26,7 @@ class Details extends \Magento\Framework\View\Element\Template
* @throws \Magento\Framework\Exception\LocalizedException
*
* @return array
+ * @since 103.0.1
*/
public function getGroupSortedChildNames(string $groupName, string $callback): array
{
diff --git a/app/code/Magento/Catalog/Block/Product/View/Options/AbstractOptions.php b/app/code/Magento/Catalog/Block/Product/View/Options/AbstractOptions.php
index 059580b9b5eae..9c5c4562f3b43 100644
--- a/app/code/Magento/Catalog/Block/Product/View/Options/AbstractOptions.php
+++ b/app/code/Magento/Catalog/Block/Product/View/Options/AbstractOptions.php
@@ -111,6 +111,7 @@ public function getOption()
* Retrieve formatted price
*
* @return string
+ * @since 102.0.6
*/
public function getFormattedPrice()
{
@@ -130,7 +131,7 @@ public function getFormattedPrice()
*
* @return string
*
- * @deprecated
+ * @deprecated 102.0.6
* @see getFormattedPrice()
*/
public function getFormatedPrice()
diff --git a/app/code/Magento/Catalog/Block/Ui/ProductViewCounter.php b/app/code/Magento/Catalog/Block/Ui/ProductViewCounter.php
index dd2e23e67f3d7..4cbfb552511c8 100644
--- a/app/code/Magento/Catalog/Block/Ui/ProductViewCounter.php
+++ b/app/code/Magento/Catalog/Block/Ui/ProductViewCounter.php
@@ -24,7 +24,7 @@
* by customer on frontend and data to synchronize this tracks with backend
*
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
class ProductViewCounter extends Template
{
@@ -108,7 +108,7 @@ public function __construct(
* requests and will be flushed with full page cache
*
* @return string {JSON encoded data}
- * @since 101.1.0
+ * @since 102.0.0
* @throws \Magento\Framework\Exception\LocalizedException
* @throws \Magento\Framework\Exception\NoSuchEntityException
*/
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Gallery/Upload.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Gallery/Upload.php
index ff7311e931755..820f2e5e5b8cd 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Gallery/Upload.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Gallery/Upload.php
@@ -1,6 +1,5 @@
'image/jpg',
+ 'jpeg' => 'image/jpeg',
+ 'gif' => 'image/png',
+ 'png' => 'image/gif'
+ ];
+
/**
* @param \Magento\Backend\App\Action\Context $context
* @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
@@ -36,6 +49,8 @@ public function __construct(
}
/**
+ * Upload image(s) to the product gallery.
+ *
* @return \Magento\Framework\Controller\Result\Raw
*/
public function execute()
@@ -45,7 +60,12 @@ public function execute()
\Magento\MediaStorage\Model\File\Uploader::class,
['fileId' => 'image']
);
- $uploader->setAllowedExtensions(['jpg', 'jpeg', 'gif', 'png']);
+ $uploader->setAllowedExtensions($this->getAllowedExtensions());
+
+ if (!$uploader->checkMimeType($this->getAllowedMimeTypes())) {
+ throw new LocalizedException(__('Disallowed File Type.'));
+ }
+
/** @var \Magento\Framework\Image\Adapter\AdapterInterface $imageAdapter */
$imageAdapter = $this->_objectManager->get(\Magento\Framework\Image\AdapterFactory::class)->create();
$uploader->addValidateCallback('catalog_product_image', $imageAdapter, 'validateUploadFile');
@@ -78,4 +98,24 @@ public function execute()
$response->setContents(json_encode($result));
return $response;
}
+
+ /**
+ * Get the set of allowed file extensions.
+ *
+ * @return array
+ */
+ private function getAllowedExtensions()
+ {
+ return array_keys($this->allowedMimeTypes);
+ }
+
+ /**
+ * Get the set of allowed mime types.
+ *
+ * @return array
+ */
+ private function getAllowedMimeTypes()
+ {
+ return array_values($this->allowedMimeTypes);
+ }
}
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Initialization/Helper.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Initialization/Helper.php
index f11d16755ef0d..e75c630097e69 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Initialization/Helper.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Initialization/Helper.php
@@ -370,7 +370,7 @@ private function overwriteValue($optionId, $option, $overwriteOptions)
* Get link resolver instance
*
* @return LinkResolver
- * @deprecated 101.0.0
+ * @deprecated 102.0.0
*/
private function getLinkResolver()
{
@@ -384,7 +384,7 @@ private function getLinkResolver()
* Get DateTimeFilter instance
*
* @return \Magento\Framework\Stdlib\DateTime\Filter\DateTime
- * @deprecated 101.0.0
+ * @deprecated 102.0.0
*/
private function getDateTimeFilter()
{
diff --git a/app/code/Magento/Catalog/Controller/Product/Compare/Add.php b/app/code/Magento/Catalog/Controller/Product/Compare/Add.php
index f5c3171a3fe90..136bce0d5f28f 100644
--- a/app/code/Magento/Catalog/Controller/Product/Compare/Add.php
+++ b/app/code/Magento/Catalog/Controller/Product/Compare/Add.php
@@ -1,11 +1,11 @@
isSalable()) {
+ if ($product && (int)$product->getStatus() !== Status::STATUS_DISABLED) {
$this->_catalogProductCompareList->addProduct($product);
$productName = $this->_objectManager->get(
\Magento\Framework\Escaper::class
diff --git a/app/code/Magento/Catalog/Helper/Data.php b/app/code/Magento/Catalog/Helper/Data.php
index 3e96763632830..3a55164aa33ef 100644
--- a/app/code/Magento/Catalog/Helper/Data.php
+++ b/app/code/Magento/Catalog/Helper/Data.php
@@ -451,7 +451,7 @@ public function isUsingStaticUrlsAllowed()
* Check if the parsing of URL directives is allowed for the catalog
*
* @return bool
- * @deprecated
+ * @deprecated 103.0.0
* @see \Magento\Catalog\Helper\Output::isDirectivesExists
*/
public function isUrlDirectivesParsingAllowed()
diff --git a/app/code/Magento/Catalog/Helper/Image.php b/app/code/Magento/Catalog/Helper/Image.php
index 9b8d0ad75a8c9..9092fabfc48b9 100644
--- a/app/code/Magento/Catalog/Helper/Image.php
+++ b/app/code/Magento/Catalog/Helper/Image.php
@@ -299,7 +299,7 @@ public function resize($width, $height = null)
*
* @param int $quality
* @return $this
- * @deprecated
+ * @deprecated 103.0.1
*/
public function setQuality($quality)
{
@@ -448,7 +448,7 @@ public function placeholder($fileName)
* @param null|string $placeholder
* @return string
*
- * @deprecated 101.1.0 Returns only default placeholder.
+ * @deprecated 102.0.0 Returns only default placeholder.
* Does not take into account custom placeholders set in Configuration.
*/
public function getPlaceholder($placeholder = null)
diff --git a/app/code/Magento/Catalog/Model/AbstractModel.php b/app/code/Magento/Catalog/Model/AbstractModel.php
index 78a49cd1e8b14..851055c1bf810 100644
--- a/app/code/Magento/Catalog/Model/AbstractModel.php
+++ b/app/code/Magento/Catalog/Model/AbstractModel.php
@@ -223,7 +223,7 @@ public function unsetData($key = null)
* Get collection instance
*
* @return \Magento\Catalog\Model\ResourceModel\Collection\AbstractCollection
- * @deprecated 101.1.0 because collections should be used directly via factory
+ * @deprecated 102.0.0 because collections should be used directly via factory
*/
public function getResourceCollection()
{
diff --git a/app/code/Magento/Catalog/Model/Category.php b/app/code/Magento/Catalog/Model/Category.php
index 6f45787fbd4f1..f0e7837392cea 100644
--- a/app/code/Magento/Catalog/Model/Category.php
+++ b/app/code/Magento/Catalog/Model/Category.php
@@ -101,6 +101,7 @@ class Category extends \Magento\Catalog\Model\AbstractModel implements
/**
* @var ResourceModel\Category
+ * @since 102.0.6
*/
protected $_resource;
@@ -108,7 +109,7 @@ class Category extends \Magento\Catalog\Model\AbstractModel implements
* URL rewrite model
*
* @var \Magento\UrlRewrite\Model\UrlRewrite
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
*/
protected $_urlRewrite;
@@ -136,7 +137,7 @@ class Category extends \Magento\Catalog\Model\AbstractModel implements
/**
* Attributes are that part of interface
*
- * @deprecated
+ * @deprecated 103.0.0
* @see CategoryInterface::ATTRIBUTES
* @var array
*/
@@ -330,7 +331,8 @@ protected function getCustomAttributesCodes()
*
* @throws \Magento\Framework\Exception\LocalizedException
* @return \Magento\Catalog\Model\ResourceModel\Category
- * @deprecated because resource models should be used directly
+ * @deprecated 102.0.6 because resource models should be used directly
+ * @since 102.0.6
*/
protected function _getResource()
{
@@ -959,6 +961,7 @@ private function getAuthorization(): AuthorizationInterface
/**
* @inheritDoc
+ * @since 103.0.2
*/
public function beforeSave()
{
diff --git a/app/code/Magento/Catalog/Model/Category/Attribute/Source/Layout.php b/app/code/Magento/Catalog/Model/Category/Attribute/Source/Layout.php
index 20ea899a3d0d7..486263f3de5a6 100644
--- a/app/code/Magento/Catalog/Model/Category/Attribute/Source/Layout.php
+++ b/app/code/Magento/Catalog/Model/Category/Attribute/Source/Layout.php
@@ -19,7 +19,7 @@ class Layout extends \Magento\Eav\Model\Entity\Attribute\Source\AbstractSource
/**
* @inheritdoc
- * @deprecated since the cache is now handled by \Magento\Theme\Model\PageLayout\Config\Builder::$configFiles
+ * @deprecated 103.0.1 since the cache is now handled by \Magento\Theme\Model\PageLayout\Config\Builder::$configFiles
*/
protected $_options = null;
diff --git a/app/code/Magento/Catalog/Model/Category/DataProvider.php b/app/code/Magento/Catalog/Model/Category/DataProvider.php
index 174c90ae1635c..f854bf1b883e2 100644
--- a/app/code/Magento/Catalog/Model/Category/DataProvider.php
+++ b/app/code/Magento/Catalog/Model/Category/DataProvider.php
@@ -203,7 +203,7 @@ public function __construct(
/**
* @inheritdoc
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getMeta()
{
@@ -361,6 +361,9 @@ public function getAttributesMeta(Type $entityType)
}
if ($attribute->usesSource()) {
$meta[$code]['options'] = $attribute->getSource()->getAllOptions();
+ foreach ($meta[$code]['options'] as &$option) {
+ $option['__disableTmpl'] = true;
+ }
}
}
@@ -413,7 +416,7 @@ protected function addUseConfigSettings($categoryData)
* @param \Magento\Catalog\Model\Category $category
* @param array $categoryData
* @return array
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
* @since 101.0.0
*/
protected function addUseDefaultSettings($category, $categoryData)
@@ -617,7 +620,7 @@ protected function getFieldsMap()
* Retrieve scope overridden value
*
* @return ScopeOverriddenValue
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
*/
private function getScopeOverriddenValue()
{
@@ -634,7 +637,7 @@ private function getScopeOverriddenValue()
* Retrieve array manager
*
* @return ArrayManager
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
*/
private function getArrayManager()
{
@@ -652,7 +655,7 @@ private function getArrayManager()
*
* @return FileInfo
*
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
*/
private function getFileInfo()
{
diff --git a/app/code/Magento/Catalog/Model/CategoryList.php b/app/code/Magento/Catalog/Model/CategoryList.php
index cab8e013d9ba1..225aefb4035b4 100644
--- a/app/code/Magento/Catalog/Model/CategoryList.php
+++ b/app/code/Magento/Catalog/Model/CategoryList.php
@@ -93,7 +93,7 @@ public function getList(SearchCriteriaInterface $searchCriteria)
/**
* Retrieve collection processor
*
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
* @return CollectionProcessorInterface
*/
private function getCollectionProcessor()
diff --git a/app/code/Magento/Catalog/Model/FrontendStorageConfigurationInterface.php b/app/code/Magento/Catalog/Model/FrontendStorageConfigurationInterface.php
index dac9e03e0b753..c61511d1ed49f 100644
--- a/app/code/Magento/Catalog/Model/FrontendStorageConfigurationInterface.php
+++ b/app/code/Magento/Catalog/Model/FrontendStorageConfigurationInterface.php
@@ -9,7 +9,7 @@
/**
* @api
* Storage, which provide information for frontend storages, as product-storage, ids-storage
- * @since 101.1.0
+ * @since 102.0.0
*/
interface FrontendStorageConfigurationInterface
{
@@ -23,7 +23,7 @@ interface FrontendStorageConfigurationInterface
* Prepare dynamic data which will be used in Storage Configuration (e.g. data from App/Config)
*
* @return array
- * @since 101.1.0
+ * @since 102.0.0
*/
public function get();
}
diff --git a/app/code/Magento/Catalog/Model/Indexer/Category/Product/AbstractAction.php b/app/code/Magento/Catalog/Model/Indexer/Category/Product/AbstractAction.php
index 178f4172ce6fa..6b6ad2bfc726a 100644
--- a/app/code/Magento/Catalog/Model/Indexer/Category/Product/AbstractAction.php
+++ b/app/code/Magento/Catalog/Model/Indexer/Category/Product/AbstractAction.php
@@ -109,6 +109,7 @@ abstract class AbstractAction
/**
* @var TableMaintainer
+ * @since 102.0.5
*/
protected $tableMaintainer;
@@ -195,7 +196,7 @@ protected function getTable($table)
* The name is switched between 'catalog_category_product_index' and 'catalog_category_product_index_replica'
*
* @return string
- * @deprecated
+ * @deprecated 102.0.5
*/
protected function getMainTable()
{
@@ -206,7 +207,7 @@ protected function getMainTable()
* Return temporary index table name
*
* @return string
- * @deprecated
+ * @deprecated 102.0.5
*/
protected function getMainTmpTable()
{
@@ -220,6 +221,7 @@ protected function getMainTmpTable()
*
* @param int $storeId
* @return string
+ * @since 102.0.5
*/
protected function getIndexTable($storeId)
{
diff --git a/app/code/Magento/Catalog/Model/Indexer/Product/Flat/TableBuilder.php b/app/code/Magento/Catalog/Model/Indexer/Product/Flat/TableBuilder.php
index e6c098ab0254e..140c8874b5db3 100644
--- a/app/code/Magento/Catalog/Model/Indexer/Product/Flat/TableBuilder.php
+++ b/app/code/Magento/Catalog/Model/Indexer/Product/Flat/TableBuilder.php
@@ -368,7 +368,7 @@ protected function _fillTemporaryTable(
* Get Metadata Pool
*
* @return \Magento\Framework\EntityManager\MetadataPool
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
*/
private function getMetadataPool()
{
diff --git a/app/code/Magento/Catalog/Model/Indexer/Product/Price/AbstractAction.php b/app/code/Magento/Catalog/Model/Indexer/Product/Price/AbstractAction.php
index e9a907f0b5097..4846d32826cb9 100644
--- a/app/code/Magento/Catalog/Model/Indexer/Product/Price/AbstractAction.php
+++ b/app/code/Magento/Catalog/Model/Indexer/Product/Price/AbstractAction.php
@@ -154,7 +154,7 @@ abstract public function execute($ids);
* @param array $processIds
* @return \Magento\Catalog\Model\Indexer\Product\Price\AbstractAction
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
- * @deprecated Used only for backward compatibility for indexer, which not support indexation by dimensions
+ * @deprecated 102.0.6 Used only for backward compatibility for indexer, which not support indexation by dimensions
*/
protected function _syncData(array $processIds = [])
{
@@ -422,7 +422,7 @@ private function deleteIndexData(array $entityIds)
* @param null|array $parentIds
* @param array $excludeIds
* @return \Magento\Catalog\Model\Indexer\Product\Price\AbstractAction
- * @deprecated Used only for backward compatibility for do not broke custom indexer implementation
+ * @deprecated 102.0.6 Used only for backward compatibility for do not broke custom indexer implementation
* which do not work by dimensions.
* For indexers, which support dimensions all composite products read data directly from main price indexer table
* or replica table for partial or full reindex correspondingly.
diff --git a/app/code/Magento/Catalog/Model/Indexer/Product/Price/Action/Full.php b/app/code/Magento/Catalog/Model/Indexer/Product/Price/Action/Full.php
index 858eba3ab217a..0f14ea6239eaf 100644
--- a/app/code/Magento/Catalog/Model/Indexer/Product/Price/Action/Full.php
+++ b/app/code/Magento/Catalog/Model/Indexer/Product/Price/Action/Full.php
@@ -487,7 +487,7 @@ private function moveDataFromReplicaTableToReplicaTables(array $dimensions): voi
/**
* Retrieves the index table that should be used
*
- * @deprecated
+ * @deprecated 102.0.6
*/
protected function getIndexTargetTable(): string
{
diff --git a/app/code/Magento/Catalog/Model/Indexer/Product/Price/UpdateIndexInterface.php b/app/code/Magento/Catalog/Model/Indexer/Product/Price/UpdateIndexInterface.php
index 3d1809997bd61..091131508ef66 100644
--- a/app/code/Magento/Catalog/Model/Indexer/Product/Price/UpdateIndexInterface.php
+++ b/app/code/Magento/Catalog/Model/Indexer/Product/Price/UpdateIndexInterface.php
@@ -11,7 +11,7 @@
* Defines strategy for updating price index
*
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface UpdateIndexInterface
{
@@ -21,7 +21,7 @@ interface UpdateIndexInterface
* @param GroupInterface $group
* @param bool $isGroupNew
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function update(GroupInterface $group, $isGroupNew);
}
diff --git a/app/code/Magento/Catalog/Model/Product.php b/app/code/Magento/Catalog/Model/Product.php
index 34f31dcc86248..ea1d045e8fbb8 100644
--- a/app/code/Magento/Catalog/Model/Product.php
+++ b/app/code/Magento/Catalog/Model/Product.php
@@ -123,6 +123,7 @@ class Product extends \Magento\Catalog\Model\AbstractModel implements
/**
* @var ResourceModel\Product
+ * @since 102.0.6
*/
protected $_resource;
@@ -279,7 +280,7 @@ class Product extends \Magento\Catalog\Model\AbstractModel implements
/**
* @var \Magento\Catalog\Api\ProductAttributeRepositoryInterface
- * @deprecated Not used anymore due to performance issue (loaded all product attributes)
+ * @deprecated 102.0.6 Not used anymore due to performance issue (loaded all product attributes)
*/
protected $metadataService;
@@ -316,7 +317,7 @@ class Product extends \Magento\Catalog\Model\AbstractModel implements
/**
* List of attributes in ProductInterface
*
- * @deprecated
+ * @deprecated 103.0.0
* @see ProductInterface::ATTRIBUTES
* @var array
*/
@@ -503,7 +504,8 @@ protected function _construct()
*
* @throws \Magento\Framework\Exception\LocalizedException
* @return \Magento\Catalog\Model\ResourceModel\Product
- * @deprecated because resource models should be used directly
+ * @deprecated 102.0.6 because resource models should be used directly
+ * @since 102.0.6
*/
protected function _getResource()
{
@@ -650,7 +652,7 @@ public function getUpdatedAt()
*
* @param bool $calculate
* @return void
- * @deprecated
+ * @deprecated 102.0.4
*/
public function setPriceCalculation($calculate = true)
{
@@ -1215,6 +1217,7 @@ public function getTierPrice($qty = null)
* Get formatted by currency product price
*
* @return array|double
+ * @since 102.0.6
*/
public function getFormattedPrice()
{
@@ -1226,7 +1229,7 @@ public function getFormattedPrice()
*
* @return array|double
*
- * @deprecated
+ * @deprecated 102.0.6
* @see getFormattedPrice()
*/
public function getFormatedPrice()
@@ -2201,7 +2204,7 @@ public function reset()
/**
* Get cache tags associated with object id
*
- * @deprecated
+ * @deprecated 102.0.5
* @see \Magento\Catalog\Model\Product::getIdentities
* @return string[]
*/
@@ -2773,11 +2776,11 @@ public function setAssociatedProductIds(array $productIds)
*
* @return array|null
*
- * @deprecated 101.1.0 as Product model shouldn't be responsible for stock status
+ * @deprecated 102.0.0 as Product model shouldn't be responsible for stock status
* @see StockItemInterface when you want to change the stock data
* @see StockStatusInterface when you want to read the stock data for representation layer (storefront)
* @see StockItemRepositoryInterface::save as extension point for customization of saving process
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getQuantityAndStockStatus()
{
@@ -2790,11 +2793,11 @@ public function getQuantityAndStockStatus()
* @param array $quantityAndStockStatusData
* @return $this
*
- * @deprecated 101.1.0 as Product model shouldn't be responsible for stock status
+ * @deprecated 102.0.0 as Product model shouldn't be responsible for stock status
* @see StockItemInterface when you want to change the stock data
* @see StockStatusInterface when you want to read the stock data for representation layer (storefront)
* @see StockItemRepositoryInterface::save as extension point for customization of saving process
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setQuantityAndStockStatus($quantityAndStockStatusData)
{
@@ -2807,11 +2810,11 @@ public function setQuantityAndStockStatus($quantityAndStockStatusData)
*
* @return array|null
*
- * @deprecated 101.1.0 as Product model shouldn't be responsible for stock status
+ * @deprecated 102.0.0 as Product model shouldn't be responsible for stock status
* @see StockItemInterface when you want to change the stock data
* @see StockStatusInterface when you want to read the stock data for representation layer (storefront)
* @see StockItemRepositoryInterface::save as extension point for customization of saving process
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getStockData()
{
@@ -2824,11 +2827,11 @@ public function getStockData()
* @param array $stockData
* @return $this
*
- * @deprecated 101.1.0 as Product model shouldn't be responsible for stock status
+ * @deprecated 102.0.0 as Product model shouldn't be responsible for stock status
* @see StockItemInterface when you want to change the stock data
* @see StockStatusInterface when you want to read the stock data for representation layer (storefront)
* @see StockItemRepositoryInterface::save as extension point for customization of saving process
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setStockData($stockData)
{
diff --git a/app/code/Magento/Catalog/Model/Product/Attribute/Backend/Stock.php b/app/code/Magento/Catalog/Model/Product/Attribute/Backend/Stock.php
index 994ff98dee217..713a0a35abec7 100644
--- a/app/code/Magento/Catalog/Model/Product/Attribute/Backend/Stock.php
+++ b/app/code/Magento/Catalog/Model/Product/Attribute/Backend/Stock.php
@@ -10,7 +10,7 @@
/**
* Quantity and Stock Status attribute processing
*
- * @deprecated 101.1.0 as this attribute should be removed
+ * @deprecated 102.0.0 as this attribute should be removed
* @see StockItemInterface when you want to change the stock data
* @see StockStatusInterface when you want to read the stock data for representation layer (storefront)
* @see StockItemRepositoryInterface::save as extension point for customization of saving process
diff --git a/app/code/Magento/Catalog/Model/Product/Attribute/Source/Countryofmanufacture.php b/app/code/Magento/Catalog/Model/Product/Attribute/Source/Countryofmanufacture.php
index bc362430089c4..c0a13aa8b934a 100644
--- a/app/code/Magento/Catalog/Model/Product/Attribute/Source/Countryofmanufacture.php
+++ b/app/code/Magento/Catalog/Model/Product/Attribute/Source/Countryofmanufacture.php
@@ -82,7 +82,7 @@ public function getAllOptions()
* Get serializer
*
* @return \Magento\Framework\Serialize\SerializerInterface
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
*/
private function getSerializer()
{
diff --git a/app/code/Magento/Catalog/Model/Product/Attribute/Source/Layout.php b/app/code/Magento/Catalog/Model/Product/Attribute/Source/Layout.php
index dbc7535dccfa9..333e8021d30b5 100644
--- a/app/code/Magento/Catalog/Model/Product/Attribute/Source/Layout.php
+++ b/app/code/Magento/Catalog/Model/Product/Attribute/Source/Layout.php
@@ -19,7 +19,7 @@ class Layout extends \Magento\Eav\Model\Entity\Attribute\Source\AbstractSource
/**
* @inheritdoc
- * @deprecated since the cache is now handled by \Magento\Theme\Model\PageLayout\Config\Builder::$configFiles
+ * @deprecated 103.0.1 since the cache is now handled by \Magento\Theme\Model\PageLayout\Config\Builder::$configFiles
*/
protected $_options = null;
diff --git a/app/code/Magento/Catalog/Model/Product/AttributeSet/Options.php b/app/code/Magento/Catalog/Model/Product/AttributeSet/Options.php
index d0c7103851499..fd614050f4526 100644
--- a/app/code/Magento/Catalog/Model/Product/AttributeSet/Options.php
+++ b/app/code/Magento/Catalog/Model/Product/AttributeSet/Options.php
@@ -5,7 +5,14 @@
*/
namespace Magento\Catalog\Model\Product\AttributeSet;
-class Options implements \Magento\Framework\Data\OptionSourceInterface
+use Magento\Catalog\Model\ResourceModel\Product;
+use Magento\Eav\Model\ResourceModel\Entity\Attribute\Set\CollectionFactory;
+use Magento\Framework\Data\OptionSourceInterface;
+
+/**
+ * Set Options to Attribute Set.
+ */
+class Options implements OptionSourceInterface
{
/**
* @var null|array
@@ -13,27 +20,37 @@ class Options implements \Magento\Framework\Data\OptionSourceInterface
protected $options;
/**
- * @param \Magento\Eav\Model\ResourceModel\Entity\Attribute\Set\CollectionFactory $collectionFactory
- * @param \Magento\Catalog\Model\ResourceModel\Product $product
+ * @param CollectionFactory $collectionFactory
+ * @param Product $product
*/
public function __construct(
- \Magento\Eav\Model\ResourceModel\Entity\Attribute\Set\CollectionFactory $collectionFactory,
- \Magento\Catalog\Model\ResourceModel\Product $product
+ CollectionFactory $collectionFactory,
+ Product $product
) {
$this->collectionFactory = $collectionFactory;
$this->product = $product;
}
/**
+ * @inheritdoc
+ *
* @return array|null
*/
public function toOptionArray()
{
- if (null == $this->options) {
+ if (null === $this->options) {
$this->options = $this->collectionFactory->create()
->setEntityTypeFilter($this->product->getTypeId())
->toOptionArray();
+
+ array_walk(
+ $this->options,
+ function (&$option) {
+ $option['__disableTmpl'] = true;
+ }
+ );
}
+
return $this->options;
}
}
diff --git a/app/code/Magento/Catalog/Model/Product/Compare/ListCompare.php b/app/code/Magento/Catalog/Model/Product/Compare/ListCompare.php
index 12dbaf0c29f4e..8db0425eca54f 100644
--- a/app/code/Magento/Catalog/Model/Product/Compare/ListCompare.php
+++ b/app/code/Magento/Catalog/Model/Product/Compare/ListCompare.php
@@ -5,7 +5,10 @@
*/
namespace Magento\Catalog\Model\Product\Compare;
+use Magento\Catalog\Model\ProductRepository;
use Magento\Catalog\Model\ResourceModel\Product\Compare\Item\Collection;
+use Magento\Framework\App\ObjectManager;
+use Magento\Framework\Exception\NoSuchEntityException;
/**
* Product Compare List Model
@@ -51,6 +54,11 @@ class ListCompare extends \Magento\Framework\DataObject
*/
protected $_compareItemFactory;
+ /**
+ * @var ProductRepository
+ */
+ private $productRepository;
+
/**
* Constructor
*
@@ -74,6 +82,7 @@ public function __construct(
$this->_catalogProductCompareItem = $catalogProductCompareItem;
$this->_customerSession = $customerSession;
$this->_customerVisitor = $customerVisitor;
+ $this->productRepository = ObjectManager::getInstance()->get(ProductRepository::class);
parent::__construct($data);
}
@@ -82,6 +91,7 @@ public function __construct(
*
* @param int|\Magento\Catalog\Model\Product $product
* @return $this
+ * @throws \Exception
*/
public function addProduct($product)
{
@@ -90,7 +100,7 @@ public function addProduct($product)
$this->_addVisitorToItem($item);
$item->loadByProduct($product);
- if (!$item->getId()) {
+ if (!$item->getId() && $this->productExists($product)) {
$item->addProductData($product);
$item->save();
}
@@ -98,6 +108,25 @@ public function addProduct($product)
return $this;
}
+ /**
+ * Check product exists.
+ *
+ * @param int|\Magento\Catalog\Model\Product $product
+ * @return bool
+ */
+ private function productExists($product)
+ {
+ if ($product instanceof \Magento\Catalog\Model\Product && $product->getId()) {
+ return true;
+ }
+ try {
+ $product = $this->productRepository->getById((int)$product);
+ return !empty($product->getId());
+ } catch (NoSuchEntityException $e) {
+ return false;
+ }
+ }
+
/**
* Add products to compare list
*
diff --git a/app/code/Magento/Catalog/Model/Product/Configuration/Item/ItemResolverInterface.php b/app/code/Magento/Catalog/Model/Product/Configuration/Item/ItemResolverInterface.php
index 35c0a7835cb6c..b340e5dea5eb8 100644
--- a/app/code/Magento/Catalog/Model/Product/Configuration/Item/ItemResolverInterface.php
+++ b/app/code/Magento/Catalog/Model/Product/Configuration/Item/ItemResolverInterface.php
@@ -13,6 +13,7 @@
* Resolves the product from a configured item.
*
* @api
+ * @since 102.0.7
*/
interface ItemResolverInterface
{
@@ -21,6 +22,7 @@ interface ItemResolverInterface
*
* @param ItemInterface $item
* @return ProductInterface
+ * @since 102.0.7
*/
public function getFinalProduct(ItemInterface $item) : ProductInterface;
}
diff --git a/app/code/Magento/Catalog/Model/Product/Gallery/Processor.php b/app/code/Magento/Catalog/Model/Product/Gallery/Processor.php
index 0912324745360..a0967fd01e146 100644
--- a/app/code/Magento/Catalog/Model/Product/Gallery/Processor.php
+++ b/app/code/Magento/Catalog/Model/Product/Gallery/Processor.php
@@ -157,6 +157,7 @@ public function addImage(
throw new LocalizedException(__("The image doesn't exist."));
}
+ // phpcs:disable Magento2.Functions.DiscouragedFunction
$pathinfo = pathinfo($file);
$imgExtensions = ['jpg', 'jpeg', 'gif', 'png'];
if (!isset($pathinfo['extension']) || !in_array(strtolower($pathinfo['extension']), $imgExtensions)) {
@@ -166,10 +167,10 @@ public function addImage(
}
$fileName = \Magento\MediaStorage\Model\File\Uploader::getCorrectFileName($pathinfo['basename']);
- $dispretionPath = \Magento\MediaStorage\Model\File\Uploader::getDispersionPath($fileName);
- $fileName = $dispretionPath . '/' . $fileName;
+ $dispersionPath = \Magento\MediaStorage\Model\File\Uploader::getDispersionPath($fileName);
+ $fileName = $dispersionPath . '/' . $fileName;
- $fileName = $this->getNotDuplicatedFilename($fileName, $dispretionPath);
+ $fileName = $this->getNotDuplicatedFilename($fileName, $dispersionPath);
$destinationFile = $this->mediaConfig->getTmpMediaPath($fileName);
@@ -452,6 +453,7 @@ protected function getUniqueFileName($file, $forTmp = false)
$destinationFile = $forTmp
? $this->mediaDirectory->getAbsolutePath($this->mediaConfig->getTmpMediaPath($file))
: $this->mediaDirectory->getAbsolutePath($this->mediaConfig->getMediaPath($file));
+ // phpcs:disable Magento2.Functions.DiscouragedFunction
$destFile = dirname($file) . '/'
. \Magento\MediaStorage\Model\File\Uploader::getNewFileName($destinationFile);
}
@@ -463,27 +465,27 @@ protected function getUniqueFileName($file, $forTmp = false)
* Get filename which is not duplicated with other files in media temporary and media directories
*
* @param string $fileName
- * @param string $dispretionPath
+ * @param string $dispersionPath
* @return string
* @since 101.0.0
*/
- protected function getNotDuplicatedFilename($fileName, $dispretionPath)
+ protected function getNotDuplicatedFilename($fileName, $dispersionPath)
{
- $fileMediaName = $dispretionPath . '/'
+ $fileMediaName = $dispersionPath . '/'
. \Magento\MediaStorage\Model\File\Uploader::getNewFileName($this->mediaConfig->getMediaPath($fileName));
- $fileTmpMediaName = $dispretionPath . '/'
+ $fileTmpMediaName = $dispersionPath . '/'
. \Magento\MediaStorage\Model\File\Uploader::getNewFileName($this->mediaConfig->getTmpMediaPath($fileName));
if ($fileMediaName != $fileTmpMediaName) {
if ($fileMediaName != $fileName) {
return $this->getNotDuplicatedFilename(
$fileMediaName,
- $dispretionPath
+ $dispersionPath
);
} elseif ($fileTmpMediaName != $fileName) {
return $this->getNotDuplicatedFilename(
$fileTmpMediaName,
- $dispretionPath
+ $dispersionPath
);
}
}
@@ -494,7 +496,7 @@ protected function getNotDuplicatedFilename($fileName, $dispretionPath)
/**
* Retrieve data for update attribute
*
- * @param \Magento\Catalog\Model\Product $object
+ * @param \Magento\Catalog\Model\Product $object
* @return array
* @since 101.0.0
*/
diff --git a/app/code/Magento/Catalog/Model/Product/Image.php b/app/code/Magento/Catalog/Model/Product/Image.php
index a0be36c5a327c..3c60d81e9a4d8 100644
--- a/app/code/Magento/Catalog/Model/Product/Image.php
+++ b/app/code/Magento/Catalog/Model/Product/Image.php
@@ -45,7 +45,7 @@ class Image extends \Magento\Framework\Model\AbstractModel
* Default quality value (for JPEG images only).
*
* @var int
- * @deprecated use config setting with path self::XML_PATH_JPEG_QUALITY
+ * @deprecated 103.0.1 use config setting with path self::XML_PATH_JPEG_QUALITY
*/
protected $_quality = null;
@@ -305,7 +305,7 @@ public function getHeight()
*
* @param int $quality
* @return $this
- * @deprecated use config setting with path self::XML_PATH_JPEG_QUALITY
+ * @deprecated 103.0.1 use config setting with path self::XML_PATH_JPEG_QUALITY
*/
public function setQuality($quality)
{
@@ -454,7 +454,7 @@ public function getBaseFile()
/**
* Get new file
*
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
* @return bool|string
*/
public function getNewFile()
diff --git a/app/code/Magento/Catalog/Model/Product/Link.php b/app/code/Magento/Catalog/Model/Product/Link.php
index 5c07d3d32b257..f2b07bad8891c 100644
--- a/app/code/Magento/Catalog/Model/Product/Link.php
+++ b/app/code/Magento/Catalog/Model/Product/Link.php
@@ -58,7 +58,7 @@ class Link extends \Magento\Framework\Model\AbstractModel
/**
* @var \Magento\CatalogInventory\Helper\Stock
- * @deprecated 101.0.1
+ * @deprecated 101.0.0
*/
protected $stockHelper;
diff --git a/app/code/Magento/Catalog/Model/Product/Option.php b/app/code/Magento/Catalog/Model/Product/Option.php
index b4a4ec08d390d..e911d1941f188 100644
--- a/app/code/Magento/Catalog/Model/Product/Option.php
+++ b/app/code/Magento/Catalog/Model/Product/Option.php
@@ -159,7 +159,7 @@ public function __construct(
* Get resource instance
*
* @return \Magento\Framework\Model\ResourceModel\Db\AbstractDb
- * @deprecated 101.1.0 because resource models should be used directly
+ * @deprecated 102.0.0 because resource models should be used directly
*/
protected function _getResource()
{
@@ -207,7 +207,7 @@ public function getValueById($valueId)
*
* @param string $type
* @return bool
- * @since 101.1.0
+ * @since 102.0.0
*/
public function hasValues($type = null)
{
diff --git a/app/code/Magento/Catalog/Model/Product/Option/Type/DefaultType.php b/app/code/Magento/Catalog/Model/Product/Option/Type/DefaultType.php
index c388be8b6f394..503fe2b6039be 100644
--- a/app/code/Magento/Catalog/Model/Product/Option/Type/DefaultType.php
+++ b/app/code/Magento/Catalog/Model/Product/Option/Type/DefaultType.php
@@ -399,7 +399,7 @@ public function getProductOptions()
* @param boolean $isPercent Price type - percent or fixed
* @param float $basePrice For percent price type
* @return float
- * @deprecated 102.0.4 typo in method name
+ * @deprecated 102.0.6 typo in method name
* @see _getChargeableOptionPrice
*/
protected function _getChargableOptionPrice($price, $isPercent, $basePrice)
@@ -414,6 +414,7 @@ protected function _getChargableOptionPrice($price, $isPercent, $basePrice)
* @param boolean $isPercent Price type - percent or fixed
* @param float $basePrice For percent price type
* @return float
+ * @since 102.0.6
*/
protected function _getChargeableOptionPrice($price, $isPercent, $basePrice)
{
diff --git a/app/code/Magento/Catalog/Model/Product/Option/Type/File.php b/app/code/Magento/Catalog/Model/Product/Option/Type/File.php
index 9f1eae207e116..f02c607c6296c 100644
--- a/app/code/Magento/Catalog/Model/Product/Option/Type/File.php
+++ b/app/code/Magento/Catalog/Model/Product/Option/Type/File.php
@@ -411,7 +411,7 @@ public function getPrintableOptionValue($optionValue)
* @param string $optionValue Prepared for cart option value
* @return string
*
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
*/
public function getEditableOptionValue($optionValue)
{
@@ -435,7 +435,7 @@ public function getEditableOptionValue($optionValue)
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
*/
public function parseOptionValue($optionValue, $productOptionValues)
{
diff --git a/app/code/Magento/Catalog/Model/Product/Price/Validation/Result.php b/app/code/Magento/Catalog/Model/Product/Price/Validation/Result.php
index 3d4d9f607da48..6c5451e3ecfe0 100644
--- a/app/code/Magento/Catalog/Model/Product/Price/Validation/Result.php
+++ b/app/code/Magento/Catalog/Model/Product/Price/Validation/Result.php
@@ -10,7 +10,7 @@
* Validation Result is used to aggregate errors that occurred during price update.
*
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
class Result
{
@@ -43,7 +43,7 @@ public function __construct(
* @param array $parameters (optional). Placeholder values in ['placeholder key' => 'placeholder value'] format
* for failure reason message.
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function addFailedItem($id, $message, array $parameters = [])
{
@@ -57,7 +57,7 @@ public function addFailedItem($id, $message, array $parameters = [])
* Get ids of rows, that contained errors during price update.
*
* @return int[]
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getFailedRowIds()
{
@@ -68,7 +68,7 @@ public function getFailedRowIds()
* Get price update errors, that occurred during price update.
*
* @return \Magento\Catalog\Api\Data\PriceUpdateResultInterface[]
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getFailedItems()
{
diff --git a/app/code/Magento/Catalog/Model/Product/Type/AbstractType.php b/app/code/Magento/Catalog/Model/Product/Type/AbstractType.php
index e6804d9246faa..2ceb6df9779b2 100644
--- a/app/code/Magento/Catalog/Model/Product/Type/AbstractType.php
+++ b/app/code/Magento/Catalog/Model/Product/Type/AbstractType.php
@@ -167,7 +167,7 @@ abstract public function deleteTypeSpecificData(\Magento\Catalog\Model\Product $
* Serializer interface instance.
*
* @var \Magento\Framework\Serialize\Serializer\Json
- * @since 101.1.0
+ * @since 102.0.0
*/
protected $serializer;
@@ -1106,7 +1106,7 @@ public function getAssociatedProducts($product)
*
* @param \Magento\Catalog\Model\Product $product
* @return bool
- * @since 101.1.0
+ * @since 101.0.11
*/
public function isPossibleBuyFromList($product)
{
diff --git a/app/code/Magento/Catalog/Model/Product/Type/FrontSpecialPrice.php b/app/code/Magento/Catalog/Model/Product/Type/FrontSpecialPrice.php
index dabfdb74f0118..a692ec5d463d0 100644
--- a/app/code/Magento/Catalog/Model/Product/Type/FrontSpecialPrice.php
+++ b/app/code/Magento/Catalog/Model/Product/Type/FrontSpecialPrice.php
@@ -18,7 +18,7 @@
* @SuppressWarnings(PHPMD.CookieAndSessionMisuse)
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*
- * @deprecated
+ * @deprecated 103.0.2
* @see \Magento\Catalog\Model\Product\Type\Price
*/
class FrontSpecialPrice extends Price
@@ -70,7 +70,7 @@ public function __construct(
/**
* @inheritdoc
*
- * @deprecated
+ * @deprecated 103.0.2
*/
protected function _applySpecialPrice($product, $finalPrice)
{
diff --git a/app/code/Magento/Catalog/Model/Product/Type/Price.php b/app/code/Magento/Catalog/Model/Product/Type/Price.php
index b30624b79dd51..6b4b229e2c125 100644
--- a/app/code/Magento/Catalog/Model/Product/Type/Price.php
+++ b/app/code/Magento/Catalog/Model/Product/Type/Price.php
@@ -482,6 +482,7 @@ public function getTierPriceCount($product)
* @param Product $product
*
* @return array|float
+ * @since 102.0.6
*/
public function getFormattedTierPrice($qty, $product)
{
@@ -507,7 +508,7 @@ public function getFormattedTierPrice($qty, $product)
*
* @return array|float
*
- * @deprecated
+ * @deprecated 102.0.6
* @see getFormattedTierPrice()
*/
public function getFormatedTierPrice($qty, $product)
@@ -520,6 +521,7 @@ public function getFormatedTierPrice($qty, $product)
*
* @param Product $product
* @return array|float
+ * @since 102.0.6
*/
public function getFormattedPrice($product)
{
@@ -532,7 +534,7 @@ public function getFormattedPrice($product)
* @param Product $product
* @return array || float
*
- * @deprecated
+ * @deprecated 102.0.6
* @see getFormattedPrice()
*/
public function getFormatedPrice($product)
diff --git a/app/code/Magento/Catalog/Model/ProductIdLocatorInterface.php b/app/code/Magento/Catalog/Model/ProductIdLocatorInterface.php
index 91570b58b7328..521d53629d99c 100644
--- a/app/code/Magento/Catalog/Model/ProductIdLocatorInterface.php
+++ b/app/code/Magento/Catalog/Model/ProductIdLocatorInterface.php
@@ -8,7 +8,7 @@
/**
* Product ID locator provides all product IDs by SKU.
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface ProductIdLocatorInterface
{
@@ -17,7 +17,7 @@ interface ProductIdLocatorInterface
*
* @param array $skus
* @return array
- * @since 101.1.0
+ * @since 102.0.0
*/
public function retrieveProductIdsBySkus(array $skus);
}
diff --git a/app/code/Magento/Catalog/Model/ProductRepository.php b/app/code/Magento/Catalog/Model/ProductRepository.php
index c87b6e9763205..edd8b5d50b851 100644
--- a/app/code/Magento/Catalog/Model/ProductRepository.php
+++ b/app/code/Magento/Catalog/Model/ProductRepository.php
@@ -122,14 +122,14 @@ class ProductRepository implements \Magento\Catalog\Api\ProductRepositoryInterfa
protected $fileSystem;
/**
- * @deprecated
+ * @deprecated 103.0.2
*
* @var ImageContentInterfaceFactory
*/
protected $contentFactory;
/**
- * @deprecated
+ * @deprecated 103.0.2
*
* @var ImageProcessorInterface
*/
@@ -141,7 +141,7 @@ class ProductRepository implements \Magento\Catalog\Api\ProductRepositoryInterfa
protected $extensionAttributesJoinProcessor;
/**
- * @deprecated
+ * @deprecated 103.0.2
*
* @var \Magento\Catalog\Model\Product\Gallery\Processor
*/
@@ -401,7 +401,7 @@ private function assignProductToWebsites(\Magento\Catalog\Model\Product $product
/**
* Process new gallery media entry.
*
- * @deprecated
+ * @deprecated 103.0.2
* @see MediaGalleryProcessor::processNewMediaGalleryEntry()
*
* @param ProductInterface $product
@@ -666,7 +666,7 @@ private function addExtensionAttributes(Collection $collection) : Collection
/**
* Helper function that adds a FilterGroup to the collection.
*
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
* @param \Magento\Framework\Api\Search\FilterGroup $filterGroup
* @param Collection $collection
* @return void
@@ -725,7 +725,7 @@ private function getMediaGalleryProcessor()
/**
* Retrieve collection processor
*
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
* @return CollectionProcessorInterface
*/
private function getCollectionProcessor()
diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Category/Collection.php b/app/code/Magento/Catalog/Model/ResourceModel/Category/Collection.php
index 657daca13055e..cef77b0d1ecf2 100644
--- a/app/code/Magento/Catalog/Model/ResourceModel/Category/Collection.php
+++ b/app/code/Magento/Catalog/Model/ResourceModel/Category/Collection.php
@@ -463,6 +463,7 @@ public function addRootLevelFilter()
* Add navigation max depth filter
*
* @return $this
+ * @since 103.0.0
*/
public function addNavigationMaxDepthFilter()
{
diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Category/Flat.php b/app/code/Magento/Catalog/Model/ResourceModel/Category/Flat.php
index 05950531e2178..cd1b8c8924552 100644
--- a/app/code/Magento/Catalog/Model/ResourceModel/Category/Flat.php
+++ b/app/code/Magento/Catalog/Model/ResourceModel/Category/Flat.php
@@ -69,7 +69,7 @@ class Flat extends \Magento\Indexer\Model\ResourceModel\AbstractResource
* Category collection factory
*
* @var \Magento\Catalog\Model\ResourceModel\Category\CollectionFactory
- * @deprecated 100.0.12
+ * @deprecated 100.0.2
*/
protected $_categoryCollectionFactory;
diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Eav/Attribute.php b/app/code/Magento/Catalog/Model/ResourceModel/Eav/Attribute.php
index e7c98b218f5ad..495c8be311cc0 100644
--- a/app/code/Magento/Catalog/Model/ResourceModel/Eav/Attribute.php
+++ b/app/code/Magento/Catalog/Model/ResourceModel/Eav/Attribute.php
@@ -247,6 +247,7 @@ public function afterSave()
* Is attribute enabled for flat indexing
*
* @return bool
+ * @since 103.0.0
*/
public function isEnabledInFlat()
{
@@ -874,7 +875,7 @@ public function __wakeup()
/**
* @inheritdoc
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setIsUsedInGrid($isUsedInGrid)
{
@@ -884,7 +885,7 @@ public function setIsUsedInGrid($isUsedInGrid)
/**
* @inheritdoc
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setIsVisibleInGrid($isVisibleInGrid)
{
@@ -894,7 +895,7 @@ public function setIsVisibleInGrid($isVisibleInGrid)
/**
* @inheritdoc
- * @since 101.1.0
+ * @since 102.0.0
*/
public function setIsFilterableInGrid($isFilterableInGrid)
{
diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Layer/Filter/Price.php b/app/code/Magento/Catalog/Model/ResourceModel/Layer/Filter/Price.php
index 585da2af529a4..ab9f0e76854a6 100644
--- a/app/code/Magento/Catalog/Model/ResourceModel/Layer/Filter/Price.php
+++ b/app/code/Magento/Catalog/Model/ResourceModel/Layer/Filter/Price.php
@@ -410,6 +410,7 @@ protected function _construct()
/**
* {@inheritdoc}
* @return string
+ * @since 102.0.6
*/
public function getMainTable()
{
diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Product.php b/app/code/Magento/Catalog/Model/ResourceModel/Product.php
index 464df2ef4c249..e8c4f78264ede 100644
--- a/app/code/Magento/Catalog/Model/ResourceModel/Product.php
+++ b/app/code/Magento/Catalog/Model/ResourceModel/Product.php
@@ -168,7 +168,7 @@ public function getProductWebsiteTable()
/**
* Product Category table name getter
*
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
* @return string
*/
public function getProductCategoryTable()
@@ -192,7 +192,7 @@ protected function _getDefaultAttributes()
/**
* Retrieve product website identifiers
*
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
* @param \Magento\Catalog\Model\Product|int $product
* @return array
*/
@@ -309,7 +309,7 @@ public function delete($object)
/**
* Save product website relations
*
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
* @param \Magento\Catalog\Model\Product $product
* @return $this
*/
@@ -338,7 +338,7 @@ protected function _saveWebsiteIds($product)
* @param \Magento\Framework\DataObject $object
* @return $this
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
*/
protected function _saveCategories(\Magento\Framework\DataObject $object)
{
@@ -698,7 +698,7 @@ private function getEntityManager()
/**
* Retrieve ProductWebsiteLink instance.
*
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
* @return ProductWebsiteLink
*/
private function getProductWebsiteLink()
@@ -709,7 +709,7 @@ private function getProductWebsiteLink()
/**
* Retrieve CategoryLink instance.
*
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
* @return \Magento\Catalog\Model\ResourceModel\Product\CategoryLink
*/
private function getProductCategoryLink()
@@ -727,7 +727,7 @@ private function getProductCategoryLink()
* Store id is required to correctly identify attribute value we are working with.
*
* @inheritdoc
- * @since 101.1.0
+ * @since 102.0.0
*/
protected function getAttributeRow($entity, $object, $attribute)
{
diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Product/Collection.php b/app/code/Magento/Catalog/Model/ResourceModel/Product/Collection.php
index 0cdf8b39f7d52..c1bdc7863ab55 100644
--- a/app/code/Magento/Catalog/Model/ResourceModel/Product/Collection.php
+++ b/app/code/Magento/Catalog/Model/ResourceModel/Product/Collection.php
@@ -702,6 +702,7 @@ protected function _afterLoad()
* Add Store ID to products from collection.
*
* @return $this
+ * @since 102.0.8
*/
protected function prepareStoreId()
{
@@ -2176,7 +2177,7 @@ public function addTierPriceData()
*
* @param int $customerGroupId
* @return $this
- * @since 101.1.0
+ * @since 102.0.0
*/
public function addTierPriceDataByGroupId($customerGroupId)
{
@@ -2357,7 +2358,7 @@ function ($item) use ($linkField) {
* Get product entity metadata
*
* @return \Magento\Framework\EntityManager\EntityMetadataInterface
- * @since 101.1.0
+ * @since 102.0.0
*/
public function getProductEntityMetadata()
{
diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Product/Indexer/Price/CompositeProductBatchSizeAdjusterInterface.php b/app/code/Magento/Catalog/Model/ResourceModel/Product/Indexer/Price/CompositeProductBatchSizeAdjusterInterface.php
index c0e8858b4cfa8..2d282c5bf9741 100644
--- a/app/code/Magento/Catalog/Model/ResourceModel/Product/Indexer/Price/CompositeProductBatchSizeAdjusterInterface.php
+++ b/app/code/Magento/Catalog/Model/ResourceModel/Product/Indexer/Price/CompositeProductBatchSizeAdjusterInterface.php
@@ -9,7 +9,7 @@
/**
* Correct batch size according to number of composite related items.
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface CompositeProductBatchSizeAdjusterInterface
{
@@ -18,7 +18,7 @@ interface CompositeProductBatchSizeAdjusterInterface
*
* @param int $batchSize
* @return int
- * @since 101.1.0
+ * @since 102.0.0
*/
public function adjust($batchSize);
}
diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Product/Indexer/Price/DefaultPrice.php b/app/code/Magento/Catalog/Model/ResourceModel/Product/Indexer/Price/DefaultPrice.php
index 3b4c3408e742b..83f7de6dc3d9e 100644
--- a/app/code/Magento/Catalog/Model/ResourceModel/Product/Indexer/Price/DefaultPrice.php
+++ b/app/code/Magento/Catalog/Model/ResourceModel/Product/Indexer/Price/DefaultPrice.php
@@ -18,7 +18,7 @@
* @author Magento Core Team
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @since 100.0.2
- * @deprecated Not used anymore for price indexation. Class left for backward compatibility
+ * @deprecated 102.0.6 Not used anymore for price indexation. Class left for backward compatibility
* @see DimensionalIndexerInterface
*/
class DefaultPrice extends AbstractIndexer implements PriceInterface
@@ -240,7 +240,7 @@ protected function _getDefaultFinalPriceTable()
* Prepare final price temporary index table
*
* @return $this
- * @deprecated
+ * @deprecated 102.0.5
* @see prepareFinalPriceTable()
*/
protected function _prepareDefaultFinalPriceTable()
diff --git a/app/code/Magento/Catalog/Model/System/Config/Backend/Catalog/Url/Rewrite/Suffix.php b/app/code/Magento/Catalog/Model/System/Config/Backend/Catalog/Url/Rewrite/Suffix.php
index 0b49ef8796ce6..d398c9c14787f 100644
--- a/app/code/Magento/Catalog/Model/System/Config/Backend/Catalog/Url/Rewrite/Suffix.php
+++ b/app/code/Magento/Catalog/Model/System/Config/Backend/Catalog/Url/Rewrite/Suffix.php
@@ -98,7 +98,7 @@ public function __construct(
* Get instance of ScopePool
*
* @return \Magento\Framework\App\Config
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
*/
private function getAppConfig()
{
@@ -140,7 +140,7 @@ public function afterSave()
/**
* {@inheritdoc}
- * @since 101.1.0
+ * @since 102.0.0
*/
public function afterDeleteCommit()
{
diff --git a/app/code/Magento/Catalog/Pricing/Price/ConfiguredPrice.php b/app/code/Magento/Catalog/Pricing/Price/ConfiguredPrice.php
index 6ec282e45a1a0..c1af0b41741df 100644
--- a/app/code/Magento/Catalog/Pricing/Price/ConfiguredPrice.php
+++ b/app/code/Magento/Catalog/Pricing/Price/ConfiguredPrice.php
@@ -65,7 +65,7 @@ public function setItem(ItemInterface $item)
/**
* Get value of configured options.
*
- * @deprecated ConfiguredOptions::getItemOptionsValue is used instead
+ * @deprecated 102.0.4 ConfiguredOptions::getItemOptionsValue is used instead
* @return float
*/
protected function getOptionsValue(): float
diff --git a/app/code/Magento/Catalog/Pricing/Price/TierPrice.php b/app/code/Magento/Catalog/Pricing/Price/TierPrice.php
index f250927889c29..1aa43a39af442 100644
--- a/app/code/Magento/Catalog/Pricing/Price/TierPrice.php
+++ b/app/code/Magento/Catalog/Pricing/Price/TierPrice.php
@@ -29,7 +29,7 @@ class TierPrice extends AbstractPrice implements TierPriceInterface, BasePricePr
/**
* @var Session
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
*/
protected $customerSession;
diff --git a/app/code/Magento/Catalog/Test/Unit/Ui/Component/ColumnFactoryTest.php b/app/code/Magento/Catalog/Test/Unit/Ui/Component/ColumnFactoryTest.php
index 774edcfeb6b64..e33123bf0597f 100644
--- a/app/code/Magento/Catalog/Test/Unit/Ui/Component/ColumnFactoryTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Ui/Component/ColumnFactoryTest.php
@@ -111,6 +111,7 @@ public function testCreateWithNotFilterableInGridAttribute(array $filterModifier
'visible' => null,
'filter' => $filter,
'component' => 'Magento_Ui/js/grid/columns/column',
+ '__disableTmpl' => ['label' => true],
],
],
'context' => $this->context,
diff --git a/app/code/Magento/Catalog/Test/Unit/Ui/Component/Product/MassActionTest.php b/app/code/Magento/Catalog/Test/Unit/Ui/Component/Product/MassActionTest.php
index dcd50d4739d70..cd765d6124869 100644
--- a/app/code/Magento/Catalog/Test/Unit/Ui/Component/Product/MassActionTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Ui/Component/Product/MassActionTest.php
@@ -12,6 +12,9 @@
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
use Magento\Framework\View\Element\UiComponent\ContextInterface;
+/**
+ * Unit tests for \Magento\Catalog\Ui\Component\Product\MassAction.
+ */
class MassActionTest extends \PHPUnit\Framework\TestCase
{
/**
@@ -103,7 +106,8 @@ public function getPrepareDataProvider() : array
[
'type' => 'first_action',
'label' => 'First Action',
- 'url' => '/module/controller/firstAction'
+ 'url' => '/module/controller/firstAction',
+ '__disableTmpl' => true,
],
],
[
@@ -122,7 +126,8 @@ public function getPrepareDataProvider() : array
'label' => 'Second Sub Action 2',
'url' => '/module/controller/secondSubAction2'
],
- ]
+ ],
+ '__disableTmpl' => true,
],
],
[
@@ -141,7 +146,8 @@ public function getPrepareDataProvider() : array
'label' => 'Second Sub Action 2',
'url' => '/module/controller/disable'
],
- ]
+ ],
+ '__disableTmpl' => true,
],
],
[
@@ -160,7 +166,8 @@ public function getPrepareDataProvider() : array
'label' => 'Second Sub Action 2',
'url' => '/module/controller/disable'
],
- ]
+ ],
+ '__disableTmpl' => true,
],
false,
false
@@ -170,7 +177,8 @@ public function getPrepareDataProvider() : array
[
'type' => 'delete',
'label' => 'First Action',
- 'url' => '/module/controller/delete'
+ 'url' => '/module/controller/delete',
+ '__disableTmpl' => true,
],
],
[
@@ -178,7 +186,8 @@ public function getPrepareDataProvider() : array
[
'type' => 'delete',
'label' => 'First Action',
- 'url' => '/module/controller/delete'
+ 'url' => '/module/controller/delete',
+ '__disableTmpl' => true,
],
false,
false
@@ -188,7 +197,8 @@ public function getPrepareDataProvider() : array
[
'type' => 'delete',
'label' => 'First Action',
- 'url' => '/module/controller/attributes'
+ 'url' => '/module/controller/attributes',
+ '__disableTmpl' => true,
],
],
[
@@ -196,7 +206,8 @@ public function getPrepareDataProvider() : array
[
'type' => 'delete',
'label' => 'First Action',
- 'url' => '/module/controller/attributes'
+ 'url' => '/module/controller/attributes',
+ '__disableTmpl' => true,
],
false,
false
diff --git a/app/code/Magento/Catalog/Test/Unit/Ui/DataProvider/Product/Form/Modifier/AttributeSetTest.php b/app/code/Magento/Catalog/Test/Unit/Ui/DataProvider/Product/Form/Modifier/AttributeSetTest.php
index e36021fc7ebf6..770f66615181e 100644
--- a/app/code/Magento/Catalog/Test/Unit/Ui/DataProvider/Product/Form/Modifier/AttributeSetTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Ui/DataProvider/Product/Form/Modifier/AttributeSetTest.php
@@ -95,11 +95,15 @@ public function testModifyMeta()
*/
public function testModifyMetaLocked($locked)
{
- $this->productMock->expects($this->any())
+ $this->productMock->expects($this->once())
->method('isLockedAttribute')
->willReturn($locked);
+ $this->attributeSetCollectionMock->expects($this->once())
+ ->method('getData')
+ ->willReturn([]);
$modifyMeta = $this->getModel()->modifyMeta([AbstractModifier::DEFAULT_GENERAL_PANEL => []]);
$children = $modifyMeta[AbstractModifier::DEFAULT_GENERAL_PANEL]['children'];
+
$this->assertEquals(
$locked,
$children['attribute_set_id']['arguments']['data']['config']['disabled']
diff --git a/app/code/Magento/Catalog/Test/Unit/Ui/DataProvider/Product/Form/Modifier/EavTest.php b/app/code/Magento/Catalog/Test/Unit/Ui/DataProvider/Product/Form/Modifier/EavTest.php
index 91a09c907de65..fe2f83dcc7469 100755
--- a/app/code/Magento/Catalog/Test/Unit/Ui/DataProvider/Product/Form/Modifier/EavTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Ui/DataProvider/Product/Form/Modifier/EavTest.php
@@ -563,6 +563,7 @@ public function setupAttributeMetaDataProvider()
'scopeLabel' => '',
'globalScope' => false,
'sortOrder' => 0,
+ '__disableTmpl' => ['label' => true, 'code' => true],
],
],
'default_null_prod_not_new_locked_and_required' => [
@@ -582,6 +583,7 @@ public function setupAttributeMetaDataProvider()
'scopeLabel' => '',
'globalScope' => false,
'sortOrder' => 0,
+ '__disableTmpl' => ['label' => true, 'code' => true],
],
'locked' => true,
],
@@ -602,6 +604,7 @@ public function setupAttributeMetaDataProvider()
'scopeLabel' => '',
'globalScope' => false,
'sortOrder' => 0,
+ '__disableTmpl' => ['label' => true, 'code' => true],
],
],
'default_null_prod_new_and_not_required' => [
@@ -621,6 +624,7 @@ public function setupAttributeMetaDataProvider()
'scopeLabel' => '',
'globalScope' => false,
'sortOrder' => 0,
+ '__disableTmpl' => ['label' => true, 'code' => true],
],
],
'default_null_prod_new_locked_and_not_required' => [
@@ -640,6 +644,7 @@ public function setupAttributeMetaDataProvider()
'scopeLabel' => '',
'globalScope' => false,
'sortOrder' => 0,
+ '__disableTmpl' => ['label' => true, 'code' => true],
],
'locked' => true,
],
@@ -660,6 +665,7 @@ public function setupAttributeMetaDataProvider()
'scopeLabel' => '',
'globalScope' => false,
'sortOrder' => 0,
+ '__disableTmpl' => ['label' => true, 'code' => true],
],
]
];
diff --git a/app/code/Magento/Catalog/Ui/Component/ColumnFactory.php b/app/code/Magento/Catalog/Ui/Component/ColumnFactory.php
index f7554219c6c31..491d945e4644f 100644
--- a/app/code/Magento/Catalog/Ui/Component/ColumnFactory.php
+++ b/app/code/Magento/Catalog/Ui/Component/ColumnFactory.php
@@ -73,6 +73,7 @@ public function create($attribute, $context, array $config = [])
'filter' => ($attribute->getIsFilterableInGrid() || array_key_exists($columnName, $filterModifiers))
? $this->getFilterType($attribute->getFrontendInput())
: null,
+ '__disableTmpl' => ['label' => true],
], $config);
if ($attribute->usesSource()) {
diff --git a/app/code/Magento/Catalog/Ui/Component/Listing/Columns/ProductActions.php b/app/code/Magento/Catalog/Ui/Component/Listing/Columns/ProductActions.php
index 0c4efa87c1a32..0d38ebaa14fac 100644
--- a/app/code/Magento/Catalog/Ui/Component/Listing/Columns/ProductActions.php
+++ b/app/code/Magento/Catalog/Ui/Component/Listing/Columns/ProductActions.php
@@ -60,6 +60,7 @@ public function prepareDataSource(array $dataSource)
),
'label' => __('Edit'),
'hidden' => false,
+ '__disableTmpl' => true,
];
}
}
diff --git a/app/code/Magento/Catalog/Ui/Component/Listing/Columns/Websites.php b/app/code/Magento/Catalog/Ui/Component/Listing/Columns/Websites.php
index 494b77724e5b7..22c56d4a3c19d 100644
--- a/app/code/Magento/Catalog/Ui/Component/Listing/Columns/Websites.php
+++ b/app/code/Magento/Catalog/Ui/Component/Listing/Columns/Websites.php
@@ -110,6 +110,7 @@ public function prepare()
* Apply sorting.
*
* @return void
+ * @since 103.0.2
*/
protected function applySorting()
{
diff --git a/app/code/Magento/Catalog/Ui/Component/Product/MassAction.php b/app/code/Magento/Catalog/Ui/Component/Product/MassAction.php
index 894e2b701b5ac..7696f7f847285 100644
--- a/app/code/Magento/Catalog/Ui/Component/Product/MassAction.php
+++ b/app/code/Magento/Catalog/Ui/Component/Product/MassAction.php
@@ -12,6 +12,9 @@
use Magento\Framework\View\Element\UiComponent\ContextInterface;
use Magento\Ui\Component\AbstractComponent;
+/**
+ * Prepare catalog MassAction configuration.
+ */
class MassAction extends AbstractComponent
{
const NAME = 'massaction';
@@ -22,8 +25,6 @@ class MassAction extends AbstractComponent
private $authorization;
/**
- * Constructor
- *
* @param AuthorizationInterface $authorization
* @param ContextInterface $context
* @param UiComponentInterface[] $components
@@ -40,7 +41,9 @@ public function __construct(
}
/**
- * {@inheritdoc}
+ * @inheritdoc
+ *
+ * @return void
*/
public function prepare() : void
{
@@ -49,7 +52,7 @@ public function prepare() : void
foreach ($this->getChildComponents() as $actionComponent) {
$actionType = $actionComponent->getConfiguration()['type'];
if ($this->isActionAllowed($actionType)) {
- $config['actions'][] = $actionComponent->getConfiguration();
+ $config['actions'][] = array_merge($actionComponent->getConfiguration(), ['__disableTmpl' => true]);
}
}
$origConfig = $this->getConfiguration();
@@ -64,7 +67,7 @@ public function prepare() : void
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getComponentName() : string
{
diff --git a/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Alerts.php b/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Alerts.php
index 1f154d3204454..9b328e9bcc199 100644
--- a/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Alerts.php
+++ b/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Alerts.php
@@ -54,7 +54,6 @@ public function __construct(
/**
* {@inheritdoc}
- * @since 101.0.0
*/
public function modifyData(array $data)
{
@@ -63,7 +62,6 @@ public function modifyData(array $data)
/**
* {@inheritdoc}
- * @since 101.0.0
*/
public function modifyMeta(array $meta)
{
diff --git a/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/AttributeSet.php b/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/AttributeSet.php
index 0733d21bf47d7..40bdd8f9b1450 100644
--- a/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/AttributeSet.php
+++ b/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/AttributeSet.php
@@ -78,11 +78,19 @@ public function getOptions()
\Magento\Eav\Model\ResourceModel\Entity\Attribute\Set\Collection::SORT_ORDER_ASC
);
- return $collection->getData();
+ $options = $collection->getData();
+ array_walk(
+ $options,
+ function (&$option) {
+ $option['__disableTmpl'] = true;
+ }
+ );
+ return $options;
}
/**
- * {@inheritdoc}
+ * @inheritdoc
+ *
* @since 101.0.0
*/
public function modifyMeta(array $meta)
@@ -116,7 +124,8 @@ public function modifyMeta(array $meta)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
+ *
* @since 101.0.0
*/
public function modifyData(array $data)
diff --git a/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Categories.php b/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Categories.php
index c62da6c0cb738..a789ef859d2ce 100644
--- a/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Categories.php
+++ b/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Categories.php
@@ -48,7 +48,7 @@ class Categories extends AbstractModifier
/**
* @var array
- * @deprecated 101.0.3
+ * @deprecated 101.0.0
* @since 101.0.0
*/
protected $categoriesTrees = [];
diff --git a/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Eav.php b/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Eav.php
index 6f60a114737b0..595f384c70174 100755
--- a/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Eav.php
+++ b/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/Eav.php
@@ -680,6 +680,7 @@ public function setupAttributeMeta(ProductAttributeInterface $attribute, $groupC
'scopeLabel' => $this->getScopeLabel($attribute),
'globalScope' => $this->isScopeGlobal($attribute),
'sortOrder' => $sortOrder * self::SORT_ORDER_MULTIPLIER,
+ '__disableTmpl' => ['label' => true, 'code' => true],
]);
// TODO: Refactor to $attribute->getOptions() when MAGETWO-48289 is done
@@ -842,6 +843,7 @@ public function setupAttributeContainerMeta(ProductAttributeInterface $attribute
'breakLine' => false,
'label' => $attribute->getDefaultFrontendLabel(),
'required' => $attribute->getIsRequired(),
+ '__disableTmpl' => ['label' => true],
]
);
diff --git a/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/TierPrice.php b/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/TierPrice.php
index a529580e29239..05db2027279a2 100644
--- a/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/TierPrice.php
+++ b/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/TierPrice.php
@@ -18,7 +18,7 @@
* Tier prices modifier adds price type option to tier prices.
*
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
class TierPrice extends AbstractModifier
{
@@ -46,7 +46,7 @@ public function __construct(
/**
* @inheritdoc
- * @since 101.1.0
+ * @since 102.0.0
*/
public function modifyData(array $data)
{
@@ -56,7 +56,7 @@ public function modifyData(array $data)
/**
* Add tier price info to meta array.
*
- * @since 101.1.0
+ * @since 102.0.0
* @param array $meta
* @return array
*/
diff --git a/app/code/Magento/Catalog/Ui/DataProvider/Product/Listing/Collector/Image.php b/app/code/Magento/Catalog/Ui/DataProvider/Product/Listing/Collector/Image.php
index 4fcb87ab1396e..45b9c2b0b69ce 100644
--- a/app/code/Magento/Catalog/Ui/DataProvider/Product/Listing/Collector/Image.php
+++ b/app/code/Magento/Catalog/Ui/DataProvider/Product/Listing/Collector/Image.php
@@ -54,7 +54,7 @@ class Image implements ProductRenderCollectorInterface
/**
* @var DesignInterface
- * @deprecated 2.3.0 DesignLoader is used for design theme loading
+ * @deprecated 103.0.1 DesignLoader is used for design theme loading
*/
private $design;
diff --git a/app/code/Magento/Catalog/Ui/DataProvider/Product/ProductDataProvider.php b/app/code/Magento/Catalog/Ui/DataProvider/Product/ProductDataProvider.php
index a518afc576d61..b5d2bad1d348e 100644
--- a/app/code/Magento/Catalog/Ui/DataProvider/Product/ProductDataProvider.php
+++ b/app/code/Magento/Catalog/Ui/DataProvider/Product/ProductDataProvider.php
@@ -130,6 +130,7 @@ public function addFilter(\Magento\Framework\Api\Filter $filter)
/**
* @inheritdoc
+ * @since 103.0.0
*/
public function getMeta()
{
diff --git a/app/code/Magento/Catalog/Ui/DataProvider/Product/ProductRenderCollectorInterface.php b/app/code/Magento/Catalog/Ui/DataProvider/Product/ProductRenderCollectorInterface.php
index 3f16e0a6617da..3ea21223816c1 100644
--- a/app/code/Magento/Catalog/Ui/DataProvider/Product/ProductRenderCollectorInterface.php
+++ b/app/code/Magento/Catalog/Ui/DataProvider/Product/ProductRenderCollectorInterface.php
@@ -12,7 +12,7 @@
* Allows to collect absolutely different product render information from different modules
*
* @api
- * @since 101.1.0
+ * @since 102.0.0
*/
interface ProductRenderCollectorInterface
{
@@ -22,7 +22,7 @@ interface ProductRenderCollectorInterface
* @param ProductInterface $product
* @param ProductRenderInterface $productRender
* @return void
- * @since 101.1.0
+ * @since 102.0.0
*/
public function collect(ProductInterface $product, ProductRenderInterface $productRender);
}
diff --git a/app/code/Magento/Catalog/ViewModel/Product/Breadcrumbs.php b/app/code/Magento/Catalog/ViewModel/Product/Breadcrumbs.php
index d1424d637937b..559966ab18cd7 100644
--- a/app/code/Magento/Catalog/ViewModel/Product/Breadcrumbs.php
+++ b/app/code/Magento/Catalog/ViewModel/Product/Breadcrumbs.php
@@ -117,7 +117,7 @@ public function getJsonConfigurationHtmlEscaped() : string
* Returns breadcrumb json.
*
* @return string
- * @deprecated in favor of new method with name {suffix}Html{postfix}()
+ * @deprecated 103.0.0 in favor of new method with name {suffix}Html{postfix}()
*/
public function getJsonConfiguration()
{
diff --git a/app/code/Magento/Catalog/composer.json b/app/code/Magento/Catalog/composer.json
index fc22bf3438e3f..7561fce7a67d9 100644
--- a/app/code/Magento/Catalog/composer.json
+++ b/app/code/Magento/Catalog/composer.json
@@ -6,38 +6,37 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-authorization": "*",
- "magento/module-asynchronous-operations": "*",
- "magento/module-backend": "*",
- "magento/module-catalog-inventory": "*",
- "magento/module-catalog-rule": "*",
- "magento/module-catalog-url-rewrite": "*",
- "magento/module-checkout": "*",
- "magento/module-cms": "*",
- "magento/module-config": "*",
- "magento/module-customer": "*",
- "magento/module-directory": "*",
- "magento/module-eav": "*",
- "magento/module-indexer": "*",
- "magento/module-media-storage": "*",
- "magento/module-msrp": "*",
- "magento/module-page-cache": "*",
- "magento/module-product-alert": "*",
- "magento/module-quote": "*",
- "magento/module-store": "*",
- "magento/module-tax": "*",
- "magento/module-theme": "*",
- "magento/module-ui": "*",
- "magento/module-url-rewrite": "*",
- "magento/module-widget": "*",
- "magento/module-wishlist": "*",
- "magento/module-authorization": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-authorization": "100.3.*",
+ "magento/module-asynchronous-operations": "100.3.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-catalog-inventory": "100.3.*",
+ "magento/module-catalog-rule": "101.1.*",
+ "magento/module-catalog-url-rewrite": "100.3.*",
+ "magento/module-checkout": "100.3.*",
+ "magento/module-cms": "103.0.*",
+ "magento/module-config": "101.1.*",
+ "magento/module-customer": "102.0.*",
+ "magento/module-directory": "100.3.*",
+ "magento/module-eav": "102.0.*",
+ "magento/module-indexer": "100.3.*",
+ "magento/module-media-storage": "100.3.*",
+ "magento/module-msrp": "100.3.*",
+ "magento/module-page-cache": "100.3.*",
+ "magento/module-product-alert": "100.3.*",
+ "magento/module-quote": "101.1.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-tax": "100.3.*",
+ "magento/module-theme": "101.0.*",
+ "magento/module-ui": "101.1.*",
+ "magento/module-url-rewrite": "101.1.*",
+ "magento/module-widget": "101.1.*",
+ "magento/module-wishlist": "101.1.*"
},
"suggest": {
- "magento/module-cookie": "*",
- "magento/module-sales": "*",
- "magento/module-catalog-sample-data": "*"
+ "magento/module-cookie": "100.3.*",
+ "magento/module-sales": "102.0.*",
+ "magento/module-catalog-sample-data": "Sample Data version: 100.3.*"
},
"type": "magento2-module",
"license": [
@@ -51,5 +50,6 @@
"psr-4": {
"Magento\\Catalog\\": ""
}
- }
+ },
+ "version": "103.0.2-p2"
}
diff --git a/app/code/Magento/Catalog/view/frontend/templates/product/view/form.phtml b/app/code/Magento/Catalog/view/frontend/templates/product/view/form.phtml
index b6091f13af191..34be9a9881d1b 100644
--- a/app/code/Magento/Catalog/view/frontend/templates/product/view/form.phtml
+++ b/app/code/Magento/Catalog/view/frontend/templates/product/view/form.phtml
@@ -22,7 +22,7 @@
-
+
= $block->getBlockHtml('formkey') ?>
= $block->getChildHtml('form_top') ?>
hasOptions()):?>
diff --git a/app/code/Magento/CatalogAnalytics/composer.json b/app/code/Magento/CatalogAnalytics/composer.json
index 805be8a17765f..afe3267b8e06b 100644
--- a/app/code/Magento/CatalogAnalytics/composer.json
+++ b/app/code/Magento/CatalogAnalytics/composer.json
@@ -3,9 +3,9 @@
"description": "N/A",
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-catalog": "*",
- "magento/module-analytics": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-analytics": "100.3.*"
},
"type": "magento2-module",
"license": [
@@ -19,5 +19,6 @@
"psr-4": {
"Magento\\CatalogAnalytics\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/CatalogGraphQl/composer.json b/app/code/Magento/CatalogGraphQl/composer.json
index 950b496263ffd..9b1f396801d0c 100644
--- a/app/code/Magento/CatalogGraphQl/composer.json
+++ b/app/code/Magento/CatalogGraphQl/composer.json
@@ -4,18 +4,18 @@
"type": "magento2-module",
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/module-eav": "*",
- "magento/module-catalog": "*",
- "magento/module-catalog-inventory": "*",
- "magento/module-search": "*",
- "magento/module-store": "*",
- "magento/module-eav-graph-ql": "*",
- "magento/framework": "*"
+ "magento/module-eav": "102.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-catalog-inventory": "100.3.*",
+ "magento/module-search": "101.0.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-eav-graph-ql": "100.3.*",
+ "magento/framework": "102.0.*"
},
"suggest": {
- "magento/module-graph-ql": "*",
- "magento/module-graph-ql-cache": "*",
- "magento/module-store-graph-ql": "*"
+ "magento/module-graph-ql": "100.3.*",
+ "magento/module-graph-ql-cache": "100.3.*",
+ "magento/module-store-graph-ql": "100.3.*"
},
"license": [
"OSL-3.0",
@@ -28,5 +28,6 @@
"psr-4": {
"Magento\\CatalogGraphQl\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/CatalogImportExport/Model/Export/Product.php b/app/code/Magento/CatalogImportExport/Model/Export/Product.php
index 75249e4907862..8b4d4454be617 100644
--- a/app/code/Magento/CatalogImportExport/Model/Export/Product.php
+++ b/app/code/Magento/CatalogImportExport/Model/Export/Product.php
@@ -938,6 +938,7 @@ protected function getExportData()
*
* @return array Keys are product IDs, values arrays with keys as store IDs
* and values as store-specific versions of Product entity.
+ * @since 100.2.1
*/
protected function loadCollection(): array
{
@@ -1126,7 +1127,7 @@ protected function collectMultirawData()
* @param \Magento\Catalog\Model\Product $item
* @param int $storeId
* @return bool
- * @deprecated
+ * @deprecated 100.2.3
*/
protected function hasMultiselectData($item, $storeId)
{
diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product.php b/app/code/Magento/CatalogImportExport/Model/Import/Product.php
index edeb955b19c9b..ed88bd5464b79 100644
--- a/app/code/Magento/CatalogImportExport/Model/Import/Product.php
+++ b/app/code/Magento/CatalogImportExport/Model/Import/Product.php
@@ -300,6 +300,8 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
ValidatorInterface::ERROR_DUPLICATE_URL_KEY => 'Url key: \'%s\' was already generated for an item with the SKU: \'%s\'. You need to specify the unique URL key manually',
ValidatorInterface::ERROR_DUPLICATE_MULTISELECT_VALUES => 'Value for multiselect attribute %s contains duplicated values',
'invalidNewToDateValue' => 'Make sure new_to_date is later than or the same as new_from_date',
+ 'invalidLayoutUpdate' => 'Invalid format.',
+ 'insufficientPermissions' => 'Invalid format.',
];
//@codingStandardsIgnoreEnd
@@ -543,7 +545,7 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
/**
* @var \Magento\CatalogInventory\Model\ResourceModel\Stock\ItemFactory
- * @deprecated this variable isn't used anymore.
+ * @deprecated 101.0.0 this variable isn't used anymore.
*/
protected $_stockResItemFac;
@@ -607,7 +609,7 @@ class Product extends \Magento\ImportExport\Model\Import\Entity\AbstractEntity
/**
* @var array
- * @deprecated 100.1.5
+ * @deprecated 100.0.3
* @since 100.0.3
*/
protected $productUrlKeys = [];
@@ -930,6 +932,7 @@ public function getMultipleValueSeparator()
* Return empty attribute value constant
*
* @return string
+ * @since 101.0.0
*/
public function getEmptyAttributeValueConstant()
{
@@ -1542,7 +1545,7 @@ private function getNewSkuFieldsForSelect()
*
* @return void
* @since 100.0.4
- * @deprecated
+ * @deprecated 100.2.3
*/
protected function initMediaGalleryResources()
{
diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product/Type/AbstractType.php b/app/code/Magento/CatalogImportExport/Model/Import/Product/Type/AbstractType.php
index 3b6caef66ce6c..1652da2906347 100644
--- a/app/code/Magento/CatalogImportExport/Model/Import/Product/Type/AbstractType.php
+++ b/app/code/Magento/CatalogImportExport/Model/Import/Product/Type/AbstractType.php
@@ -32,6 +32,7 @@ abstract class AbstractType
* Maintain a list of invisible attributes
*
* @var array
+ * @since 100.2.5
*/
public static $invAttributesCache = [];
diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product/Validator/LayoutUpdate.php b/app/code/Magento/CatalogImportExport/Model/Import/Product/Validator/LayoutUpdate.php
new file mode 100644
index 0000000000000..29ba1781418de
--- /dev/null
+++ b/app/code/Magento/CatalogImportExport/Model/Import/Product/Validator/LayoutUpdate.php
@@ -0,0 +1,83 @@
+layoutValidatorFactory = $layoutValidatorFactory;
+ $this->validationState = $validationState;
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function isValid($value): bool
+ {
+ if (!empty($value['custom_layout_update']) && !$this->validateXml($value['custom_layout_update'])) {
+ $this->_addMessages(
+ [
+ $this->context->retrieveMessageTemplate('invalidLayoutUpdate')
+ ]
+ );
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Validate XML layout update
+ *
+ * @param string $xml
+ * @return bool
+ */
+ private function validateXml(string $xml): bool
+ {
+ /** @var $layoutXmlValidator \Magento\Framework\View\Model\Layout\Update\Validator */
+ $layoutXmlValidator = $this->layoutValidatorFactory->create(
+ [
+ 'validationState' => $this->validationState,
+ ]
+ );
+
+ try {
+ if (!$layoutXmlValidator->isValid($xml)) {
+ return false;
+ }
+ } catch (\Exception $e) {
+ return false;
+ }
+
+ return true;
+ }
+}
diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product/Validator/LayoutUpdatePermissions.php b/app/code/Magento/CatalogImportExport/Model/Import/Product/Validator/LayoutUpdatePermissions.php
new file mode 100644
index 0000000000000..07d9be4e0a919
--- /dev/null
+++ b/app/code/Magento/CatalogImportExport/Model/Import/Product/Validator/LayoutUpdatePermissions.php
@@ -0,0 +1,76 @@
+userContext = $userContext;
+ $this->authorization = $authorization;
+ }
+
+ /**
+ * Validate that the current user is allowed to make design updates
+ *
+ * @param array $data
+ * @return boolean
+ */
+ public function isValid($data): bool
+ {
+ if (empty($data['custom_layout_update'])) {
+ return true;
+ }
+
+ $userType = $this->userContext->getUserType();
+ $isValid = in_array($userType, $this->allowedUserTypes)
+ && $this->authorization->isAllowed('Magento_Catalog::edit_product_design');
+
+ if (!$isValid) {
+ $this->_addMessages(
+ [
+ $this->context->retrieveMessageTemplate('insufficientPermissions'),
+ ]
+ );
+ }
+
+ return $isValid;
+ }
+}
diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Uploader.php b/app/code/Magento/CatalogImportExport/Model/Import/Uploader.php
index 4ce1c0e39d6de..09c3cc4daf1d9 100644
--- a/app/code/Magento/CatalogImportExport/Model/Import/Uploader.php
+++ b/app/code/Magento/CatalogImportExport/Model/Import/Uploader.php
@@ -7,6 +7,8 @@
use Magento\Framework\App\Filesystem\DirectoryList;
use Magento\Framework\App\ObjectManager;
+use Magento\Framework\Exception\ValidatorException;
+use Magento\Framework\Filesystem;
use Magento\Framework\Filesystem\DriverPool;
/**
@@ -111,13 +113,18 @@ class Uploader extends \Magento\MediaStorage\Model\File\Uploader
*/
private $random;
+ /**
+ * @var Filesystem
+ */
+ private $fileSystem;
+
/**
* @param \Magento\MediaStorage\Helper\File\Storage\Database $coreFileStorageDb
* @param \Magento\MediaStorage\Helper\File\Storage $coreFileStorage
* @param \Magento\Framework\Image\AdapterFactory $imageFactory
* @param \Magento\MediaStorage\Model\File\Validator\NotProtectedExtension $validator
- * @param \Magento\Framework\Filesystem $filesystem
- * @param \Magento\Framework\Filesystem\File\ReadFactory $readFactory
+ * @param Filesystem $filesystem
+ * @param Filesystem\File\ReadFactory $readFactory
* @param string|null $filePath
* @param \Magento\Framework\Math\Random|null $random
* @throws \Magento\Framework\Exception\FileSystemException
@@ -128,8 +135,8 @@ public function __construct(
\Magento\MediaStorage\Helper\File\Storage $coreFileStorage,
\Magento\Framework\Image\AdapterFactory $imageFactory,
\Magento\MediaStorage\Model\File\Validator\NotProtectedExtension $validator,
- \Magento\Framework\Filesystem $filesystem,
- \Magento\Framework\Filesystem\File\ReadFactory $readFactory,
+ Filesystem $filesystem,
+ Filesystem\File\ReadFactory $readFactory,
$filePath = null,
\Magento\Framework\Math\Random $random = null
) {
@@ -137,6 +144,7 @@ public function __construct(
$this->_coreFileStorageDb = $coreFileStorageDb;
$this->_coreFileStorage = $coreFileStorage;
$this->_validator = $validator;
+ $this->fileSystem = $filesystem;
$this->_directory = $filesystem->getDirectoryWrite(DirectoryList::ROOT);
$this->_readFactory = $readFactory;
if ($filePath !== null) {
@@ -236,7 +244,20 @@ private function downloadFileFromUrl($url, $driver)
*/
protected function _setUploadFile($filePath)
{
- if (!$this->_directory->isReadable($filePath)) {
+ try {
+ $fullPath = $this->_directory->getAbsolutePath($filePath);
+ if ($this->getTmpDir()) {
+ $tmpDir = $this->fileSystem->getDirectoryReadByPath(
+ $this->_directory->getAbsolutePath($this->getTmpDir())
+ );
+ } else {
+ $tmpDir = $this->_directory;
+ }
+ $readable = $tmpDir->isReadable($fullPath);
+ } catch (ValidatorException $exception) {
+ $readable = false;
+ }
+ if (!$readable) {
throw new \Magento\Framework\Exception\LocalizedException(
__('File \'%1\' was not found or has read restriction.', $filePath)
);
diff --git a/app/code/Magento/CatalogImportExport/Model/StockItemImporterInterface.php b/app/code/Magento/CatalogImportExport/Model/StockItemImporterInterface.php
index bc314d825ba3e..6ee0e536c0ae8 100644
--- a/app/code/Magento/CatalogImportExport/Model/StockItemImporterInterface.php
+++ b/app/code/Magento/CatalogImportExport/Model/StockItemImporterInterface.php
@@ -11,6 +11,7 @@
* Interface StockItemImporterInterface
*
* @api
+ * @since 101.0.0
*/
interface StockItemImporterInterface
{
@@ -22,6 +23,7 @@ interface StockItemImporterInterface
* @throws \Magento\Framework\Exception\CouldNotSaveException
* @throws \Magento\Framework\Exception\InputException
* @throws \Magento\Framework\Validation\ValidationException
+ * @since 101.0.0
*/
public function import(array $stockData);
}
diff --git a/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/Product/Validator/LayoutUpdatePermissionsTest.php b/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/Product/Validator/LayoutUpdatePermissionsTest.php
new file mode 100644
index 0000000000000..e018fc0cf5ccf
--- /dev/null
+++ b/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/Product/Validator/LayoutUpdatePermissionsTest.php
@@ -0,0 +1,101 @@
+userContext = $this->createMock(UserContextInterface::class);
+ $this->authorization = $this->createMock(AuthorizationInterface::class);
+ $this->context = $this->createMock(Product::class);
+ $this->context
+ ->method('retrieveMessageTemplate')
+ ->with('insufficientPermissions')
+ ->willReturn('oh no');
+ $this->validator = new LayoutUpdatePermissions(
+ $this->userContext,
+ $this->authorization
+ );
+ $this->validator->init($this->context);
+ }
+
+ /**
+ * @param $value
+ * @param $userContext
+ * @param $isAllowed
+ * @param $isValid
+ * @dataProvider configurationsProvider
+ */
+ public function testValidationConfiguration($value, $userContext, $isAllowed, $isValid)
+ {
+ $this->userContext
+ ->method('getUserType')
+ ->willReturn($userContext);
+
+ $this->authorization
+ ->method('isAllowed')
+ ->with('Magento_Catalog::edit_product_design')
+ ->willReturn($isAllowed);
+
+ $result = $this->validator->isValid(['custom_layout_update' => $value]);
+ $messages = $this->validator->getMessages();
+
+ self::assertSame($isValid, $result);
+
+ if ($isValid) {
+ self::assertSame([], $messages);
+ } else {
+ self::assertSame(['oh no'], $messages);
+ }
+ }
+
+ public function configurationsProvider()
+ {
+ return [
+ ['', null, null, true],
+ [null, null, null, true],
+ ['foo', UserContextInterface::USER_TYPE_ADMIN, true, true],
+ ['foo', UserContextInterface::USER_TYPE_INTEGRATION, true, true],
+ ['foo', UserContextInterface::USER_TYPE_ADMIN, false, false],
+ ['foo', UserContextInterface::USER_TYPE_INTEGRATION, false, false],
+ ['foo', 'something', null, false],
+ ];
+ }
+}
diff --git a/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/Product/Validator/LayoutUpdateTest.php b/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/Product/Validator/LayoutUpdateTest.php
new file mode 100644
index 0000000000000..d1e8b879f6a08
--- /dev/null
+++ b/app/code/Magento/CatalogImportExport/Test/Unit/Model/Import/Product/Validator/LayoutUpdateTest.php
@@ -0,0 +1,97 @@
+createMock(ValidatorFactory::class);
+ $validationState = $this->createMock(ValidationStateInterface::class);
+ $this->layoutValidator = $this->createMock(Validator::class);
+ $validatorFactory->method('create')
+ ->with(['validationState' => $validationState])
+ ->willReturn($this->layoutValidator);
+
+ $this->validator = new LayoutUpdate(
+ $validatorFactory,
+ $validationState
+ );
+ }
+
+ public function testValidationIsSkippedWithDataNotPresent()
+ {
+ $this->layoutValidator
+ ->expects($this->never())
+ ->method('isValid');
+
+ $result = $this->validator->isValid([]);
+ self::assertTrue($result);
+ }
+
+ public function testValidationFailsProperly()
+ {
+ $this->layoutValidator
+ ->method('isValid')
+ ->with('foo')
+ ->willReturn(false);
+
+ $contextMock = $this->createMock(Product::class);
+ $contextMock
+ ->method('retrieveMessageTemplate')
+ ->with('invalidLayoutUpdate')
+ ->willReturn('oh no');
+ $this->validator->init($contextMock);
+
+ $result = $this->validator->isValid(['custom_layout_update' => 'foo']);
+ $messages = $this->validator->getMessages();
+ self::assertFalse($result);
+ self::assertSame(['oh no'], $messages);
+ }
+
+ public function testInvalidDataException()
+ {
+ $this->layoutValidator
+ ->method('isValid')
+ ->willThrowException(new \Exception('foo'));
+
+ $contextMock = $this->createMock(Product::class);
+ $contextMock
+ ->method('retrieveMessageTemplate')
+ ->with('invalidLayoutUpdate')
+ ->willReturn('oh no');
+ $this->validator->init($contextMock);
+
+ $result = $this->validator->isValid(['custom_layout_update' => 'foo']);
+ $messages = $this->validator->getMessages();
+ self::assertFalse($result);
+ self::assertSame(['oh no'], $messages);
+ }
+}
diff --git a/app/code/Magento/CatalogImportExport/composer.json b/app/code/Magento/CatalogImportExport/composer.json
index 56307a01e1cb6..d2a8ae90a5b9f 100644
--- a/app/code/Magento/CatalogImportExport/composer.json
+++ b/app/code/Magento/CatalogImportExport/composer.json
@@ -7,16 +7,17 @@
"require": {
"php": "~7.1.3||~7.2.0",
"ext-ctype": "*",
- "magento/framework": "*",
- "magento/module-catalog": "*",
- "magento/module-catalog-inventory": "*",
- "magento/module-catalog-url-rewrite": "*",
- "magento/module-customer": "*",
- "magento/module-eav": "*",
- "magento/module-import-export": "*",
- "magento/module-media-storage": "*",
- "magento/module-store": "*",
- "magento/module-tax": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-catalog-inventory": "100.3.*",
+ "magento/module-catalog-url-rewrite": "100.3.*",
+ "magento/module-customer": "102.0.*",
+ "magento/module-eav": "102.0.*",
+ "magento/module-import-export": "100.3.*",
+ "magento/module-media-storage": "100.3.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-tax": "100.3.*",
+ "magento/module-authorization": "100.3.*"
},
"type": "magento2-module",
"license": [
@@ -30,5 +31,6 @@
"psr-4": {
"Magento\\CatalogImportExport\\": ""
}
- }
+ },
+ "version": "101.0.2-p2"
}
diff --git a/app/code/Magento/CatalogImportExport/etc/di.xml b/app/code/Magento/CatalogImportExport/etc/di.xml
index 6906272b11d68..4e2fe390e0b17 100644
--- a/app/code/Magento/CatalogImportExport/etc/di.xml
+++ b/app/code/Magento/CatalogImportExport/etc/di.xml
@@ -25,7 +25,14 @@
- Magento\CatalogImportExport\Model\Import\Product\Validator\Website
- Magento\CatalogImportExport\Model\Import\Product\Validator\Weight
- Magento\CatalogImportExport\Model\Import\Product\Validator\Quantity
+ - Magento\CatalogImportExport\Model\Import\Product\Validator\LayoutUpdate
+ - Magento\CatalogImportExport\Model\Import\Product\Validator\LayoutUpdatePermissions
+
+
+ Magento\Framework\Config\ValidationState\Required
+
+
diff --git a/app/code/Magento/CatalogInventory/Api/Data/StockCollectionInterface.php b/app/code/Magento/CatalogInventory/Api/Data/StockCollectionInterface.php
index 9ae22e5e1a364..07b8429ddf188 100644
--- a/app/code/Magento/CatalogInventory/Api/Data/StockCollectionInterface.php
+++ b/app/code/Magento/CatalogInventory/Api/Data/StockCollectionInterface.php
@@ -16,7 +16,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Api/Data/StockInterface.php b/app/code/Magento/CatalogInventory/Api/Data/StockInterface.php
index 087fae6e6568a..581081f2924ea 100644
--- a/app/code/Magento/CatalogInventory/Api/Data/StockInterface.php
+++ b/app/code/Magento/CatalogInventory/Api/Data/StockInterface.php
@@ -12,7 +12,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Api/Data/StockItemCollectionInterface.php b/app/code/Magento/CatalogInventory/Api/Data/StockItemCollectionInterface.php
index 59a1f58b74c2c..2d5f980a57039 100644
--- a/app/code/Magento/CatalogInventory/Api/Data/StockItemCollectionInterface.php
+++ b/app/code/Magento/CatalogInventory/Api/Data/StockItemCollectionInterface.php
@@ -16,7 +16,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Api/Data/StockItemInterface.php b/app/code/Magento/CatalogInventory/Api/Data/StockItemInterface.php
index e2e8a744c4bcd..759cc9883be9f 100644
--- a/app/code/Magento/CatalogInventory/Api/Data/StockItemInterface.php
+++ b/app/code/Magento/CatalogInventory/Api/Data/StockItemInterface.php
@@ -12,7 +12,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Api/Data/StockStatusCollectionInterface.php b/app/code/Magento/CatalogInventory/Api/Data/StockStatusCollectionInterface.php
index 1cc045745a0c1..a7d70a943d405 100644
--- a/app/code/Magento/CatalogInventory/Api/Data/StockStatusCollectionInterface.php
+++ b/app/code/Magento/CatalogInventory/Api/Data/StockStatusCollectionInterface.php
@@ -12,7 +12,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Api/Data/StockStatusInterface.php b/app/code/Magento/CatalogInventory/Api/Data/StockStatusInterface.php
index 66b639fb088d1..35e56b0e3e7bb 100644
--- a/app/code/Magento/CatalogInventory/Api/Data/StockStatusInterface.php
+++ b/app/code/Magento/CatalogInventory/Api/Data/StockStatusInterface.php
@@ -12,7 +12,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Api/RegisterProductSaleInterface.php b/app/code/Magento/CatalogInventory/Api/RegisterProductSaleInterface.php
index 6fd1e7466970d..ddb3fce22a853 100644
--- a/app/code/Magento/CatalogInventory/Api/RegisterProductSaleInterface.php
+++ b/app/code/Magento/CatalogInventory/Api/RegisterProductSaleInterface.php
@@ -13,9 +13,10 @@
/**
* @api
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
+ * @since 100.3.0
*/
interface RegisterProductSaleInterface
{
@@ -29,6 +30,7 @@ interface RegisterProductSaleInterface
* @param int $websiteId
* @return StockItemInterface[]
* @throws LocalizedException
+ * @since 100.3.0
*/
public function registerProductsSale($items, $websiteId = null);
}
diff --git a/app/code/Magento/CatalogInventory/Api/RevertProductSaleInterface.php b/app/code/Magento/CatalogInventory/Api/RevertProductSaleInterface.php
index 552e30da89235..83f7d73deaed9 100644
--- a/app/code/Magento/CatalogInventory/Api/RevertProductSaleInterface.php
+++ b/app/code/Magento/CatalogInventory/Api/RevertProductSaleInterface.php
@@ -10,9 +10,10 @@
/**
* @api
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
+ * @since 100.3.0
*/
interface RevertProductSaleInterface
{
@@ -24,6 +25,7 @@ interface RevertProductSaleInterface
* @param string[] $items
* @param int $websiteId
* @return bool
+ * @since 100.3.0
*/
public function revertProductsSale($items, $websiteId = null);
}
diff --git a/app/code/Magento/CatalogInventory/Api/StockConfigurationInterface.php b/app/code/Magento/CatalogInventory/Api/StockConfigurationInterface.php
index 5019e86b7af40..ab52580988c5e 100644
--- a/app/code/Magento/CatalogInventory/Api/StockConfigurationInterface.php
+++ b/app/code/Magento/CatalogInventory/Api/StockConfigurationInterface.php
@@ -10,7 +10,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Api/StockCriteriaInterface.php b/app/code/Magento/CatalogInventory/Api/StockCriteriaInterface.php
index eb6fb2e812f2e..92f2290ec08ad 100644
--- a/app/code/Magento/CatalogInventory/Api/StockCriteriaInterface.php
+++ b/app/code/Magento/CatalogInventory/Api/StockCriteriaInterface.php
@@ -10,7 +10,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Api/StockIndexInterface.php b/app/code/Magento/CatalogInventory/Api/StockIndexInterface.php
index 18bab6571c209..24dbaf5bb6d5f 100644
--- a/app/code/Magento/CatalogInventory/Api/StockIndexInterface.php
+++ b/app/code/Magento/CatalogInventory/Api/StockIndexInterface.php
@@ -10,7 +10,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Api/StockItemCriteriaInterface.php b/app/code/Magento/CatalogInventory/Api/StockItemCriteriaInterface.php
index 1d2cabbb48a11..b72289ee09278 100644
--- a/app/code/Magento/CatalogInventory/Api/StockItemCriteriaInterface.php
+++ b/app/code/Magento/CatalogInventory/Api/StockItemCriteriaInterface.php
@@ -10,7 +10,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Api/StockItemRepositoryInterface.php b/app/code/Magento/CatalogInventory/Api/StockItemRepositoryInterface.php
index eecf6cbe07632..4269569f9da1a 100644
--- a/app/code/Magento/CatalogInventory/Api/StockItemRepositoryInterface.php
+++ b/app/code/Magento/CatalogInventory/Api/StockItemRepositoryInterface.php
@@ -10,7 +10,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Api/StockManagementInterface.php b/app/code/Magento/CatalogInventory/Api/StockManagementInterface.php
index 8796953e32fd0..3c1c7ea137c89 100644
--- a/app/code/Magento/CatalogInventory/Api/StockManagementInterface.php
+++ b/app/code/Magento/CatalogInventory/Api/StockManagementInterface.php
@@ -10,7 +10,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Api/StockRegistryInterface.php b/app/code/Magento/CatalogInventory/Api/StockRegistryInterface.php
index 5478f90fb7d9f..bab5f9b457c45 100644
--- a/app/code/Magento/CatalogInventory/Api/StockRegistryInterface.php
+++ b/app/code/Magento/CatalogInventory/Api/StockRegistryInterface.php
@@ -10,7 +10,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Api/StockRepositoryInterface.php b/app/code/Magento/CatalogInventory/Api/StockRepositoryInterface.php
index 3cfdf45506340..a7d64ec9eedb3 100644
--- a/app/code/Magento/CatalogInventory/Api/StockRepositoryInterface.php
+++ b/app/code/Magento/CatalogInventory/Api/StockRepositoryInterface.php
@@ -10,7 +10,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Api/StockStateInterface.php b/app/code/Magento/CatalogInventory/Api/StockStateInterface.php
index 8be7f5be79f27..d404e885d78df 100644
--- a/app/code/Magento/CatalogInventory/Api/StockStateInterface.php
+++ b/app/code/Magento/CatalogInventory/Api/StockStateInterface.php
@@ -10,7 +10,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Api/StockStatusCriteriaInterface.php b/app/code/Magento/CatalogInventory/Api/StockStatusCriteriaInterface.php
index 99ad7005d9da4..be1c9642826a7 100644
--- a/app/code/Magento/CatalogInventory/Api/StockStatusCriteriaInterface.php
+++ b/app/code/Magento/CatalogInventory/Api/StockStatusCriteriaInterface.php
@@ -10,7 +10,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Api/StockStatusRepositoryInterface.php b/app/code/Magento/CatalogInventory/Api/StockStatusRepositoryInterface.php
index d29171f557f05..91efd55761335 100644
--- a/app/code/Magento/CatalogInventory/Api/StockStatusRepositoryInterface.php
+++ b/app/code/Magento/CatalogInventory/Api/StockStatusRepositoryInterface.php
@@ -10,7 +10,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Block/Adminhtml/Form/Field/Minsaleqty.php b/app/code/Magento/CatalogInventory/Block/Adminhtml/Form/Field/Minsaleqty.php
index d3c165bbde1a8..1f4037e735228 100644
--- a/app/code/Magento/CatalogInventory/Block/Adminhtml/Form/Field/Minsaleqty.php
+++ b/app/code/Magento/CatalogInventory/Block/Adminhtml/Form/Field/Minsaleqty.php
@@ -11,7 +11,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Block/Adminhtml/Form/Field/Stock.php b/app/code/Magento/CatalogInventory/Block/Adminhtml/Form/Field/Stock.php
index 5378801b6c24b..3c1a6e7982708 100644
--- a/app/code/Magento/CatalogInventory/Block/Adminhtml/Form/Field/Stock.php
+++ b/app/code/Magento/CatalogInventory/Block/Adminhtml/Form/Field/Stock.php
@@ -15,7 +15,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Block/Qtyincrements.php b/app/code/Magento/CatalogInventory/Block/Qtyincrements.php
index a12b72cd0a971..dd8c987fe5da4 100644
--- a/app/code/Magento/CatalogInventory/Block/Qtyincrements.php
+++ b/app/code/Magento/CatalogInventory/Block/Qtyincrements.php
@@ -15,7 +15,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Block/Stockqty/DefaultStockqty.php b/app/code/Magento/CatalogInventory/Block/Stockqty/DefaultStockqty.php
index 5a3a3ca6ee983..c19dc5fb34bf6 100644
--- a/app/code/Magento/CatalogInventory/Block/Stockqty/DefaultStockqty.php
+++ b/app/code/Magento/CatalogInventory/Block/Stockqty/DefaultStockqty.php
@@ -12,7 +12,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Helper/Stock.php b/app/code/Magento/CatalogInventory/Helper/Stock.php
index 798ac4074c188..87a0e3c32ad09 100644
--- a/app/code/Magento/CatalogInventory/Helper/Stock.php
+++ b/app/code/Magento/CatalogInventory/Helper/Stock.php
@@ -19,9 +19,10 @@
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @api
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
+ * @since 100.0.2
*/
class Stock
{
diff --git a/app/code/Magento/CatalogInventory/Model/Adminhtml/Stock/Item.php b/app/code/Magento/CatalogInventory/Model/Adminhtml/Stock/Item.php
index 145b0d1454ae2..04e54acad5c0e 100644
--- a/app/code/Magento/CatalogInventory/Model/Adminhtml/Stock/Item.php
+++ b/app/code/Magento/CatalogInventory/Model/Adminhtml/Stock/Item.php
@@ -21,7 +21,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator.php b/app/code/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator.php
index 502d9532e8a05..821b1cdc00067 100644
--- a/app/code/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator.php
+++ b/app/code/Magento/CatalogInventory/Model/Quote/Item/QuantityValidator.php
@@ -26,7 +26,7 @@
* @since 100.0.2
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Model/ResourceModel/Indexer/Stock/DefaultStock.php b/app/code/Magento/CatalogInventory/Model/ResourceModel/Indexer/Stock/DefaultStock.php
index ba3b62f554767..ecd57baf426c6 100644
--- a/app/code/Magento/CatalogInventory/Model/ResourceModel/Indexer/Stock/DefaultStock.php
+++ b/app/code/Magento/CatalogInventory/Model/ResourceModel/Indexer/Stock/DefaultStock.php
@@ -19,7 +19,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Model/ResourceModel/Indexer/Stock/QueryProcessorInterface.php b/app/code/Magento/CatalogInventory/Model/ResourceModel/Indexer/Stock/QueryProcessorInterface.php
index 115002b237645..665ebf2db2f30 100644
--- a/app/code/Magento/CatalogInventory/Model/ResourceModel/Indexer/Stock/QueryProcessorInterface.php
+++ b/app/code/Magento/CatalogInventory/Model/ResourceModel/Indexer/Stock/QueryProcessorInterface.php
@@ -12,7 +12,7 @@
* @api
* @since 100.1.0
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Model/ResourceModel/Indexer/Stock/StockInterface.php b/app/code/Magento/CatalogInventory/Model/ResourceModel/Indexer/Stock/StockInterface.php
index 24ed496372817..9a1945d5aefac 100644
--- a/app/code/Magento/CatalogInventory/Model/ResourceModel/Indexer/Stock/StockInterface.php
+++ b/app/code/Magento/CatalogInventory/Model/ResourceModel/Indexer/Stock/StockInterface.php
@@ -10,7 +10,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Model/ResourceModel/Indexer/StockFactory.php b/app/code/Magento/CatalogInventory/Model/ResourceModel/Indexer/StockFactory.php
index 0ee162e429f40..49e4889c8edee 100644
--- a/app/code/Magento/CatalogInventory/Model/ResourceModel/Indexer/StockFactory.php
+++ b/app/code/Magento/CatalogInventory/Model/ResourceModel/Indexer/StockFactory.php
@@ -13,7 +13,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Model/ResourceModel/Stock.php b/app/code/Magento/CatalogInventory/Model/ResourceModel/Stock.php
index 53f00529b9bcc..eaea6ee560c22 100644
--- a/app/code/Magento/CatalogInventory/Model/ResourceModel/Stock.php
+++ b/app/code/Magento/CatalogInventory/Model/ResourceModel/Stock.php
@@ -206,7 +206,7 @@ protected function _initConfig()
/**
* Set items out of stock basing on their quantities and config settings
*
- * @deprecated
+ * @deprecated 100.2.5
* @see \Magento\CatalogInventory\Model\ResourceModel\Stock\Item::updateSetOutOfStock
* @param string|int $website
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
@@ -243,7 +243,7 @@ public function updateSetOutOfStock($website = null)
/**
* Set items in stock basing on their quantities and config settings
*
- * @deprecated
+ * @deprecated 100.2.5
* @see \Magento\CatalogInventory\Model\ResourceModel\Stock\Item::updateSetInStock
* @param int|string $website
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
@@ -278,7 +278,7 @@ public function updateSetInStock($website)
/**
* Update items low stock date basing on their quantities and config settings
*
- * @deprecated
+ * @deprecated 100.2.5
* @see \Magento\CatalogInventory\Model\ResourceModel\Stock\Item::updateLowStockDate
* @param int|string $website
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
diff --git a/app/code/Magento/CatalogInventory/Model/ResourceModel/Stock/Status.php b/app/code/Magento/CatalogInventory/Model/ResourceModel/Stock/Status.php
index 402ce5f2f611e..25bc0a0ce899e 100644
--- a/app/code/Magento/CatalogInventory/Model/ResourceModel/Stock/Status.php
+++ b/app/code/Magento/CatalogInventory/Model/ResourceModel/Stock/Status.php
@@ -14,9 +14,10 @@
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @api
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
+ * @since 100.0.2
*/
class Status extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
{
@@ -227,6 +228,7 @@ public function addStockStatusToSelect(\Magento\Framework\DB\Select $select, \Ma
* @param \Magento\Catalog\Model\ResourceModel\Product\Collection $collection
* @param bool $isFilterInStock
* @return \Magento\Catalog\Model\ResourceModel\Product\Collection $collection
+ * @since 100.0.6
*/
public function addStockDataToCollection($collection, $isFilterInStock)
{
diff --git a/app/code/Magento/CatalogInventory/Model/Source/Backorders.php b/app/code/Magento/CatalogInventory/Model/Source/Backorders.php
index 0bffb9a9888cd..d28da4e5b3497 100644
--- a/app/code/Magento/CatalogInventory/Model/Source/Backorders.php
+++ b/app/code/Magento/CatalogInventory/Model/Source/Backorders.php
@@ -10,7 +10,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Model/Source/Stock.php b/app/code/Magento/CatalogInventory/Model/Source/Stock.php
index 7d44ab782de61..d6c87e23bd7f7 100644
--- a/app/code/Magento/CatalogInventory/Model/Source/Stock.php
+++ b/app/code/Magento/CatalogInventory/Model/Source/Stock.php
@@ -12,7 +12,7 @@
* @api
* @since 100.0.2
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.0 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
@@ -38,6 +38,7 @@ public function getAllOptions()
* @param string $dir
*
* @return $this
+ * @since 100.2.4
*/
public function addValueSortToCollection($collection, $dir = \Magento\Framework\Data\Collection::SORT_ORDER_DESC)
{
diff --git a/app/code/Magento/CatalogInventory/Model/Spi/StockRegistryProviderInterface.php b/app/code/Magento/CatalogInventory/Model/Spi/StockRegistryProviderInterface.php
index 0fa4b919c40fa..b2dfe532ffbe0 100644
--- a/app/code/Magento/CatalogInventory/Model/Spi/StockRegistryProviderInterface.php
+++ b/app/code/Magento/CatalogInventory/Model/Spi/StockRegistryProviderInterface.php
@@ -8,7 +8,7 @@
/**
* Interface StockRegistryProviderInterface
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.2 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Model/Spi/StockStateProviderInterface.php b/app/code/Magento/CatalogInventory/Model/Spi/StockStateProviderInterface.php
index 30f703b5b928f..5bb78e1489b39 100644
--- a/app/code/Magento/CatalogInventory/Model/Spi/StockStateProviderInterface.php
+++ b/app/code/Magento/CatalogInventory/Model/Spi/StockStateProviderInterface.php
@@ -10,7 +10,7 @@
/**
* Interface StockStateProviderInterface
*
- * @deprecated 2.3.0 Replaced with Multi Source Inventory
+ * @deprecated 100.3.2 Replaced with Multi Source Inventory
* @link https://devdocs.magento.com/guides/v2.3/inventory/index.html
* @link https://devdocs.magento.com/guides/v2.3/inventory/catalog-inventory-replacements.html
*/
diff --git a/app/code/Magento/CatalogInventory/Test/Mftf/Test/InventorySkippedTestsTest.xml b/app/code/Magento/CatalogInventory/Test/Mftf/Test/InventorySkippedTestsTest.xml
new file mode 100644
index 0000000000000..3b874b3e2bd49
--- /dev/null
+++ b/app/code/Magento/CatalogInventory/Test/Mftf/Test/InventorySkippedTestsTest.xml
@@ -0,0 +1,205 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/code/Magento/CatalogInventory/composer.json b/app/code/Magento/CatalogInventory/composer.json
index 007d744b2296f..5a3f9c0b0c70d 100644
--- a/app/code/Magento/CatalogInventory/composer.json
+++ b/app/code/Magento/CatalogInventory/composer.json
@@ -6,14 +6,14 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-catalog": "*",
- "magento/module-config": "*",
- "magento/module-customer": "*",
- "magento/module-eav": "*",
- "magento/module-quote": "*",
- "magento/module-store": "*",
- "magento/module-ui": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-config": "101.1.*",
+ "magento/module-customer": "102.0.*",
+ "magento/module-eav": "102.0.*",
+ "magento/module-quote": "101.1.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-ui": "101.1.*"
},
"type": "magento2-module",
"license": [
@@ -28,5 +28,6 @@
"Magento\\CatalogInventory\\": ""
}
},
- "abandoned": "magento/inventory-composer-metapackage"
+ "abandoned": "magento/inventory-composer-metapackage",
+ "version": "100.3.2-p2"
}
diff --git a/app/code/Magento/CatalogInventoryGraphQl/composer.json b/app/code/Magento/CatalogInventoryGraphQl/composer.json
index 5e85c3ae12f93..32ef30e873422 100644
--- a/app/code/Magento/CatalogInventoryGraphQl/composer.json
+++ b/app/code/Magento/CatalogInventoryGraphQl/composer.json
@@ -1,24 +1,25 @@
{
- "name": "magento/module-catalog-inventory-graph-ql",
- "description": "N/A",
- "type": "magento2-module",
- "require": {
- "php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-store": "*",
- "magento/module-catalog": "*",
- "magento/module-catalog-inventory": "*"
- },
- "license": [
- "OSL-3.0",
- "AFL-3.0"
- ],
- "autoload": {
- "files": [
- "registration.php"
+ "name": "magento/module-catalog-inventory-graph-ql",
+ "description": "N/A",
+ "type": "magento2-module",
+ "require": {
+ "php": "~7.1.3||~7.2.0",
+ "magento/framework": "102.0.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-catalog-inventory": "100.3.*"
+ },
+ "license": [
+ "OSL-3.0",
+ "AFL-3.0"
],
- "psr-4": {
- "Magento\\CatalogInventoryGraphQl\\": ""
- }
- }
+ "autoload": {
+ "files": [
+ "registration.php"
+ ],
+ "psr-4": {
+ "Magento\\CatalogInventoryGraphQl\\": ""
+ }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php b/app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php
index 1f62200fc6b1b..98b33e3d5131b 100644
--- a/app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php
+++ b/app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php
@@ -27,7 +27,7 @@ class IndexBuilder
/**
* @var \Magento\Framework\EntityManager\MetadataPool
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @since 100.1.0
*/
protected $metadataPool;
@@ -38,7 +38,7 @@ class IndexBuilder
* This array contain list of CatalogRuleGroupWebsite table columns
*
* @var array
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
protected $_catalogRuleGroupWebsiteColumnsList = ['rule_id', 'customer_group_id', 'website_id'];
@@ -433,7 +433,7 @@ protected function getTable($tableName)
/**
* @param Rule $rule
* @return $this
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @see ReindexRuleProduct::execute
*/
protected function updateRuleProductData(Rule $rule)
@@ -459,7 +459,7 @@ protected function updateRuleProductData(Rule $rule)
* @param Product|null $product
* @throws \Exception
* @return $this
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @see ReindexRuleProductPrice::execute
* @see ReindexRuleGroupWebsite::execute
*/
@@ -474,7 +474,7 @@ protected function applyAllRules(Product $product = null)
* Update CatalogRuleGroupWebsite data
*
* @return $this
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @see ReindexRuleGroupWebsite::execute
*/
protected function updateCatalogRuleGroupWebsiteData()
@@ -498,7 +498,7 @@ protected function deleteOldData()
* @param array $ruleData
* @param null $productData
* @return float
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @see ProductPriceCalculator::calculate
*/
protected function calcRuleProductPrice($ruleData, $productData = null)
@@ -511,7 +511,7 @@ protected function calcRuleProductPrice($ruleData, $productData = null)
* @param Product|null $product
* @return \Zend_Db_Statement_Interface
* @throws \Magento\Framework\Exception\LocalizedException
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @see RuleProductsSelectBuilder::build
*/
protected function getRuleProductsStmt($websiteId, Product $product = null)
@@ -523,7 +523,7 @@ protected function getRuleProductsStmt($websiteId, Product $product = null)
* @param array $arrData
* @return $this
* @throws \Exception
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @see RuleProductPricesPersistor::execute
*/
protected function saveRuleProductPrices($arrData)
diff --git a/app/code/Magento/CatalogRule/Pricing/Price/CatalogRulePrice.php b/app/code/Magento/CatalogRule/Pricing/Price/CatalogRulePrice.php
index c71b51317fd59..e4efd044dc15d 100644
--- a/app/code/Magento/CatalogRule/Pricing/Price/CatalogRulePrice.php
+++ b/app/code/Magento/CatalogRule/Pricing/Price/CatalogRulePrice.php
@@ -44,7 +44,7 @@ class CatalogRulePrice extends AbstractPrice implements BasePriceProviderInterfa
/**
* @var \Magento\CatalogRule\Model\ResourceModel\RuleFactory
- * @deprecated 100.1.1
+ * @deprecated 100.0.2
*/
protected $resourceRuleFactory;
diff --git a/app/code/Magento/CatalogRule/composer.json b/app/code/Magento/CatalogRule/composer.json
index 5b09765d9ae51..b0823e4ac2d8f 100644
--- a/app/code/Magento/CatalogRule/composer.json
+++ b/app/code/Magento/CatalogRule/composer.json
@@ -6,18 +6,18 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-catalog": "*",
- "magento/module-customer": "*",
- "magento/module-eav": "*",
- "magento/module-rule": "*",
- "magento/module-store": "*",
- "magento/module-ui": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-customer": "102.0.*",
+ "magento/module-eav": "102.0.*",
+ "magento/module-rule": "100.3.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-ui": "101.1.*"
},
"suggest": {
- "magento/module-import-export": "*",
- "magento/module-catalog-rule-sample-data": "*"
+ "magento/module-import-export": "100.3.*",
+ "magento/module-catalog-rule-sample-data": "Sample Data version: 100.3.*"
},
"type": "magento2-module",
"license": [
@@ -31,5 +31,6 @@
"psr-4": {
"Magento\\CatalogRule\\": ""
}
- }
+ },
+ "version": "101.1.2"
}
diff --git a/app/code/Magento/CatalogRuleConfigurable/composer.json b/app/code/Magento/CatalogRuleConfigurable/composer.json
index 657e6efb4e44c..969688cf5c607 100644
--- a/app/code/Magento/CatalogRuleConfigurable/composer.json
+++ b/app/code/Magento/CatalogRuleConfigurable/composer.json
@@ -6,14 +6,14 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
+ "magento/framework": "102.0.*",
"magento/magento-composer-installer": "*",
- "magento/module-catalog": "*",
- "magento/module-catalog-rule": "*",
- "magento/module-configurable-product": "*"
+ "magento/module-catalog": "103.0.*",
+ "magento/module-catalog-rule": "101.1.*",
+ "magento/module-configurable-product": "100.3.*"
},
"suggest": {
- "magento/module-catalog-rule": "*"
+ "magento/module-catalog-rule": "101.1.*"
},
"type": "magento2-module",
"license": [
@@ -27,5 +27,6 @@
"psr-4": {
"Magento\\CatalogRuleConfigurable\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Aggregation/DataProvider.php b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Aggregation/DataProvider.php
index 66f5ad7a7192b..770f255f7eeea 100644
--- a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Aggregation/DataProvider.php
+++ b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Aggregation/DataProvider.php
@@ -21,7 +21,7 @@
/**
* Data Provider for catalog search.
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class DataProvider implements DataProviderInterface
diff --git a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Aggregation/DataProvider/QueryBuilder.php b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Aggregation/DataProvider/QueryBuilder.php
index 26837448f2df2..2636ffa5a89b8 100644
--- a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Aggregation/DataProvider/QueryBuilder.php
+++ b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Aggregation/DataProvider/QueryBuilder.php
@@ -22,7 +22,7 @@
/**
* Attribute query builder
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
diff --git a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Aggregation/DataProvider/SelectBuilderForAttribute.php b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Aggregation/DataProvider/SelectBuilderForAttribute.php
index 00012a78d1003..52006a28102e3 100644
--- a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Aggregation/DataProvider/SelectBuilderForAttribute.php
+++ b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Aggregation/DataProvider/SelectBuilderForAttribute.php
@@ -22,7 +22,7 @@
/**
* Build select for attribute.
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class SelectBuilderForAttribute
diff --git a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Aggregation/DataProvider/SelectBuilderForAttribute/ApplyStockConditionToSelect.php b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Aggregation/DataProvider/SelectBuilderForAttribute/ApplyStockConditionToSelect.php
index be572793f1ec3..f7ad37d180399 100644
--- a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Aggregation/DataProvider/SelectBuilderForAttribute/ApplyStockConditionToSelect.php
+++ b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Aggregation/DataProvider/SelectBuilderForAttribute/ApplyStockConditionToSelect.php
@@ -14,7 +14,7 @@
/**
* Join stock table with stock condition to select.
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class ApplyStockConditionToSelect
diff --git a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/BaseSelectStrategy/BaseSelectAttributesSearchStrategy.php b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/BaseSelectStrategy/BaseSelectAttributesSearchStrategy.php
index 27a784f8609bb..0448269c5c1e4 100644
--- a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/BaseSelectStrategy/BaseSelectAttributesSearchStrategy.php
+++ b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/BaseSelectStrategy/BaseSelectAttributesSearchStrategy.php
@@ -19,7 +19,7 @@
* The main idea of this strategy is using eav index table as main table for query
* in case when search request requires search by attributes
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class BaseSelectAttributesSearchStrategy implements BaseSelectStrategyInterface
diff --git a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/BaseSelectStrategy/BaseSelectFullTextSearchStrategy.php b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/BaseSelectStrategy/BaseSelectFullTextSearchStrategy.php
index bff878122c8c4..ba2246e8b71db 100644
--- a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/BaseSelectStrategy/BaseSelectFullTextSearchStrategy.php
+++ b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/BaseSelectStrategy/BaseSelectFullTextSearchStrategy.php
@@ -18,7 +18,7 @@
* The main idea of this strategy is using fulltext search index table as main table for query
* in case when search request does not requires any search by attributes
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class BaseSelectFullTextSearchStrategy implements BaseSelectStrategyInterface
diff --git a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Dynamic/DataProvider.php b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Dynamic/DataProvider.php
index eb4761adf830c..634099bb5802d 100644
--- a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Dynamic/DataProvider.php
+++ b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Dynamic/DataProvider.php
@@ -24,7 +24,7 @@
/**
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class DataProvider implements DataProviderInterface
diff --git a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Field/Resolver.php b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Field/Resolver.php
index c24acf4610e07..d30080f86d52f 100644
--- a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Field/Resolver.php
+++ b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Field/Resolver.php
@@ -11,7 +11,7 @@
use Magento\Framework\Search\Adapter\Mysql\Field\ResolverInterface;
/**
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class Resolver implements ResolverInterface
diff --git a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Filter/AliasResolver.php b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Filter/AliasResolver.php
index bf431396cc0c7..e6f1836e9db8f 100644
--- a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Filter/AliasResolver.php
+++ b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Filter/AliasResolver.php
@@ -12,7 +12,7 @@
* Purpose of class is to resolve table alias for Search Request filter
* @api
* @since 100.1.6
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class AliasResolver
diff --git a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Filter/Preprocessor.php b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Filter/Preprocessor.php
index c758e773f43c1..860a3d7c650bd 100644
--- a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Filter/Preprocessor.php
+++ b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Filter/Preprocessor.php
@@ -28,7 +28,7 @@
*
* @SuppressWarnings(PHPMD.CookieAndSessionMisuse)
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class Preprocessor implements PreprocessorInterface
diff --git a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Plugin/Aggregation/Category/DataProvider.php b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Plugin/Aggregation/Category/DataProvider.php
index a5650cac73395..da3327a918427 100644
--- a/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Plugin/Aggregation/Category/DataProvider.php
+++ b/app/code/Magento/CatalogSearch/Model/Adapter/Mysql/Plugin/Aggregation/Category/DataProvider.php
@@ -18,7 +18,7 @@
/**
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class DataProvider
diff --git a/app/code/Magento/CatalogSearch/Model/Advanced.php b/app/code/Magento/CatalogSearch/Model/Advanced.php
index 5b96a8c21cbea..ea1f5f56525d8 100644
--- a/app/code/Magento/CatalogSearch/Model/Advanced.php
+++ b/app/code/Magento/CatalogSearch/Model/Advanced.php
@@ -67,7 +67,7 @@ class Advanced extends \Magento\Framework\Model\AbstractModel
/**
* Initialize dependencies
*
- * @deprecated
+ * @deprecated 101.0.2
* @var Config
*/
protected $_catalogConfig;
diff --git a/app/code/Magento/CatalogSearch/Model/Fulltext.php b/app/code/Magento/CatalogSearch/Model/Fulltext.php
index 398d6e9dd18dd..0c1cd6e2bcdee 100644
--- a/app/code/Magento/CatalogSearch/Model/Fulltext.php
+++ b/app/code/Magento/CatalogSearch/Model/Fulltext.php
@@ -22,7 +22,7 @@
* @method string getDataIndex()
* @method \Magento\CatalogSearch\Model\Fulltext setDataIndex(string $value)
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class Fulltext extends \Magento\Framework\Model\AbstractModel
@@ -76,7 +76,7 @@ protected function _construct()
* Reset search results cache
*
* @return $this
- * @deprecated Not used anymore
+ * @deprecated 101.0.0 Not used anymore
* @see \Magento\CatalogSearch\Model\ResourceModel\Fulltext::resetSearchResultsByStore
*/
public function resetSearchResults()
diff --git a/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext.php b/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext.php
index 21d8b7297da7d..11f9a286fc4bf 100644
--- a/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext.php
+++ b/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext.php
@@ -120,6 +120,7 @@ public function execute($entityIds)
* @inheritdoc
*
* @throws \InvalidArgumentException
+ * @since 101.0.0
*/
public function executeByDimensions(array $dimensions, \Traversable $entityIds = null)
{
diff --git a/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext/Action/Full.php b/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext/Action/Full.php
index f56a4fe4d1b76..84955b6566ba2 100644
--- a/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext/Action/Full.php
+++ b/app/code/Magento/CatalogSearch/Model/Indexer/Fulltext/Action/Full.php
@@ -41,7 +41,7 @@ class Full
* Index values separator
*
* @var string
- * @deprecated 100.1.6 Moved to \Magento\CatalogSearch\Model\Indexer\Fulltext\Action\DataProvider
+ * @deprecated 100.1.0 Moved to \Magento\CatalogSearch\Model\Indexer\Fulltext\Action\DataProvider
* @see \Magento\CatalogSearch\Model\Indexer\Fulltext\Action\DataProvider::$separator
*/
protected $separator = ' | ';
@@ -50,7 +50,7 @@ class Full
* Array of \DateTime objects per store
*
* @var \DateTime[]
- * @deprecated 100.1.6 Not used anymore
+ * @deprecated 100.1.0 Not used anymore
*/
protected $dates = [];
@@ -58,7 +58,7 @@ class Full
* Product Type Instances cache
*
* @var array
- * @deprecated 100.1.6 Moved to \Magento\CatalogSearch\Model\Indexer\Fulltext\Action\DataProvider
+ * @deprecated 100.1.0 Moved to \Magento\CatalogSearch\Model\Indexer\Fulltext\Action\DataProvider
* @see \Magento\CatalogSearch\Model\Indexer\Fulltext\Action\DataProvider::$productTypes
*/
protected $productTypes = [];
@@ -67,7 +67,7 @@ class Full
* Product Emulators cache
*
* @var array
- * @deprecated 100.1.6 Moved to \Magento\CatalogSearch\Model\Indexer\Fulltext\Action\DataProvider
+ * @deprecated 100.1.0 Moved to \Magento\CatalogSearch\Model\Indexer\Fulltext\Action\DataProvider
* @see \Magento\CatalogSearch\Model\Indexer\Fulltext\Action\DataProvider::$productEmulators
*/
protected $productEmulators = [];
@@ -95,7 +95,7 @@ class Full
* Catalog product type
*
* @var \Magento\Catalog\Model\Product\Type
- * @deprecated 100.1.6 Moved to \Magento\CatalogSearch\Model\Indexer\Fulltext\Action\DataProvider
+ * @deprecated 100.1.0 Moved to \Magento\CatalogSearch\Model\Indexer\Fulltext\Action\DataProvider
* @see \Magento\CatalogSearch\Model\Indexer\Fulltext\Action\DataProvider::$catalogProductType
*/
protected $catalogProductType;
@@ -111,7 +111,7 @@ class Full
* Core store config
*
* @var \Magento\Framework\App\Config\ScopeConfigInterface
- * @deprecated 100.1.6 Not used anymore
+ * @deprecated 100.1.0 Not used anymore
*/
protected $scopeConfig;
@@ -119,7 +119,7 @@ class Full
* Store manager
*
* @var \Magento\Store\Model\StoreManagerInterface
- * @deprecated 100.1.6 Moved to \Magento\CatalogSearch\Model\Indexer\Fulltext\Action\DataProvider
+ * @deprecated 100.1.0 Moved to \Magento\CatalogSearch\Model\Indexer\Fulltext\Action\DataProvider
* @see \Magento\CatalogSearch\Model\Indexer\Fulltext\Action\DataProvider::$storeManager
*/
protected $storeManager;
@@ -131,25 +131,25 @@ class Full
/**
* @var \Magento\Framework\Indexer\SaveHandler\IndexerInterface
- * @deprecated 100.1.6 As part of self::cleanIndex()
+ * @deprecated 100.1.0 As part of self::cleanIndex()
*/
protected $indexHandler;
/**
* @var \Magento\Framework\Stdlib\DateTime
- * @deprecated 100.1.6 Not used anymore
+ * @deprecated 100.1.0 Not used anymore
*/
protected $dateTime;
/**
* @var \Magento\Framework\Locale\ResolverInterface
- * @deprecated 100.1.6 Not used anymore
+ * @deprecated 100.1.0 Not used anymore
*/
protected $localeResolver;
/**
* @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface
- * @deprecated 100.1.6 Not used anymore
+ * @deprecated 100.1.0 Not used anymore
*/
protected $localeDate;
@@ -160,19 +160,19 @@ class Full
/**
* @var \Magento\CatalogSearch\Model\ResourceModel\Fulltext
- * @deprecated 100.1.6 Not used anymore
+ * @deprecated 100.1.0 Not used anymore
*/
protected $fulltextResource;
/**
* @var \Magento\Framework\Search\Request\Config
- * @deprecated 100.1.6 As part of self::reindexAll()
+ * @deprecated 100.1.0 As part of self::reindexAll()
*/
protected $searchRequestConfig;
/**
* @var \Magento\Framework\Search\Request\DimensionFactory
- * @deprecated 100.1.6 As part of self::cleanIndex()
+ * @deprecated 100.1.0 As part of self::cleanIndex()
*/
private $dimensionFactory;
@@ -183,7 +183,7 @@ class Full
/**
* @var \Magento\CatalogSearch\Model\Indexer\Fulltext\Action\IndexIteratorFactory
- * @deprecated 100.1.6 DataProvider used directly without IndexIterator
+ * @deprecated 100.1.0 DataProvider used directly without IndexIterator
* @see self::$dataProvider
*/
private $iteratorFactory;
@@ -308,7 +308,7 @@ protected function getTable($table)
/**
* Get parents IDs of product IDs to be re-indexed
*
- * @deprecated as it not used in the class anymore and duplicates another API method
+ * @deprecated 100.2.3 as it not used in the class anymore and duplicates another API method
* @see \Magento\CatalogSearch\Model\ResourceModel\Fulltext::getRelationsByChild()
*
* @param int[] $entityIds
diff --git a/app/code/Magento/CatalogSearch/Model/Indexer/IndexerHandler.php b/app/code/Magento/CatalogSearch/Model/Indexer/IndexerHandler.php
index 9f105bd3ea462..44da3f8ae79e2 100644
--- a/app/code/Magento/CatalogSearch/Model/Indexer/IndexerHandler.php
+++ b/app/code/Magento/CatalogSearch/Model/Indexer/IndexerHandler.php
@@ -18,7 +18,7 @@
*
* @api
* @since 100.0.2
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class IndexerHandler implements IndexerInterface
diff --git a/app/code/Magento/CatalogSearch/Model/Indexer/ProductFieldset.php b/app/code/Magento/CatalogSearch/Model/Indexer/ProductFieldset.php
index 6db063bde7d1e..6b7ba8a019935 100644
--- a/app/code/Magento/CatalogSearch/Model/Indexer/ProductFieldset.php
+++ b/app/code/Magento/CatalogSearch/Model/Indexer/ProductFieldset.php
@@ -13,7 +13,7 @@
/**
* @api
* @since 100.0.2
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class ProductFieldset implements \Magento\Framework\Indexer\FieldsetInterface
diff --git a/app/code/Magento/CatalogSearch/Model/Indexer/Scope/IndexSwitcher.php b/app/code/Magento/CatalogSearch/Model/Indexer/Scope/IndexSwitcher.php
index ed2b1be5c7035..c4de9d2503955 100644
--- a/app/code/Magento/CatalogSearch/Model/Indexer/Scope/IndexSwitcher.php
+++ b/app/code/Magento/CatalogSearch/Model/Indexer/Scope/IndexSwitcher.php
@@ -12,7 +12,7 @@
/**
* Provides a functionality to replace main index with its temporary representation
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class IndexSwitcher implements IndexSwitcherInterface
diff --git a/app/code/Magento/CatalogSearch/Model/Indexer/Scope/IndexTableNotExistException.php b/app/code/Magento/CatalogSearch/Model/Indexer/Scope/IndexTableNotExistException.php
index b01f3c50d5002..773d5513af446 100644
--- a/app/code/Magento/CatalogSearch/Model/Indexer/Scope/IndexTableNotExistException.php
+++ b/app/code/Magento/CatalogSearch/Model/Indexer/Scope/IndexTableNotExistException.php
@@ -14,7 +14,7 @@
*
* @api
* @since 100.2.0
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class IndexTableNotExistException extends LocalizedException
diff --git a/app/code/Magento/CatalogSearch/Model/Indexer/Scope/TemporaryResolver.php b/app/code/Magento/CatalogSearch/Model/Indexer/Scope/TemporaryResolver.php
index 796559d1f7034..0677f8046cb50 100644
--- a/app/code/Magento/CatalogSearch/Model/Indexer/Scope/TemporaryResolver.php
+++ b/app/code/Magento/CatalogSearch/Model/Indexer/Scope/TemporaryResolver.php
@@ -12,7 +12,7 @@
/**
* Resolves name of a temporary table for indexation
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class TemporaryResolver implements \Magento\Framework\Search\Request\IndexScopeResolverInterface
diff --git a/app/code/Magento/CatalogSearch/Model/Indexer/Scope/UnknownStateException.php b/app/code/Magento/CatalogSearch/Model/Indexer/Scope/UnknownStateException.php
index 8722cd52b618a..c79d876c1127d 100644
--- a/app/code/Magento/CatalogSearch/Model/Indexer/Scope/UnknownStateException.php
+++ b/app/code/Magento/CatalogSearch/Model/Indexer/Scope/UnknownStateException.php
@@ -13,7 +13,7 @@
*
* @api
* @since 100.2.0
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class UnknownStateException extends LocalizedException
diff --git a/app/code/Magento/CatalogSearch/Model/ResourceModel/Advanced/Collection.php b/app/code/Magento/CatalogSearch/Model/ResourceModel/Advanced/Collection.php
index 2801de2879db7..ddfedad6927f4 100644
--- a/app/code/Magento/CatalogSearch/Model/ResourceModel/Advanced/Collection.php
+++ b/app/code/Magento/CatalogSearch/Model/ResourceModel/Advanced/Collection.php
@@ -53,7 +53,7 @@ class Collection extends \Magento\Catalog\Model\ResourceModel\Product\Collection
/**
* @var \Magento\Framework\Search\Adapter\Mysql\TemporaryStorageFactory
- * @deprecated There must be no dependencies on specific adapter in generic search implementation
+ * @deprecated 101.0.0 There must be no dependencies on specific adapter in generic search implementation
*/
private $temporaryStorageFactory;
@@ -244,6 +244,7 @@ public function addFieldsToFilter($fields)
/**
* @inheritdoc
+ * @since 101.0.2
*/
public function setOrder($attribute, $dir = Select::SQL_DESC)
{
@@ -261,6 +262,7 @@ public function setOrder($attribute, $dir = Select::SQL_DESC)
/**
* @inheritdoc
+ * @since 101.0.2
*/
public function addCategoryFilter(\Magento\Catalog\Model\Category $category)
{
@@ -280,6 +282,7 @@ public function addCategoryFilter(\Magento\Catalog\Model\Category $category)
/**
* @inheritdoc
+ * @since 101.0.2
*/
public function setVisibility($visibility)
{
diff --git a/app/code/Magento/CatalogSearch/Model/ResourceModel/Engine.php b/app/code/Magento/CatalogSearch/Model/ResourceModel/Engine.php
index 93ae2c94e2105..1aa7355955b3b 100644
--- a/app/code/Magento/CatalogSearch/Model/ResourceModel/Engine.php
+++ b/app/code/Magento/CatalogSearch/Model/ResourceModel/Engine.php
@@ -8,7 +8,7 @@
/**
* CatalogSearch Fulltext Index Engine resource model
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class Engine implements EngineInterface
diff --git a/app/code/Magento/CatalogSearch/Model/ResourceModel/EngineProvider.php b/app/code/Magento/CatalogSearch/Model/ResourceModel/EngineProvider.php
index d1259159606d3..d0456ff011027 100644
--- a/app/code/Magento/CatalogSearch/Model/ResourceModel/EngineProvider.php
+++ b/app/code/Magento/CatalogSearch/Model/ResourceModel/EngineProvider.php
@@ -29,7 +29,7 @@ class EngineProvider
/**
* @var \Magento\Framework\App\Config\ScopeConfigInterface
- * @deprecated since it is not used anymore
+ * @deprecated 101.0.0 since it is not used anymore
*/
protected $scopeConfig;
diff --git a/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext.php b/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext.php
index 0835fb66f876a..3614cd9dbf3a9 100644
--- a/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext.php
+++ b/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext.php
@@ -62,7 +62,7 @@ protected function _construct()
* Reset search results
*
* @return $this
- * @deprecated Not used anymore
+ * @deprecated 101.0.0 Not used anymore
* @see Fulltext::resetSearchResultsByStore
*/
public function resetSearchResults()
@@ -78,6 +78,7 @@ public function resetSearchResults()
*
* @param int $storeId
* @return $this
+ * @since 101.0.0
*/
public function resetSearchResultsByStore($storeId)
{
diff --git a/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection.php b/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection.php
index 18e44bfcd5107..9d0d4c32cfb27 100644
--- a/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection.php
+++ b/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection.php
@@ -79,7 +79,7 @@ class Collection extends \Magento\Catalog\Model\ResourceModel\Product\Collection
/**
* @var \Magento\Framework\Search\Adapter\Mysql\TemporaryStorageFactory
- * @deprecated There must be no dependencies on specific adapter in generic search implementation
+ * @deprecated 101.0.0 There must be no dependencies on specific adapter in generic search implementation
*/
private $temporaryStorageFactory;
@@ -406,6 +406,7 @@ public function setOrder($attribute, $dir = Select::SQL_DESC)
* @param string $attribute
* @param string $dir
* @return $this
+ * @since 101.0.2
*/
public function addAttributeToSort($attribute, $dir = self::SORT_ORDER_ASC)
{
@@ -509,6 +510,7 @@ private function getSearchResultApplier(SearchResultInterface $searchResult): Se
/**
* @inheritdoc
+ * @since 100.2.3
*/
protected function _beforeLoad()
{
diff --git a/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection/DefaultFilterStrategyApplyChecker.php b/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection/DefaultFilterStrategyApplyChecker.php
index b396437fc66c7..a7e9c237f58c3 100644
--- a/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection/DefaultFilterStrategyApplyChecker.php
+++ b/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection/DefaultFilterStrategyApplyChecker.php
@@ -8,7 +8,7 @@
/**
* This class add in backward compatibility purposes to check if need to apply old strategy for filter prepare process.
- * @deprecated
+ * @deprecated 101.0.2
*/
class DefaultFilterStrategyApplyChecker implements DefaultFilterStrategyApplyCheckerInterface
{
diff --git a/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection/DefaultFilterStrategyApplyCheckerInterface.php b/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection/DefaultFilterStrategyApplyCheckerInterface.php
index a067767775393..d9e41af658089 100644
--- a/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection/DefaultFilterStrategyApplyCheckerInterface.php
+++ b/app/code/Magento/CatalogSearch/Model/ResourceModel/Fulltext/Collection/DefaultFilterStrategyApplyCheckerInterface.php
@@ -8,7 +8,7 @@
/**
* Added in backward compatibility purposes to check if need to apply old strategy for filter prepare process.
- * @deprecated
+ * @deprecated 101.0.2
*/
interface DefaultFilterStrategyApplyCheckerInterface
{
diff --git a/app/code/Magento/CatalogSearch/Model/Search/BaseSelectStrategy/BaseSelectStrategyInterface.php b/app/code/Magento/CatalogSearch/Model/Search/BaseSelectStrategy/BaseSelectStrategyInterface.php
index 2d8dfb9222497..7c05661d4da7a 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/BaseSelectStrategy/BaseSelectStrategyInterface.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/BaseSelectStrategy/BaseSelectStrategyInterface.php
@@ -10,7 +10,7 @@
/**
* This interface represents strategy that will be used to create base select for search request
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
interface BaseSelectStrategyInterface
diff --git a/app/code/Magento/CatalogSearch/Model/Search/BaseSelectStrategy/StrategyMapper.php b/app/code/Magento/CatalogSearch/Model/Search/BaseSelectStrategy/StrategyMapper.php
index e554d3c774a31..969ac18ae29bf 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/BaseSelectStrategy/StrategyMapper.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/BaseSelectStrategy/StrategyMapper.php
@@ -12,7 +12,7 @@
/**
* This class is responsible for deciding which BaseSelectStrategyInterface should be used for passed SelectContainer
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class StrategyMapper
diff --git a/app/code/Magento/CatalogSearch/Model/Search/CustomAttributeFilterCheck.php b/app/code/Magento/CatalogSearch/Model/Search/CustomAttributeFilterCheck.php
index 657c8540d7c68..89fac39b76680 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/CustomAttributeFilterCheck.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/CustomAttributeFilterCheck.php
@@ -12,7 +12,7 @@
/**
* Checks if FilterInterface is by custom attribute
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class CustomAttributeFilterCheck
diff --git a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/CustomAttributeFilter.php b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/CustomAttributeFilter.php
index 8c796f8770657..395f2de11971c 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/CustomAttributeFilter.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/CustomAttributeFilter.php
@@ -18,7 +18,7 @@
/**
* Applies filters by custom attributes to base select.
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class CustomAttributeFilter
diff --git a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/DimensionsProcessor.php b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/DimensionsProcessor.php
index 3d2b9eed03761..9bbb0aa2e65e2 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/DimensionsProcessor.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/DimensionsProcessor.php
@@ -17,7 +17,7 @@
* Class DimensionsProcessor
* Adds dimension conditions to select query
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class DimensionsProcessor
diff --git a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/ExclusionStrategy.php b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/ExclusionStrategy.php
index c382569338e29..5af634d41c13d 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/ExclusionStrategy.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/ExclusionStrategy.php
@@ -21,7 +21,7 @@
/**
* Strategy which processes exclusions from general rules
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
diff --git a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/FilterContext.php b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/FilterContext.php
index 67ed66da2a036..e3c943a11e348 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/FilterContext.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/FilterContext.php
@@ -15,7 +15,7 @@
* Its responsibility is to choose appropriate strategy to apply passed filter to the Select
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class FilterContext implements FilterStrategyInterface
diff --git a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/FilterMapper.php b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/FilterMapper.php
index 7136fad5b19a9..750ef0dc1d8d7 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/FilterMapper.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/FilterMapper.php
@@ -14,7 +14,7 @@
* Class FilterMapper
* This class applies filters to Select based on SelectContainer configuration
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class FilterMapper
diff --git a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/FilterStrategyInterface.php b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/FilterStrategyInterface.php
index a61c691c0d5cd..32bee9cc78951 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/FilterStrategyInterface.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/FilterStrategyInterface.php
@@ -10,7 +10,7 @@
* FilterStrategyInterface provides the interface to work with strategies
* @api
* @since 100.1.6
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
interface FilterStrategyInterface
diff --git a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/StaticAttributeStrategy.php b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/StaticAttributeStrategy.php
index 3986cc617f06d..7ebf29e6c10cf 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/StaticAttributeStrategy.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/StaticAttributeStrategy.php
@@ -13,7 +13,7 @@
/**
* This strategy handles static attributes
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class StaticAttributeStrategy implements FilterStrategyInterface
diff --git a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/StockStatusFilter.php b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/StockStatusFilter.php
index 0e3ba0d4e669f..defba97358052 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/StockStatusFilter.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/StockStatusFilter.php
@@ -16,7 +16,7 @@
* Class StockStatusFilter
* Adds filter by stock status to base select
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class StockStatusFilter
diff --git a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/TermDropdownStrategy.php b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/TermDropdownStrategy.php
index 9d7e31ee3b6d1..9b2e59d56d64d 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/TermDropdownStrategy.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/TermDropdownStrategy.php
@@ -16,7 +16,7 @@
* - The filter for dropdown or multi-select attribute
* - The filter is Term filter
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class TermDropdownStrategy implements FilterStrategyInterface
diff --git a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/TermDropdownStrategy/ApplyStockConditionToSelect.php b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/TermDropdownStrategy/ApplyStockConditionToSelect.php
index c28bc3485cf49..9a3ea660ecb24 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/TermDropdownStrategy/ApplyStockConditionToSelect.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/TermDropdownStrategy/ApplyStockConditionToSelect.php
@@ -14,7 +14,7 @@
/**
* Apply stock condition to select.
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class ApplyStockConditionToSelect
diff --git a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/TermDropdownStrategy/SelectBuilder.php b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/TermDropdownStrategy/SelectBuilder.php
index 007647db39b32..9720c555ff94a 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/TermDropdownStrategy/SelectBuilder.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/TermDropdownStrategy/SelectBuilder.php
@@ -17,7 +17,7 @@
/**
* Add joins to select.
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class SelectBuilder
diff --git a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/VisibilityFilter.php b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/VisibilityFilter.php
index 690ef9115edfe..d5a16e8fb0ef9 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/VisibilityFilter.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/FilterMapper/VisibilityFilter.php
@@ -17,7 +17,7 @@
* Class VisibilityFilter
* Applies filter by visibility to base select
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class VisibilityFilter
diff --git a/app/code/Magento/CatalogSearch/Model/Search/FiltersExtractor.php b/app/code/Magento/CatalogSearch/Model/Search/FiltersExtractor.php
index 55c8582979912..3b05b3ff7c40d 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/FiltersExtractor.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/FiltersExtractor.php
@@ -13,7 +13,7 @@
* Class FiltersExtractor
* Extracts filters from QueryInterface
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class FiltersExtractor
diff --git a/app/code/Magento/CatalogSearch/Model/Search/IndexBuilder.php b/app/code/Magento/CatalogSearch/Model/Search/IndexBuilder.php
index 906220db28dc1..109b4c2029207 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/IndexBuilder.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/IndexBuilder.php
@@ -26,7 +26,7 @@
/**
* Build base Query for Index
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class IndexBuilder implements IndexBuilderInterface
diff --git a/app/code/Magento/CatalogSearch/Model/Search/QueryChecker/FullTextSearchCheck.php b/app/code/Magento/CatalogSearch/Model/Search/QueryChecker/FullTextSearchCheck.php
index a47ea54375205..6564d0dc11a32 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/QueryChecker/FullTextSearchCheck.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/QueryChecker/FullTextSearchCheck.php
@@ -13,7 +13,7 @@
/**
* Class is responsible for checking if fulltext search is required for search query
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class FullTextSearchCheck
diff --git a/app/code/Magento/CatalogSearch/Model/Search/ReaderPlugin.php b/app/code/Magento/CatalogSearch/Model/Search/ReaderPlugin.php
index 916e03f471493..2f6a402b20406 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/ReaderPlugin.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/ReaderPlugin.php
@@ -6,7 +6,7 @@
namespace Magento\CatalogSearch\Model\Search;
/**
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class ReaderPlugin
diff --git a/app/code/Magento/CatalogSearch/Model/Search/RequestGenerator/GeneratorResolver.php b/app/code/Magento/CatalogSearch/Model/Search/RequestGenerator/GeneratorResolver.php
index 68ca546b81919..aa3bd1f149c16 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/RequestGenerator/GeneratorResolver.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/RequestGenerator/GeneratorResolver.php
@@ -9,7 +9,7 @@
/**
* @api
* @since 100.1.6
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class GeneratorResolver
diff --git a/app/code/Magento/CatalogSearch/Model/Search/SelectContainer/SelectContainer.php b/app/code/Magento/CatalogSearch/Model/Search/SelectContainer/SelectContainer.php
index f0eade4bfbcf5..13a12278b14f3 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/SelectContainer/SelectContainer.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/SelectContainer/SelectContainer.php
@@ -12,7 +12,7 @@
/**
* This class is a container for all data that is required for creating select query by search request
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class SelectContainer
diff --git a/app/code/Magento/CatalogSearch/Model/Search/SelectContainer/SelectContainerBuilder.php b/app/code/Magento/CatalogSearch/Model/Search/SelectContainer/SelectContainerBuilder.php
index d5b7be8bf0106..78008f066f72b 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/SelectContainer/SelectContainerBuilder.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/SelectContainer/SelectContainerBuilder.php
@@ -18,7 +18,7 @@
* Class SelectContainerBuilder
* Class is responsible for SelectContainer creation and filling it with all required data
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class SelectContainerBuilder
diff --git a/app/code/Magento/CatalogSearch/Model/Search/TableMapper.php b/app/code/Magento/CatalogSearch/Model/Search/TableMapper.php
index 6b18c4307f515..5bea06ab261d0 100644
--- a/app/code/Magento/CatalogSearch/Model/Search/TableMapper.php
+++ b/app/code/Magento/CatalogSearch/Model/Search/TableMapper.php
@@ -25,7 +25,7 @@
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @api
* @since 100.0.2
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class TableMapper
diff --git a/app/code/Magento/CatalogSearch/Plugin/EnableEavIndexer.php b/app/code/Magento/CatalogSearch/Plugin/EnableEavIndexer.php
index 956a1b2360f89..5e4747c735e64 100644
--- a/app/code/Magento/CatalogSearch/Plugin/EnableEavIndexer.php
+++ b/app/code/Magento/CatalogSearch/Plugin/EnableEavIndexer.php
@@ -10,7 +10,7 @@
/**
* Enable Product EAV indexer in configuration for MySQL search engine
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class EnableEavIndexer
diff --git a/app/code/Magento/CatalogSearch/Setup/Patch/Data/MySQLSearchDeprecationNotification.php b/app/code/Magento/CatalogSearch/Setup/Patch/Data/MySQLSearchDeprecationNotification.php
index 8fa9f56d78474..86d66ed2a847c 100644
--- a/app/code/Magento/CatalogSearch/Setup/Patch/Data/MySQLSearchDeprecationNotification.php
+++ b/app/code/Magento/CatalogSearch/Setup/Patch/Data/MySQLSearchDeprecationNotification.php
@@ -10,7 +10,7 @@
/**
* Implementation of the notification about MySQL search being deprecated.
*
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class MySQLSearchDeprecationNotification implements \Magento\Framework\Setup\Patch\DataPatchInterface
diff --git a/app/code/Magento/CatalogSearch/Setup/Patch/Data/SetInitialSearchWeightForAttributes.php b/app/code/Magento/CatalogSearch/Setup/Patch/Data/SetInitialSearchWeightForAttributes.php
index 7f6dbe033e3a5..6752140812e4b 100644
--- a/app/code/Magento/CatalogSearch/Setup/Patch/Data/SetInitialSearchWeightForAttributes.php
+++ b/app/code/Magento/CatalogSearch/Setup/Patch/Data/SetInitialSearchWeightForAttributes.php
@@ -13,7 +13,7 @@
use Magento\Catalog\Api\ProductAttributeRepositoryInterface;
/**
- * @deprecated
+ * @deprecated 101.0.0
* @see \Magento\ElasticSearch
*/
class SetInitialSearchWeightForAttributes implements DataPatchInterface, PatchVersionInterface
diff --git a/app/code/Magento/CatalogSearch/Test/Mftf/Test/SearchEntityResultsTest.xml b/app/code/Magento/CatalogSearch/Test/Mftf/Test/SearchEntityResultsTest.xml
index 19db201e91f40..ed1dac4045dcc 100644
--- a/app/code/Magento/CatalogSearch/Test/Mftf/Test/SearchEntityResultsTest.xml
+++ b/app/code/Magento/CatalogSearch/Test/Mftf/Test/SearchEntityResultsTest.xml
@@ -368,6 +368,7 @@
+
@@ -377,6 +378,7 @@
+
diff --git a/app/code/Magento/CatalogSearch/composer.json b/app/code/Magento/CatalogSearch/composer.json
index 7bcb91e945417..f00b2a88cfbee 100644
--- a/app/code/Magento/CatalogSearch/composer.json
+++ b/app/code/Magento/CatalogSearch/composer.json
@@ -6,21 +6,21 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-catalog": "*",
- "magento/module-indexer": "*",
- "magento/module-catalog-inventory": "*",
- "magento/module-customer": "*",
- "magento/module-directory": "*",
- "magento/module-eav": "*",
- "magento/module-search": "*",
- "magento/module-store": "*",
- "magento/module-theme": "*",
- "magento/module-ui": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-indexer": "100.3.*",
+ "magento/module-catalog-inventory": "100.3.*",
+ "magento/module-customer": "102.0.*",
+ "magento/module-directory": "100.3.*",
+ "magento/module-eav": "102.0.*",
+ "magento/module-search": "101.0.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-theme": "101.0.*",
+ "magento/module-ui": "101.1.*"
},
"suggest": {
- "magento/module-config": "*"
+ "magento/module-config": "101.1.*"
},
"type": "magento2-module",
"license": [
@@ -34,5 +34,6 @@
"psr-4": {
"Magento\\CatalogSearch\\": ""
}
- }
+ },
+ "version": "101.0.2-p2"
}
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Category/CurrentUrlRewritesRegenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/Category/CurrentUrlRewritesRegenerator.php
index f8d9ddf0c4ad9..5a339670bbb81 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/Category/CurrentUrlRewritesRegenerator.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/Category/CurrentUrlRewritesRegenerator.php
@@ -27,13 +27,13 @@ class CurrentUrlRewritesRegenerator
/**
* @var \Magento\Catalog\Model\Category
- * @deprecated 100.1.4
+ * @deprecated 100.1.0
*/
protected $category;
/**
* @var \Magento\UrlRewrite\Model\UrlFinderInterface
- * @deprecated 100.1.4
+ * @deprecated 100.1.0
*/
protected $urlFinder;
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGenerator.php
index a86604672e2b4..d48bcd446fcfd 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGenerator.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGenerator.php
@@ -30,7 +30,7 @@ class CategoryUrlRewriteGenerator
/**
* @var \Magento\Catalog\Model\Category
- * @deprecated 100.1.4
+ * @deprecated 100.1.0
*/
protected $category;
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Product/CurrentUrlRewritesRegenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/Product/CurrentUrlRewritesRegenerator.php
index 42d3fd9cb40e1..628615803f6e8 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/Product/CurrentUrlRewritesRegenerator.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/Product/CurrentUrlRewritesRegenerator.php
@@ -26,19 +26,19 @@ class CurrentUrlRewritesRegenerator
{
/**
* @var Product
- * @deprecated 100.1.4
+ * @deprecated 100.1.0
*/
protected $product;
/**
* @var ObjectRegistry
- * @deprecated 100.1.4
+ * @deprecated 100.1.0
*/
protected $productCategories;
/**
* @var UrlFinderInterface
- * @deprecated 100.1.4
+ * @deprecated 100.1.0
*/
protected $urlFinder;
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/ProductUrlRewriteGenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/ProductUrlRewriteGenerator.php
index 868c417b5ff52..f5e6ae9a6d615 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/ProductUrlRewriteGenerator.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/ProductUrlRewriteGenerator.php
@@ -26,49 +26,49 @@ class ProductUrlRewriteGenerator
const ENTITY_TYPE = 'product';
/**
- * @deprecated 100.1.4
+ * @deprecated 100.1.0
* @var \Magento\CatalogUrlRewrite\Service\V1\StoreViewService
*/
protected $storeViewService;
/**
* @var \Magento\Catalog\Model\Product
- * @deprecated 100.1.4
+ * @deprecated 100.1.0
*/
protected $product;
/**
- * @deprecated 100.1.4
+ * @deprecated 100.1.0
* @var \Magento\CatalogUrlRewrite\Model\Product\CurrentUrlRewritesRegenerator
*/
protected $currentUrlRewritesRegenerator;
/**
- * @deprecated 100.1.4
+ * @deprecated 100.1.0
* @var \Magento\CatalogUrlRewrite\Model\Product\CategoriesUrlRewriteGenerator
*/
protected $categoriesUrlRewriteGenerator;
/**
- * @deprecated 100.1.4
+ * @deprecated 100.1.0
* @var \Magento\CatalogUrlRewrite\Model\Product\CanonicalUrlRewriteGenerator
*/
protected $canonicalUrlRewriteGenerator;
/**
- * @deprecated 100.1.4
+ * @deprecated 100.1.0
* @var \Magento\CatalogUrlRewrite\Model\ObjectRegistryFactory
*/
protected $objectRegistryFactory;
/**
- * @deprecated 100.1.4
+ * @deprecated 100.1.0
* @var \Magento\CatalogUrlRewrite\Model\ObjectRegistry
*/
protected $productCategories;
/**
- * @deprecated 100.1.4
+ * @deprecated 100.1.0
* @var \Magento\Store\Model\StoreManagerInterface
*/
protected $storeManager;
diff --git a/app/code/Magento/CatalogUrlRewrite/composer.json b/app/code/Magento/CatalogUrlRewrite/composer.json
index b4ceff96b50b7..de344c505798e 100644
--- a/app/code/Magento/CatalogUrlRewrite/composer.json
+++ b/app/code/Magento/CatalogUrlRewrite/composer.json
@@ -6,18 +6,18 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-catalog": "*",
- "magento/module-catalog-import-export": "*",
- "magento/module-eav": "*",
- "magento/module-import-export": "*",
- "magento/module-store": "*",
- "magento/module-ui": "*",
- "magento/module-url-rewrite": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-catalog-import-export": "101.0.*",
+ "magento/module-eav": "102.0.*",
+ "magento/module-import-export": "100.3.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-ui": "101.1.*",
+ "magento/module-url-rewrite": "101.1.*"
},
"suggest": {
- "magento/module-webapi": "*"
+ "magento/module-webapi": "100.3.*"
},
"type": "magento2-module",
"license": [
@@ -31,5 +31,6 @@
"psr-4": {
"Magento\\CatalogUrlRewrite\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/CatalogUrlRewriteGraphQl/composer.json b/app/code/Magento/CatalogUrlRewriteGraphQl/composer.json
index 4a1a17f1398d6..1c18ee8e1a5f8 100644
--- a/app/code/Magento/CatalogUrlRewriteGraphQl/composer.json
+++ b/app/code/Magento/CatalogUrlRewriteGraphQl/composer.json
@@ -4,13 +4,13 @@
"type": "magento2-module",
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/module-catalog": "*",
- "magento/framework": "*"
+ "magento/module-catalog": "103.0.*",
+ "magento/framework": "102.0.*"
},
"suggest": {
- "magento/module-catalog-url-rewrite": "*",
- "magento/module-catalog-graph-ql": "*",
- "magento/module-url-rewrite-graph-ql": "*"
+ "magento/module-catalog-url-rewrite": "100.3.*",
+ "magento/module-catalog-graph-ql": "100.3.*",
+ "magento/module-url-rewrite-graph-ql": "100.3.*"
},
"license": [
"OSL-3.0",
@@ -23,5 +23,6 @@
"psr-4": {
"Magento\\CatalogUrlRewriteGraphQl\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/CatalogWidget/composer.json b/app/code/Magento/CatalogWidget/composer.json
index 3998e58c99baa..070f6212ab991 100644
--- a/app/code/Magento/CatalogWidget/composer.json
+++ b/app/code/Magento/CatalogWidget/composer.json
@@ -6,15 +6,15 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-catalog": "*",
- "magento/module-customer": "*",
- "magento/module-eav": "*",
- "magento/module-rule": "*",
- "magento/module-store": "*",
- "magento/module-widget": "*",
- "magento/module-wishlist": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-customer": "102.0.*",
+ "magento/module-eav": "102.0.*",
+ "magento/module-rule": "100.3.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-widget": "101.1.*",
+ "magento/module-wishlist": "101.1.*"
},
"type": "magento2-module",
"license": [
@@ -28,5 +28,6 @@
"psr-4": {
"Magento\\CatalogWidget\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/Checkout/Api/AgreementsValidatorInterface.php b/app/code/Magento/Checkout/Api/AgreementsValidatorInterface.php
index d97492f31a79d..22d4fdf502f7c 100644
--- a/app/code/Magento/Checkout/Api/AgreementsValidatorInterface.php
+++ b/app/code/Magento/Checkout/Api/AgreementsValidatorInterface.php
@@ -8,6 +8,7 @@
/**
* Interface AgreementsValidatorInterface
* @api
+ * @since 100.0.2
*/
interface AgreementsValidatorInterface
{
diff --git a/app/code/Magento/Checkout/Api/Data/PaymentDetailsInterface.php b/app/code/Magento/Checkout/Api/Data/PaymentDetailsInterface.php
index cad1c100c7e5b..361c50cdcfe86 100644
--- a/app/code/Magento/Checkout/Api/Data/PaymentDetailsInterface.php
+++ b/app/code/Magento/Checkout/Api/Data/PaymentDetailsInterface.php
@@ -8,6 +8,7 @@
/**
* Interface PaymentDetailsInterface
* @api
+ * @since 100.0.2
*/
interface PaymentDetailsInterface extends \Magento\Framework\Api\ExtensibleDataInterface
{
diff --git a/app/code/Magento/Checkout/Api/Data/ShippingInformationInterface.php b/app/code/Magento/Checkout/Api/Data/ShippingInformationInterface.php
index e4032066a6f10..188d2987e5daf 100644
--- a/app/code/Magento/Checkout/Api/Data/ShippingInformationInterface.php
+++ b/app/code/Magento/Checkout/Api/Data/ShippingInformationInterface.php
@@ -8,6 +8,7 @@
/**
* Interface ShippingInformationInterface
* @api
+ * @since 100.0.2
*/
interface ShippingInformationInterface extends \Magento\Framework\Api\CustomAttributesDataInterface
{
diff --git a/app/code/Magento/Checkout/Api/Data/TotalsInformationInterface.php b/app/code/Magento/Checkout/Api/Data/TotalsInformationInterface.php
index a9dd05856b72f..c8234bb560cba 100644
--- a/app/code/Magento/Checkout/Api/Data/TotalsInformationInterface.php
+++ b/app/code/Magento/Checkout/Api/Data/TotalsInformationInterface.php
@@ -8,6 +8,7 @@
/**
* Interface TotalsInformationInterface
* @api
+ * @since 100.0.2
*/
interface TotalsInformationInterface extends \Magento\Framework\Api\CustomAttributesDataInterface
{
diff --git a/app/code/Magento/Checkout/Api/GuestPaymentInformationManagementInterface.php b/app/code/Magento/Checkout/Api/GuestPaymentInformationManagementInterface.php
index 63296081ab97c..80c2bb7752b73 100644
--- a/app/code/Magento/Checkout/Api/GuestPaymentInformationManagementInterface.php
+++ b/app/code/Magento/Checkout/Api/GuestPaymentInformationManagementInterface.php
@@ -8,6 +8,7 @@
/**
* Interface for managing guest payment information
* @api
+ * @since 100.0.2
*/
interface GuestPaymentInformationManagementInterface
{
diff --git a/app/code/Magento/Checkout/Api/GuestShippingInformationManagementInterface.php b/app/code/Magento/Checkout/Api/GuestShippingInformationManagementInterface.php
index def7442ad4672..6ac5ec9442b6f 100644
--- a/app/code/Magento/Checkout/Api/GuestShippingInformationManagementInterface.php
+++ b/app/code/Magento/Checkout/Api/GuestShippingInformationManagementInterface.php
@@ -8,6 +8,7 @@
/**
* Interface for managing guest shipping address information
* @api
+ * @since 100.0.2
*/
interface GuestShippingInformationManagementInterface
{
diff --git a/app/code/Magento/Checkout/Api/GuestTotalsInformationManagementInterface.php b/app/code/Magento/Checkout/Api/GuestTotalsInformationManagementInterface.php
index d2d7dfad609cb..c98d193534d36 100644
--- a/app/code/Magento/Checkout/Api/GuestTotalsInformationManagementInterface.php
+++ b/app/code/Magento/Checkout/Api/GuestTotalsInformationManagementInterface.php
@@ -8,6 +8,7 @@
/**
* Interface for guest quote totals calculation
* @api
+ * @since 100.0.2
*/
interface GuestTotalsInformationManagementInterface
{
diff --git a/app/code/Magento/Checkout/Api/PaymentInformationManagementInterface.php b/app/code/Magento/Checkout/Api/PaymentInformationManagementInterface.php
index f80deca1acc5a..b025dc4c7c4a4 100644
--- a/app/code/Magento/Checkout/Api/PaymentInformationManagementInterface.php
+++ b/app/code/Magento/Checkout/Api/PaymentInformationManagementInterface.php
@@ -8,6 +8,7 @@
/**
* Interface for managing quote payment information
* @api
+ * @since 100.0.2
*/
interface PaymentInformationManagementInterface
{
diff --git a/app/code/Magento/Checkout/Api/ShippingInformationManagementInterface.php b/app/code/Magento/Checkout/Api/ShippingInformationManagementInterface.php
index 0d22e1485c099..ee8fb42a581c0 100644
--- a/app/code/Magento/Checkout/Api/ShippingInformationManagementInterface.php
+++ b/app/code/Magento/Checkout/Api/ShippingInformationManagementInterface.php
@@ -8,6 +8,7 @@
/**
* Interface for managing customer shipping address information
* @api
+ * @since 100.0.2
*/
interface ShippingInformationManagementInterface
{
diff --git a/app/code/Magento/Checkout/Api/TotalsInformationManagementInterface.php b/app/code/Magento/Checkout/Api/TotalsInformationManagementInterface.php
index 60fd254eb199e..f3ecf957f3e06 100644
--- a/app/code/Magento/Checkout/Api/TotalsInformationManagementInterface.php
+++ b/app/code/Magento/Checkout/Api/TotalsInformationManagementInterface.php
@@ -8,6 +8,7 @@
/**
* Interface for quote totals calculation
* @api
+ * @since 100.0.2
*/
interface TotalsInformationManagementInterface
{
diff --git a/app/code/Magento/Checkout/Block/Cart.php b/app/code/Magento/Checkout/Block/Cart.php
index 7940c37917624..76bf917f02d8b 100644
--- a/app/code/Magento/Checkout/Block/Cart.php
+++ b/app/code/Magento/Checkout/Block/Cart.php
@@ -11,6 +11,7 @@
* Shopping cart block
*
* @api
+ * @since 100.0.2
*/
class Cart extends \Magento\Checkout\Block\Cart\AbstractCart
{
@@ -239,7 +240,7 @@ public function getItemsCount()
* Render pagination HTML
*
* @return string
- * @since 100.2.0
+ * @since 100.1.7
*/
public function getPagerHtml()
{
diff --git a/app/code/Magento/Checkout/Block/Cart/Additional/Info.php b/app/code/Magento/Checkout/Block/Cart/Additional/Info.php
index 196992cbaf9c8..9bf8c8c8e9b51 100644
--- a/app/code/Magento/Checkout/Block/Cart/Additional/Info.php
+++ b/app/code/Magento/Checkout/Block/Cart/Additional/Info.php
@@ -8,6 +8,7 @@
/**
* @api
+ * @since 100.0.2
*/
class Info extends \Magento\Framework\View\Element\Template
{
diff --git a/app/code/Magento/Checkout/Block/Cart/Coupon.php b/app/code/Magento/Checkout/Block/Cart/Coupon.php
index acf3c0922f3c9..98707e7e7c694 100644
--- a/app/code/Magento/Checkout/Block/Cart/Coupon.php
+++ b/app/code/Magento/Checkout/Block/Cart/Coupon.php
@@ -11,6 +11,7 @@
* Block with apply-coupon form.
*
* @api
+ * @since 100.0.2
*/
class Coupon extends \Magento\Checkout\Block\Cart\AbstractCart
{
@@ -44,6 +45,7 @@ public function getCouponCode()
/**
* @inheritDoc
+ * @since 100.3.2
*/
protected function _prepareLayout()
{
diff --git a/app/code/Magento/Checkout/Block/Cart/Crosssell.php b/app/code/Magento/Checkout/Block/Cart/Crosssell.php
index 06be50d05aefc..5e129a958b535 100644
--- a/app/code/Magento/Checkout/Block/Cart/Crosssell.php
+++ b/app/code/Magento/Checkout/Block/Cart/Crosssell.php
@@ -12,6 +12,7 @@
*
* @api
* @author Magento Core Team
+ * @since 100.0.2
*/
class Crosssell extends \Magento\Catalog\Block\Product\AbstractProduct
{
diff --git a/app/code/Magento/Checkout/Block/Cart/Grid.php b/app/code/Magento/Checkout/Block/Cart/Grid.php
index bfe4b6ceed9d0..db5d90ecddc16 100644
--- a/app/code/Magento/Checkout/Block/Cart/Grid.php
+++ b/app/code/Magento/Checkout/Block/Cart/Grid.php
@@ -13,7 +13,7 @@
* custom_items weren't set to cart block
*
* @api
- * @since 100.2.0
+ * @since 100.1.7
*/
class Grid extends \Magento\Checkout\Block\Cart
{
@@ -56,7 +56,6 @@ class Grid extends \Magento\Checkout\Block\Cart
* @param \Magento\Quote\Model\ResourceModel\Quote\Item\CollectionFactory $itemCollectionFactory
* @param \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor
* @param array $data
- * @since 100.2.0
*/
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
@@ -89,7 +88,7 @@ public function __construct(
* Configuration path is Store->Configuration->Sales->Checkout->Shopping Cart->Number of items to display pager
*
* @return void
- * @since 100.2.0
+ * @since 100.1.7
*/
protected function _construct()
{
@@ -103,7 +102,7 @@ protected function _construct()
/**
* {@inheritdoc}
- * @since 100.2.0
+ * @since 100.1.7
*/
protected function _prepareLayout()
{
@@ -128,7 +127,7 @@ protected function _prepareLayout()
* Prepare quote items collection for pager
*
* @return \Magento\Quote\Model\ResourceModel\Quote\Item\Collection
- * @since 100.2.0
+ * @since 100.1.7
*/
public function getItemsForGrid()
{
@@ -147,7 +146,7 @@ public function getItemsForGrid()
/**
* {@inheritdoc}
- * @since 100.2.0
+ * @since 100.1.7
*/
public function getItems()
{
diff --git a/app/code/Magento/Checkout/Block/Cart/Item/Configure.php b/app/code/Magento/Checkout/Block/Cart/Item/Configure.php
index 086518a312f71..c5c3af1d3c8c9 100644
--- a/app/code/Magento/Checkout/Block/Cart/Item/Configure.php
+++ b/app/code/Magento/Checkout/Block/Cart/Item/Configure.php
@@ -11,6 +11,7 @@
*
* @api
* @module Checkout
+ * @since 100.0.2
*/
class Configure extends \Magento\Framework\View\Element\Template
{
diff --git a/app/code/Magento/Checkout/Block/Cart/Item/Renderer.php b/app/code/Magento/Checkout/Block/Cart/Item/Renderer.php
index a43f074d8df67..819030faf1475 100644
--- a/app/code/Magento/Checkout/Block/Cart/Item/Renderer.php
+++ b/app/code/Magento/Checkout/Block/Cart/Item/Renderer.php
@@ -24,6 +24,7 @@
* @method \Magento\Checkout\Block\Cart\Item\Renderer setDeleteUrl(string)
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
+ * @since 100.0.2
*/
class Renderer extends \Magento\Framework\View\Element\Template implements
\Magento\Framework\DataObject\IdentityInterface
diff --git a/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions.php b/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions.php
index 3be4f76d8d67e..b2d4ef28347a5 100644
--- a/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions.php
+++ b/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions.php
@@ -11,6 +11,7 @@
/**
* @api
+ * @since 100.0.2
*/
class Actions extends Text
{
diff --git a/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions/Edit.php b/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions/Edit.php
index 4542f19c4670a..fd34cdc4314f5 100644
--- a/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions/Edit.php
+++ b/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions/Edit.php
@@ -7,6 +7,7 @@
/**
* @api
+ * @since 100.0.2
*/
class Edit extends Generic
{
diff --git a/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions/Remove.php b/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions/Remove.php
index d50eeb1b0a263..b52c7dc4c2131 100644
--- a/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions/Remove.php
+++ b/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions/Remove.php
@@ -10,6 +10,7 @@
/**
* @api
+ * @since 100.0.2
*/
class Remove extends Generic
{
diff --git a/app/code/Magento/Checkout/Block/Cart/Shipping.php b/app/code/Magento/Checkout/Block/Cart/Shipping.php
index c52b7fe18814f..d920d2b62e275 100644
--- a/app/code/Magento/Checkout/Block/Cart/Shipping.php
+++ b/app/code/Magento/Checkout/Block/Cart/Shipping.php
@@ -8,6 +8,7 @@
/**
* @api
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ * @since 100.0.2
*/
class Shipping extends \Magento\Checkout\Block\Cart\AbstractCart
{
diff --git a/app/code/Magento/Checkout/Block/Cart/Sidebar.php b/app/code/Magento/Checkout/Block/Cart/Sidebar.php
index c5e309df3cad6..de4c95c9ad36f 100644
--- a/app/code/Magento/Checkout/Block/Cart/Sidebar.php
+++ b/app/code/Magento/Checkout/Block/Cart/Sidebar.php
@@ -11,6 +11,7 @@
* Cart sidebar block
*
* @api
+ * @since 100.0.2
*/
class Sidebar extends AbstractCart
{
diff --git a/app/code/Magento/Checkout/Block/Cart/Totals.php b/app/code/Magento/Checkout/Block/Cart/Totals.php
index 7ac5c1c149cc6..70e9402b96724 100644
--- a/app/code/Magento/Checkout/Block/Cart/Totals.php
+++ b/app/code/Magento/Checkout/Block/Cart/Totals.php
@@ -13,6 +13,7 @@
* Totals cart block.
*
* @api
+ * @since 100.0.2
*/
class Totals extends \Magento\Checkout\Block\Cart\AbstractCart
{
diff --git a/app/code/Magento/Checkout/Block/Cart/ValidationMessages.php b/app/code/Magento/Checkout/Block/Cart/ValidationMessages.php
index 0ec2982b83c01..1429eeb04995d 100644
--- a/app/code/Magento/Checkout/Block/Cart/ValidationMessages.php
+++ b/app/code/Magento/Checkout/Block/Cart/ValidationMessages.php
@@ -12,6 +12,7 @@
* Shopping cart validation messages block
*
* @api
+ * @since 100.0.2
*/
class ValidationMessages extends \Magento\Framework\View\Element\Messages
{
diff --git a/app/code/Magento/Checkout/Block/Checkout/AttributeMerger.php b/app/code/Magento/Checkout/Block/Checkout/AttributeMerger.php
index 5dedf2c7e7eba..c819e7f5a530f 100644
--- a/app/code/Magento/Checkout/Block/Checkout/AttributeMerger.php
+++ b/app/code/Magento/Checkout/Block/Checkout/AttributeMerger.php
@@ -396,7 +396,7 @@ protected function getFieldOptions($attributeCode, array $attributeConfig)
*
* @param array $countryOptions
* @return array
- * @deprecated 100.2.0
+ * @deprecated 100.1.7
*/
protected function orderCountryOptions(array $countryOptions)
{
diff --git a/app/code/Magento/Checkout/Block/Checkout/LayoutProcessorInterface.php b/app/code/Magento/Checkout/Block/Checkout/LayoutProcessorInterface.php
index ad14f2a45426d..31a744c7d4d48 100644
--- a/app/code/Magento/Checkout/Block/Checkout/LayoutProcessorInterface.php
+++ b/app/code/Magento/Checkout/Block/Checkout/LayoutProcessorInterface.php
@@ -13,6 +13,7 @@
* @see \Magento\Checkout\Block\Onepage
*
* @api
+ * @since 100.0.2
*/
interface LayoutProcessorInterface
{
diff --git a/app/code/Magento/Checkout/Block/Item/Price/Renderer.php b/app/code/Magento/Checkout/Block/Item/Price/Renderer.php
index 2210b1cd9243e..b0f5a6b51a158 100644
--- a/app/code/Magento/Checkout/Block/Item/Price/Renderer.php
+++ b/app/code/Magento/Checkout/Block/Item/Price/Renderer.php
@@ -12,6 +12,7 @@
*
* @api
* @author Magento Core Team
+ * @since 100.0.2
*/
class Renderer extends \Magento\Framework\View\Element\Template
{
diff --git a/app/code/Magento/Checkout/Block/Onepage.php b/app/code/Magento/Checkout/Block/Onepage.php
index e01d5835b4cf0..c335b3909d5fd 100644
--- a/app/code/Magento/Checkout/Block/Onepage.php
+++ b/app/code/Magento/Checkout/Block/Onepage.php
@@ -9,6 +9,7 @@
* Onepage checkout block
* @api
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ * @since 100.0.2
*/
class Onepage extends \Magento\Framework\View\Element\Template
{
diff --git a/app/code/Magento/Checkout/Block/Onepage/Failure.php b/app/code/Magento/Checkout/Block/Onepage/Failure.php
index 46e56d24a7fa0..70f445173567a 100644
--- a/app/code/Magento/Checkout/Block/Onepage/Failure.php
+++ b/app/code/Magento/Checkout/Block/Onepage/Failure.php
@@ -7,6 +7,7 @@
/**
* @api
+ * @since 100.0.2
*/
class Failure extends \Magento\Framework\View\Element\Template
{
diff --git a/app/code/Magento/Checkout/Block/Onepage/Link.php b/app/code/Magento/Checkout/Block/Onepage/Link.php
index b8f3926baa58a..de26fe68287de 100644
--- a/app/code/Magento/Checkout/Block/Onepage/Link.php
+++ b/app/code/Magento/Checkout/Block/Onepage/Link.php
@@ -10,6 +10,7 @@
*
* @api
* @author Magento Core Team
+ * @since 100.0.2
*/
class Link extends \Magento\Framework\View\Element\Template
{
diff --git a/app/code/Magento/Checkout/Block/Onepage/Success.php b/app/code/Magento/Checkout/Block/Onepage/Success.php
index e7cfaf68cc789..f8e286ca14bc8 100644
--- a/app/code/Magento/Checkout/Block/Onepage/Success.php
+++ b/app/code/Magento/Checkout/Block/Onepage/Success.php
@@ -12,6 +12,7 @@
* One page checkout success page
*
* @api
+ * @since 100.0.2
*/
class Success extends \Magento\Framework\View\Element\Template
{
diff --git a/app/code/Magento/Checkout/Block/QuoteShortcutButtons.php b/app/code/Magento/Checkout/Block/QuoteShortcutButtons.php
index 3b2f1604fae44..27910277617dd 100644
--- a/app/code/Magento/Checkout/Block/QuoteShortcutButtons.php
+++ b/app/code/Magento/Checkout/Block/QuoteShortcutButtons.php
@@ -11,6 +11,7 @@
* Displays buttons on shopping cart page
*
* @api
+ * @since 100.0.2
*/
class QuoteShortcutButtons extends \Magento\Catalog\Block\ShortcutButtons
{
diff --git a/app/code/Magento/Checkout/Block/Registration.php b/app/code/Magento/Checkout/Block/Registration.php
index e880230f50a74..75bc3fa467ad6 100644
--- a/app/code/Magento/Checkout/Block/Registration.php
+++ b/app/code/Magento/Checkout/Block/Registration.php
@@ -9,6 +9,7 @@
/**
* @api
+ * @since 100.0.2
*/
class Registration extends \Magento\Framework\View\Element\Template
{
diff --git a/app/code/Magento/Checkout/Controller/Account/Create.php b/app/code/Magento/Checkout/Controller/Account/Create.php
index dae0bb98be453..21706186d803d 100644
--- a/app/code/Magento/Checkout/Controller/Account/Create.php
+++ b/app/code/Magento/Checkout/Controller/Account/Create.php
@@ -10,7 +10,7 @@
use Magento\Framework\Exception\NoSuchEntityException;
/**
- * @deprecated
+ * @deprecated 100.2.5
* @see DelegateCreate
*/
class Create extends \Magento\Framework\App\Action\Action
diff --git a/app/code/Magento/Checkout/CustomerData/AbstractItem.php b/app/code/Magento/Checkout/CustomerData/AbstractItem.php
index 9c2e3a32ef901..e5ed511924a7b 100644
--- a/app/code/Magento/Checkout/CustomerData/AbstractItem.php
+++ b/app/code/Magento/Checkout/CustomerData/AbstractItem.php
@@ -12,6 +12,7 @@
* Abstract item
*
* @api
+ * @since 100.0.2
*/
abstract class AbstractItem implements ItemInterface
{
diff --git a/app/code/Magento/Checkout/CustomerData/ItemInterface.php b/app/code/Magento/Checkout/CustomerData/ItemInterface.php
index fb8bd831f1ccd..fc8d954387b89 100644
--- a/app/code/Magento/Checkout/CustomerData/ItemInterface.php
+++ b/app/code/Magento/Checkout/CustomerData/ItemInterface.php
@@ -12,6 +12,7 @@
* Item interface
*
* @api
+ * @since 100.0.2
*/
interface ItemInterface
{
diff --git a/app/code/Magento/Checkout/Exception.php b/app/code/Magento/Checkout/Exception.php
index 4957e6be9b5da..6297041e065aa 100644
--- a/app/code/Magento/Checkout/Exception.php
+++ b/app/code/Magento/Checkout/Exception.php
@@ -7,6 +7,7 @@
/**
* @api
+ * @since 100.0.2
*/
class Exception extends \Magento\Framework\Exception\LocalizedException
{
diff --git a/app/code/Magento/Checkout/Model/Cart.php b/app/code/Magento/Checkout/Model/Cart.php
index cec99909dc999..b8bfb47f2c97a 100644
--- a/app/code/Magento/Checkout/Model/Cart.php
+++ b/app/code/Magento/Checkout/Model/Cart.php
@@ -20,6 +20,7 @@
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @deprecated 100.1.0 Use \Magento\Quote\Model\Quote instead
* @see \Magento\Quote\Api\Data\CartInterface
+ * @since 100.0.2
*/
class Cart extends DataObject implements CartInterface
{
diff --git a/app/code/Magento/Checkout/Model/Cart/CartInterface.php b/app/code/Magento/Checkout/Model/Cart/CartInterface.php
index 40aff1980e787..d8264e5535497 100644
--- a/app/code/Magento/Checkout/Model/Cart/CartInterface.php
+++ b/app/code/Magento/Checkout/Model/Cart/CartInterface.php
@@ -14,6 +14,7 @@
* @author Magento Core Team
* @deprecated 100.1.0 Use \Magento\Quote\Api\Data\CartInterface instead
* @see \Magento\Quote\Api\Data\CartInterface
+ * @since 100.0.2
*/
interface CartInterface
{
diff --git a/app/code/Magento/Checkout/Model/Cart/ImageProvider.php b/app/code/Magento/Checkout/Model/Cart/ImageProvider.php
index cdadf3573c8ec..bc409357bf409 100644
--- a/app/code/Magento/Checkout/Model/Cart/ImageProvider.php
+++ b/app/code/Magento/Checkout/Model/Cart/ImageProvider.php
@@ -10,6 +10,7 @@
/**
* @api
+ * @since 100.0.2
*/
class ImageProvider
{
@@ -20,12 +21,15 @@ class ImageProvider
/**
* @var \Magento\Checkout\CustomerData\ItemPoolInterface
- * @deprecated No need for the pool as images are resolved in the default item implementation
+ * @deprecated 100.2.7 No need for the pool as images are resolved in the default item implementation
* @see \Magento\Checkout\CustomerData\DefaultItem::getProductForThumbnail
*/
protected $itemPool;
- /** @var \Magento\Checkout\CustomerData\DefaultItem */
+ /**
+ * @var \Magento\Checkout\CustomerData\DefaultItem
+ * @since 100.2.7
+ */
protected $customerDataItem;
/**
diff --git a/app/code/Magento/Checkout/Model/Cart/RequestInfoFilterComposite.php b/app/code/Magento/Checkout/Model/Cart/RequestInfoFilterComposite.php
index f38e15dd628fd..ee68ef9d275b1 100644
--- a/app/code/Magento/Checkout/Model/Cart/RequestInfoFilterComposite.php
+++ b/app/code/Magento/Checkout/Model/Cart/RequestInfoFilterComposite.php
@@ -20,7 +20,6 @@ class RequestInfoFilterComposite implements RequestInfoFilterInterface
/**
* @param RequestInfoFilter[] $filters
- * @since 100.1.2
*/
public function __construct(
$filters = []
diff --git a/app/code/Magento/Checkout/Model/CompositeConfigProvider.php b/app/code/Magento/Checkout/Model/CompositeConfigProvider.php
index 3577b1a145403..7c6d04f2947a0 100644
--- a/app/code/Magento/Checkout/Model/CompositeConfigProvider.php
+++ b/app/code/Magento/Checkout/Model/CompositeConfigProvider.php
@@ -10,6 +10,7 @@
*
* @see \Magento\Checkout\Model\ConfigProviderInterface
* @api
+ * @since 100.0.2
*/
class CompositeConfigProvider implements ConfigProviderInterface
{
diff --git a/app/code/Magento/Checkout/Model/ConfigProviderInterface.php b/app/code/Magento/Checkout/Model/ConfigProviderInterface.php
index 9e15027e26927..58bbc02485642 100644
--- a/app/code/Magento/Checkout/Model/ConfigProviderInterface.php
+++ b/app/code/Magento/Checkout/Model/ConfigProviderInterface.php
@@ -8,6 +8,7 @@
/**
* Interface ConfigProviderInterface
* @api
+ * @since 100.0.2
*/
interface ConfigProviderInterface
{
diff --git a/app/code/Magento/Checkout/Model/GuestPaymentInformationManagement.php b/app/code/Magento/Checkout/Model/GuestPaymentInformationManagement.php
index da29482f0123f..592e87b5c4c42 100644
--- a/app/code/Magento/Checkout/Model/GuestPaymentInformationManagement.php
+++ b/app/code/Magento/Checkout/Model/GuestPaymentInformationManagement.php
@@ -170,7 +170,7 @@ public function getPaymentInformation($cartId)
* Get logger instance
*
* @return \Psr\Log\LoggerInterface
- * @deprecated 100.2.0
+ * @deprecated 100.1.8
*/
private function getLogger()
{
diff --git a/app/code/Magento/Checkout/Model/Layout/AbstractTotalsProcessor.php b/app/code/Magento/Checkout/Model/Layout/AbstractTotalsProcessor.php
index 12a8838a7e9ed..34f3302154bab 100644
--- a/app/code/Magento/Checkout/Model/Layout/AbstractTotalsProcessor.php
+++ b/app/code/Magento/Checkout/Model/Layout/AbstractTotalsProcessor.php
@@ -14,6 +14,7 @@
* Abstract class provides sorting routing to sort total information based on configuration settings.
*
* @api
+ * @since 100.0.2
*/
abstract class AbstractTotalsProcessor
{
diff --git a/app/code/Magento/Checkout/Model/PaymentInformationManagement.php b/app/code/Magento/Checkout/Model/PaymentInformationManagement.php
index e0de45a3f0dea..e8ab07db184d0 100644
--- a/app/code/Magento/Checkout/Model/PaymentInformationManagement.php
+++ b/app/code/Magento/Checkout/Model/PaymentInformationManagement.php
@@ -17,7 +17,7 @@ class PaymentInformationManagement implements \Magento\Checkout\Api\PaymentInfor
{
/**
* @var \Magento\Quote\Api\BillingAddressManagementInterface
- * @deprecated 100.2.0 This call was substituted to eliminate extra quote::save call
+ * @deprecated 100.1.0 This call was substituted to eliminate extra quote::save call
*/
protected $billingAddressManagement;
@@ -143,7 +143,7 @@ public function getPaymentInformation($cartId)
* Get logger instance
*
* @return \Psr\Log\LoggerInterface
- * @deprecated 100.2.0
+ * @deprecated 100.1.8
*/
private function getLogger()
{
diff --git a/app/code/Magento/Checkout/Model/Session.php b/app/code/Magento/Checkout/Model/Session.php
index 6dfdefb8601aa..332ce08556194 100644
--- a/app/code/Magento/Checkout/Model/Session.php
+++ b/app/code/Magento/Checkout/Model/Session.php
@@ -17,6 +17,7 @@
* @api
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @SuppressWarnings(PHPMD.CookieAndSessionMisuse)
+ * @since 100.0.2
*/
class Session extends \Magento\Framework\Session\SessionManager
{
diff --git a/app/code/Magento/Checkout/Model/Session/SuccessValidator.php b/app/code/Magento/Checkout/Model/Session/SuccessValidator.php
index 5858dcba8b902..6bfab606445fb 100644
--- a/app/code/Magento/Checkout/Model/Session/SuccessValidator.php
+++ b/app/code/Magento/Checkout/Model/Session/SuccessValidator.php
@@ -9,6 +9,7 @@
* Test if checkout session valid for success action
*
* @api
+ * @since 100.0.2
*/
class SuccessValidator
{
diff --git a/app/code/Magento/Checkout/composer.json b/app/code/Magento/Checkout/composer.json
index 4051a9cc512ff..8117def0377a4 100644
--- a/app/code/Magento/Checkout/composer.json
+++ b/app/code/Magento/Checkout/composer.json
@@ -6,28 +6,28 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-catalog": "*",
- "magento/module-catalog-inventory": "*",
- "magento/module-config": "*",
- "magento/module-customer": "*",
- "magento/module-directory": "*",
- "magento/module-eav": "*",
- "magento/module-msrp": "*",
- "magento/module-page-cache": "*",
- "magento/module-payment": "*",
- "magento/module-quote": "*",
- "magento/module-sales": "*",
- "magento/module-sales-rule": "*",
- "magento/module-shipping": "*",
- "magento/module-store": "*",
- "magento/module-tax": "*",
- "magento/module-theme": "*",
- "magento/module-ui": "*",
- "magento/module-captcha": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-catalog-inventory": "100.3.*",
+ "magento/module-config": "101.1.*",
+ "magento/module-customer": "102.0.*",
+ "magento/module-directory": "100.3.*",
+ "magento/module-eav": "102.0.*",
+ "magento/module-msrp": "100.3.*",
+ "magento/module-page-cache": "100.3.*",
+ "magento/module-payment": "100.3.*",
+ "magento/module-quote": "101.1.*",
+ "magento/module-sales": "102.0.*",
+ "magento/module-sales-rule": "101.1.*",
+ "magento/module-shipping": "100.3.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-tax": "100.3.*",
+ "magento/module-theme": "101.0.*",
+ "magento/module-ui": "101.1.*",
+ "magento/module-captcha": "100.3.*"
},
"suggest": {
- "magento/module-cookie": "*"
+ "magento/module-cookie": "100.3.*"
},
"type": "magento2-module",
"license": [
@@ -41,5 +41,6 @@
"psr-4": {
"Magento\\Checkout\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/CheckoutAgreements/Api/CheckoutAgreementsListInterface.php b/app/code/Magento/CheckoutAgreements/Api/CheckoutAgreementsListInterface.php
index b91701acef04d..a15191244a030 100644
--- a/app/code/Magento/CheckoutAgreements/Api/CheckoutAgreementsListInterface.php
+++ b/app/code/Magento/CheckoutAgreements/Api/CheckoutAgreementsListInterface.php
@@ -13,6 +13,7 @@
* search filters without predefined limitations.
*
* @api
+ * @since 100.3.0
*/
interface CheckoutAgreementsListInterface
{
@@ -21,6 +22,7 @@ interface CheckoutAgreementsListInterface
*
* @param \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria
* @return \Magento\CheckoutAgreements\Api\Data\AgreementInterface[]
+ * @since 100.3.0
*/
public function getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria) : array;
}
diff --git a/app/code/Magento/CheckoutAgreements/Api/CheckoutAgreementsRepositoryInterface.php b/app/code/Magento/CheckoutAgreements/Api/CheckoutAgreementsRepositoryInterface.php
index 5822b8f082fef..7dc757395a478 100644
--- a/app/code/Magento/CheckoutAgreements/Api/CheckoutAgreementsRepositoryInterface.php
+++ b/app/code/Magento/CheckoutAgreements/Api/CheckoutAgreementsRepositoryInterface.php
@@ -25,7 +25,7 @@ public function get($id, $storeId = null);
* Lists active checkout agreements.
*
* @return \Magento\CheckoutAgreements\Api\Data\AgreementInterface[]
- * @deprecated
+ * @deprecated 100.3.0
* @see \Magento\CheckoutAgreements\Api\CheckoutAgreementsListInterface::getList
*/
public function getList();
diff --git a/app/code/Magento/CheckoutAgreements/Block/Adminhtml/Agreement/Grid.php b/app/code/Magento/CheckoutAgreements/Block/Adminhtml/Agreement/Grid.php
index 4a35a58a41ff9..21b318cd00f09 100644
--- a/app/code/Magento/CheckoutAgreements/Block/Adminhtml/Agreement/Grid.php
+++ b/app/code/Magento/CheckoutAgreements/Block/Adminhtml/Agreement/Grid.php
@@ -12,7 +12,7 @@ class Grid extends \Magento\Backend\Block\Widget\Grid\Extended
{
/**
* @var \Magento\CheckoutAgreements\Model\ResourceModel\Agreement\CollectionFactory
- * @deprecated
+ * @deprecated 100.2.2
*/
protected $_collectionFactory;
diff --git a/app/code/Magento/CheckoutAgreements/composer.json b/app/code/Magento/CheckoutAgreements/composer.json
index 7408bf5cab3fe..4744d069ca9ea 100644
--- a/app/code/Magento/CheckoutAgreements/composer.json
+++ b/app/code/Magento/CheckoutAgreements/composer.json
@@ -6,11 +6,11 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-checkout": "*",
- "magento/module-quote": "*",
- "magento/module-store": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-checkout": "100.3.*",
+ "magento/module-quote": "101.1.*",
+ "magento/module-store": "101.0.*"
},
"type": "magento2-module",
"license": [
@@ -24,5 +24,6 @@
"psr-4": {
"Magento\\CheckoutAgreements\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/Cms/Api/GetBlockByIdentifierInterface.php b/app/code/Magento/Cms/Api/GetBlockByIdentifierInterface.php
index 7e8bbdc3e8d2f..70fadae42f327 100644
--- a/app/code/Magento/Cms/Api/GetBlockByIdentifierInterface.php
+++ b/app/code/Magento/Cms/Api/GetBlockByIdentifierInterface.php
@@ -8,6 +8,7 @@
/**
* Command to load the block data by specified identifier
* @api
+ * @since 103.0.0
*/
interface GetBlockByIdentifierInterface
{
@@ -18,6 +19,7 @@ interface GetBlockByIdentifierInterface
* @param int $storeId
* @throws \Magento\Framework\Exception\NoSuchEntityException
* @return \Magento\Cms\Api\Data\BlockInterface
+ * @since 103.0.0
*/
public function execute(string $identifier, int $storeId) : \Magento\Cms\Api\Data\BlockInterface;
}
diff --git a/app/code/Magento/Cms/Api/GetPageByIdentifierInterface.php b/app/code/Magento/Cms/Api/GetPageByIdentifierInterface.php
index f432f678d3a12..8f47de5266321 100644
--- a/app/code/Magento/Cms/Api/GetPageByIdentifierInterface.php
+++ b/app/code/Magento/Cms/Api/GetPageByIdentifierInterface.php
@@ -8,6 +8,7 @@
/**
* Command to load the page data by specified identifier
* @api
+ * @since 103.0.0
*/
interface GetPageByIdentifierInterface
{
@@ -18,6 +19,7 @@ interface GetPageByIdentifierInterface
* @param int $storeId
* @throws \Magento\Framework\Exception\NoSuchEntityException
* @return \Magento\Cms\Api\Data\PageInterface
+ * @since 103.0.0
*/
public function execute(string $identifier, int $storeId) : \Magento\Cms\Api\Data\PageInterface;
}
diff --git a/app/code/Magento/Cms/Api/GetUtilityPageIdentifiersInterface.php b/app/code/Magento/Cms/Api/GetUtilityPageIdentifiersInterface.php
index c6bf4c8404701..07c5f5c8a9e07 100644
--- a/app/code/Magento/Cms/Api/GetUtilityPageIdentifiersInterface.php
+++ b/app/code/Magento/Cms/Api/GetUtilityPageIdentifiersInterface.php
@@ -9,12 +9,14 @@
* Utility Cms Pages
*
* @api
+ * @since 102.0.4
*/
interface GetUtilityPageIdentifiersInterface
{
/**
* Get List Page Identifiers
* @return array
+ * @since 102.0.4
*/
public function execute();
}
diff --git a/app/code/Magento/Cms/Block/Block.php b/app/code/Magento/Cms/Block/Block.php
index c611f4b1e9f05..86cf059525e1e 100644
--- a/app/code/Magento/Cms/Block/Block.php
+++ b/app/code/Magento/Cms/Block/Block.php
@@ -13,6 +13,11 @@
*/
class Block extends AbstractBlock implements \Magento\Framework\DataObject\IdentityInterface
{
+ /**
+ * Prefix for cache key of CMS block
+ */
+ const CACHE_KEY_PREFIX = 'CMS_BLOCK_';
+
/**
* @var \Magento\Cms\Model\Template\FilterProvider
*/
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Page/InlineEdit.php b/app/code/Magento/Cms/Controller/Adminhtml/Page/InlineEdit.php
index 8774d7e69adfe..2237f35ed0b84 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Page/InlineEdit.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Page/InlineEdit.php
@@ -7,6 +7,7 @@
use Magento\Backend\App\Action\Context;
use Magento\Cms\Api\PageRepositoryInterface as PageRepository;
+use Magento\Framework\App\Action\HttpPostActionInterface;
use Magento\Framework\Controller\Result\JsonFactory;
use Magento\Cms\Api\Data\PageInterface;
@@ -15,7 +16,7 @@
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
-class InlineEdit extends \Magento\Backend\App\Action
+class InlineEdit extends \Magento\Backend\App\Action implements HttpPostActionInterface
{
/**
* Authorization level of a basic admin session
@@ -56,6 +57,8 @@ public function __construct(
}
/**
+ * Process the request
+ *
* @return \Magento\Framework\Controller\ResultInterface
* @throws \Magento\Framework\Exception\LocalizedException
*/
@@ -68,10 +71,12 @@ public function execute()
$postItems = $this->getRequest()->getParam('items', []);
if (!($this->getRequest()->getParam('isAjax') && count($postItems))) {
- return $resultJson->setData([
- 'messages' => [__('Please correct the data sent.')],
- 'error' => true,
- ]);
+ return $resultJson->setData(
+ [
+ 'messages' => [__('Please correct the data sent.')],
+ 'error' => true,
+ ]
+ );
}
foreach (array_keys($postItems) as $pageId) {
@@ -98,10 +103,12 @@ public function execute()
}
}
- return $resultJson->setData([
- 'messages' => $messages,
- 'error' => $error
- ]);
+ return $resultJson->setData(
+ [
+ 'messages' => $messages,
+ 'error' => $error
+ ]
+ );
}
/**
@@ -131,7 +138,7 @@ protected function filterPost($postData = [])
*/
protected function validatePost(array $pageData, \Magento\Cms\Model\Page $page, &$error, array &$messages)
{
- if (!($this->dataProcessor->validate($pageData) && $this->dataProcessor->validateRequireEntry($pageData))) {
+ if (!$this->dataProcessor->validateRequireEntry($pageData)) {
$error = true;
foreach ($this->messageManager->getMessages(true)->getItems() as $error) {
$messages[] = $this->getErrorWithPageId($page, $error->getText());
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Page/PostDataProcessor.php b/app/code/Magento/Cms/Controller/Adminhtml/Page/PostDataProcessor.php
index 9b8933c8dba2e..6ed4375dbc713 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Page/PostDataProcessor.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Page/PostDataProcessor.php
@@ -12,8 +12,7 @@
use Magento\Framework\Config\Dom\ValidationSchemaException;
/**
- * Class PostDataProcessor
- * @package Magento\Cms\Controller\Adminhtml\Page
+ * Processes form data
*/
class PostDataProcessor
{
@@ -80,6 +79,7 @@ public function filter($data)
*
* @param array $data
* @return bool Return FALSE if some item is invalid
+ * @deprecated 103.0.2
*/
public function validate($data)
{
diff --git a/app/code/Magento/Cms/Controller/Adminhtml/Page/Save.php b/app/code/Magento/Cms/Controller/Adminhtml/Page/Save.php
index 37cb45753174f..569f6b256163f 100644
--- a/app/code/Magento/Cms/Controller/Adminhtml/Page/Save.php
+++ b/app/code/Magento/Cms/Controller/Adminhtml/Page/Save.php
@@ -107,10 +107,6 @@ public function execute()
['page' => $model, 'request' => $this->getRequest()]
);
- if (!$this->dataProcessor->validate($data)) {
- return $resultRedirect->setPath('*/*/edit', ['page_id' => $model->getId(), '_current' => true]);
- }
-
try {
$this->pageRepository->save($model);
$this->messageManager->addSuccessMessage(__('You saved the page.'));
diff --git a/app/code/Magento/Cms/Model/BlockRepository.php b/app/code/Magento/Cms/Model/BlockRepository.php
index fa29cc9ff7631..d0df0d2b31caa 100644
--- a/app/code/Magento/Cms/Model/BlockRepository.php
+++ b/app/code/Magento/Cms/Model/BlockRepository.php
@@ -196,7 +196,7 @@ public function deleteById($blockId)
/**
* Retrieve collection processor
*
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
* @return CollectionProcessorInterface
*/
private function getCollectionProcessor()
diff --git a/app/code/Magento/Cms/Model/Page/Source/PageLayout.php b/app/code/Magento/Cms/Model/Page/Source/PageLayout.php
index 23a452c0fe58c..3413aa7b0dd6c 100644
--- a/app/code/Magento/Cms/Model/Page/Source/PageLayout.php
+++ b/app/code/Magento/Cms/Model/Page/Source/PageLayout.php
@@ -20,7 +20,7 @@ class PageLayout implements OptionSourceInterface
/**
* @var array
- * @deprecated since the cache is now handled by \Magento\Theme\Model\PageLayout\Config\Builder::$configFiles
+ * @deprecated 103.0.1 since the cache is now handled by \Magento\Theme\Model\PageLayout\Config\Builder::$configFiles
*/
protected $options;
diff --git a/app/code/Magento/Cms/Model/PageRepository.php b/app/code/Magento/Cms/Model/PageRepository.php
index 1d2959103fc5d..305700782dae4 100644
--- a/app/code/Magento/Cms/Model/PageRepository.php
+++ b/app/code/Magento/Cms/Model/PageRepository.php
@@ -270,7 +270,7 @@ public function deleteById($pageId)
/**
* Retrieve collection processor
*
- * @deprecated 101.1.0
+ * @deprecated 102.0.0
* @return CollectionProcessorInterface
*/
private function getCollectionProcessor()
diff --git a/app/code/Magento/Cms/Model/PageRepository/ValidationComposite.php b/app/code/Magento/Cms/Model/PageRepository/ValidationComposite.php
new file mode 100644
index 0000000000000..9fd94d4c11e1c
--- /dev/null
+++ b/app/code/Magento/Cms/Model/PageRepository/ValidationComposite.php
@@ -0,0 +1,92 @@
+repository = $repository;
+ $this->validators = $validators;
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function save(PageInterface $page)
+ {
+ foreach ($this->validators as $validator) {
+ $validator->validate($page);
+ }
+
+ return $this->repository->save($page);
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function getById($pageId)
+ {
+ return $this->repository->getById($pageId);
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function getList(SearchCriteriaInterface $searchCriteria)
+ {
+ return $this->repository->getList($searchCriteria);
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function delete(PageInterface $page)
+ {
+ return $this->repository->delete($page);
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function deleteById($pageId)
+ {
+ return $this->repository->deleteById($pageId);
+ }
+}
diff --git a/app/code/Magento/Cms/Model/PageRepository/Validator/LayoutUpdateValidator.php b/app/code/Magento/Cms/Model/PageRepository/Validator/LayoutUpdateValidator.php
new file mode 100644
index 0000000000000..721fd9efbdd91
--- /dev/null
+++ b/app/code/Magento/Cms/Model/PageRepository/Validator/LayoutUpdateValidator.php
@@ -0,0 +1,128 @@
+validatorFactory = $validatorFactory;
+ $this->validationState = $validationState;
+ }
+
+ /**
+ * Validate the data before saving
+ *
+ * @param PageInterface $page
+ * @throws LocalizedException
+ */
+ public function validate(PageInterface $page): void
+ {
+ $this->validateRequiredFields($page);
+ $this->validateLayoutUpdate($page);
+ $this->validateCustomLayoutUpdate($page);
+ }
+
+ /**
+ * Validate required fields
+ *
+ * @param PageInterface $page
+ * @throws LocalizedException
+ */
+ private function validateRequiredFields(PageInterface $page): void
+ {
+ if (empty($page->getTitle())) {
+ throw new LocalizedException(__('Required field "%1" is empty.', 'title'));
+ }
+ }
+
+ /**
+ * Validate layout update
+ *
+ * @param PageInterface $page
+ * @throws LocalizedException
+ */
+ private function validateLayoutUpdate(PageInterface $page): void
+ {
+ $layoutXmlValidator = $this->getLayoutValidator();
+
+ try {
+ if (!empty($page->getLayoutUpdateXml())
+ && !$layoutXmlValidator->isValid($page->getLayoutUpdateXml())
+ ) {
+ throw new LocalizedException(__('Layout update is invalid'));
+ }
+ } catch (ValidationException|ValidationSchemaException $e) {
+ throw new LocalizedException(__('Layout update is invalid'));
+ }
+ }
+
+ /**
+ * Validate custom layout update
+ *
+ * @param PageInterface $page
+ * @throws LocalizedException
+ */
+ private function validateCustomLayoutUpdate(PageInterface $page): void
+ {
+ $layoutXmlValidator = $this->getLayoutValidator();
+
+ try {
+ if (!empty($page->getCustomLayoutUpdateXml())
+ && !$layoutXmlValidator->isValid($page->getCustomLayoutUpdateXml())
+ ) {
+ throw new LocalizedException(__('Custom layout update is invalid'));
+ }
+ } catch (ValidationException|ValidationSchemaException $e) {
+ throw new LocalizedException(__('Custom layout update is invalid'));
+ }
+ }
+
+ /**
+ * Return a new validator
+ *
+ * @return Validator
+ */
+ private function getLayoutValidator(): Validator
+ {
+ return $this->validatorFactory->create(
+ [
+ 'validationState' => $this->validationState,
+ ]
+ );
+ }
+}
diff --git a/app/code/Magento/Cms/Model/PageRepository/ValidatorInterface.php b/app/code/Magento/Cms/Model/PageRepository/ValidatorInterface.php
new file mode 100644
index 0000000000000..ff5c7648a9fa2
--- /dev/null
+++ b/app/code/Magento/Cms/Model/PageRepository/ValidatorInterface.php
@@ -0,0 +1,27 @@
+
+
+
+
+
+ cms/wysiwyg/enabled
+ 0
+ enabled
+
+
+ cms/wysiwyg/enabled
+ 0
+ hidden
+
+
+ cms/wysiwyg/editor
+ 0
+ Magento_Tinymce3/tinymce3Adapter
+
+
+ cms/wysiwyg/editor
+ 0
+ mage/adminhtml/wysiwyg/tiny_mce/tinymce4Adapter
+
+
diff --git a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/InlineEditTest.php b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/InlineEditTest.php
index 9d51431b26d8f..7f2ff2086df91 100644
--- a/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/InlineEditTest.php
+++ b/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/InlineEditTest.php
@@ -102,10 +102,6 @@ public function prepareMocksForTestExecute()
->method('filter')
->with($postData[1])
->willReturnArgument(0);
- $this->dataProcessor->expects($this->once())
- ->method('validate')
- ->with($postData[1])
- ->willReturn(false);
$this->messageManager->expects($this->once())
->method('getMessages')
->with(true)
@@ -122,19 +118,23 @@ public function prepareMocksForTestExecute()
->willReturn('1');
$this->cmsPage->expects($this->atLeastOnce())
->method('getData')
- ->willReturn([
- 'layout' => '1column',
- 'identifier' => 'test-identifier'
- ]);
+ ->willReturn(
+ [
+ 'layout' => '1column',
+ 'identifier' => 'test-identifier'
+ ]
+ );
$this->cmsPage->expects($this->once())
->method('setData')
- ->with([
- 'layout' => '1column',
- 'title' => '404 Not Found',
- 'identifier' => 'no-route',
- 'custom_theme' => '1',
- 'custom_root_template' => '2'
- ]);
+ ->with(
+ [
+ 'layout' => '1column',
+ 'title' => '404 Not Found',
+ 'identifier' => 'no-route',
+ 'custom_theme' => '1',
+ 'custom_root_template' => '2'
+ ]
+ );
$this->jsonFactory->expects($this->once())
->method('create')
->willReturn($this->resultJson);
@@ -149,13 +149,15 @@ public function testExecuteWithLocalizedException()
->willThrowException(new \Magento\Framework\Exception\LocalizedException(__('LocalizedException')));
$this->resultJson->expects($this->once())
->method('setData')
- ->with([
- 'messages' => [
- '[Page ID: 1] Error message',
- '[Page ID: 1] LocalizedException'
- ],
- 'error' => true
- ])
+ ->with(
+ [
+ 'messages' => [
+ '[Page ID: 1] Error message',
+ '[Page ID: 1] LocalizedException'
+ ],
+ 'error' => true
+ ]
+ )
->willReturnSelf();
$this->assertSame($this->resultJson, $this->controller->execute());
@@ -170,13 +172,15 @@ public function testExecuteWithRuntimeException()
->willThrowException(new \RuntimeException(__('RuntimeException')));
$this->resultJson->expects($this->once())
->method('setData')
- ->with([
- 'messages' => [
- '[Page ID: 1] Error message',
- '[Page ID: 1] RuntimeException'
- ],
- 'error' => true
- ])
+ ->with(
+ [
+ 'messages' => [
+ '[Page ID: 1] Error message',
+ '[Page ID: 1] RuntimeException'
+ ],
+ 'error' => true
+ ]
+ )
->willReturnSelf();
$this->assertSame($this->resultJson, $this->controller->execute());
@@ -191,13 +195,15 @@ public function testExecuteWithException()
->willThrowException(new \Exception(__('Exception')));
$this->resultJson->expects($this->once())
->method('setData')
- ->with([
- 'messages' => [
- '[Page ID: 1] Error message',
- '[Page ID: 1] Something went wrong while saving the page.'
- ],
- 'error' => true
- ])
+ ->with(
+ [
+ 'messages' => [
+ '[Page ID: 1] Error message',
+ '[Page ID: 1] Something went wrong while saving the page.'
+ ],
+ 'error' => true
+ ]
+ )
->willReturnSelf();
$this->assertSame($this->resultJson, $this->controller->execute());
@@ -218,12 +224,14 @@ public function testExecuteWithoutData()
);
$this->resultJson->expects($this->once())
->method('setData')
- ->with([
- 'messages' => [
- 'Please correct the data sent.'
- ],
- 'error' => true
- ])
+ ->with(
+ [
+ 'messages' => [
+ 'Please correct the data sent.'
+ ],
+ 'error' => true
+ ]
+ )
->willReturnSelf();
$this->assertSame($this->resultJson, $this->controller->execute());
diff --git a/app/code/Magento/Cms/Test/Unit/Model/PageRepository/ValidationCompositeTest.php b/app/code/Magento/Cms/Test/Unit/Model/PageRepository/ValidationCompositeTest.php
new file mode 100644
index 0000000000000..f73396230a669
--- /dev/null
+++ b/app/code/Magento/Cms/Test/Unit/Model/PageRepository/ValidationCompositeTest.php
@@ -0,0 +1,145 @@
+subject = $this->createMock(PageRepositoryInterface::class);
+ }
+
+ /**
+ * @param $validators
+ * @expectedException \InvalidArgumentException
+ * @dataProvider constructorArgumentProvider
+ */
+ public function testConstructorValidation($validators)
+ {
+ new ValidationComposite($this->subject, $validators);
+ }
+
+ public function testSaveInvokesValidatorsWithSucess()
+ {
+ $validator1 = $this->createMock(ValidatorInterface::class);
+ $validator2 = $this->createMock(ValidatorInterface::class);
+ $page = $this->createMock(PageInterface::class);
+
+ // Assert each are called
+ $validator1
+ ->expects($this->once())
+ ->method('validate')
+ ->with($page);
+ $validator2
+ ->expects($this->once())
+ ->method('validate')
+ ->with($page);
+
+ // Assert that the success is called
+ $this->subject
+ ->expects($this->once())
+ ->method('save')
+ ->with($page)
+ ->willReturn('foo');
+
+ $composite = new ValidationComposite($this->subject, [$validator1, $validator2]);
+ $result = $composite->save($page);
+
+ self::assertSame('foo', $result);
+ }
+
+ /**
+ * @expectedException \Magento\Framework\Exception\LocalizedException
+ * @expectedExceptionMessage Oh no. That isn't right.
+ */
+ public function testSaveInvokesValidatorsWithErrors()
+ {
+ $validator1 = $this->createMock(ValidatorInterface::class);
+ $validator2 = $this->createMock(ValidatorInterface::class);
+ $page = $this->createMock(PageInterface::class);
+
+ // Assert the first is called
+ $validator1
+ ->expects($this->once())
+ ->method('validate')
+ ->with($page)
+ ->willThrowException(new LocalizedException(__('Oh no. That isn\'t right.')));
+
+ // Assert the second is NOT called
+ $validator2
+ ->expects($this->never())
+ ->method('validate');
+
+ // Assert that the success is NOT called
+ $this->subject
+ ->expects($this->never())
+ ->method('save');
+
+ $composite = new ValidationComposite($this->subject, [$validator1, $validator2]);
+ $composite->save($page);
+ }
+
+ /**
+ * @param $method
+ * @param $arg
+ * @dataProvider passthroughMethodDataProvider
+ */
+ public function testPassthroughMethods($method, $arg)
+ {
+ $this->subject
+ ->method($method)
+ ->with($arg)
+ ->willReturn('foo');
+
+ $composite = new ValidationComposite($this->subject, []);
+ $result = $composite->{$method}($arg);
+
+ self::assertSame('foo', $result);
+ }
+
+ public function constructorArgumentProvider()
+ {
+ return [
+ [[null], false],
+ [[''], false],
+ [['foo'], false],
+ [[new \stdClass()], false],
+ [[$this->createMock(ValidatorInterface::class), 'foo'], false],
+ ];
+ }
+
+ public function passthroughMethodDataProvider()
+ {
+ return [
+ ['save', $this->createMock(PageInterface::class)],
+ ['getById', 1],
+ ['getList', $this->createMock(SearchCriteriaInterface::class)],
+ ['delete', $this->createMock(PageInterface::class)],
+ ['deleteById', 1],
+ ];
+ }
+}
diff --git a/app/code/Magento/Cms/Test/Unit/Model/PageRepository/Validator/LayoutUpdateValidatorTest.php b/app/code/Magento/Cms/Test/Unit/Model/PageRepository/Validator/LayoutUpdateValidatorTest.php
new file mode 100644
index 0000000000000..487a90bb9a185
--- /dev/null
+++ b/app/code/Magento/Cms/Test/Unit/Model/PageRepository/Validator/LayoutUpdateValidatorTest.php
@@ -0,0 +1,124 @@
+createMock(ValidatorFactory::class);
+ $this->layoutValidator = $this->createMock(Validator::class);
+ $layoutValidatorState = $this->createMock(ValidationStateInterface::class);
+
+ $layoutValidatorFactory
+ ->method('create')
+ ->with(['validationState' => $layoutValidatorState])
+ ->willReturn($this->layoutValidator);
+
+ $this->validator = new LayoutUpdateValidator($layoutValidatorFactory, $layoutValidatorState);
+ }
+
+ /**
+ * @dataProvider validationSetDataProvider
+ */
+ public function testValidate($data, $expectedExceptionMessage, $layoutValidatorException, $isLayoutValid = false)
+ {
+ if ($expectedExceptionMessage) {
+ $this->expectException(LocalizedException::class);
+ $this->expectExceptionMessage($expectedExceptionMessage);
+ }
+
+ if ($layoutValidatorException) {
+ $this->layoutValidator
+ ->method('isValid')
+ ->with($data['getLayoutUpdateXml'] ?? $data['getCustomLayoutUpdateXml'])
+ ->willThrowException($layoutValidatorException);
+ } elseif (!empty($data['getLayoutUpdateXml'])) {
+ $this->layoutValidator
+ ->method('isValid')
+ ->with($data['getLayoutUpdateXml'])
+ ->willReturn($isLayoutValid);
+ } elseif (!empty($data['getCustomLayoutUpdateXml'])) {
+ $this->layoutValidator
+ ->method('isValid')
+ ->with($data['getCustomLayoutUpdateXml'])
+ ->willReturn($isLayoutValid);
+ }
+
+ $page = $this->createMock(PageInterface::class);
+ foreach ($data as $method => $value) {
+ $page
+ ->method($method)
+ ->willReturn($value);
+ }
+
+ self::assertNull($this->validator->validate($page));
+ }
+
+ public function validationSetDataProvider()
+ {
+ $layoutError = 'Layout update is invalid';
+ $customLayoutError = 'Custom layout update is invalid';
+ $validationException = new ValidationException('Invalid format');
+ $schemaException = new ValidationSchemaException(__('Invalid format'));
+
+ return [
+ [['getTitle' => ''], 'Required field "title" is empty.', null],
+ [['getTitle' => null], 'Required field "title" is empty.', null],
+ [['getTitle' => false], 'Required field "title" is empty.', null],
+ [['getTitle' => 0], 'Required field "title" is empty.', null],
+ [['getTitle' => '0'], 'Required field "title" is empty.', null],
+ [['getTitle' => []], 'Required field "title" is empty.', null],
+ [['getTitle' => 'foo', 'getLayoutUpdateXml' => ''], null, null],
+ [['getTitle' => 'foo', 'getLayoutUpdateXml' => null], null, null],
+ [['getTitle' => 'foo', 'getLayoutUpdateXml' => false], null, null],
+ [['getTitle' => 'foo', 'getLayoutUpdateXml' => 0], null, null],
+ [['getTitle' => 'foo', 'getLayoutUpdateXml' => '0'], null, null],
+ [['getTitle' => 'foo', 'getLayoutUpdateXml' => []], null, null],
+ [['getTitle' => 'foo', 'getLayoutUpdateXml' => 'foo'], $layoutError, null],
+ [['getTitle' => 'foo', 'getLayoutUpdateXml' => 'foo'], $layoutError, $validationException],
+ [['getTitle' => 'foo', 'getLayoutUpdateXml' => 'foo'], $layoutError, $schemaException],
+ [['getTitle' => 'foo', 'getLayoutUpdateXml' => 'foo'], null, null, true],
+ [['getTitle' => 'foo', 'getCustomLayoutUpdateXml' => ''], null, null],
+ [['getTitle' => 'foo', 'getCustomLayoutUpdateXml' => null], null, null],
+ [['getTitle' => 'foo', 'getCustomLayoutUpdateXml' => false], null, null],
+ [['getTitle' => 'foo', 'getCustomLayoutUpdateXml' => 0], null, null],
+ [['getTitle' => 'foo', 'getCustomLayoutUpdateXml' => '0'], null, null],
+ [['getTitle' => 'foo', 'getCustomLayoutUpdateXml' => []], null, null],
+ [['getTitle' => 'foo', 'getCustomLayoutUpdateXml' => 'foo'], $customLayoutError, null],
+ [['getTitle' => 'foo', 'getCustomLayoutUpdateXml' => 'foo'], $customLayoutError, $validationException],
+ [['getTitle' => 'foo', 'getCustomLayoutUpdateXml' => 'foo'], $customLayoutError, $schemaException],
+ [['getTitle' => 'foo', 'getCustomLayoutUpdateXml' => 'foo'], null, null, true],
+ ];
+ }
+}
diff --git a/app/code/Magento/Cms/Test/Unit/Ui/Component/Listing/Column/BlockActionsTest.php b/app/code/Magento/Cms/Test/Unit/Ui/Component/Listing/Column/BlockActionsTest.php
index 6981a7983049e..2f50af98163dc 100644
--- a/app/code/Magento/Cms/Test/Unit/Ui/Component/Listing/Column/BlockActionsTest.php
+++ b/app/code/Magento/Cms/Test/Unit/Ui/Component/Listing/Column/BlockActionsTest.php
@@ -56,10 +56,13 @@ protected function setUp()
->setMethods(['escapeHtmlAttr'])
->getMock();
- $this->blockActions = $objectManager->getObject(BlockActions::class, [
- 'context' => $context,
- 'urlBuilder' => $this->urlBuilder
- ]);
+ $this->blockActions = $objectManager->getObject(
+ BlockActions::class,
+ [
+ 'context' => $context,
+ 'urlBuilder' => $this->urlBuilder,
+ ]
+ );
$objectManager->setBackwardCompatibleProperty($this->blockActions, 'escaper', $this->escaper);
}
@@ -93,6 +96,7 @@ public function testPrepareDataSource()
'edit' => [
'href' => 'test/url/edit',
'label' => __('Edit'),
+ '__disableTmpl' => true,
],
'delete' => [
'href' => 'test/url/delete',
@@ -100,8 +104,10 @@ public function testPrepareDataSource()
'confirm' => [
'title' => __('Delete %1', $title),
'message' => __('Are you sure you want to delete a %1 record?', $title),
+ '__disableTmpl' => true,
],
'post' => true,
+ '__disableTmpl' => true,
],
],
],
diff --git a/app/code/Magento/Cms/Test/Unit/Ui/Component/Listing/Column/PageActionsTest.php b/app/code/Magento/Cms/Test/Unit/Ui/Component/Listing/Column/PageActionsTest.php
index 32bbeed0788a3..53d8ee5220768 100644
--- a/app/code/Magento/Cms/Test/Unit/Ui/Component/Listing/Column/PageActionsTest.php
+++ b/app/code/Magento/Cms/Test/Unit/Ui/Component/Listing/Column/PageActionsTest.php
@@ -65,6 +65,7 @@ public function testPrepareItemsByPageId()
'edit' => [
'href' => 'test/url/edit',
'label' => __('Edit'),
+ '__disableTmpl' => true,
],
'delete' => [
'href' => 'test/url/delete',
@@ -75,6 +76,7 @@ public function testPrepareItemsByPageId()
'__disableTmpl' => true,
],
'post' => true,
+ '__disableTmpl' => true,
],
],
],
@@ -84,7 +86,6 @@ public function testPrepareItemsByPageId()
->method('escapeHtml')
->with($title)
->willReturn($title);
-
// Configure mocks and object data
$urlBuilderMock->expects($this->any())
->method('getUrl')
@@ -106,7 +107,6 @@ public function testPrepareItemsByPageId()
],
]
);
-
$model->setName($name);
$items = $model->prepareDataSource($items);
// Run test
diff --git a/app/code/Magento/Cms/Ui/Component/Listing/Column/BlockActions.php b/app/code/Magento/Cms/Ui/Component/Listing/Column/BlockActions.php
index 6e9eef47281c0..a2276699c2938 100644
--- a/app/code/Magento/Cms/Ui/Component/Listing/Column/BlockActions.php
+++ b/app/code/Magento/Cms/Ui/Component/Listing/Column/BlockActions.php
@@ -70,6 +70,7 @@ public function prepareDataSource(array $dataSource)
]
),
'label' => __('Edit'),
+ '__disableTmpl' => true,
],
'delete' => [
'href' => $this->urlBuilder->getUrl(
@@ -82,8 +83,10 @@ public function prepareDataSource(array $dataSource)
'confirm' => [
'title' => __('Delete %1', $title),
'message' => __('Are you sure you want to delete a %1 record?', $title),
+ '__disableTmpl' => true,
],
'post' => true,
+ '__disableTmpl' => true,
],
];
}
diff --git a/app/code/Magento/Cms/Ui/Component/Listing/Column/PageActions.php b/app/code/Magento/Cms/Ui/Component/Listing/Column/PageActions.php
index cfac3bbf54956..ca86aec033554 100644
--- a/app/code/Magento/Cms/Ui/Component/Listing/Column/PageActions.php
+++ b/app/code/Magento/Cms/Ui/Component/Listing/Column/PageActions.php
@@ -77,7 +77,8 @@ public function prepareDataSource(array $dataSource)
if (isset($item['page_id'])) {
$item[$name]['edit'] = [
'href' => $this->urlBuilder->getUrl($this->editUrl, ['page_id' => $item['page_id']]),
- 'label' => __('Edit')
+ 'label' => __('Edit'),
+ '__disableTmpl' => true,
];
$title = $this->getEscaper()->escapeHtml($item['title']);
$item[$name]['delete'] = [
@@ -89,6 +90,7 @@ public function prepareDataSource(array $dataSource)
'__disableTmpl' => true,
],
'post' => true,
+ '__disableTmpl' => true,
];
}
if (isset($item['identifier'])) {
@@ -98,7 +100,8 @@ public function prepareDataSource(array $dataSource)
isset($item['_first_store_id']) ? $item['_first_store_id'] : null,
isset($item['store_code']) ? $item['store_code'] : null
),
- 'label' => __('View')
+ 'label' => __('View'),
+ '__disableTmpl' => true,
];
}
}
diff --git a/app/code/Magento/Cms/composer.json b/app/code/Magento/Cms/composer.json
index b80ab60a7ec64..9c3bae81ccfab 100644
--- a/app/code/Magento/Cms/composer.json
+++ b/app/code/Magento/Cms/composer.json
@@ -6,20 +6,20 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-catalog": "*",
- "magento/module-email": "*",
- "magento/module-media-storage": "*",
- "magento/module-store": "*",
- "magento/module-theme": "*",
- "magento/module-ui": "*",
- "magento/module-variable": "*",
- "magento/module-widget": "*",
- "magento/module-authorization": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-email": "101.0.*",
+ "magento/module-media-storage": "100.3.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-theme": "101.0.*",
+ "magento/module-ui": "101.1.*",
+ "magento/module-variable": "100.3.*",
+ "magento/module-widget": "101.1.*",
+ "magento/module-authorization": "100.3.*"
},
"suggest": {
- "magento/module-cms-sample-data": "*"
+ "magento/module-cms-sample-data": "Sample Data version: 100.3.*"
},
"type": "magento2-module",
"license": [
@@ -33,5 +33,6 @@
"psr-4": {
"Magento\\Cms\\": ""
}
- }
+ },
+ "version": "103.0.2-p2"
}
diff --git a/app/code/Magento/Cms/etc/di.xml b/app/code/Magento/Cms/etc/di.xml
index 66b0edf6e1eac..94b004a9d4b86 100644
--- a/app/code/Magento/Cms/etc/di.xml
+++ b/app/code/Magento/Cms/etc/di.xml
@@ -15,7 +15,7 @@
-
+
@@ -232,5 +232,14 @@
+
+
+
+ Magento\Cms\Model\PageRepository
+
+ - Magento\Cms\Model\PageRepository\Validator\LayoutUpdateValidator
+
+
+
diff --git a/app/code/Magento/CmsGraphQl/composer.json b/app/code/Magento/CmsGraphQl/composer.json
index 18a6f1aa95e37..5172f065d94fa 100644
--- a/app/code/Magento/CmsGraphQl/composer.json
+++ b/app/code/Magento/CmsGraphQl/composer.json
@@ -4,14 +4,14 @@
"type": "magento2-module",
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-cms": "*",
- "magento/module-widget": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-cms": "103.0.*",
+ "magento/module-widget": "101.1.*"
},
"suggest": {
- "magento/module-graph-ql": "*",
- "magento/module-graph-ql-cache": "*",
- "magento/module-store-graph-ql": "*"
+ "magento/module-graph-ql": "100.3.*",
+ "magento/module-graph-ql-cache": "100.3.*",
+ "magento/module-store-graph-ql": "100.3.*"
},
"license": [
"OSL-3.0",
@@ -24,5 +24,6 @@
"psr-4": {
"Magento\\CmsGraphQl\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/CmsUrlRewrite/composer.json b/app/code/Magento/CmsUrlRewrite/composer.json
index d4d2942a786f2..99a4528925dd6 100644
--- a/app/code/Magento/CmsUrlRewrite/composer.json
+++ b/app/code/Magento/CmsUrlRewrite/composer.json
@@ -6,10 +6,10 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-cms": "*",
- "magento/module-store": "*",
- "magento/module-url-rewrite": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-cms": "103.0.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-url-rewrite": "101.1.*"
},
"type": "magento2-module",
"license": [
@@ -23,5 +23,6 @@
"psr-4": {
"Magento\\CmsUrlRewrite\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/CmsUrlRewriteGraphQl/composer.json b/app/code/Magento/CmsUrlRewriteGraphQl/composer.json
index 03436d39190ac..b1f730ac2726e 100644
--- a/app/code/Magento/CmsUrlRewriteGraphQl/composer.json
+++ b/app/code/Magento/CmsUrlRewriteGraphQl/composer.json
@@ -4,14 +4,14 @@
"type": "magento2-module",
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-cms": "*",
- "magento/module-store": "*",
- "magento/module-url-rewrite-graph-ql": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-cms": "103.0.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-url-rewrite-graph-ql": "100.3.*"
},
"suggest": {
- "magento/module-cms-url-rewrite": "*",
- "magento/module-catalog-graph-ql": "*"
+ "magento/module-cms-url-rewrite": "100.3.*",
+ "magento/module-catalog-graph-ql": "100.3.*"
},
"license": [
"OSL-3.0",
@@ -24,5 +24,6 @@
"psr-4": {
"Magento\\CmsUrlRewriteGraphQl\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/Config/App/Config/Source/EnvironmentConfigSource.php b/app/code/Magento/Config/App/Config/Source/EnvironmentConfigSource.php
index d2b87b1ae2841..10f9af9268ae6 100644
--- a/app/code/Magento/Config/App/Config/Source/EnvironmentConfigSource.php
+++ b/app/code/Magento/Config/App/Config/Source/EnvironmentConfigSource.php
@@ -15,7 +15,7 @@
* Class for retrieving configurations from environment variables.
*
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
class EnvironmentConfigSource implements ConfigSourceInterface
{
@@ -47,7 +47,7 @@ public function __construct(
/**
* @inheritdoc
- * @since 100.2.0
+ * @since 101.0.0
*/
public function get($path = '')
{
diff --git a/app/code/Magento/Config/App/Config/Source/InitialSnapshotConfigSource.php b/app/code/Magento/Config/App/Config/Source/InitialSnapshotConfigSource.php
index 40978320797d4..a22639ec51641 100644
--- a/app/code/Magento/Config/App/Config/Source/InitialSnapshotConfigSource.php
+++ b/app/code/Magento/Config/App/Config/Source/InitialSnapshotConfigSource.php
@@ -12,7 +12,7 @@
/**
* The source with previously imported configuration.
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
class InitialSnapshotConfigSource implements ConfigSourceInterface
{
@@ -45,7 +45,7 @@ public function __construct(FlagManager $flagManager, DataObjectFactory $dataObj
* Snapshots are stored in flags.
*
* {@inheritdoc}
- * @since 100.2.0
+ * @since 101.0.0
*/
public function get($path = '')
{
diff --git a/app/code/Magento/Config/Block/System/Config/Edit.php b/app/code/Magento/Config/Block/System/Config/Edit.php
index ba27cb33b20f0..7955f28f59f4e 100644
--- a/app/code/Magento/Config/Block/System/Config/Edit.php
+++ b/app/code/Magento/Config/Block/System/Config/Edit.php
@@ -121,6 +121,7 @@ public function getSaveUrl()
/**
* @return string
+ * @since 101.1.0
*/
public function getConfigSearchParamsJson()
{
diff --git a/app/code/Magento/Config/Block/System/Config/Form.php b/app/code/Magento/Config/Block/System/Config/Form.php
index 8378c058c1955..8e07ef8b45203 100644
--- a/app/code/Magento/Config/Block/System/Config/Form.php
+++ b/app/code/Magento/Config/Block/System/Config/Form.php
@@ -838,10 +838,10 @@ private function getAppConfigDataValue($path)
* Gets instance of ElementVisibilityInterface.
*
* @return ElementVisibilityInterface
- * @deprecated 100.2.0 Added to not break backward compatibility of the constructor signature
+ * @deprecated 101.0.0 Added to not break backward compatibility of the constructor signature
* by injecting the new dependency directly.
* The method can be removed in a future major release, when constructor signature can be changed.
- * @since 100.2.0
+ * @since 101.0.0
*/
public function getElementVisibility()
{
diff --git a/app/code/Magento/Config/Block/System/Config/Form/Field/FieldArray/AbstractFieldArray.php b/app/code/Magento/Config/Block/System/Config/Form/Field/FieldArray/AbstractFieldArray.php
index 3bb4632ee4517..cc6b7e4b441dc 100644
--- a/app/code/Magento/Config/Block/System/Config/Form/Field/FieldArray/AbstractFieldArray.php
+++ b/app/code/Magento/Config/Block/System/Config/Form/Field/FieldArray/AbstractFieldArray.php
@@ -282,7 +282,7 @@ public function getColumns()
/**
* @return string
- * @since 100.2.0
+ * @since 101.0.0
*/
public function getAddButtonLabel()
{
diff --git a/app/code/Magento/Config/Block/System/Config/Form/Fieldset/Modules/DisableOutput.php b/app/code/Magento/Config/Block/System/Config/Form/Fieldset/Modules/DisableOutput.php
index 99fa7b5addee8..4c2e6873d9593 100644
--- a/app/code/Magento/Config/Block/System/Config/Form/Fieldset/Modules/DisableOutput.php
+++ b/app/code/Magento/Config/Block/System/Config/Form/Fieldset/Modules/DisableOutput.php
@@ -10,7 +10,7 @@
* on the store settings page.
*
* @method \Magento\Config\Block\System\Config\Form getForm()
- * @deprecated 100.2.0 Magento does not support disabling/enabling modules output from the Admin Panel since 2.2.0
+ * @deprecated 101.0.0 Magento does not support disabling/enabling modules output from the Admin Panel since 2.2.0
* version. Module output can still be enabled/disabled in configuration files. However, this functionality should
* not be used in future development. Module design should explicitly state dependencies to avoid requiring output
* disabling. This functionality will temporarily be kept in Magento core, as there are unresolved modularity
@@ -22,25 +22,25 @@ class DisableOutput extends \Magento\Config\Block\System\Config\Form\Fieldset
{
/**
* @var \Magento\Framework\DataObject
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
protected $_dummyElement;
/**
* @var \Magento\Config\Block\System\Config\Form\Field
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
protected $_fieldRenderer;
/**
* @var array
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
protected $_values;
/**
* @var \Magento\Framework\Module\ModuleListInterface
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
protected $_moduleList;
@@ -64,7 +64,7 @@ public function __construct(
/**
* {@inheritdoc}
- * @deprecated 100.2.0 Magento does not support disabling/enabling modules output from the Admin Panel since 2.2.0
+ * @deprecated 101.0.0 Magento does not support disabling/enabling modules output from the Admin Panel since 2.2.0
* version. Module output can still be enabled/disabled in configuration files. However, this functionality should
* not be used in future development. Module design should explicitly state dependencies to avoid requiring output
* disabling. This functionality will temporarily be kept in Magento core, as there are unresolved modularity
@@ -97,7 +97,7 @@ public function render(\Magento\Framework\Data\Form\Element\AbstractElement $ele
}
/**
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @return \Magento\Framework\DataObject
*/
protected function _getDummyElement()
@@ -109,7 +109,7 @@ protected function _getDummyElement()
}
/**
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @return \Magento\Config\Block\System\Config\Form\Field
*/
protected function _getFieldRenderer()
@@ -123,7 +123,7 @@ protected function _getFieldRenderer()
}
/**
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @return array
*/
protected function _getValues()
@@ -140,7 +140,7 @@ protected function _getValues()
/**
* @param \Magento\Framework\Data\Form\Element\Fieldset $fieldset
* @param string $moduleName
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @return mixed
*/
protected function _getFieldHtml($fieldset, $moduleName)
diff --git a/app/code/Magento/Config/Console/Command/ConfigSet/ConfigSetProcessorFactory.php b/app/code/Magento/Config/Console/Command/ConfigSet/ConfigSetProcessorFactory.php
index 1b287573a9285..e95797658bb33 100644
--- a/app/code/Magento/Config/Console/Command/ConfigSet/ConfigSetProcessorFactory.php
+++ b/app/code/Magento/Config/Console/Command/ConfigSet/ConfigSetProcessorFactory.php
@@ -17,7 +17,7 @@
* @see ConfigSetCommand
*
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
class ConfigSetProcessorFactory
{
@@ -68,7 +68,7 @@ public function __construct(
* @return ConfigSetProcessorInterface New processor instance
* @throws ConfigurationMismatchException If processor type is not exists in processors array
* or declared class has wrong implementation
- * @since 100.2.0
+ * @since 101.0.0
*/
public function create($processorName)
{
diff --git a/app/code/Magento/Config/Console/Command/ConfigSet/ConfigSetProcessorInterface.php b/app/code/Magento/Config/Console/Command/ConfigSet/ConfigSetProcessorInterface.php
index 01aa03b188e62..0abebb604d36f 100644
--- a/app/code/Magento/Config/Console/Command/ConfigSet/ConfigSetProcessorInterface.php
+++ b/app/code/Magento/Config/Console/Command/ConfigSet/ConfigSetProcessorInterface.php
@@ -14,7 +14,7 @@
* @see ConfigSetCommand
*
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
interface ConfigSetProcessorInterface
{
@@ -27,7 +27,7 @@ interface ConfigSetProcessorInterface
* @param string $scopeCode The scope code
* @return void
* @throws CouldNotSaveException An exception on processing error
- * @since 100.2.0
+ * @since 101.0.0
*/
public function process($path, $value, $scope, $scopeCode);
}
diff --git a/app/code/Magento/Config/Console/Command/ConfigSet/DefaultProcessor.php b/app/code/Magento/Config/Console/Command/ConfigSet/DefaultProcessor.php
index c622a48b7f2c8..d49d65774d0d2 100644
--- a/app/code/Magento/Config/Console/Command/ConfigSet/DefaultProcessor.php
+++ b/app/code/Magento/Config/Console/Command/ConfigSet/DefaultProcessor.php
@@ -21,7 +21,7 @@
*
* @inheritdoc
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
class DefaultProcessor implements ConfigSetProcessorInterface
{
@@ -76,7 +76,7 @@ public function __construct(
* Requires installed application.
*
* @inheritdoc
- * @since 100.2.0
+ * @since 101.0.0
*/
public function process($path, $value, $scope, $scopeCode)
{
diff --git a/app/code/Magento/Config/Console/Command/ConfigSet/ProcessorFacade.php b/app/code/Magento/Config/Console/Command/ConfigSet/ProcessorFacade.php
index fcd7c0d5335b1..aa33c96c7e0e2 100644
--- a/app/code/Magento/Config/Console/Command/ConfigSet/ProcessorFacade.php
+++ b/app/code/Magento/Config/Console/Command/ConfigSet/ProcessorFacade.php
@@ -24,7 +24,7 @@
* @see ConfigSetCommand
*
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
class ProcessorFacade
{
@@ -99,8 +99,8 @@ public function __construct(
* @param boolean $lock The lock flag
* @return string Processor response message
* @throws ValidatorException If some validation is wrong
- * @since 100.2.0
- * @deprecated
+ * @since 101.0.0
+ * @deprecated 101.0.4
* @see processWithLockTarget()
*/
public function process($path, $value, $scope, $scopeCode, $lock)
@@ -119,6 +119,7 @@ public function process($path, $value, $scope, $scopeCode, $lock)
* @param string $lockTarget
* @return string Processor response message
* @throws ValidatorException If some validation is wrong
+ * @since 101.0.4
*/
public function processWithLockTarget(
$path,
diff --git a/app/code/Magento/Config/Console/Command/ConfigSetCommand.php b/app/code/Magento/Config/Console/Command/ConfigSetCommand.php
index cb79daddbf5f9..6e8ca7a709b61 100644
--- a/app/code/Magento/Config/Console/Command/ConfigSetCommand.php
+++ b/app/code/Magento/Config/Console/Command/ConfigSetCommand.php
@@ -24,7 +24,7 @@
*
* @api
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- * @since 100.2.0
+ * @since 101.0.0
*/
class ConfigSetCommand extends Command
{
@@ -86,7 +86,7 @@ public function __construct(
/**
* @inheritdoc
- * @since 100.2.0
+ * @since 101.0.0
*/
protected function configure()
{
@@ -140,7 +140,7 @@ protected function configure()
* Creates and run appropriate processor, depending on input options.
*
* {@inheritdoc}
- * @since 100.2.0
+ * @since 101.0.0
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
diff --git a/app/code/Magento/Config/Console/Command/ConfigShow/ValueProcessor.php b/app/code/Magento/Config/Console/Command/ConfigShow/ValueProcessor.php
index aeb57010e4969..2465eecec71dc 100644
--- a/app/code/Magento/Config/Console/Command/ConfigShow/ValueProcessor.php
+++ b/app/code/Magento/Config/Console/Command/ConfigShow/ValueProcessor.php
@@ -19,7 +19,7 @@
* Class processes values using backend model which declared in system.xml.
*
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
class ValueProcessor
{
@@ -83,7 +83,7 @@ public function __construct(
* @param string $value The value to process
* @param string $path The configuration path for getting backend model. E.g. scope_id/group_id/field_id
* @return string processed value result
- * @since 100.2.0
+ * @since 101.0.0
*/
public function process($scope, $scopeCode, $value, $path)
{
diff --git a/app/code/Magento/Config/Console/Command/ConfigShowCommand.php b/app/code/Magento/Config/Console/Command/ConfigShowCommand.php
index 2d3dabdb24e67..50214d38d2d35 100644
--- a/app/code/Magento/Config/Console/Command/ConfigShowCommand.php
+++ b/app/code/Magento/Config/Console/Command/ConfigShowCommand.php
@@ -21,7 +21,7 @@
* Command provides possibility to show saved system configuration.
*
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
class ConfigShowCommand extends Command
{
@@ -100,7 +100,7 @@ public function __construct(
/**
* @inheritdoc
- * @since 100.2.0
+ * @since 101.0.0
*/
protected function configure()
{
@@ -137,7 +137,7 @@ protected function configure()
* or scope/scope-code doesn't pass validation.
*
* {@inheritdoc}
- * @since 100.2.0
+ * @since 101.0.0
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
diff --git a/app/code/Magento/Config/Controller/Adminhtml/System/AbstractConfig.php b/app/code/Magento/Config/Controller/Adminhtml/System/AbstractConfig.php
index 7b626ccbd333c..69dbb06371a45 100644
--- a/app/code/Magento/Config/Controller/Adminhtml/System/AbstractConfig.php
+++ b/app/code/Magento/Config/Controller/Adminhtml/System/AbstractConfig.php
@@ -30,7 +30,7 @@ abstract class AbstractConfig extends \Magento\Backend\App\AbstractAction
protected $_configStructure;
/**
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
protected $_sectionChecker;
diff --git a/app/code/Magento/Config/Controller/Adminhtml/System/ConfigSectionChecker.php b/app/code/Magento/Config/Controller/Adminhtml/System/ConfigSectionChecker.php
index 0af19b83a5a3f..b656498e97dba 100644
--- a/app/code/Magento/Config/Controller/Adminhtml/System/ConfigSectionChecker.php
+++ b/app/code/Magento/Config/Controller/Adminhtml/System/ConfigSectionChecker.php
@@ -9,7 +9,7 @@
use Magento\Framework\Exception\NotFoundException;
/**
- * @deprecated 100.2.0 - unused class.
+ * @deprecated 101.0.0 - unused class.
* @see \Magento\Config\Model\Config\Structure\Element\Section::isAllowed()
*/
class ConfigSectionChecker
diff --git a/app/code/Magento/Config/Model/Config.php b/app/code/Magento/Config/Model/Config.php
index b5dbf97f7953d..356c6ca17da18 100644
--- a/app/code/Magento/Config/Model/Config.php
+++ b/app/code/Magento/Config/Model/Config.php
@@ -287,8 +287,8 @@ private function getField(string $sectionId, string $groupId, string $fieldId):
*
* @param Field $field
* @param string $fieldId Need for support of clone_field feature
- * @param array &$oldConfig Need for compatibility with _processGroup()
- * @param array &$extraOldGroups Need for compatibility with _processGroup()
+ * @param array $oldConfig Need for compatibility with _processGroup()
+ * @param array $extraOldGroups Need for compatibility with _processGroup()
* @return string
*/
private function getFieldPath(Field $field, string $fieldId, array &$oldConfig, array &$extraOldGroups): string
@@ -337,8 +337,8 @@ private function isValueChanged(array $oldConfig, string $path, array $fieldData
* @param string $sectionId
* @param string $groupId
* @param array $groupData
- * @param array &$oldConfig
- * @param array &$extraOldGroups
+ * @param array $oldConfig
+ * @param array $extraOldGroups
* @return array
*/
private function getChangedPaths(
@@ -384,8 +384,8 @@ private function getChangedPaths(
* @param array $groupData
* @param array $groups
* @param string $sectionPath
- * @param array &$extraOldGroups
- * @param array &$oldConfig
+ * @param array $extraOldGroups
+ * @param array $oldConfig
* @param \Magento\Framework\DB\Transaction $saveTransaction
* @param \Magento\Framework\DB\Transaction $deleteTransaction
* @return void
@@ -546,6 +546,8 @@ public function setDataByPath($path, $value)
}
$section = array_shift($pathParts);
+ $this->setData('section', $section);
+
$data = [
'fields' => [
array_pop($pathParts) => ['value' => $value],
@@ -558,8 +560,8 @@ public function setDataByPath($path, $value)
],
];
}
- $data['section'] = $section;
- $this->addData($data);
+ $groups = array_replace_recursive((array) $this->getData('groups'), $data['groups']);
+ $this->setData('groups', $groups);
}
/**
@@ -679,7 +681,7 @@ protected function _checkSingleStoreMode(
* Get config data value
*
* @param string $path
- * @param null|bool &$inherit
+ * @param null|bool $inherit
* @param null|array $configData
* @return \Magento\Framework\Simplexml\Element
*/
diff --git a/app/code/Magento/Config/Model/Config/Backend/Admin/Robots.php b/app/code/Magento/Config/Model/Config/Backend/Admin/Robots.php
index 7bbbafe826422..e6acd431be3d5 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Admin/Robots.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Admin/Robots.php
@@ -13,7 +13,7 @@
use Magento\Framework\App\ObjectManager;
/**
- * @deprecated 100.2.0 robots.txt file is no longer stored in filesystem. It generates as response on request.
+ * @deprecated 100.1.7 robots.txt file is no longer stored in filesystem. It generates as response on request.
*/
class Robots extends \Magento\Framework\App\Config\Value
{
diff --git a/app/code/Magento/Config/Model/Config/Backend/Baseurl.php b/app/code/Magento/Config/Model/Config/Backend/Baseurl.php
index a218d2b0d07e6..5e43e53f1b64f 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Baseurl.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Baseurl.php
@@ -231,7 +231,7 @@ public function afterSave()
/**
* Get URL Validator
*
- * @deprecated 100.2.0
+ * @deprecated 100.1.12
* @return UrlValidator
*/
private function getUrlValidator()
diff --git a/app/code/Magento/Config/Model/Config/Backend/Currency/Allow.php b/app/code/Magento/Config/Model/Config/Backend/Currency/Allow.php
index 7ff1d367c5e58..b0db20e2fb25a 100644
--- a/app/code/Magento/Config/Model/Config/Backend/Currency/Allow.php
+++ b/app/code/Magento/Config/Model/Config/Backend/Currency/Allow.php
@@ -81,7 +81,7 @@ public function afterSave()
/**
* @inheritdoc
- * @since 100.2.0
+ * @since 101.0.0
*/
protected function _getAllowedCurrencies()
{
diff --git a/app/code/Magento/Config/Model/Config/Export/ExcludeList.php b/app/code/Magento/Config/Model/Config/Export/ExcludeList.php
index e556c42f66a99..e7efb5ac50b79 100644
--- a/app/code/Magento/Config/Model/Config/Export/ExcludeList.php
+++ b/app/code/Magento/Config/Model/Config/Export/ExcludeList.php
@@ -8,7 +8,7 @@
/**
* Class ExcludeList contains list of config fields which should be excluded from config export file.
*
- * @deprecated 100.2.0 because in Magento since version 2.2.0 there are several
+ * @deprecated 101.0.0 because in Magento since version 2.2.0 there are several
* types for configuration fields that require special processing.
* @see \Magento\Config\Model\Config\TypePool
*/
@@ -32,7 +32,7 @@ public function __construct(array $configs = [])
*
* @param string $path
* @return bool
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
public function isPresent($path)
{
@@ -43,7 +43,7 @@ public function isPresent($path)
* Retrieves all excluded field paths for export
*
* @return array
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
public function get()
{
diff --git a/app/code/Magento/Config/Model/Config/Importer.php b/app/code/Magento/Config/Model/Config/Importer.php
index a54af2ead5048..a870b5f2403c3 100644
--- a/app/code/Magento/Config/Model/Config/Importer.php
+++ b/app/code/Magento/Config/Model/Config/Importer.php
@@ -23,7 +23,7 @@
* {@inheritdoc}
* @see \Magento\Deploy\Console\Command\App\ConfigImport\Importer
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
class Importer implements ImporterInterface
{
@@ -103,7 +103,7 @@ public function __construct(
* or current value is different from previously imported.
*
* {@inheritdoc}
- * @since 100.2.0
+ * @since 101.0.0
*/
public function import(array $data)
{
@@ -145,7 +145,7 @@ public function import(array $data)
/**
* @inheritdoc
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
- * @since 100.2.0
+ * @since 101.0.0
*/
public function getWarningMessages(array $data)
{
diff --git a/app/code/Magento/Config/Model/Config/Parser/Comment.php b/app/code/Magento/Config/Model/Config/Parser/Comment.php
index b46b2308f8df5..4a749ba030d80 100644
--- a/app/code/Magento/Config/Model/Config/Parser/Comment.php
+++ b/app/code/Magento/Config/Model/Config/Parser/Comment.php
@@ -19,7 +19,7 @@
* It is used to parse config paths from
* comment section in provided configuration file.
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
class Comment implements CommentParserInterface
{
@@ -84,7 +84,7 @@ public function __construct(
* @param string $fileName the basename of file
* @return array
* @throws FileSystemException
- * @since 100.2.0
+ * @since 101.0.0
*/
public function execute($fileName)
{
diff --git a/app/code/Magento/Config/Model/Config/PathValidator.php b/app/code/Magento/Config/Model/Config/PathValidator.php
index 68363bef69d91..bc4f863b7b05f 100644
--- a/app/code/Magento/Config/Model/Config/PathValidator.php
+++ b/app/code/Magento/Config/Model/Config/PathValidator.php
@@ -11,7 +11,7 @@
/**
* Validates the config path by config structure schema.
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
class PathValidator
{
@@ -36,7 +36,7 @@ public function __construct(Structure $structure)
* @param string $path The config path
* @return true The result of validation
* @throws ValidatorException If provided path is not valid
- * @since 100.2.0
+ * @since 101.0.0
*/
public function validate($path)
{
diff --git a/app/code/Magento/Config/Model/Config/Reader/Source/Deployed/DocumentRoot.php b/app/code/Magento/Config/Model/Config/Reader/Source/Deployed/DocumentRoot.php
index 5f8dc3f7ab4a7..bf59c729790a7 100644
--- a/app/code/Magento/Config/Model/Config/Reader/Source/Deployed/DocumentRoot.php
+++ b/app/code/Magento/Config/Model/Config/Reader/Source/Deployed/DocumentRoot.php
@@ -14,7 +14,7 @@
* Class DocumentRoot
* @package Magento\Config\Model\Config\Reader\Source\Deployed
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
class DocumentRoot
{
@@ -37,7 +37,7 @@ public function __construct(DeploymentConfig $config)
* deployment configuration.
*
* @return string
- * @since 100.2.0
+ * @since 101.0.0
*/
public function getPath()
{
@@ -50,7 +50,7 @@ public function getPath()
* likely be extended to control other areas).
*
* @return bool
- * @since 100.2.0
+ * @since 101.0.0
*/
public function isPub()
{
diff --git a/app/code/Magento/Config/Model/Config/Source/Email/Template.php b/app/code/Magento/Config/Model/Config/Source/Email/Template.php
index 04222733418d3..e4f1ae65bcacd 100644
--- a/app/code/Magento/Config/Model/Config/Source/Email/Template.php
+++ b/app/code/Magento/Config/Model/Config/Source/Email/Template.php
@@ -6,6 +6,8 @@
namespace Magento\Config\Model\Config\Source\Email;
/**
+ * Source for template
+ *
* @api
* @since 100.0.2
*/
@@ -62,6 +64,12 @@ public function toOptionArray()
$templateLabel = $this->_emailConfig->getTemplateLabel($templateId);
$templateLabel = __('%1 (Default)', $templateLabel);
array_unshift($options, ['value' => $templateId, 'label' => $templateLabel]);
+ array_walk(
+ $options,
+ function (&$item) {
+ $item['__disableTmpl'] = true;
+ }
+ );
return $options;
}
}
diff --git a/app/code/Magento/Config/Model/Config/Structure.php b/app/code/Magento/Config/Model/Config/Structure.php
index a380dc82a7c5e..6a03fafb363c5 100644
--- a/app/code/Magento/Config/Model/Config/Structure.php
+++ b/app/code/Magento/Config/Model/Config/Structure.php
@@ -185,7 +185,7 @@ public function getElement($path)
*
* @param string $path The configuration path
* @return \Magento\Config\Model\Config\Structure\ElementInterface|null
- * @since 100.2.0
+ * @since 101.0.0
*/
public function getElementByConfigPath($path)
{
@@ -368,7 +368,7 @@ protected function _getGroupFieldPathsByAttribute(array $fields, $parentPath, $a
* ```
*
* @return array An array of config path to config structure path map
- * @since 100.2.0
+ * @since 100.1.12
*/
public function getFieldPaths()
{
diff --git a/app/code/Magento/Config/Model/Config/Structure/AbstractElement.php b/app/code/Magento/Config/Model/Config/Structure/AbstractElement.php
index 78025587c49ba..eeda1d4024dad 100644
--- a/app/code/Magento/Config/Model/Config/Structure/AbstractElement.php
+++ b/app/code/Magento/Config/Model/Config/Structure/AbstractElement.php
@@ -223,10 +223,10 @@ public function getPath($fieldPrefix = '')
* Get instance of ElementVisibilityInterface.
*
* @return ElementVisibilityInterface
- * @deprecated 100.2.0 Added to not break backward compatibility of the constructor signature
+ * @deprecated 101.0.0 Added to not break backward compatibility of the constructor signature
* by injecting the new dependency directly.
* The method can be removed in a future major release, when constructor signature can be changed.
- * @since 100.2.0
+ * @since 101.0.0
*/
public function getElementVisibility()
{
diff --git a/app/code/Magento/Config/Model/Config/Structure/ConcealInProductionConfigList.php b/app/code/Magento/Config/Model/Config/Structure/ConcealInProductionConfigList.php
index 252042a41cc1d..568adceda9430 100644
--- a/app/code/Magento/Config/Model/Config/Structure/ConcealInProductionConfigList.php
+++ b/app/code/Magento/Config/Model/Config/Structure/ConcealInProductionConfigList.php
@@ -11,8 +11,9 @@
* Defines status of visibility of form elements on Stores > Settings > Configuration page
* in Admin Panel in Production mode.
* @api
- * @deprecated class location was changed
+ * @deprecated 101.0.6 class location was changed
* @see \Magento\Config\Model\Config\Structure\ElementVisibility\ConcealInProduction
+ * @since 101.0.0
*/
class ConcealInProductionConfigList implements ElementVisibilityInterface
{
@@ -55,7 +56,8 @@ public function __construct(State $state, array $configs = [])
/**
* @inheritdoc
- * @deprecated
+ * @deprecated 101.0.6
+ * @since 101.0.0
*/
public function isHidden($path)
{
@@ -68,7 +70,8 @@ public function isHidden($path)
/**
* @inheritdoc
- * @deprecated
+ * @deprecated 101.0.6
+ * @since 101.0.0
*/
public function isDisabled($path)
{
diff --git a/app/code/Magento/Config/Model/Config/Structure/ElementInterface.php b/app/code/Magento/Config/Model/Config/Structure/ElementInterface.php
index 5ba6221601725..b29887219a258 100644
--- a/app/code/Magento/Config/Model/Config/Structure/ElementInterface.php
+++ b/app/code/Magento/Config/Model/Config/Structure/ElementInterface.php
@@ -10,7 +10,7 @@
/**
* @api
* @since 100.0.2
- * @deprecated
+ * @deprecated 101.1.0
* @see StructureElementInterface
*/
interface ElementInterface
diff --git a/app/code/Magento/Config/Model/Config/Structure/ElementVisibility/ConcealInProduction.php b/app/code/Magento/Config/Model/Config/Structure/ElementVisibility/ConcealInProduction.php
index d5ded9292864a..afa7c4e65f178 100755
--- a/app/code/Magento/Config/Model/Config/Structure/ElementVisibility/ConcealInProduction.php
+++ b/app/code/Magento/Config/Model/Config/Structure/ElementVisibility/ConcealInProduction.php
@@ -14,6 +14,7 @@
* Defines status of visibility of form elements on Stores > Settings > Configuration page
* in Admin Panel in Production mode.
* @api
+ * @since 101.0.6
*/
class ConcealInProduction implements ElementVisibilityInterface
{
@@ -78,7 +79,7 @@ public function __construct(State $state, array $configs = [], array $exemptions
/**
* @inheritdoc
- * @since 100.2.0
+ * @since 101.0.6
*/
public function isHidden($path)
{
@@ -103,7 +104,7 @@ public function isHidden($path)
/**
* @inheritdoc
- * @since 100.2.0
+ * @since 101.0.6
*/
public function isDisabled($path)
{
diff --git a/app/code/Magento/Config/Model/Config/Structure/ElementVisibility/ConcealInProductionWithoutScdOnDemand.php b/app/code/Magento/Config/Model/Config/Structure/ElementVisibility/ConcealInProductionWithoutScdOnDemand.php
index 29148a244dcc6..ee6be789232e8 100755
--- a/app/code/Magento/Config/Model/Config/Structure/ElementVisibility/ConcealInProductionWithoutScdOnDemand.php
+++ b/app/code/Magento/Config/Model/Config/Structure/ElementVisibility/ConcealInProductionWithoutScdOnDemand.php
@@ -18,6 +18,7 @@
* @see \Magento\Config\Model\Config\Structure\ElementVisibility\ConcealInProduction
*
* @api
+ * @since 101.0.6
*/
class ConcealInProductionWithoutScdOnDemand implements ElementVisibilityInterface
{
@@ -50,6 +51,7 @@ public function __construct(
/**
* @inheritdoc
+ * @since 101.0.6
*/
public function isHidden($path): bool
{
@@ -61,6 +63,7 @@ public function isHidden($path): bool
/**
* @inheritdoc
+ * @since 101.0.6
*/
public function isDisabled($path): bool
{
diff --git a/app/code/Magento/Config/Model/Config/Structure/ElementVisibilityComposite.php b/app/code/Magento/Config/Model/Config/Structure/ElementVisibilityComposite.php
index 23074297e6323..e5b60c596d713 100644
--- a/app/code/Magento/Config/Model/Config/Structure/ElementVisibilityComposite.php
+++ b/app/code/Magento/Config/Model/Config/Structure/ElementVisibilityComposite.php
@@ -11,7 +11,7 @@
* Contains list of classes which implement ElementVisibilityInterface for
* checking of visibility of form elements on Stores > Settings > Configuration page in Admin Panel.
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
class ElementVisibilityComposite implements ElementVisibilityInterface
{
@@ -49,7 +49,7 @@ public function __construct(array $visibility = [])
/**
* @inheritdoc
- * @since 100.2.0
+ * @since 101.0.0
*/
public function isHidden($path)
{
@@ -64,7 +64,7 @@ public function isHidden($path)
/**
* @inheritdoc
- * @since 100.2.0
+ * @since 101.0.0
*/
public function isDisabled($path)
{
diff --git a/app/code/Magento/Config/Model/Config/Structure/ElementVisibilityInterface.php b/app/code/Magento/Config/Model/Config/Structure/ElementVisibilityInterface.php
index 21dff52843765..a11a549eebc35 100644
--- a/app/code/Magento/Config/Model/Config/Structure/ElementVisibilityInterface.php
+++ b/app/code/Magento/Config/Model/Config/Structure/ElementVisibilityInterface.php
@@ -9,7 +9,7 @@
* Checks visibility status of form elements on Stores > Settings > Configuration page in Admin Panel
* by their paths in the system.xml structure.
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
interface ElementVisibilityInterface
{
@@ -25,7 +25,7 @@ interface ElementVisibilityInterface
*
* @param string $path The path of form element in the system.xml structure
* @return bool
- * @since 100.2.0
+ * @since 101.0.0
*/
public function isDisabled($path);
@@ -34,7 +34,7 @@ public function isDisabled($path);
*
* @param string $path The path of form element in the system.xml structure
* @return bool
- * @since 100.2.0
+ * @since 101.0.0
*/
public function isHidden($path);
}
diff --git a/app/code/Magento/Config/Model/Config/StructureElementInterface.php b/app/code/Magento/Config/Model/Config/StructureElementInterface.php
index 946d6e3c766a4..e1e855d37325b 100644
--- a/app/code/Magento/Config/Model/Config/StructureElementInterface.php
+++ b/app/code/Magento/Config/Model/Config/StructureElementInterface.php
@@ -7,6 +7,7 @@
/**
* @api
+ * @since 101.1.0
*/
interface StructureElementInterface extends Structure\ElementInterface
{
@@ -15,6 +16,7 @@ interface StructureElementInterface extends Structure\ElementInterface
*
* @param string $fieldPrefix
* @return string
+ * @since 101.1.0
*/
public function getPath($fieldPrefix = '');
}
diff --git a/app/code/Magento/Config/Model/Config/TypePool.php b/app/code/Magento/Config/Model/Config/TypePool.php
index e41ff8e88a595..9080db81d1f55 100644
--- a/app/code/Magento/Config/Model/Config/TypePool.php
+++ b/app/code/Magento/Config/Model/Config/TypePool.php
@@ -13,7 +13,7 @@
* Used when you need to know if the configuration path belongs to a certain type.
* Participates in the mechanism for creating the configuration dump file.
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
class TypePool
{
@@ -52,7 +52,7 @@ class TypePool
* Checks if the configuration path is contained in exclude list.
*
* @var ExcludeList
- * @deprecated 100.2.0 We use it only to support backward compatibility. If some configurations
+ * @deprecated 101.0.0 We use it only to support backward compatibility. If some configurations
* were set to this list before, we need to read them.
* It will be supported for next 2 minor releases or until a major release.
* TypePool should be used to mark configurations with types.
@@ -83,7 +83,7 @@ public function __construct(array $sensitive = [], array $environment = [], Excl
* @param string $path Configuration field path. For example, 'contact/email/recipient_email'
* @param string $type Type of configuration fields
* @return bool True when the path belongs to requested type, false otherwise
- * @since 100.2.0
+ * @since 101.0.0
*/
public function isPresent($path, $type)
{
diff --git a/app/code/Magento/Config/Model/PreparedValueFactory.php b/app/code/Magento/Config/Model/PreparedValueFactory.php
index 19d607ad3dc1a..c86c0a820e86c 100644
--- a/app/code/Magento/Config/Model/PreparedValueFactory.php
+++ b/app/code/Magento/Config/Model/PreparedValueFactory.php
@@ -21,7 +21,7 @@
*
* @see ValueInterface
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
class PreparedValueFactory
{
@@ -92,7 +92,7 @@ public function __construct(
* @return ValueInterface
* @throws RuntimeException If Value can not be created
* @see ValueInterface
- * @since 100.2.0
+ * @since 101.0.0
*/
public function create($path, $value, $scope, $scopeCode = null)
{
diff --git a/app/code/Magento/Config/Test/Unit/Model/Config/Source/Email/TemplateTest.php b/app/code/Magento/Config/Test/Unit/Model/Config/Source/Email/TemplateTest.php
index b29ad244e7a81..9fabe6fef0c8e 100644
--- a/app/code/Magento/Config/Test/Unit/Model/Config/Source/Email/TemplateTest.php
+++ b/app/code/Magento/Config/Test/Unit/Model/Config/Source/Email/TemplateTest.php
@@ -6,6 +6,9 @@
namespace Magento\Config\Test\Unit\Model\Config\Source\Email;
+/**
+ * Test class for Template.
+ */
class TemplateTest extends \PHPUnit\Framework\TestCase
{
/**
@@ -76,9 +79,21 @@ public function testToOptionArray()
$this->returnValue('Template New')
);
$expectedResult = [
- ['value' => 'template_new', 'label' => 'Template New (Default)'],
- ['value' => 'template_one', 'label' => 'Template One'],
- ['value' => 'template_two', 'label' => 'Template Two'],
+ [
+ 'value' => 'template_new',
+ 'label' => 'Template New (Default)',
+ '__disableTmpl' => true
+ ],
+ [
+ 'value' => 'template_one',
+ 'label' => 'Template One',
+ '__disableTmpl' => true
+ ],
+ [
+ 'value' => 'template_two',
+ 'label' => 'Template Two',
+ '__disableTmpl' => true
+ ],
];
$this->_model->setPath('template/new');
$this->assertEquals($expectedResult, $this->_model->toOptionArray());
diff --git a/app/code/Magento/Config/composer.json b/app/code/Magento/Config/composer.json
index 57c067d2cae27..5e3c41c17d393 100644
--- a/app/code/Magento/Config/composer.json
+++ b/app/code/Magento/Config/composer.json
@@ -6,14 +6,14 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-cron": "*",
- "magento/module-deploy": "*",
- "magento/module-directory": "*",
- "magento/module-email": "*",
- "magento/module-media-storage": "*",
- "magento/module-store": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-cron": "100.3.*",
+ "magento/module-deploy": "100.3.*",
+ "magento/module-directory": "100.3.*",
+ "magento/module-email": "101.0.*",
+ "magento/module-media-storage": "100.3.*",
+ "magento/module-store": "101.0.*"
},
"type": "magento2-module",
"license": [
@@ -27,5 +27,6 @@
"psr-4": {
"Magento\\Config\\": ""
}
- }
+ },
+ "version": "101.1.2-p2"
}
diff --git a/app/code/Magento/Config/etc/db_schema.xml b/app/code/Magento/Config/etc/db_schema.xml
index 8aeac802fbd91..1b2f7a0519411 100644
--- a/app/code/Magento/Config/etc/db_schema.xml
+++ b/app/code/Magento/Config/etc/db_schema.xml
@@ -15,6 +15,8 @@
default="0" comment="Config Scope Id"/>
+
diff --git a/app/code/Magento/Config/etc/db_schema_whitelist.json b/app/code/Magento/Config/etc/db_schema_whitelist.json
index 850e160bc732f..51ca41d8e6af8 100644
--- a/app/code/Magento/Config/etc/db_schema_whitelist.json
+++ b/app/code/Magento/Config/etc/db_schema_whitelist.json
@@ -5,11 +5,12 @@
"scope": true,
"scope_id": true,
"path": true,
- "value": true
+ "value": true,
+ "updated_at": true
},
"constraint": {
"PRIMARY": true,
"CORE_CONFIG_DATA_SCOPE_SCOPE_ID_PATH": true
}
}
-}
\ No newline at end of file
+}
diff --git a/app/code/Magento/ConfigurableImportExport/composer.json b/app/code/Magento/ConfigurableImportExport/composer.json
index 419a08e14b0a2..c696cc4983353 100644
--- a/app/code/Magento/ConfigurableImportExport/composer.json
+++ b/app/code/Magento/ConfigurableImportExport/composer.json
@@ -6,13 +6,13 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-catalog": "*",
- "magento/module-catalog-import-export": "*",
- "magento/module-configurable-product": "*",
- "magento/module-eav": "*",
- "magento/module-import-export": "*",
- "magento/module-store": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-catalog-import-export": "101.0.*",
+ "magento/module-configurable-product": "100.3.*",
+ "magento/module-eav": "102.0.*",
+ "magento/module-import-export": "100.3.*",
+ "magento/module-store": "101.0.*"
},
"type": "magento2-module",
"license": [
@@ -26,5 +26,6 @@
"psr-4": {
"Magento\\ConfigurableImportExport\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/ConfigurableProduct/Block/Adminhtml/Product/Edit/Tab/Variations/Config/Matrix.php b/app/code/Magento/ConfigurableProduct/Block/Adminhtml/Product/Edit/Tab/Variations/Config/Matrix.php
index 4874dc8ea03ae..12aba326607ee 100644
--- a/app/code/Magento/ConfigurableProduct/Block/Adminhtml/Product/Edit/Tab/Variations/Config/Matrix.php
+++ b/app/code/Magento/ConfigurableProduct/Block/Adminhtml/Product/Edit/Tab/Variations/Config/Matrix.php
@@ -411,6 +411,7 @@ private function prepareAttributes(
'id' => $attribute->getAttributeId(),
'position' => $configurableAttributes[$attribute->getAttributeId()]['position'],
'chosen' => [],
+ '__disableTmpl' => true,
];
foreach ($attribute->getOptions() as $option) {
if (!empty($option->getValue())) {
diff --git a/app/code/Magento/ConfigurableProduct/Block/Cart/Item/Renderer/Configurable.php b/app/code/Magento/ConfigurableProduct/Block/Cart/Item/Renderer/Configurable.php
index 77110975401ff..a73e7e7277d34 100644
--- a/app/code/Magento/ConfigurableProduct/Block/Cart/Item/Renderer/Configurable.php
+++ b/app/code/Magento/ConfigurableProduct/Block/Cart/Item/Renderer/Configurable.php
@@ -75,6 +75,7 @@ public function getIdentities()
* Get price for exact simple product added to cart
*
* @inheritdoc
+ * @since 100.3.1
*/
public function getProductPriceHtml(\Magento\Catalog\Model\Product $product)
{
diff --git a/app/code/Magento/ConfigurableProduct/Block/Product/View/Type/Configurable.php b/app/code/Magento/ConfigurableProduct/Block/Product/View/Type/Configurable.php
index e07879e93a6b4..0a64c89c14403 100644
--- a/app/code/Magento/ConfigurableProduct/Block/Product/View/Type/Configurable.php
+++ b/app/code/Magento/ConfigurableProduct/Block/Product/View/Type/Configurable.php
@@ -34,7 +34,7 @@ class Configurable extends \Magento\Catalog\Block\Product\View\AbstractView
/**
* Current customer
*
- * @deprecated 100.2.0, as unused property
+ * @deprecated 100.2.0 as unused property
* @var CurrentCustomer
*/
protected $currentCustomer;
@@ -133,7 +133,7 @@ public function __construct(
* Get cache key informative items.
*
* @return array
- * @since 100.2.0
+ * @since 100.1.10
*/
public function getCacheKeyInfo()
{
@@ -252,7 +252,7 @@ public function getJsonConfig()
* Get product images for configurable variations
*
* @return array
- * @since 100.2.0
+ * @since 100.1.10
*/
protected function getOptionImages()
{
@@ -331,7 +331,7 @@ protected function getOptionPrices()
/**
* Replace ',' on '.' for js
*
- * @deprecated 100.2.0 Will be removed in major release
+ * @deprecated 100.1.10 Will be removed in major release
* @param float $price
* @return string
*/
@@ -344,7 +344,7 @@ protected function _registerJsPrice($price)
* Should we generate "As low as" block or not
*
* @return bool
- * @since 100.2.0
+ * @since 100.1.10
*/
public function showMinimalPrice()
{
diff --git a/app/code/Magento/ConfigurableProduct/Model/AttributeOptionProviderInterface.php b/app/code/Magento/ConfigurableProduct/Model/AttributeOptionProviderInterface.php
index ca289122a2126..e9e91485ea7a5 100644
--- a/app/code/Magento/ConfigurableProduct/Model/AttributeOptionProviderInterface.php
+++ b/app/code/Magento/ConfigurableProduct/Model/AttributeOptionProviderInterface.php
@@ -8,7 +8,7 @@
/**
* Interface to retrieve options for attribute
* @api
- * @since 100.2.0
+ * @since 100.1.11
*/
interface AttributeOptionProviderInterface
{
@@ -18,7 +18,7 @@ interface AttributeOptionProviderInterface
* @param \Magento\Eav\Model\Entity\Attribute\AbstractAttribute $attribute
* @param int $productId
* @return array
- * @since 100.2.0
+ * @since 100.1.11
*/
public function getAttributeOptions(\Magento\Eav\Model\Entity\Attribute\AbstractAttribute $attribute, $productId);
}
diff --git a/app/code/Magento/ConfigurableProduct/Model/LinkManagement.php b/app/code/Magento/ConfigurableProduct/Model/LinkManagement.php
index 2f07f8b90ce7e..259245ea4491f 100644
--- a/app/code/Magento/ConfigurableProduct/Model/LinkManagement.php
+++ b/app/code/Magento/ConfigurableProduct/Model/LinkManagement.php
@@ -197,7 +197,7 @@ public function removeChild($sku, $childSku)
*
* @return \Magento\ConfigurableProduct\Helper\Product\Options\Factory
*
- * @deprecated 100.1.2
+ * @deprecated 100.2.0
*/
private function getOptionsFactory()
{
diff --git a/app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php b/app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php
index a849d964eaed5..91f9b4e201e50 100644
--- a/app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php
+++ b/app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php
@@ -1215,7 +1215,7 @@ private function getCatalogConfig()
/**
* @inheritdoc
- * @since 100.2.0
+ * @since 100.1.11
*/
public function isPossibleBuyFromList($product)
{
diff --git a/app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Type/Configurable/Attribute/Collection.php b/app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Type/Configurable/Attribute/Collection.php
index 8f2cc6ddb43ce..5580d8092af61 100644
--- a/app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Type/Configurable/Attribute/Collection.php
+++ b/app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Type/Configurable/Attribute/Collection.php
@@ -41,7 +41,7 @@ class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\Ab
* Product instance
*
* @var \Magento\Catalog\Model\Product
- * @deprecated Now collection supports fetching options for multiple products. This field will be set to first
+ * @deprecated 100.3.0 Now collection supports fetching options for multiple products. This field will be set to first
* element of products array.
*/
protected $_product;
@@ -174,6 +174,7 @@ public function getStoreId()
*
* @return $this
* @throws \Exception
+ * @since 100.3.0
*/
protected function _beforeLoad()
{
diff --git a/app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Type/Configurable/Product/Collection.php b/app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Type/Configurable/Product/Collection.php
index 3124a3b8cf0ed..7b6ca85060f99 100644
--- a/app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Type/Configurable/Product/Collection.php
+++ b/app/code/Magento/ConfigurableProduct/Model/ResourceModel/Product/Type/Configurable/Product/Collection.php
@@ -73,6 +73,7 @@ public function setProductFilter($product)
* Add parent ids to `in` filter before load.
*
* @return $this
+ * @since 100.3.0
*/
protected function _renderFilters()
{
diff --git a/app/code/Magento/ConfigurableProduct/Pricing/Price/ConfigurablePriceResolver.php b/app/code/Magento/ConfigurableProduct/Pricing/Price/ConfigurablePriceResolver.php
index 5581fcc07b861..af9e6e7bdebcd 100644
--- a/app/code/Magento/ConfigurableProduct/Pricing/Price/ConfigurablePriceResolver.php
+++ b/app/code/Magento/ConfigurableProduct/Pricing/Price/ConfigurablePriceResolver.php
@@ -19,13 +19,13 @@ class ConfigurablePriceResolver implements PriceResolverInterface
/**
* @var PriceCurrencyInterface
- * @deprecated 100.1.1
+ * @deprecated 100.0.2
*/
protected $priceCurrency;
/**
* @var Configurable
- * @deprecated 100.1.1
+ * @deprecated 100.0.2
*/
protected $configurable;
diff --git a/app/code/Magento/ConfigurableProduct/Ui/DataProvider/Product/Form/Modifier/Data/AssociatedProducts.php b/app/code/Magento/ConfigurableProduct/Ui/DataProvider/Product/Form/Modifier/Data/AssociatedProducts.php
index c474acbec5094..c947e4d6e5be5 100644
--- a/app/code/Magento/ConfigurableProduct/Ui/DataProvider/Product/Form/Modifier/Data/AssociatedProducts.php
+++ b/app/code/Magento/ConfigurableProduct/Ui/DataProvider/Product/Form/Modifier/Data/AssociatedProducts.php
@@ -21,6 +21,8 @@
use Magento\Framework\Escaper;
/**
+ * Loads data for product configurations.
+ *
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class AssociatedProducts
@@ -213,6 +215,7 @@ public function getConfigurableAttributesData()
'code' => $attribute['code'],
'label' => $attribute['label'],
'position' => $attribute['position'],
+ '__disableTmpl' => true,
];
foreach ($attribute['chosen'] as $chosenOption) {
@@ -231,6 +234,7 @@ public function getConfigurableAttributesData()
*
* @return void
* @throws \Zend_Currency_Exception
+ * phpcs:disable Generic.Metrics.NestingLevel.TooHigh
*/
protected function prepareVariations()
{
@@ -261,6 +265,7 @@ protected function prepareVariations()
'id' => $attribute->getAttributeId(),
'position' => $configurableAttributes[$attribute->getAttributeId()]['position'],
'chosen' => [],
+ '__disableTmpl' => true,
];
foreach ($attribute->getOptions() as $option) {
if (!empty($option->getValue())) {
@@ -270,6 +275,7 @@ protected function prepareVariations()
'id' => $option->getValue(),
'label' => $option->getLabel(),
'value' => $option->getValue(),
+ '__disableTmpl' => true,
];
}
}
@@ -281,6 +287,7 @@ protected function prepareVariations()
'id' => $optionId,
'label' => $variation[$attribute->getId()]['label'],
'value' => $optionId,
+ '__disableTmpl' => true,
];
$variationOptions[] = $variationOption;
$attributes[$attribute->getAttributeId()]['chosen'][$optionId] = $variationOption;
@@ -306,6 +313,7 @@ protected function prepareVariations()
'newProduct' => 0,
'attributes' => $this->getTextAttributes($variationOptions),
'thumbnail_image' => $this->imageHelper->init($product, 'product_thumbnail_image')->getUrl(),
+ '__disableTmpl' => true,
];
$productIds[] = $product->getId();
}
@@ -316,6 +324,7 @@ protected function prepareVariations()
$this->productIds = $productIds;
$this->productAttributes = array_values($attributes);
}
+ //phpcs: enable
/**
* Get JSON string that contains attribute code and value
diff --git a/app/code/Magento/ConfigurableProduct/composer.json b/app/code/Magento/ConfigurableProduct/composer.json
index 76096fd6bdf67..7f37131b84e6a 100644
--- a/app/code/Magento/ConfigurableProduct/composer.json
+++ b/app/code/Magento/ConfigurableProduct/composer.json
@@ -6,27 +6,27 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-catalog": "*",
- "magento/module-catalog-inventory": "*",
- "magento/module-checkout": "*",
- "magento/module-customer": "*",
- "magento/module-eav": "*",
- "magento/module-media-storage": "*",
- "magento/module-quote": "*",
- "magento/module-store": "*",
- "magento/module-ui": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-catalog-inventory": "100.3.*",
+ "magento/module-checkout": "100.3.*",
+ "magento/module-customer": "102.0.*",
+ "magento/module-eav": "102.0.*",
+ "magento/module-media-storage": "100.3.*",
+ "magento/module-quote": "101.1.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-ui": "101.1.*"
},
"suggest": {
- "magento/module-msrp": "*",
- "magento/module-webapi": "*",
- "magento/module-sales": "*",
- "magento/module-sales-rule": "*",
- "magento/module-product-video": "*",
- "magento/module-configurable-sample-data": "*",
- "magento/module-product-links-sample-data": "*",
- "magento/module-tax": "*"
+ "magento/module-msrp": "100.3.*",
+ "magento/module-webapi": "100.3.*",
+ "magento/module-sales": "102.0.*",
+ "magento/module-sales-rule": "101.1.*",
+ "magento/module-product-video": "100.3.*",
+ "magento/module-configurable-sample-data": "Sample Data version: 100.3.*",
+ "magento/module-product-links-sample-data": "Sample Data version: 100.3.*",
+ "magento/module-tax": "100.3.*"
},
"type": "magento2-module",
"license": [
@@ -40,5 +40,6 @@
"psr-4": {
"Magento\\ConfigurableProduct\\": ""
}
- }
+ },
+ "version": "100.3.2-p2"
}
diff --git a/app/code/Magento/ConfigurableProductGraphQl/composer.json b/app/code/Magento/ConfigurableProductGraphQl/composer.json
index a22df27734b76..8d91356d30f31 100644
--- a/app/code/Magento/ConfigurableProductGraphQl/composer.json
+++ b/app/code/Magento/ConfigurableProductGraphQl/composer.json
@@ -4,10 +4,10 @@
"type": "magento2-module",
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/module-catalog": "*",
- "magento/module-configurable-product": "*",
- "magento/module-catalog-graph-ql": "*",
- "magento/framework": "*"
+ "magento/module-catalog": "103.0.*",
+ "magento/module-configurable-product": "100.3.*",
+ "magento/module-catalog-graph-ql": "100.3.*",
+ "magento/framework": "102.0.*"
},
"license": [
"OSL-3.0",
@@ -20,5 +20,6 @@
"psr-4": {
"Magento\\ConfigurableProductGraphQl\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/ConfigurableProductSales/composer.json b/app/code/Magento/ConfigurableProductSales/composer.json
index 2a106b3abc75a..0509c294bb8be 100644
--- a/app/code/Magento/ConfigurableProductSales/composer.json
+++ b/app/code/Magento/ConfigurableProductSales/composer.json
@@ -6,13 +6,13 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-catalog": "*",
- "magento/module-sales": "*",
- "magento/module-store": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-sales": "102.0.*",
+ "magento/module-store": "101.0.*"
},
"suggest": {
- "magento/module-configurable-product": "*"
+ "magento/module-configurable-product": "100.3.*"
},
"type": "magento2-module",
"license": [
@@ -26,5 +26,6 @@
"psr-4": {
"Magento\\ConfigurableProductSales\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/Contact/composer.json b/app/code/Magento/Contact/composer.json
index b45132d0a360b..d1cba9838664e 100644
--- a/app/code/Magento/Contact/composer.json
+++ b/app/code/Magento/Contact/composer.json
@@ -6,11 +6,11 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-cms": "*",
- "magento/module-config": "*",
- "magento/module-customer": "*",
- "magento/module-store": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-cms": "103.0.*",
+ "magento/module-config": "101.1.*",
+ "magento/module-customer": "102.0.*",
+ "magento/module-store": "101.0.*"
},
"type": "magento2-module",
"license": [
@@ -24,5 +24,6 @@
"psr-4": {
"Magento\\Contact\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/Cookie/Helper/Cookie.php b/app/code/Magento/Cookie/Helper/Cookie.php
index 8bab596ab4c13..0e04e7ace2cea 100644
--- a/app/code/Magento/Cookie/Helper/Cookie.php
+++ b/app/code/Magento/Cookie/Helper/Cookie.php
@@ -80,7 +80,7 @@ public function isUserNotAllowSaveCookie()
* Check if cookie restriction mode is enabled for this store
*
* @return bool
- * @since 100.2.0
+ * @since 100.1.3
*/
public function isCookieRestrictionModeEnabled()
{
diff --git a/app/code/Magento/Cookie/composer.json b/app/code/Magento/Cookie/composer.json
index 58f28ad472120..3e701128c1b5d 100644
--- a/app/code/Magento/Cookie/composer.json
+++ b/app/code/Magento/Cookie/composer.json
@@ -6,11 +6,11 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-store": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-store": "101.0.*"
},
"suggest": {
- "magento/module-backend": "*"
+ "magento/module-backend": "101.0.*"
},
"type": "magento2-module",
"license": [
@@ -24,5 +24,6 @@
"psr-4": {
"Magento\\Cookie\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/Cron/composer.json b/app/code/Magento/Cron/composer.json
index 5595bf1cb55f5..e7d6120af3682 100644
--- a/app/code/Magento/Cron/composer.json
+++ b/app/code/Magento/Cron/composer.json
@@ -6,11 +6,11 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-store": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-store": "101.0.*"
},
"suggest": {
- "magento/module-config": "*"
+ "magento/module-config": "101.1.*"
},
"type": "magento2-module",
"license": [
@@ -24,5 +24,6 @@
"psr-4": {
"Magento\\Cron\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/CurrencySymbol/composer.json b/app/code/Magento/CurrencySymbol/composer.json
index 009cb62488916..b391fedbed20c 100644
--- a/app/code/Magento/CurrencySymbol/composer.json
+++ b/app/code/Magento/CurrencySymbol/composer.json
@@ -6,12 +6,12 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-config": "*",
- "magento/module-directory": "*",
- "magento/module-page-cache": "*",
- "magento/module-store": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-config": "101.1.*",
+ "magento/module-directory": "100.3.*",
+ "magento/module-page-cache": "100.3.*",
+ "magento/module-store": "101.0.*"
},
"type": "magento2-module",
"license": [
@@ -25,5 +25,6 @@
"psr-4": {
"Magento\\CurrencySymbol\\": ""
}
- }
+ },
+ "version": "100.3.2-p2"
}
diff --git a/app/code/Magento/CurrencySymbol/view/adminhtml/templates/system/currency/rate/matrix.phtml b/app/code/Magento/CurrencySymbol/view/adminhtml/templates/system/currency/rate/matrix.phtml
index 8a16eb71e0853..9701fc928e861 100644
--- a/app/code/Magento/CurrencySymbol/view/adminhtml/templates/system/currency/rate/matrix.phtml
+++ b/app/code/Magento/CurrencySymbol/view/adminhtml/templates/system/currency/rate/matrix.phtml
@@ -28,7 +28,7 @@ $_rates = ($_newRates) ? $_newRates : $_oldRates;
|
getAllowedCurrencies() as $_currencyCode): ?>
- = /* @escapeNotVerified */ $_currencyCode ?> |
+ = $block->escapeHtml($_currencyCode) ?> |
diff --git a/app/code/Magento/Customer/Api/CustomerGroupConfigInterface.php b/app/code/Magento/Customer/Api/CustomerGroupConfigInterface.php
index 6e118b2b40e76..ccbf06206aed7 100644
--- a/app/code/Magento/Customer/Api/CustomerGroupConfigInterface.php
+++ b/app/code/Magento/Customer/Api/CustomerGroupConfigInterface.php
@@ -9,7 +9,7 @@
* Interface for system configuration operations for customer groups.
*
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
interface CustomerGroupConfigInterface
{
@@ -22,7 +22,7 @@ interface CustomerGroupConfigInterface
* @throws \Exception
* @throws \Magento\Framework\Exception\NoSuchEntityException
* @throws \Magento\Framework\Exception\LocalizedException
- * @since 100.2.0
+ * @since 101.0.0
*/
public function setDefaultCustomerGroup($id);
}
diff --git a/app/code/Magento/Customer/Block/Account/AuthenticationPopup.php b/app/code/Magento/Customer/Block/Account/AuthenticationPopup.php
index 07e0704ee6e43..6695d7fd6d3e8 100644
--- a/app/code/Magento/Customer/Block/Account/AuthenticationPopup.php
+++ b/app/code/Magento/Customer/Block/Account/AuthenticationPopup.php
@@ -70,7 +70,7 @@ public function getConfig()
* Added in scope of https://github.com/magento/magento2/pull/8617
*
* @return bool|string
- * @since 100.2.0
+ * @since 101.0.0
*/
public function getSerializedConfig()
{
diff --git a/app/code/Magento/Customer/Block/Account/AuthorizationLink.php b/app/code/Magento/Customer/Block/Account/AuthorizationLink.php
index ff9d56c8fc4cb..16ab9d26450b1 100644
--- a/app/code/Magento/Customer/Block/Account/AuthorizationLink.php
+++ b/app/code/Magento/Customer/Block/Account/AuthorizationLink.php
@@ -94,7 +94,7 @@ public function isLoggedIn()
/**
* {@inheritdoc}
- * @since 100.2.0
+ * @since 101.0.0
*/
public function getSortOrder()
{
diff --git a/app/code/Magento/Customer/Block/Account/Delimiter.php b/app/code/Magento/Customer/Block/Account/Delimiter.php
index 056a53e259c49..2bd93668cc438 100644
--- a/app/code/Magento/Customer/Block/Account/Delimiter.php
+++ b/app/code/Magento/Customer/Block/Account/Delimiter.php
@@ -10,13 +10,13 @@
* Class for delimiter.
*
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
class Delimiter extends \Magento\Framework\View\Element\Template implements SortLinkInterface
{
/**
* {@inheritdoc}
- * @since 100.2.0
+ * @since 101.0.0
*/
public function getSortOrder()
{
diff --git a/app/code/Magento/Customer/Block/Account/Link.php b/app/code/Magento/Customer/Block/Account/Link.php
index ed29a10abc8b7..60ade7fe9207c 100644
--- a/app/code/Magento/Customer/Block/Account/Link.php
+++ b/app/code/Magento/Customer/Block/Account/Link.php
@@ -45,7 +45,7 @@ public function getHref()
/**
* {@inheritdoc}
- * @since 100.2.0
+ * @since 101.0.0
*/
public function getSortOrder()
{
diff --git a/app/code/Magento/Customer/Block/Account/Navigation.php b/app/code/Magento/Customer/Block/Account/Navigation.php
index 705acbcda4c6a..1d29932e79151 100644
--- a/app/code/Magento/Customer/Block/Account/Navigation.php
+++ b/app/code/Magento/Customer/Block/Account/Navigation.php
@@ -14,13 +14,13 @@
* Class for sorting links in navigation panels.
*
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
class Navigation extends Links
{
/**
* {@inheritdoc}
- * @since 100.2.0
+ * @since 101.0.0
*/
public function getLinks()
{
diff --git a/app/code/Magento/Customer/Block/Account/SortLinkInterface.php b/app/code/Magento/Customer/Block/Account/SortLinkInterface.php
index 114bb02e1444c..5dc59aaf95854 100644
--- a/app/code/Magento/Customer/Block/Account/SortLinkInterface.php
+++ b/app/code/Magento/Customer/Block/Account/SortLinkInterface.php
@@ -9,7 +9,7 @@
/**
* Interface for sortable links.
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
interface SortLinkInterface
{
@@ -23,7 +23,7 @@ interface SortLinkInterface
* Get sort order for block.
*
* @return int
- * @since 100.2.0
+ * @since 101.0.0
*/
public function getSortOrder();
}
diff --git a/app/code/Magento/Customer/Block/Address/Book.php b/app/code/Magento/Customer/Block/Address/Book.php
index 04669446ffee9..f37ae21a9b83c 100644
--- a/app/code/Magento/Customer/Block/Address/Book.php
+++ b/app/code/Magento/Customer/Block/Address/Book.php
@@ -93,7 +93,7 @@ protected function _prepareLayout()
* Generate and return "New Address" URL
*
* @return string
- * @deprecated not used in this block
+ * @deprecated 102.0.1 not used in this block
* @see \Magento\Customer\Block\Address\Grid::getAddAddressUrl
*/
public function getAddAddressUrl()
@@ -118,7 +118,7 @@ public function getBackUrl()
* Generate and return "Delete" URL
*
* @return string
- * @deprecated not used in this block
+ * @deprecated 102.0.1 not used in this block
* @see \Magento\Customer\Block\Address\Grid::getDeleteUrl
*/
public function getDeleteUrl()
@@ -133,7 +133,7 @@ public function getDeleteUrl()
*
* @param int $addressId
* @return string
- * @deprecated not used in this block
+ * @deprecated 102.0.1 not used in this block
* @see \Magento\Customer\Block\Address\Grid::getAddressEditUrl
*/
public function getAddressEditUrl($addressId)
@@ -159,7 +159,7 @@ public function hasPrimaryAddress()
*
* @return \Magento\Customer\Api\Data\AddressInterface[]|bool
* @throws \Magento\Framework\Exception\LocalizedException
- * @deprecated not used in this block
+ * @deprecated 102.0.1 not used in this block
* @see \Magento\Customer\Block\Address\Grid::getAdditionalAddresses
*/
public function getAdditionalAddresses()
diff --git a/app/code/Magento/Customer/Block/Address/Grid.php b/app/code/Magento/Customer/Block/Address/Grid.php
index 963efc648d94b..9053fd57154bb 100644
--- a/app/code/Magento/Customer/Block/Address/Grid.php
+++ b/app/code/Magento/Customer/Block/Address/Grid.php
@@ -15,6 +15,7 @@
* Customer address grid
*
* @api
+ * @since 102.0.1
*/
class Grid extends \Magento\Framework\View\Element\Template
{
@@ -64,6 +65,7 @@ public function __construct(
*
* @return void
* @throws \Magento\Framework\Exception\LocalizedException
+ * @since 102.0.1
*/
protected function _prepareLayout(): void
{
@@ -75,6 +77,7 @@ protected function _prepareLayout(): void
* Generate and return "New Address" URL
*
* @return string
+ * @since 102.0.1
*/
public function getAddAddressUrl(): string
{
@@ -85,6 +88,7 @@ public function getAddAddressUrl(): string
* Generate and return "Delete" URL
*
* @return string
+ * @since 102.0.1
*/
public function getDeleteUrl(): string
{
@@ -98,6 +102,7 @@ public function getDeleteUrl(): string
*
* @param int $addressId
* @return string
+ * @since 102.0.1
*/
public function getAddressEditUrl($addressId): string
{
@@ -112,6 +117,7 @@ public function getAddressEditUrl($addressId): string
* @return \Magento\Customer\Api\Data\AddressInterface[]
* @throws \Magento\Framework\Exception\LocalizedException
* @throws NoSuchEntityException
+ * @since 102.0.1
*/
public function getAdditionalAddresses(): array
{
@@ -132,6 +138,7 @@ public function getAdditionalAddresses(): array
* Return stored customer or get it from session
*
* @return \Magento\Customer\Api\Data\CustomerInterface
+ * @since 102.0.1
*/
public function getCustomer(): \Magento\Customer\Api\Data\CustomerInterface
{
@@ -148,6 +155,7 @@ public function getCustomer(): \Magento\Customer\Api\Data\CustomerInterface
*
* @param \Magento\Customer\Api\Data\AddressInterface $address
* @return string
+ * @since 102.0.1
*/
public function getStreetAddress(\Magento\Customer\Api\Data\AddressInterface $address): string
{
@@ -165,6 +173,7 @@ public function getStreetAddress(\Magento\Customer\Api\Data\AddressInterface $ad
*
* @param string $countryCode
* @return string
+ * @since 102.0.1
*/
public function getCountryByCode(string $countryCode): string
{
diff --git a/app/code/Magento/Customer/Block/CustomerData.php b/app/code/Magento/Customer/Block/CustomerData.php
index 98eb2d9f9ea40..bbc54cfa71c09 100644
--- a/app/code/Magento/Customer/Block/CustomerData.php
+++ b/app/code/Magento/Customer/Block/CustomerData.php
@@ -59,7 +59,7 @@ public function getCustomerDataUrl($route)
* Once this period has expired the corresponding section must be invalidated and reloaded.
*
* @return int section lifetime in minutes
- * @since 100.2.0
+ * @since 101.0.0
*/
public function getExpirableSectionLifetime()
{
@@ -70,7 +70,7 @@ public function getExpirableSectionLifetime()
* Retrieve the list of sections that can expire.
*
* @return array
- * @since 100.2.0
+ * @since 101.0.0
*/
public function getExpirableSectionNames()
{
diff --git a/app/code/Magento/Customer/Block/CustomerScopeData.php b/app/code/Magento/Customer/Block/CustomerScopeData.php
index f875386695b4b..63ff863f89ce3 100644
--- a/app/code/Magento/Customer/Block/CustomerScopeData.php
+++ b/app/code/Magento/Customer/Block/CustomerScopeData.php
@@ -15,7 +15,7 @@
* with appropriate value in store front private cache.
*
* @api
- * @since 100.2.0
+ * @since 100.1.9
*/
class CustomerScopeData extends \Magento\Framework\View\Element\Template
{
@@ -54,7 +54,7 @@ public function __construct(
* Can be used when necessary to obtain website id of the current customer.
*
* @return integer
- * @since 100.2.0
+ * @since 100.1.9
*/
public function getWebsiteId()
{
@@ -67,6 +67,7 @@ public function getWebsiteId()
* @param array $configuration
* @return bool|string
* @throws \InvalidArgumentException
+ * @since 102.0.0
*/
public function encodeConfiguration(array $configuration)
{
diff --git a/app/code/Magento/Customer/Controller/Account/Confirm.php b/app/code/Magento/Customer/Controller/Account/Confirm.php
index 2b3cb9aa61ab5..306a0ee46fed8 100644
--- a/app/code/Magento/Customer/Controller/Account/Confirm.php
+++ b/app/code/Magento/Customer/Controller/Account/Confirm.php
@@ -104,7 +104,7 @@ public function __construct(
/**
* Retrieve cookie manager
*
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @return \Magento\Framework\Stdlib\Cookie\PhpCookieManager
*/
private function getCookieManager()
@@ -120,7 +120,7 @@ private function getCookieManager()
/**
* Retrieve cookie metadata factory
*
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @return \Magento\Framework\Stdlib\Cookie\CookieMetadataFactory
*/
private function getCookieMetadataFactory()
diff --git a/app/code/Magento/Customer/Controller/Account/LoginPost.php b/app/code/Magento/Customer/Controller/Account/LoginPost.php
index 04051fbbf366b..4091a068e3094 100644
--- a/app/code/Magento/Customer/Controller/Account/LoginPost.php
+++ b/app/code/Magento/Customer/Controller/Account/LoginPost.php
@@ -26,6 +26,8 @@
use Magento\Framework\Phrase;
/**
+ * Post login customer action.
+ *
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class LoginPost extends AbstractAccount implements CsrfAwareActionInterface, HttpPostActionInterface
@@ -183,7 +185,6 @@ public function execute()
try {
$customer = $this->customerAccountManagement->authenticate($login['username'], $login['password']);
$this->session->setCustomerDataAsLoggedIn($customer);
- $this->session->regenerateId();
if ($this->getCookieManager()->getCookie('mage-cache-sessid')) {
$metadata = $this->getCookieMetadataFactory()->createCookieMetadata();
$metadata->setPath('/');
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index.php b/app/code/Magento/Customer/Controller/Adminhtml/Index.php
index a0317a51260da..00aae7e06f5e9 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index.php
@@ -35,7 +35,7 @@ abstract class Index extends \Magento\Backend\App\Action
/**
* @var \Magento\Framework\Validator
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
protected $_validator;
@@ -53,13 +53,13 @@ abstract class Index extends \Magento\Backend\App\Action
/**
* @var \Magento\Customer\Model\CustomerFactory
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
protected $_customerFactory = null;
/**
* @var \Magento\Customer\Model\AddressFactory
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
protected $_addressFactory = null;
@@ -85,7 +85,7 @@ abstract class Index extends \Magento\Backend\App\Action
/**
* @var \Magento\Framework\Math\Random
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
protected $_random;
@@ -96,7 +96,7 @@ abstract class Index extends \Magento\Backend\App\Action
/**
* @var \Magento\Framework\Api\ExtensibleDataObjectConverter
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
protected $_extensibleDataObjectConverter;
@@ -132,7 +132,7 @@ abstract class Index extends \Magento\Backend\App\Action
/**
* @var \Magento\Framework\Reflection\DataObjectProcessor
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
protected $dataObjectProcessor;
@@ -143,7 +143,7 @@ abstract class Index extends \Magento\Backend\App\Action
/**
* @var \Magento\Framework\View\LayoutFactory
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
protected $layoutFactory;
@@ -306,7 +306,7 @@ protected function _addSessionErrorMessages($messages)
* @param callable $singleAction A single action callable that takes a customer ID as input
* @param int[] $customerIds Array of customer Ids to perform the action upon
* @return int Number of customers successfully acted upon
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
protected function actUponMultipleCustomers(callable $singleAction, $customerIds)
{
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/Cart.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/Cart.php
index 1e4c1fb001ea3..4008635cd7c5a 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/Cart.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/Cart.php
@@ -16,7 +16,7 @@
/**
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
class Cart extends \Magento\Customer\Controller\Adminhtml\Index
{
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/InlineEdit.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/InlineEdit.php
index 7220de0356817..0dc6436102dac 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/InlineEdit.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/InlineEdit.php
@@ -70,6 +70,11 @@ class InlineEdit extends \Magento\Backend\App\Action implements HttpPostActionIn
*/
private $addressRegistry;
+ /**
+ * @var \Magento\Framework\Escaper
+ */
+ private $escaper;
+
/**
* @param Action\Context $context
* @param CustomerRepositoryInterface $customerRepository
@@ -78,6 +83,7 @@ class InlineEdit extends \Magento\Backend\App\Action implements HttpPostActionIn
* @param \Magento\Framework\Api\DataObjectHelper $dataObjectHelper
* @param \Psr\Log\LoggerInterface $logger
* @param AddressRegistry|null $addressRegistry
+ * @param \Magento\Framework\Escaper $escaper
*/
public function __construct(
Action\Context $context,
@@ -86,7 +92,8 @@ public function __construct(
\Magento\Customer\Model\Customer\Mapper $customerMapper,
\Magento\Framework\Api\DataObjectHelper $dataObjectHelper,
\Psr\Log\LoggerInterface $logger,
- AddressRegistry $addressRegistry = null
+ AddressRegistry $addressRegistry = null,
+ \Magento\Framework\Escaper $escaper = null
) {
$this->customerRepository = $customerRepository;
$this->resultJsonFactory = $resultJsonFactory;
@@ -94,6 +101,7 @@ public function __construct(
$this->dataObjectHelper = $dataObjectHelper;
$this->logger = $logger;
$this->addressRegistry = $addressRegistry ?: ObjectManager::getInstance()->get(AddressRegistry::class);
+ $this->escaper = $escaper ?: ObjectManager::getInstance()->get(\Magento\Framework\Escaper::class);
parent::__construct($context);
}
@@ -128,10 +136,14 @@ public function execute()
$postItems = $this->getRequest()->getParam('items', []);
if (!($this->getRequest()->getParam('isAjax') && count($postItems))) {
- return $resultJson->setData([
- 'messages' => [__('Please correct the data sent.')],
- 'error' => true,
- ]);
+ return $resultJson->setData(
+ [
+ 'messages' => [
+ __('Please correct the data sent.')
+ ],
+ 'error' => true,
+ ]
+ );
}
foreach (array_keys($postItems) as $customerId) {
@@ -234,13 +246,16 @@ protected function saveCustomer(CustomerInterface $customer)
$this->disableAddressValidation($customer);
$this->customerRepository->save($customer);
} catch (\Magento\Framework\Exception\InputException $e) {
- $this->getMessageManager()->addError($this->getErrorWithCustomerId($e->getMessage()));
+ $this->getMessageManager()
+ ->addError($this->getErrorWithCustomerId($this->escaper->escapeHtml($e->getMessage())));
$this->logger->critical($e);
} catch (\Magento\Framework\Exception\LocalizedException $e) {
- $this->getMessageManager()->addError($this->getErrorWithCustomerId($e->getMessage()));
+ $this->getMessageManager()
+ ->addError($this->getErrorWithCustomerId($this->escaper->escapeHtml($e->getMessage())));
$this->logger->critical($e);
} catch (\Exception $e) {
- $this->getMessageManager()->addError($this->getErrorWithCustomerId('We can\'t save the customer.'));
+ $this->getMessageManager()
+ ->addError($this->getErrorWithCustomerId('We can\'t save the customer.'));
$this->logger->critical($e);
}
}
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/Save.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/Save.php
index 38ed688a835bc..d1ce16ee9421c 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/Save.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/Save.php
@@ -215,7 +215,7 @@ protected function _extractData(
/**
* Saves default_billing and default_shipping flags for customer address
*
- * @deprecated must be removed because addresses are save separately for now
+ * @deprecated 102.0.1 must be removed because addresses are save separately for now
* @param array $addressIdList
* @param array $extractedCustomerData
* @return array
@@ -258,7 +258,7 @@ protected function saveDefaultFlags(array $addressIdList, array & $extractedCust
/**
* Reformat customer addresses data to be compatible with customer service interface
*
- * @deprecated addresses are saved separately for now
+ * @deprecated 102.0.1 addresses are saved separately for now
* @param array $extractedCustomerData
* @return array
*/
diff --git a/app/code/Magento/Customer/Controller/Ajax/Login.php b/app/code/Magento/Customer/Controller/Ajax/Login.php
index 5049c83e60f35..1215c47ab9902 100644
--- a/app/code/Magento/Customer/Controller/Ajax/Login.php
+++ b/app/code/Magento/Customer/Controller/Ajax/Login.php
@@ -191,7 +191,6 @@ public function execute()
$credentials['password']
);
$this->customerSession->setCustomerDataAsLoggedIn($customer);
- $this->customerSession->regenerateId();
$redirectRoute = $this->getAccountRedirect()->getRedirectCookie();
if ($this->cookieManager->getCookie('mage-cache-sessid')) {
$metadata = $this->cookieMetadataFactory->createCookieMetadata();
diff --git a/app/code/Magento/Customer/Controller/Section/Load.php b/app/code/Magento/Customer/Controller/Section/Load.php
index 37cd071b13623..d13110fc34090 100644
--- a/app/code/Magento/Customer/Controller/Section/Load.php
+++ b/app/code/Magento/Customer/Controller/Section/Load.php
@@ -23,7 +23,7 @@ class Load extends \Magento\Framework\App\Action\Action implements HttpGetAction
/**
* @var Identifier
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
protected $sectionIdentifier;
diff --git a/app/code/Magento/Customer/Helper/Address.php b/app/code/Magento/Customer/Helper/Address.php
index 765c13b287704..74eee759b4abd 100644
--- a/app/code/Magento/Customer/Helper/Address.php
+++ b/app/code/Magento/Customer/Helper/Address.php
@@ -81,7 +81,7 @@ class Address extends \Magento\Framework\App\Helper\AbstractHelper
/**
* @var CustomerMetadataInterface
*
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
protected $_customerMetadataService;
@@ -407,7 +407,7 @@ public function isVatAttributeVisible()
* @return bool
* @throws NoSuchEntityException
* @throws \Magento\Framework\Exception\LocalizedException
- * @since 100.2.0
+ * @since 101.0.0
*/
public function isAttributeVisible($code)
{
diff --git a/app/code/Magento/Customer/Model/Account/Redirect.php b/app/code/Magento/Customer/Model/Account/Redirect.php
index 2ccaaea45680c..6614bba48f915 100644
--- a/app/code/Magento/Customer/Model/Account/Redirect.php
+++ b/app/code/Magento/Customer/Model/Account/Redirect.php
@@ -54,7 +54,7 @@ class Redirect
protected $customerUrl;
/**
- * @deprecated 100.1.8
+ * @deprecated 100.0.2
* @var UrlInterface
*/
protected $url;
diff --git a/app/code/Magento/Customer/Model/AccountManagement.php b/app/code/Magento/Customer/Model/AccountManagement.php
index 23d667812c357..3e09d46be7242 100644
--- a/app/code/Magento/Customer/Model/AccountManagement.php
+++ b/app/code/Magento/Customer/Model/AccountManagement.php
@@ -963,6 +963,7 @@ protected function sendEmailConfirmation(CustomerInterface $customer, $redirectU
$templateType = self::NEW_ACCOUNT_EMAIL_REGISTERED_NO_PASSWORD;
}
$this->getEmailNotification()->newAccount($customer, $templateType, $redirectUrl, $customer->getStoreId());
+ $customer->setConfirmation(null);
} catch (MailException $e) {
// If we are not able to send a new account email, this should be ignored
$this->logger->critical($e);
@@ -1331,7 +1332,7 @@ protected function sendEmailTemplate(
*
* @param CustomerInterface $customer
* @return bool
- * @deprecated
+ * @deprecated 101.0.4
* @see AccountConfirmation::isConfirmationRequired
*/
protected function isConfirmationRequired($customer)
@@ -1348,7 +1349,7 @@ protected function isConfirmationRequired($customer)
*
* @param CustomerInterface $customer
* @return bool
- * @deprecated
+ * @deprecated 101.0.4
* @see AccountConfirmation::isConfirmationRequired
*/
protected function canSkipConfirmation($customer)
diff --git a/app/code/Magento/Customer/Model/Address.php b/app/code/Magento/Customer/Model/Address.php
index ea9b103f42273..241abbb06f8a1 100644
--- a/app/code/Magento/Customer/Model/Address.php
+++ b/app/code/Magento/Customer/Model/Address.php
@@ -395,7 +395,7 @@ private function getAttributeList()
* Retrieve attribute set id for customer address.
*
* @return int
- * @since 100.2.0
+ * @since 101.0.0
*/
public function getAttributeSetId()
{
diff --git a/app/code/Magento/Customer/Model/Address/AbstractAddress.php b/app/code/Magento/Customer/Model/Address/AbstractAddress.php
index d8d0646b30bb8..5e42e42650456 100644
--- a/app/code/Magento/Customer/Model/Address/AbstractAddress.php
+++ b/app/code/Magento/Customer/Model/Address/AbstractAddress.php
@@ -624,7 +624,7 @@ protected function _createCountryInstance()
* Unset Region from address
*
* @return $this
- * @since 100.2.0
+ * @since 101.0.0
*/
public function unsRegion()
{
@@ -635,7 +635,7 @@ public function unsRegion()
* Is company required
*
* @return bool
- * @since 100.2.0
+ * @since 101.0.0
* @throws \Magento\Framework\Exception\LocalizedException
*/
protected function isCompanyRequired()
@@ -647,7 +647,7 @@ protected function isCompanyRequired()
* Is telephone required
*
* @return bool
- * @since 100.2.0
+ * @since 101.0.0
* @throws \Magento\Framework\Exception\LocalizedException
*/
protected function isTelephoneRequired()
@@ -659,7 +659,7 @@ protected function isTelephoneRequired()
* Is fax required
*
* @return bool
- * @since 100.2.0
+ * @since 101.0.0
* @throws \Magento\Framework\Exception\LocalizedException
*/
protected function isFaxRequired()
diff --git a/app/code/Magento/Customer/Model/Address/ValidatorInterface.php b/app/code/Magento/Customer/Model/Address/ValidatorInterface.php
index 8468f28e70e70..1bdfd77a19311 100644
--- a/app/code/Magento/Customer/Model/Address/ValidatorInterface.php
+++ b/app/code/Magento/Customer/Model/Address/ValidatorInterface.php
@@ -10,6 +10,7 @@
* Interface for address validator.
*
* @api
+ * @since 102.0.0
*/
interface ValidatorInterface
{
@@ -19,6 +20,7 @@ interface ValidatorInterface
*
* @param AbstractAddress $address
* @return array
+ * @since 102.0.0
*/
public function validate(AbstractAddress $address);
}
diff --git a/app/code/Magento/Customer/Model/AttributeMetadataResolver.php b/app/code/Magento/Customer/Model/AttributeMetadataResolver.php
index c22cc9a4f23f4..9fdc452591ed1 100644
--- a/app/code/Magento/Customer/Model/AttributeMetadataResolver.php
+++ b/app/code/Magento/Customer/Model/AttributeMetadataResolver.php
@@ -115,7 +115,12 @@ public function getAttributesMeta(
// use getDataUsingMethod, since some getters are defined and apply additional processing of returning value
foreach (self::$metaProperties as $metaName => $origName) {
$value = $attribute->getDataUsingMethod($origName);
- $meta['arguments']['data']['config'][$metaName] = ($metaName === 'label') ? __($value) : $value;
+ if ($metaName === 'label') {
+ $meta['arguments']['data']['config'][$metaName] = __($value);
+ $meta['arguments']['data']['config']['__disableTmpl'] = [$metaName => true];
+ } else {
+ $meta['arguments']['data']['config'][$metaName] = $value;
+ }
if ('frontend_input' === $origName) {
$meta['arguments']['data']['config']['formElement'] = self::$formElement[$value] ?? $value;
}
@@ -126,7 +131,14 @@ public function getAttributesMeta(
$meta['arguments']['data']['config']['options'] = $this->countryWithWebsiteSource
->getAllOptions();
} else {
- $meta['arguments']['data']['config']['options'] = $attribute->getSource()->getAllOptions();
+ $options = $attribute->getSource()->getAllOptions();
+ array_walk(
+ $options,
+ function (&$item) {
+ $item['__disableTmpl'] = ['label' => true];
+ }
+ );
+ $meta['arguments']['data']['config']['options'] = $options;
}
}
diff --git a/app/code/Magento/Customer/Model/AuthenticationInterface.php b/app/code/Magento/Customer/Model/AuthenticationInterface.php
index f2d213be2ccfe..3c4cae3089218 100644
--- a/app/code/Magento/Customer/Model/AuthenticationInterface.php
+++ b/app/code/Magento/Customer/Model/AuthenticationInterface.php
@@ -11,6 +11,7 @@
/**
* Interface \Magento\Customer\Model\AuthenticationInterface
* @api
+ * @since 100.1.0
*/
interface AuthenticationInterface
{
@@ -19,6 +20,7 @@ interface AuthenticationInterface
*
* @param int $customerId
* @return void
+ * @since 100.1.0
*/
public function processAuthenticationFailure($customerId);
@@ -27,6 +29,7 @@ public function processAuthenticationFailure($customerId);
*
* @param int $customerId
* @return void
+ * @since 100.1.0
*/
public function unlock($customerId);
@@ -35,6 +38,7 @@ public function unlock($customerId);
*
* @param int $customerId
* @return boolean
+ * @since 100.1.0
*/
public function isLocked($customerId);
@@ -46,6 +50,7 @@ public function isLocked($customerId);
* @return boolean
* @throws InvalidEmailOrPasswordException
* @throws UserLockedException
+ * @since 100.1.0
*/
public function authenticate($customerId, $password);
}
diff --git a/app/code/Magento/Customer/Model/Checkout/ConfigProvider.php b/app/code/Magento/Customer/Model/Checkout/ConfigProvider.php
index 36eabe3571ceb..c19f1e68256cc 100644
--- a/app/code/Magento/Customer/Model/Checkout/ConfigProvider.php
+++ b/app/code/Magento/Customer/Model/Checkout/ConfigProvider.php
@@ -23,7 +23,7 @@ class ConfigProvider implements ConfigProviderInterface
/**
* @var UrlInterface
- * @deprecated
+ * @deprecated 101.0.4
*/
protected $urlBuilder;
diff --git a/app/code/Magento/Customer/Model/Config/Source/Group.php b/app/code/Magento/Customer/Model/Config/Source/Group.php
index 7132b8ad4cedf..65b2e14019c40 100644
--- a/app/code/Magento/Customer/Model/Config/Source/Group.php
+++ b/app/code/Magento/Customer/Model/Config/Source/Group.php
@@ -17,13 +17,13 @@ class Group implements \Magento\Framework\Option\ArrayInterface
protected $_options;
/**
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @var GroupManagementInterface
*/
protected $_groupManagement;
/**
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @var \Magento\Framework\Convert\DataObject
*/
protected $_converter;
diff --git a/app/code/Magento/Customer/Model/Config/Source/Group/Multiselect.php b/app/code/Magento/Customer/Model/Config/Source/Group/Multiselect.php
index bf1fae8d34bed..38f717b82ea35 100644
--- a/app/code/Magento/Customer/Model/Config/Source/Group/Multiselect.php
+++ b/app/code/Magento/Customer/Model/Config/Source/Group/Multiselect.php
@@ -19,13 +19,13 @@ class Multiselect implements \Magento\Framework\Option\ArrayInterface
protected $_options;
/**
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @var GroupManagementInterface
*/
protected $_groupManagement;
/**
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @var \Magento\Framework\Convert\DataObject
*/
protected $_converter;
diff --git a/app/code/Magento/Customer/Model/Customer.php b/app/code/Magento/Customer/Model/Customer.php
index 1287dbe5df708..94b850eb8e5ab 100644
--- a/app/code/Magento/Customer/Model/Customer.php
+++ b/app/code/Magento/Customer/Model/Customer.php
@@ -20,6 +20,7 @@
use Magento\Framework\Reflection\DataObjectProcessor;
use Magento\Store\Model\ScopeInterface;
use Magento\Framework\App\ObjectManager;
+use Magento\Framework\Math\Random;
/**
* Customer model
@@ -180,7 +181,7 @@ class Customer extends \Magento\Framework\Model\AbstractModel
protected $_encryptor;
/**
- * @var \Magento\Framework\Math\Random
+ * @var Random
*/
protected $mathRandom;
@@ -248,6 +249,7 @@ class Customer extends \Magento\Framework\Model\AbstractModel
* @param \Magento\Framework\Data\Collection\AbstractDb|null $resourceCollection
* @param array $data
* @param AccountConfirmation|null $accountConfirmation
+ * @param Random|null $mathRandom
*
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
*/
@@ -272,7 +274,8 @@ public function __construct(
\Magento\Framework\Indexer\IndexerRegistry $indexerRegistry,
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
array $data = [],
- AccountConfirmation $accountConfirmation = null
+ AccountConfirmation $accountConfirmation = null,
+ Random $mathRandom = null
) {
$this->metadataService = $metadataService;
$this->_scopeConfig = $scopeConfig;
@@ -291,6 +294,7 @@ public function __construct(
$this->indexerRegistry = $indexerRegistry;
$this->accountConfirmation = $accountConfirmation ?: ObjectManager::getInstance()
->get(AccountConfirmation::class);
+ $this->mathRandom = $mathRandom ?: ObjectManager::getInstance()->get(Random::class);
parent::__construct(
$context,
$registry,
@@ -788,7 +792,7 @@ public function sendNewAccountEmail($type = 'registered', $backUrl = '', $storeI
* Check if accounts confirmation is required in config
*
* @return bool
- * @deprecated
+ * @deprecated 101.0.4
* @see AccountConfirmation::isConfirmationRequired
*/
public function isConfirmationRequired()
@@ -805,7 +809,7 @@ public function isConfirmationRequired()
*/
public function getRandomConfirmationKey()
{
- return md5(uniqid());
+ return $this->mathRandom->getRandomString(32);
}
/**
@@ -968,6 +972,7 @@ public function getSharedWebsiteIds()
* Retrieve attribute set id for customer.
*
* @return int
+ * @since 102.0.1
*/
public function getAttributeSetId()
{
@@ -1167,7 +1172,7 @@ public function setIsReadonly($value)
* Check whether confirmation may be skipped when registering using certain email address
*
* @return bool
- * @deprecated
+ * @deprecated 101.0.4
* @see AccountConfirmation::isConfirmationRequired
*/
protected function canSkipConfirmation()
diff --git a/app/code/Magento/Customer/Model/Customer/Attribute/Backend/Password.php b/app/code/Magento/Customer/Model/Customer/Attribute/Backend/Password.php
index a74838a1a7812..184a9ea8ed7bc 100644
--- a/app/code/Magento/Customer/Model/Customer/Attribute/Backend/Password.php
+++ b/app/code/Magento/Customer/Model/Customer/Attribute/Backend/Password.php
@@ -9,7 +9,7 @@
use Magento\Framework\Exception\LocalizedException;
/**
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* Customer password attribute backend
*/
class Password extends \Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend
@@ -69,7 +69,7 @@ public function beforeSave($object)
}
/**
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @param \Magento\Framework\DataObject $object
* @return bool
*/
diff --git a/app/code/Magento/Customer/Model/Customer/DataProvider.php b/app/code/Magento/Customer/Model/Customer/DataProvider.php
index 5bad0a41aadc3..482478acbb291 100644
--- a/app/code/Magento/Customer/Model/Customer/DataProvider.php
+++ b/app/code/Magento/Customer/Model/Customer/DataProvider.php
@@ -33,7 +33,7 @@
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @SuppressWarnings(PHPMD.TooManyFields)
*
- * @deprecated \Magento\Customer\Model\Customer\DataProviderWithDefaultAddresses is used instead
+ * @deprecated 102.0.1 \Magento\Customer\Model\Customer\DataProviderWithDefaultAddresses is used instead
* @api
* @since 100.0.2
*/
@@ -352,7 +352,7 @@ private function canShowAttribute(AbstractAttribute $customerAttribute)
* Retrieve Country With Websites Source
*
* @return CountryWithWebsites
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
private function getCountryWithWebsiteSource()
{
diff --git a/app/code/Magento/Customer/Model/Customer/Source/GroupSourceInterface.php b/app/code/Magento/Customer/Model/Customer/Source/GroupSourceInterface.php
index 26be387a02f9c..e7addc942811d 100644
--- a/app/code/Magento/Customer/Model/Customer/Source/GroupSourceInterface.php
+++ b/app/code/Magento/Customer/Model/Customer/Source/GroupSourceInterface.php
@@ -9,7 +9,7 @@
/**
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
interface GroupSourceInterface extends OptionSourceInterface
{
diff --git a/app/code/Magento/Customer/Model/Group/RetrieverInterface.php b/app/code/Magento/Customer/Model/Group/RetrieverInterface.php
index 7d2d47cae2f09..1b1e4efdb7c50 100644
--- a/app/code/Magento/Customer/Model/Group/RetrieverInterface.php
+++ b/app/code/Magento/Customer/Model/Group/RetrieverInterface.php
@@ -9,7 +9,7 @@
* Interface for getting current customer group from session.
*
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
interface RetrieverInterface
{
@@ -17,7 +17,7 @@ interface RetrieverInterface
* Retrieve customer group id.
*
* @return int
- * @since 100.2.0
+ * @since 101.0.0
*/
public function getCustomerGroupId();
}
diff --git a/app/code/Magento/Customer/Model/Metadata/Form/File.php b/app/code/Magento/Customer/Model/Metadata/Form/File.php
index 227e85ed98f91..1a1c48075fce5 100644
--- a/app/code/Magento/Customer/Model/Metadata/Form/File.php
+++ b/app/code/Magento/Customer/Model/Metadata/Form/File.php
@@ -57,7 +57,7 @@ class File extends AbstractData
/**
* @var FileProcessorFactory
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*/
protected $fileProcessorFactory;
diff --git a/app/code/Magento/Customer/Model/Options.php b/app/code/Magento/Customer/Model/Options.php
index 71e70f8e14208..c230353f2a284 100644
--- a/app/code/Magento/Customer/Model/Options.php
+++ b/app/code/Magento/Customer/Model/Options.php
@@ -74,7 +74,7 @@ public function getNameSuffixOptions($store = null)
* @param bool $isOptional
* @return array|bool
*
- * @deprecated
+ * @deprecated 101.0.4
* @see prepareNamePrefixSuffixOptions()
*/
protected function _prepareNamePrefixSuffixOptions($options, $isOptional = false)
diff --git a/app/code/Magento/Customer/Model/Plugin/CustomerNotification.php b/app/code/Magento/Customer/Model/Plugin/CustomerNotification.php
index 517aef5690ee6..577c97a19268a 100644
--- a/app/code/Magento/Customer/Model/Plugin/CustomerNotification.php
+++ b/app/code/Magento/Customer/Model/Plugin/CustomerNotification.php
@@ -15,6 +15,11 @@
use Magento\Framework\Exception\NoSuchEntityException;
use Psr\Log\LoggerInterface;
+/**
+ * Plugin before \Magento\Framework\App\Action\AbstractAction::dispatch.
+ *
+ * Plugin to remove notifications from cache.
+ */
class CustomerNotification
{
/**
@@ -66,6 +71,8 @@ public function __construct(
}
/**
+ * Removes notifications from cache.
+ *
* @param AbstractAction $subject
* @param RequestInterface $request
* @return void
@@ -82,10 +89,10 @@ public function beforeDispatch(AbstractAction $subject, RequestInterface $reques
)
) {
try {
+ $this->session->regenerateId();
$customer = $this->customerRepository->getById($customerId);
$this->session->setCustomerData($customer);
$this->session->setCustomerGroupId($customer->getGroupId());
- $this->session->regenerateId();
$this->notificationStorage->remove(NotificationStorage::UPDATE_CUSTOMER_SESSION, $customer->getId());
} catch (NoSuchEntityException $e) {
$this->logger->error($e);
diff --git a/app/code/Magento/Customer/Model/ResourceModel/Address.php b/app/code/Magento/Customer/Model/ResourceModel/Address.php
index 200eaabe6517d..8e44638e7aee8 100644
--- a/app/code/Magento/Customer/Model/ResourceModel/Address.php
+++ b/app/code/Magento/Customer/Model/ResourceModel/Address.php
@@ -126,7 +126,7 @@ public function delete($object)
/**
* Get instance of DeleteRelation class
*
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @return DeleteRelation
*/
private function getDeleteRelation()
@@ -137,7 +137,7 @@ private function getDeleteRelation()
/**
* Get instance of CustomerRegistry class
*
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @return CustomerRegistry
*/
private function getCustomerRegistry()
diff --git a/app/code/Magento/Customer/Model/ResourceModel/Address/Attribute/Source/Country.php b/app/code/Magento/Customer/Model/ResourceModel/Address/Attribute/Source/Country.php
index 37b3b1af0a42d..62339cc7b974f 100644
--- a/app/code/Magento/Customer/Model/ResourceModel/Address/Attribute/Source/Country.php
+++ b/app/code/Magento/Customer/Model/ResourceModel/Address/Attribute/Source/Country.php
@@ -67,7 +67,7 @@ protected function _createCountriesCollection()
/**
* Retrieve Store Manager
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @return StoreManagerInterface
*/
private function getStoreManager()
diff --git a/app/code/Magento/Customer/Model/ResourceModel/Address/Relation.php b/app/code/Magento/Customer/Model/ResourceModel/Address/Relation.php
index ae342a1b10dd8..07f03072f8488 100644
--- a/app/code/Magento/Customer/Model/ResourceModel/Address/Relation.php
+++ b/app/code/Magento/Customer/Model/ResourceModel/Address/Relation.php
@@ -110,7 +110,7 @@ private function getDefaultShippingChangedAddress(
/**
* Checks if address has chosen as default and has had an id
*
- * @deprecated Is not used anymore due to changes in logic of save of address.
+ * @deprecated 102.0.1 Is not used anymore due to changes in logic of save of address.
* If address was default and becomes not default than default address id for customer must be
* set to null
* @param \Magento\Framework\Model\AbstractModel $object
diff --git a/app/code/Magento/Customer/Model/ResourceModel/AddressRepository.php b/app/code/Magento/Customer/Model/ResourceModel/AddressRepository.php
index 3fe61785de897..48828d58fca04 100644
--- a/app/code/Magento/Customer/Model/ResourceModel/AddressRepository.php
+++ b/app/code/Magento/Customer/Model/ResourceModel/AddressRepository.php
@@ -209,7 +209,7 @@ public function getList(SearchCriteriaInterface $searchCriteria)
/**
* Helper function that adds a FilterGroup to the collection.
*
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @param FilterGroup $filterGroup
* @param Collection $collection
* @return void
@@ -268,7 +268,7 @@ public function deleteById($addressId)
/**
* Retrieve collection processor
*
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @return CollectionProcessorInterface
*/
private function getCollectionProcessor()
diff --git a/app/code/Magento/Customer/Model/ResourceModel/CustomerRepository.php b/app/code/Magento/Customer/Model/ResourceModel/CustomerRepository.php
index ddc0576cb0dae..82d12b364add5 100644
--- a/app/code/Magento/Customer/Model/ResourceModel/CustomerRepository.php
+++ b/app/code/Magento/Customer/Model/ResourceModel/CustomerRepository.php
@@ -420,7 +420,7 @@ public function deleteById($customerId)
/**
* Helper function that adds a FilterGroup to the collection.
*
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @param FilterGroup $filterGroup
* @param Collection $collection
* @return void
diff --git a/app/code/Magento/Customer/Model/ResourceModel/GroupRepository.php b/app/code/Magento/Customer/Model/ResourceModel/GroupRepository.php
index 664f85f841e3f..10979cd9cc22a 100644
--- a/app/code/Magento/Customer/Model/ResourceModel/GroupRepository.php
+++ b/app/code/Magento/Customer/Model/ResourceModel/GroupRepository.php
@@ -220,7 +220,7 @@ public function getList(SearchCriteriaInterface $searchCriteria)
/**
* Helper function that adds a FilterGroup to the collection.
*
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @param FilterGroup $filterGroup
* @param Collection $collection
* @return void
@@ -243,7 +243,7 @@ protected function addFilterGroupToCollection(FilterGroup $filterGroup, Collecti
/**
* Translates a field name to a DB column name for use in collection queries.
*
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @param string $field a field name that should be translated to a DB column name.
* @return string
*/
@@ -343,7 +343,7 @@ protected function _verifyTaxClassModel($taxClassId, $group)
/**
* Retrieve collection processor
*
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @return CollectionProcessorInterface
*/
private function getCollectionProcessor()
diff --git a/app/code/Magento/Customer/Model/Session.php b/app/code/Magento/Customer/Model/Session.php
index 5900fed218edf..ca15b8ab2034a 100644
--- a/app/code/Magento/Customer/Model/Session.php
+++ b/app/code/Magento/Customer/Model/Session.php
@@ -17,6 +17,7 @@
* @api
* @method string getNoReferer()
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ * @SuppressWarnings(PHPMD.CookieAndSessionMisuse)
* @since 100.0.2
*/
class Session extends \Magento\Framework\Session\SessionManager
@@ -354,8 +355,9 @@ public function setCustomerGroupId($id)
}
/**
- * Get customer group id
- * If customer is not logged in system, 'not logged in' group id will be returned
+ * Get customer group id.
+ *
+ * If customer is not logged in system, 'not logged in' group id will be returned.
*
* @return int
*/
@@ -407,24 +409,29 @@ public function checkCustomerId($customerId)
}
/**
+ * Sets customer as logged in.
+ *
* @param Customer $customer
* @return $this
*/
public function setCustomerAsLoggedIn($customer)
{
+ $this->regenerateId();
$this->setCustomer($customer);
$this->_eventManager->dispatch('customer_login', ['customer' => $customer]);
$this->_eventManager->dispatch('customer_data_object_login', ['customer' => $this->getCustomerDataObject()]);
- $this->regenerateId();
return $this;
}
/**
+ * Sets customer as logged in.
+ *
* @param CustomerData $customer
* @return $this
*/
public function setCustomerDataAsLoggedIn($customer)
{
+ $this->regenerateId();
$this->_httpContext->setValue(Context::CONTEXT_AUTH, true, false);
$this->setCustomerData($customer);
@@ -567,6 +574,8 @@ public function regenerateId()
}
/**
+ * Creates \Magento\Framework\UrlInterface object.
+ *
* @return \Magento\Framework\UrlInterface
*/
protected function _createUrl()
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Account/LoginPostTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Account/LoginPostTest.php
index 762c76b695dee..13cf195ab5f69 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Account/LoginPostTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Account/LoginPostTest.php
@@ -93,13 +93,14 @@ protected function setUp()
$this->session = $this->getMockBuilder(\Magento\Customer\Model\Session::class)
->disableOriginalConstructor()
- ->setMethods([
- 'isLoggedIn',
- 'setCustomerDataAsLoggedIn',
- 'regenerateId',
- 'setUsername',
- ])
- ->getMock();
+ ->setMethods(
+ [
+ 'isLoggedIn',
+ 'setCustomerDataAsLoggedIn',
+ 'regenerateId',
+ 'setUsername',
+ ]
+ )->getMock();
$this->accountManagement = $this->getMockBuilder(\Magento\Customer\Api\AccountManagementInterface::class)
->getMockForAbstractClass();
@@ -253,10 +254,12 @@ public function testExecuteSuccessCustomRedirect()
$this->request->expects($this->once())
->method('getPost')
->with('login')
- ->willReturn([
- 'username' => $username,
- 'password' => $password,
- ]);
+ ->willReturn(
+ [
+ 'username' => $username,
+ 'password' => $password,
+ ]
+ );
$customerMock = $this->getMockBuilder(\Magento\Customer\Api\Data\CustomerInterface::class)
->getMockForAbstractClass();
@@ -292,9 +295,8 @@ public function testExecuteSuccessCustomRedirect()
->method('setCustomerDataAsLoggedIn')
->with($customerMock)
->willReturnSelf();
- $this->session->expects($this->once())
- ->method('regenerateId')
- ->willReturnSelf();
+ $this->session->expects($this->never())
+ ->method('regenerateId');
$this->accountRedirect->expects($this->never())
->method('getRedirect')
@@ -335,10 +337,12 @@ public function testExecuteSuccess()
$this->request->expects($this->once())
->method('getPost')
->with('login')
- ->willReturn([
- 'username' => $username,
- 'password' => $password,
- ]);
+ ->willReturn(
+ [
+ 'username' => $username,
+ 'password' => $password,
+ ]
+ );
$customerMock = $this->getMockBuilder(\Magento\Customer\Api\Data\CustomerInterface::class)
->getMockForAbstractClass();
@@ -357,9 +361,8 @@ public function testExecuteSuccess()
->method('setCustomerDataAsLoggedIn')
->with($customerMock)
->willReturnSelf();
- $this->session->expects($this->once())
- ->method('regenerateId')
- ->willReturnSelf();
+ $this->session->expects($this->never())
+ ->method('regenerateId');
$this->accountRedirect->expects($this->once())
->method('getRedirect')
@@ -426,10 +429,12 @@ public function testExecuteWithException(
$this->request->expects($this->once())
->method('getPost')
->with('login')
- ->willReturn([
- 'username' => $username,
- 'password' => $password,
- ]);
+ ->willReturn(
+ [
+ 'username' => $username,
+ 'password' => $password,
+ ]
+ );
$exception = new $exceptionData['exception'](__($exceptionData['message']));
@@ -488,11 +493,12 @@ protected function prepareContext()
$this->request = $this->getMockBuilder(\Magento\Framework\App\Request\Http::class)
->disableOriginalConstructor()
- ->setMethods([
- 'isPost',
- 'getPost',
- ])
- ->getMock();
+ ->setMethods(
+ [
+ 'isPost',
+ 'getPost',
+ ]
+ )->getMock();
$this->resultRedirect = $this->getMockBuilder(\Magento\Framework\Controller\Result\Redirect::class)
->disableOriginalConstructor()
diff --git a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/InlineEditTest.php b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/InlineEditTest.php
index 45e64f6557d51..d8a46b00db57d 100644
--- a/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/InlineEditTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Controller/Adminhtml/Index/InlineEditTest.php
@@ -9,6 +9,7 @@
use Magento\Customer\Model\EmailNotificationInterface;
use Magento\Framework\DataObject;
use Magento\Framework\Message\MessageInterface;
+use Magento\Framework\Escaper;
/**
* Unit tests for Inline customer edit
@@ -78,6 +79,9 @@ class InlineEditTest extends \PHPUnit\Framework\TestCase
/** @var array */
private $items;
+ /** @var \Magento\Framework\Escaper */
+ private $escaper;
+
/**
* Sets up mocks
*
@@ -86,7 +90,7 @@ class InlineEditTest extends \PHPUnit\Framework\TestCase
protected function setUp()
{
$objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
-
+ $this->escaper = new Escaper();
$this->request = $this->getMockForAbstractClass(
\Magento\Framework\App\RequestInterface::class,
[],
@@ -172,7 +176,8 @@ protected function setUp()
'addressDataFactory' => $this->addressDataFactory,
'addressRepository' => $this->addressRepository,
'logger' => $this->logger,
- 'addressRegistry' => $this->addressRegistry
+ 'addressRegistry' => $this->addressRegistry,
+ 'escaper' => $this->escaper,
]
);
$reflection = new \ReflectionClass(get_class($this->controller));
@@ -291,10 +296,14 @@ protected function prepareMocksForErrorMessagesProcessing()
->willReturn('Error text');
$this->resultJson->expects($this->once())
->method('setData')
- ->with([
- 'messages' => ['Error text'],
- 'error' => true,
- ])
+ ->with(
+ [
+ 'messages' => [
+ 'Error text',
+ ],
+ 'error' => true,
+ ]
+ )
->willReturnSelf();
}
@@ -340,10 +349,14 @@ public function testExecuteWithoutItems()
$this->resultJson
->expects($this->once())
->method('setData')
- ->with([
- 'messages' => [__('Please correct the data sent.')],
- 'error' => true,
- ])
+ ->with(
+ [
+ 'messages' => [
+ __('Please correct the data sent.'),
+ ],
+ 'error' => true,
+ ]
+ )
->willReturnSelf();
$this->assertSame($this->resultJson, $this->controller->execute());
}
diff --git a/app/code/Magento/Customer/Test/Unit/Model/CustomerTest.php b/app/code/Magento/Customer/Test/Unit/Model/CustomerTest.php
index 65831069aa1fb..170cd001e5b9e 100644
--- a/app/code/Magento/Customer/Test/Unit/Model/CustomerTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Model/CustomerTest.php
@@ -15,6 +15,7 @@
use Magento\Customer\Model\AccountConfirmation;
use Magento\Customer\Model\ResourceModel\Address\CollectionFactory as AddressCollectionFactory;
use Magento\Customer\Api\Data\CustomerInterfaceFactory;
+use Magento\Framework\Math\Random;
/**
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
@@ -86,6 +87,14 @@ class CustomerTest extends \PHPUnit\Framework\TestCase
*/
private $dataObjectHelper;
+ /**
+ * @var Random|\PHPUnit_Framework_MockObject_MockObject
+ */
+ private $mathRandom;
+
+ /**
+ * @inheritdoc
+ */
protected function setUp()
{
$this->_website = $this->createMock(\Magento\Store\Model\Website::class);
@@ -130,6 +139,7 @@ protected function setUp()
->disableOriginalConstructor()
->setMethods(['populateWithArray'])
->getMock();
+ $this->mathRandom = $this->createMock(Random::class);
$this->_model = $helper->getObject(
\Magento\Customer\Model\Customer::class,
@@ -146,7 +156,8 @@ protected function setUp()
'accountConfirmation' => $this->accountConfirmation,
'_addressesFactory' => $this->addressesFactory,
'customerDataFactory' => $this->customerDataFactory,
- 'dataObjectHelper' => $this->dataObjectHelper
+ 'dataObjectHelper' => $this->dataObjectHelper,
+ 'mathRandom' => $this->mathRandom,
]
);
}
@@ -219,15 +230,17 @@ public function testSendNewAccountEmailWithoutStoreId()
->method('getTransport')
->will($this->returnValue($transportMock));
- $this->_model->setData([
- 'website_id' => 1,
- 'store_id' => 1,
- 'email' => 'email@example.com',
- 'firstname' => 'FirstName',
- 'lastname' => 'LastName',
- 'middlename' => 'MiddleName',
- 'prefix' => 'Name Prefix',
- ]);
+ $this->_model->setData(
+ [
+ 'website_id' => 1,
+ 'store_id' => 1,
+ 'email' => 'email@example.com',
+ 'firstname' => 'FirstName',
+ 'lastname' => 'LastName',
+ 'middlename' => 'MiddleName',
+ 'prefix' => 'Name Prefix',
+ ]
+ );
$this->_model->sendNewAccountEmail('registered');
}
@@ -383,4 +396,20 @@ public function testGetDataModel()
$this->_model->getDataModel();
$this->assertEquals($customerDataObject, $this->_model->getDataModel());
}
+
+ /**
+ * Check getRandomConfirmationKey use cryptographically secure function
+ *
+ * @return void
+ */
+ public function testGetRandomConfirmationKey() : void
+ {
+ $this->mathRandom
+ ->expects($this->once())
+ ->method('getRandomString')
+ ->with(32)
+ ->willReturn('random_string');
+
+ $this->_model->getRandomConfirmationKey();
+ }
}
diff --git a/app/code/Magento/Customer/Test/Unit/Ui/Component/Listing/Column/ActionsTest.php b/app/code/Magento/Customer/Test/Unit/Ui/Component/Listing/Column/ActionsTest.php
index 056c7e71e1827..9c5cf222db01e 100644
--- a/app/code/Magento/Customer/Test/Unit/Ui/Component/Listing/Column/ActionsTest.php
+++ b/app/code/Magento/Customer/Test/Unit/Ui/Component/Listing/Column/ActionsTest.php
@@ -7,6 +7,9 @@
use Magento\Customer\Ui\Component\Listing\Column\Actions;
+/**
+ * Unit tests for \Magento\Customer\UI\Component\Listing\Column\Actions.
+ */
class ActionsTest extends \PHPUnit\Framework\TestCase
{
/** @var Actions */
@@ -64,7 +67,8 @@ public function testPrepareDataSource()
'edit' => [
'href' => 'http://magento.com/customer/index/edit',
'label' => new \Magento\Framework\Phrase('Edit'),
- 'hidden' => false
+ 'hidden' => false,
+ '__disableTmpl' => true,
]
]
],
diff --git a/app/code/Magento/Customer/Ui/Component/Listing/Column/Actions.php b/app/code/Magento/Customer/Ui/Component/Listing/Column/Actions.php
index d6a4067ef3db6..e0ec96b231b91 100644
--- a/app/code/Magento/Customer/Ui/Component/Listing/Column/Actions.php
+++ b/app/code/Magento/Customer/Ui/Component/Listing/Column/Actions.php
@@ -60,6 +60,7 @@ public function prepareDataSource(array $dataSource)
),
'label' => __('Edit'),
'hidden' => false,
+ '__disableTmpl' => true,
];
}
}
diff --git a/app/code/Magento/Customer/Ui/Component/Listing/Column/GroupActions.php b/app/code/Magento/Customer/Ui/Component/Listing/Column/GroupActions.php
index 6870bd1136d10..80ae2a31e9917 100644
--- a/app/code/Magento/Customer/Ui/Component/Listing/Column/GroupActions.php
+++ b/app/code/Magento/Customer/Ui/Component/Listing/Column/GroupActions.php
@@ -79,6 +79,7 @@ public function prepareDataSource(array $dataSource)
]
),
'label' => __('Edit'),
+ '__disableTmpl' => true,
],
];
@@ -100,9 +101,11 @@ public function prepareDataSource(array $dataSource)
'message' => __(
'Are you sure you want to delete a %1 record?',
$this->escaper->escapeJs($title)
- )
+ ),
+ '__disableTmpl' => true,
],
- 'post' => true
+ 'post' => true,
+ '__disableTmpl' => true,
];
}
}
diff --git a/app/code/Magento/Customer/composer.json b/app/code/Magento/Customer/composer.json
index b9a7aca73fe34..521e4f97250c4 100644
--- a/app/code/Magento/Customer/composer.json
+++ b/app/code/Magento/Customer/composer.json
@@ -6,30 +6,30 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-authorization": "*",
- "magento/module-backend": "*",
- "magento/module-catalog": "*",
- "magento/module-checkout": "*",
- "magento/module-config": "*",
- "magento/module-directory": "*",
- "magento/module-eav": "*",
- "magento/module-integration": "*",
- "magento/module-media-storage": "*",
- "magento/module-newsletter": "*",
- "magento/module-page-cache": "*",
- "magento/module-quote": "*",
- "magento/module-review": "*",
- "magento/module-sales": "*",
- "magento/module-store": "*",
- "magento/module-tax": "*",
- "magento/module-theme": "*",
- "magento/module-ui": "*",
- "magento/module-wishlist": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-authorization": "100.3.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-checkout": "100.3.*",
+ "magento/module-config": "101.1.*",
+ "magento/module-directory": "100.3.*",
+ "magento/module-eav": "102.0.*",
+ "magento/module-integration": "100.3.*",
+ "magento/module-media-storage": "100.3.*",
+ "magento/module-newsletter": "100.3.*",
+ "magento/module-page-cache": "100.3.*",
+ "magento/module-quote": "101.1.*",
+ "magento/module-review": "100.3.*",
+ "magento/module-sales": "102.0.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-tax": "100.3.*",
+ "magento/module-theme": "101.0.*",
+ "magento/module-ui": "101.1.*",
+ "magento/module-wishlist": "101.1.*"
},
"suggest": {
- "magento/module-cookie": "*",
- "magento/module-customer-sample-data": "*"
+ "magento/module-cookie": "100.3.*",
+ "magento/module-customer-sample-data": "Sample Data version: 100.3.*"
},
"type": "magento2-module",
"license": [
@@ -43,5 +43,6 @@
"psr-4": {
"Magento\\Customer\\": ""
}
- }
+ },
+ "version": "102.0.2-p2"
}
diff --git a/app/code/Magento/CustomerAnalytics/composer.json b/app/code/Magento/CustomerAnalytics/composer.json
index 3840c534b1964..79d1168fb31a0 100644
--- a/app/code/Magento/CustomerAnalytics/composer.json
+++ b/app/code/Magento/CustomerAnalytics/composer.json
@@ -3,9 +3,9 @@
"description": "N/A",
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-customer": "*",
- "magento/module-analytics": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-customer": "102.0.*",
+ "magento/module-analytics": "100.3.*"
},
"type": "magento2-module",
"license": [
@@ -19,5 +19,6 @@
"psr-4": {
"Magento\\CustomerAnalytics\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/CustomerGraphQl/composer.json b/app/code/Magento/CustomerGraphQl/composer.json
index 722aba3aa0658..085ad435647bf 100644
--- a/app/code/Magento/CustomerGraphQl/composer.json
+++ b/app/code/Magento/CustomerGraphQl/composer.json
@@ -1,30 +1,31 @@
{
- "name": "magento/module-customer-graph-ql",
- "description": "N/A",
- "type": "magento2-module",
- "require": {
- "php": "~7.1.3||~7.2.0",
- "magento/module-customer": "*",
- "magento/module-authorization": "*",
- "magento/module-eav": "*",
- "magento/module-newsletter": "*",
- "magento/module-integration": "*",
- "magento/module-store": "*",
- "magento/framework": "*"
- },
- "suggest": {
- "magento/module-graph-ql": "*"
- },
- "license": [
- "OSL-3.0",
- "AFL-3.0"
- ],
- "autoload": {
- "files": [
- "registration.php"
+ "name": "magento/module-customer-graph-ql",
+ "description": "N/A",
+ "type": "magento2-module",
+ "require": {
+ "php": "~7.1.3||~7.2.0",
+ "magento/module-customer": "102.0.*",
+ "magento/module-authorization": "100.3.*",
+ "magento/module-eav": "102.0.*",
+ "magento/module-newsletter": "100.3.*",
+ "magento/module-integration": "100.3.*",
+ "magento/module-store": "101.0.*",
+ "magento/framework": "102.0.*"
+ },
+ "suggest": {
+ "magento/module-graph-ql": "100.3.*"
+ },
+ "license": [
+ "OSL-3.0",
+ "AFL-3.0"
],
- "psr-4": {
- "Magento\\CustomerGraphQl\\": ""
- }
- }
+ "autoload": {
+ "files": [
+ "registration.php"
+ ],
+ "psr-4": {
+ "Magento\\CustomerGraphQl\\": ""
+ }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/CustomerImportExport/Model/Import/Customer.php b/app/code/Magento/CustomerImportExport/Model/Import/Customer.php
index ab940c9e84533..603e5397ac5a9 100644
--- a/app/code/Magento/CustomerImportExport/Model/Import/Customer.php
+++ b/app/code/Magento/CustomerImportExport/Model/Import/Customer.php
@@ -352,6 +352,7 @@ protected function _getNextEntityId()
* @param array|AbstractSource $rows
*
* @return void
+ * @since 100.2.3
*/
public function prepareCustomerData($rows): void
{
@@ -372,6 +373,7 @@ public function prepareCustomerData($rows): void
/**
* @inheritDoc
+ * @since 100.2.3
*/
public function validateData()
{
diff --git a/app/code/Magento/CustomerImportExport/Model/ResourceModel/Import/Customer/Storage.php b/app/code/Magento/CustomerImportExport/Model/ResourceModel/Import/Customer/Storage.php
index 43623019c005e..74293e6a32542 100644
--- a/app/code/Magento/CustomerImportExport/Model/ResourceModel/Import/Customer/Storage.php
+++ b/app/code/Magento/CustomerImportExport/Model/ResourceModel/Import/Customer/Storage.php
@@ -139,7 +139,7 @@ public function addCustomerByArray(array $customer): Storage
/**
* Add customer to array
*
- * @deprecated @see addCustomerByArray
+ * @deprecated 100.3.0 @see addCustomerByArray
* @param DataObject $customer
* @return $this
*/
diff --git a/app/code/Magento/CustomerImportExport/composer.json b/app/code/Magento/CustomerImportExport/composer.json
index b0d4ebed7ee27..199fd334fb252 100644
--- a/app/code/Magento/CustomerImportExport/composer.json
+++ b/app/code/Magento/CustomerImportExport/composer.json
@@ -6,13 +6,13 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-customer": "*",
- "magento/module-directory": "*",
- "magento/module-eav": "*",
- "magento/module-import-export": "*",
- "magento/module-store": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-customer": "102.0.*",
+ "magento/module-directory": "100.3.*",
+ "magento/module-eav": "102.0.*",
+ "magento/module-import-export": "100.3.*",
+ "magento/module-store": "101.0.*"
},
"type": "magento2-module",
"license": [
@@ -26,5 +26,6 @@
"psr-4": {
"Magento\\CustomerImportExport\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/Deploy/composer.json b/app/code/Magento/Deploy/composer.json
index bd1a14a131404..86bcb24cd4e62 100644
--- a/app/code/Magento/Deploy/composer.json
+++ b/app/code/Magento/Deploy/composer.json
@@ -6,11 +6,11 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-config": "*",
- "magento/module-require-js": "*",
- "magento/module-store": "*",
- "magento/module-user": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-config": "101.1.*",
+ "magento/module-require-js": "100.3.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-user": "101.1.*"
},
"type": "magento2-module",
"license": [
@@ -25,5 +25,6 @@
"psr-4": {
"Magento\\Deploy\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/Developer/composer.json b/app/code/Magento/Developer/composer.json
index 31617a8d943c9..bfb7cc71f68f6 100644
--- a/app/code/Magento/Developer/composer.json
+++ b/app/code/Magento/Developer/composer.json
@@ -6,9 +6,9 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-config": "*",
- "magento/module-store": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-config": "101.1.*",
+ "magento/module-store": "101.0.*"
},
"type": "magento2-module",
"license": [
@@ -22,5 +22,6 @@
"psr-4": {
"Magento\\Developer\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/Dhl/Model/Carrier.php b/app/code/Magento/Dhl/Model/Carrier.php
index ebef0be25bce3..f93777775819a 100644
--- a/app/code/Magento/Dhl/Model/Carrier.php
+++ b/app/code/Magento/Dhl/Model/Carrier.php
@@ -1292,7 +1292,7 @@ protected function _doShipmentRequest(\Magento\Framework\DataObject $request)
*
* @param \Magento\Framework\DataObject $request
* @return $this|\Magento\Framework\DataObject|boolean
- * @deprecated
+ * @deprecated 100.2.3
*/
public function proccessAdditionalValidation(\Magento\Framework\DataObject $request)
{
diff --git a/app/code/Magento/Dhl/composer.json b/app/code/Magento/Dhl/composer.json
index a4c491e7a6cd4..1c03d6ffe5b14 100644
--- a/app/code/Magento/Dhl/composer.json
+++ b/app/code/Magento/Dhl/composer.json
@@ -7,19 +7,19 @@
"require": {
"php": "~7.1.3||~7.2.0",
"lib-libxml": "*",
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-catalog": "*",
- "magento/module-catalog-inventory": "*",
- "magento/module-config": "*",
- "magento/module-directory": "*",
- "magento/module-quote": "*",
- "magento/module-sales": "*",
- "magento/module-shipping": "*",
- "magento/module-store": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-catalog-inventory": "100.3.*",
+ "magento/module-config": "101.1.*",
+ "magento/module-directory": "100.3.*",
+ "magento/module-quote": "101.1.*",
+ "magento/module-sales": "102.0.*",
+ "magento/module-shipping": "100.3.*",
+ "magento/module-store": "101.0.*"
},
"suggest": {
- "magento/module-checkout": "*"
+ "magento/module-checkout": "100.3.*"
},
"type": "magento2-module",
"license": [
@@ -33,5 +33,6 @@
"psr-4": {
"Magento\\Dhl\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/Directory/Model/ResourceModel/Currency.php b/app/code/Magento/Directory/Model/ResourceModel/Currency.php
index 5339b0c9eb5bd..0c74e81d59bfc 100644
--- a/app/code/Magento/Directory/Model/ResourceModel/Currency.php
+++ b/app/code/Magento/Directory/Model/ResourceModel/Currency.php
@@ -165,7 +165,7 @@ public function saveRates($rates)
* @param string $path
* @return array
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
- * @deprecated because doesn't take into consideration scopes and system config values.
+ * @deprecated 100.2.3 because doesn't take into consideration scopes and system config values.
* @see \Magento\Directory\Model\CurrencyConfig::getConfigCurrencies()
*/
public function getConfigCurrencies($model, $path)
diff --git a/app/code/Magento/Directory/composer.json b/app/code/Magento/Directory/composer.json
index c1de1b7bac869..7112076d285a5 100644
--- a/app/code/Magento/Directory/composer.json
+++ b/app/code/Magento/Directory/composer.json
@@ -7,10 +7,10 @@
"require": {
"php": "~7.1.3||~7.2.0",
"lib-libxml": "*",
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-config": "*",
- "magento/module-store": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-config": "101.1.*",
+ "magento/module-store": "101.0.*"
},
"type": "magento2-module",
"license": [
@@ -24,5 +24,6 @@
"psr-4": {
"Magento\\Directory\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/DirectoryGraphQl/composer.json b/app/code/Magento/DirectoryGraphQl/composer.json
index d3c783e6c7bfe..cffd0f9689a7b 100644
--- a/app/code/Magento/DirectoryGraphQl/composer.json
+++ b/app/code/Magento/DirectoryGraphQl/composer.json
@@ -1,24 +1,25 @@
{
- "name": "magento/module-directory-graph-ql",
- "description": "N/A",
- "type": "magento2-module",
- "require": {
- "php": "~7.1.3||~7.2.0",
- "magento/module-directory": "*",
- "magento/module-store": "*",
- "magento/module-graph-ql": "*",
- "magento/framework": "*"
- },
- "license": [
- "OSL-3.0",
- "AFL-3.0"
- ],
- "autoload": {
- "files": [
- "registration.php"
+ "name": "magento/module-directory-graph-ql",
+ "description": "N/A",
+ "type": "magento2-module",
+ "require": {
+ "php": "~7.1.3||~7.2.0",
+ "magento/module-directory": "100.3.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-graph-ql": "100.3.*",
+ "magento/framework": "102.0.*"
+ },
+ "license": [
+ "OSL-3.0",
+ "AFL-3.0"
],
- "psr-4": {
- "Magento\\DirectoryGraphQl\\": ""
- }
- }
+ "autoload": {
+ "files": [
+ "registration.php"
+ ],
+ "psr-4": {
+ "Magento\\DirectoryGraphQl\\": ""
+ }
+ },
+ "version": "100.3.1"
}
diff --git a/app/code/Magento/Downloadable/Api/DomainManagerInterface.php b/app/code/Magento/Downloadable/Api/DomainManagerInterface.php
new file mode 100644
index 0000000000000..285d758476e35
--- /dev/null
+++ b/app/code/Magento/Downloadable/Api/DomainManagerInterface.php
@@ -0,0 +1,37 @@
+
- * @deprecated
+ * @deprecated 100.3.1
* @see \Magento\Downloadable\Ui\DataProvider\Product\Form\Modifier\Composite
*/
class Downloadable extends Widget implements TabInterface
diff --git a/app/code/Magento/Downloadable/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable/Links.php b/app/code/Magento/Downloadable/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable/Links.php
index 47c66c98fc8fb..068868b6dbedb 100644
--- a/app/code/Magento/Downloadable/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable/Links.php
+++ b/app/code/Magento/Downloadable/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable/Links.php
@@ -11,7 +11,7 @@
* @author Magento Core Team
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*
- * @deprecated
+ * @deprecated 100.3.1
* @see \Magento\Downloadable\Ui\DataProvider\Product\Form\Modifier\Links
*/
class Links extends \Magento\Backend\Block\Template
diff --git a/app/code/Magento/Downloadable/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable/Samples.php b/app/code/Magento/Downloadable/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable/Samples.php
index f245aeeeead67..d7e157e917cc5 100644
--- a/app/code/Magento/Downloadable/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable/Samples.php
+++ b/app/code/Magento/Downloadable/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable/Samples.php
@@ -10,7 +10,7 @@
*
* @author Magento Core Team
*
- * @deprecated
+ * @deprecated 100.3.1
* @see \Magento\Downloadable\Ui\DataProvider\Product\Form\Modifier\Samples
*/
class Samples extends \Magento\Backend\Block\Widget
diff --git a/app/code/Magento/Downloadable/Console/Command/DomainsAddCommand.php b/app/code/Magento/Downloadable/Console/Command/DomainsAddCommand.php
new file mode 100644
index 0000000000000..42a42dcddbfee
--- /dev/null
+++ b/app/code/Magento/Downloadable/Console/Command/DomainsAddCommand.php
@@ -0,0 +1,86 @@
+domainManager = $domainManager;
+ parent::__construct();
+ }
+
+ /**
+ * @inheritdoc
+ */
+ protected function configure()
+ {
+ $description = 'Add domains to the downloadable domains whitelist';
+
+ $this->setName('downloadable:domains:add')
+ ->setDescription($description)
+ ->setDefinition(
+ [
+ new InputArgument(
+ self::INPUT_KEY_DOMAINS,
+ InputArgument::IS_ARRAY,
+ 'Domains name'
+ )
+ ]
+ );
+ parent::configure();
+ }
+
+ /**
+ * @inheritdoc
+ */
+ protected function execute(InputInterface $input, OutputInterface $output)
+ {
+ try {
+ if ($input->getArgument(self::INPUT_KEY_DOMAINS)) {
+ $whitelistBefore = $this->domainManager->getDomains();
+ $newDomains = $input->getArgument(self::INPUT_KEY_DOMAINS);
+ $newDomains = array_filter(array_map('trim', $newDomains), 'strlen');
+ $this->domainManager->addDomains($newDomains);
+ foreach (array_diff($this->domainManager->getDomains(), $whitelistBefore) as $newHost) {
+ $output->writeln(
+ $newHost . ' was added to the whitelist.'
+ );
+ }
+ }
+ } catch (\Exception $e) {
+ $output->writeln('' . $e->getMessage() . '');
+ if ($output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) {
+ $output->writeln($e->getTraceAsString());
+ }
+ }
+ }
+}
diff --git a/app/code/Magento/Downloadable/Console/Command/DomainsRemoveCommand.php b/app/code/Magento/Downloadable/Console/Command/DomainsRemoveCommand.php
new file mode 100644
index 0000000000000..836c03c5f4a31
--- /dev/null
+++ b/app/code/Magento/Downloadable/Console/Command/DomainsRemoveCommand.php
@@ -0,0 +1,86 @@
+domainManager = $domainManager;
+ parent::__construct();
+ }
+
+ /**
+ * @inheritdoc
+ */
+ protected function configure()
+ {
+ $description = 'Remove domains from the downloadable domains whitelist';
+
+ $this->setName('downloadable:domains:remove')
+ ->setDescription($description)
+ ->setDefinition(
+ [
+ new InputArgument(
+ self::INPUT_KEY_DOMAINS,
+ InputArgument::IS_ARRAY,
+ 'Domain names'
+ )
+ ]
+ );
+ parent::configure();
+ }
+
+ /**
+ * @inheritdoc
+ */
+ protected function execute(InputInterface $input, OutputInterface $output)
+ {
+ try {
+ if ($input->getArgument(self::INPUT_KEY_DOMAINS)) {
+ $whitelistBefore = $this->domainManager->getDomains();
+ $removeDomains = $input->getArgument(self::INPUT_KEY_DOMAINS);
+ $removeDomains = array_filter(array_map('trim', $removeDomains), 'strlen');
+ $this->domainManager->removeDomains($removeDomains);
+ foreach (array_diff($whitelistBefore, $this->domainManager->getDomains()) as $removedHost) {
+ $output->writeln(
+ $removedHost . ' was removed from the whitelist.'
+ );
+ }
+ }
+ } catch (\Exception $e) {
+ $output->writeln('' . $e->getMessage() . '');
+ if ($output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) {
+ $output->writeln($e->getTraceAsString());
+ }
+ }
+ }
+}
diff --git a/app/code/Magento/Downloadable/Console/Command/DomainsShowCommand.php b/app/code/Magento/Downloadable/Console/Command/DomainsShowCommand.php
new file mode 100644
index 0000000000000..0b2e2a6c9487b
--- /dev/null
+++ b/app/code/Magento/Downloadable/Console/Command/DomainsShowCommand.php
@@ -0,0 +1,64 @@
+domainManager = $domainManager;
+ parent::__construct();
+ }
+
+ /**
+ * @inheritdoc
+ */
+ protected function configure()
+ {
+ $description = 'Display downloadable domains whitelist';
+
+ $this->setName('downloadable:domains:show')
+ ->setDescription($description);
+ parent::configure();
+ }
+
+ /**
+ * @inheritdoc
+ */
+ protected function execute(InputInterface $input, OutputInterface $output)
+ {
+ try {
+ $whitelist = implode("\n", $this->domainManager->getDomains());
+ $output->writeln(
+ "Downloadable domains whitelist:\n$whitelist"
+ );
+ } catch (\Exception $e) {
+ $output->writeln('' . $e->getMessage() . '');
+ if ($output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) {
+ $output->writeln($e->getTraceAsString());
+ }
+ }
+ }
+}
diff --git a/app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/Product/Edit/Form.php b/app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/Product/Edit/Form.php
index fe430566d63ce..dbd236d5e8827 100644
--- a/app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/Product/Edit/Form.php
+++ b/app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/Product/Edit/Form.php
@@ -9,7 +9,7 @@
/**
* Class Form
*
- * @deprecated since downloadable information rendering moved to UI components.
+ * @deprecated 100.3.1 since downloadable information rendering moved to UI components.
* @see \Magento\Downloadable\Ui\DataProvider\Product\Form\Modifier\Composite
* @package Magento\Downloadable\Controller\Adminhtml\Downloadable\Product\Edit
*/
diff --git a/app/code/Magento/Downloadable/Controller/Adminhtml/Product/Initialization/Helper/Plugin/Downloadable.php b/app/code/Magento/Downloadable/Controller/Adminhtml/Product/Initialization/Helper/Plugin/Downloadable.php
index a283891afc406..f310b376633d3 100644
--- a/app/code/Magento/Downloadable/Controller/Adminhtml/Product/Initialization/Helper/Plugin/Downloadable.php
+++ b/app/code/Magento/Downloadable/Controller/Adminhtml/Product/Initialization/Helper/Plugin/Downloadable.php
@@ -5,11 +5,14 @@
*/
namespace Magento\Downloadable\Controller\Adminhtml\Product\Initialization\Helper\Plugin;
-use Magento\Framework\App\RequestInterface;
+use Magento\Downloadable\Api\Data\LinkInterfaceFactory;
+use Magento\Downloadable\Api\Data\SampleInterfaceFactory;
+use Magento\Downloadable\Helper\Download;
use Magento\Downloadable\Model\Link\Builder as LinkBuilder;
+use Magento\Downloadable\Model\Product\Type;
+use Magento\Downloadable\Model\ResourceModel\Sample\Collection;
use Magento\Downloadable\Model\Sample\Builder as SampleBuilder;
-use Magento\Downloadable\Api\Data\SampleInterfaceFactory;
-use Magento\Downloadable\Api\Data\LinkInterfaceFactory;
+use Magento\Framework\App\RequestInterface;
/**
* Class for initialization downloadable info from request.
@@ -42,8 +45,6 @@ class Downloadable
private $linkBuilder;
/**
- * Constructor
- *
* @param RequestInterface $request
* @param LinkBuilder $linkBuilder
* @param SampleBuilder $sampleBuilder
@@ -79,14 +80,18 @@ public function afterInitialize(
\Magento\Catalog\Model\Product $product
) {
if ($downloadable = $this->request->getPost('downloadable')) {
+ $product->setTypeId(Type::TYPE_DOWNLOADABLE);
$product->setDownloadableData($downloadable);
$extension = $product->getExtensionAttributes();
+ $productLinks = $product->getTypeInstance()->getLinks($product);
+ $productSamples = $product->getTypeInstance()->getSamples($product);
if (isset($downloadable['link']) && is_array($downloadable['link'])) {
$links = [];
foreach ($downloadable['link'] as $linkData) {
if (!$linkData || (isset($linkData['is_delete']) && $linkData['is_delete'])) {
continue;
} else {
+ $linkData = $this->processLink($linkData, $productLinks);
$links[] = $this->linkBuilder->setData(
$linkData
)->build(
@@ -104,6 +109,7 @@ public function afterInitialize(
if (!$sampleData || (isset($sampleData['is_delete']) && (bool)$sampleData['is_delete'])) {
continue;
} else {
+ $sampleData = $this->processSample($sampleData, $productSamples);
$samples[] = $this->sampleBuilder->setData(
$sampleData
)->build(
@@ -124,4 +130,69 @@ public function afterInitialize(
}
return $product;
}
+
+ /**
+ * Check Links type and status.
+ *
+ * @param array $linkData
+ * @param array $productLinks
+ * @return array
+ */
+ private function processLink(array $linkData, array $productLinks): array
+ {
+ $linkId = $linkData['link_id'] ?? null;
+ if ($linkId && isset($productLinks[$linkId])) {
+ $linkData = $this->processFileStatus($linkData, $productLinks[$linkId]->getLinkFile());
+ $linkData['sample'] = $this->processFileStatus(
+ $linkData['sample'] ?? [],
+ $productLinks[$linkId]->getSampleFile()
+ );
+ } else {
+ $linkData = $this->processFileStatus($linkData, null);
+ $linkData['sample'] = $this->processFileStatus($linkData['sample'] ?? [], null);
+ }
+
+ return $linkData;
+ }
+
+ /**
+ * Check Sample type and status.
+ *
+ * @param array $sampleData
+ * @param Collection $productSamples
+ * @return array
+ */
+ private function processSample(array $sampleData, Collection $productSamples): array
+ {
+ $sampleId = $sampleData['sample_id'] ?? null;
+ /** @var \Magento\Downloadable\Model\Sample $productSample */
+ $productSample = $sampleId ? $productSamples->getItemById($sampleId) : null;
+ if ($sampleId && $productSample) {
+ $sampleData = $this->processFileStatus($sampleData, $productSample->getSampleFile());
+ } else {
+ $sampleData = $this->processFileStatus($sampleData, null);
+ }
+
+ return $sampleData;
+ }
+
+ /**
+ * Compare file path from request with DB and set status.
+ *
+ * @param array $data
+ * @param string|null $file
+ * @return array
+ */
+ private function processFileStatus(array $data, ?string $file): array
+ {
+ if (isset($data['type']) && $data['type'] === Download::LINK_TYPE_FILE && isset($data['file']['0']['file'])) {
+ if ($data['file'][0]['file'] !== $file) {
+ $data['file'][0]['status'] = 'new';
+ } else {
+ $data['file'][0]['status'] = 'old';
+ }
+ }
+
+ return $data;
+ }
}
diff --git a/app/code/Magento/Downloadable/Model/DomainManager.php b/app/code/Magento/Downloadable/Model/DomainManager.php
new file mode 100644
index 0000000000000..cf1c7d3a48836
--- /dev/null
+++ b/app/code/Magento/Downloadable/Model/DomainManager.php
@@ -0,0 +1,101 @@
+configWriter = $configWriter;
+ $this->deploymentConfig = $deploymentConfig;
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function getDomains(): array
+ {
+ return array_map('strtolower', $this->deploymentConfig->get(self::PARAM_DOWNLOADABLE_DOMAINS) ?? []);
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function addDomains(array $hosts): void
+ {
+ $whitelist = $this->getDomains();
+ foreach (array_map('strtolower', $hosts) as $host) {
+ if (!in_array($host, $whitelist)) {
+ $whitelist[] = $host;
+ }
+ }
+
+ $this->configWriter->saveConfig(
+ [
+ ConfigFilePool::APP_ENV => [
+ self::PARAM_DOWNLOADABLE_DOMAINS => $whitelist,
+ ],
+ ],
+ true
+ );
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function removeDomains(array $hosts): void
+ {
+ $whitelist = $this->getDomains();
+ foreach (array_map('strtolower', $hosts) as $host) {
+ if (in_array($host, $whitelist)) {
+ $index = array_search($host, $whitelist);
+ unset($whitelist[$index]);
+ }
+ }
+
+ $whitelist = array_values($whitelist); // reindex whitelist to prevent non-sequential keying
+
+ $this->configWriter->saveConfig(
+ [
+ ConfigFilePool::APP_ENV => [
+ self::PARAM_DOWNLOADABLE_DOMAINS => $whitelist,
+ ],
+ ],
+ true
+ );
+ }
+}
diff --git a/app/code/Magento/Downloadable/Model/Link/Builder.php b/app/code/Magento/Downloadable/Model/Link/Builder.php
index 83d01f76fe9cd..ff76f7eeda440 100644
--- a/app/code/Magento/Downloadable/Model/Link/Builder.php
+++ b/app/code/Magento/Downloadable/Model/Link/Builder.php
@@ -69,6 +69,8 @@ public function __construct(
}
/**
+ * Set Data.
+ *
* @param array $data
* @return $this
* @since 100.1.0
@@ -80,6 +82,8 @@ public function setData(array $data)
}
/**
+ * Build correct data structure.
+ *
* @param \Magento\Downloadable\Api\Data\LinkInterface $link
* @return \Magento\Downloadable\Api\Data\LinkInterface
* @throws \Magento\Framework\Exception\LocalizedException
@@ -134,6 +138,8 @@ public function build(\Magento\Downloadable\Api\Data\LinkInterface $link)
}
/**
+ * Reset data.
+ *
* @return void
*/
private function resetData()
@@ -142,6 +148,8 @@ private function resetData()
}
/**
+ * Get existing component or create new.
+ *
* @return Link
*/
private function getComponent()
@@ -153,6 +161,8 @@ private function getComponent()
}
/**
+ * Build correct sample structure.
+ *
* @param \Magento\Downloadable\Api\Data\LinkInterface $link
* @param array $sample
* @return \Magento\Downloadable\Api\Data\LinkInterface
@@ -174,7 +184,8 @@ private function buildSample(\Magento\Downloadable\Api\Data\LinkInterface $link,
),
\Magento\Downloadable\Api\Data\LinkInterface::class
);
- if ($link->getSampleType() === \Magento\Downloadable\Helper\Download::LINK_TYPE_FILE) {
+ if ($link->getSampleType() === \Magento\Downloadable\Helper\Download::LINK_TYPE_FILE
+ && isset($sample['file'])) {
$linkSampleFileName = $this->downloadableFile->moveFileFromTmp(
$this->getComponent()->getBaseSampleTmpPath(),
$this->getComponent()->getBaseSamplePath(),
diff --git a/app/code/Magento/Downloadable/Model/Link/ContentValidator.php b/app/code/Magento/Downloadable/Model/Link/ContentValidator.php
index 088356caefad0..df9e492b26d17 100644
--- a/app/code/Magento/Downloadable/Model/Link/ContentValidator.php
+++ b/app/code/Magento/Downloadable/Model/Link/ContentValidator.php
@@ -6,10 +6,17 @@
namespace Magento\Downloadable\Model\Link;
use Magento\Downloadable\Api\Data\LinkInterface;
+use Magento\Downloadable\Helper\File;
use Magento\Downloadable\Model\File\ContentValidator as FileContentValidator;
+use Magento\Downloadable\Model\Url\DomainValidator;
use Magento\Framework\Exception\InputException;
+use Magento\Framework\App\ObjectManager;
+use Magento\Framework\Exception\ValidatorException;
use Magento\Framework\Url\Validator as UrlValidator;
+/**
+ * Class to validate Link Content.
+ */
class ContentValidator
{
/**
@@ -22,20 +29,36 @@ class ContentValidator
*/
protected $urlValidator;
+ /**
+ * @var File
+ */
+ private $fileHelper;
+
+ /**
+ * @var DomainValidator
+ */
+ private $domainValidator;
+
/**
* @param FileContentValidator $fileContentValidator
* @param UrlValidator $urlValidator
+ * @param File|null $fileHelper
+ * @param DomainValidator|null $domainValidator
*/
public function __construct(
FileContentValidator $fileContentValidator,
- UrlValidator $urlValidator
+ UrlValidator $urlValidator,
+ File $fileHelper = null,
+ DomainValidator $domainValidator = null
) {
$this->fileContentValidator = $fileContentValidator;
$this->urlValidator = $urlValidator;
+ $this->fileHelper = $fileHelper ?? ObjectManager::getInstance()->get(File::class);
+ $this->domainValidator = $domainValidator ?? ObjectManager::getInstance()->get(DomainValidator::class);
}
/**
- * Check if link content is valid
+ * Check if link content is valid.
*
* @param LinkInterface $link
* @param bool $validateLinkContent
@@ -63,50 +86,72 @@ public function isValid(LinkInterface $link, $validateLinkContent = true, $valid
if ($validateSampleContent) {
$this->validateSampleResource($link);
}
+
return true;
}
/**
- * Validate link resource (file or URL)
+ * Validate link resource (file or URL).
*
* @param LinkInterface $link
- * @throws InputException
* @return void
+ * @throws InputException
*/
protected function validateLinkResource(LinkInterface $link)
{
- if ($link->getLinkType() == 'url'
- && !$this->urlValidator->isValid($link->getLinkUrl())
- ) {
- throw new InputException(__('Link URL must have valid format.'));
- }
- if ($link->getLinkType() == 'file'
- && (!$link->getLinkFileContent()
- || !$this->fileContentValidator->isValid($link->getLinkFileContent()))
- ) {
- throw new InputException(__('Provided file content must be valid base64 encoded data.'));
+ if ($link->getLinkType() === 'url') {
+ if (!$this->urlValidator->isValid($link->getLinkUrl())) {
+ throw new InputException(__('Link URL must have valid format.'));
+ }
+ if (!$this->domainValidator->isValid($link->getLinkUrl())) {
+ throw new InputException(__('Link URL\'s domain is not in list of downloadable_domains in env.php.'));
+ }
+ } elseif ($link->getLinkFileContent()) {
+ if (!$this->fileContentValidator->isValid($link->getLinkFileContent())) {
+ throw new InputException(__('Provided file content must be valid base64 encoded data.'));
+ }
+ } elseif (!$this->isFileValid($link->getBasePath() . $link->getLinkFile())) {
+ throw new InputException(__('Link file not found. Please try again.'));
}
}
/**
- * Validate sample resource (file or URL)
+ * Validate sample resource (file or URL).
*
* @param LinkInterface $link
- * @throws InputException
* @return void
+ * @throws InputException
*/
protected function validateSampleResource(LinkInterface $link)
{
- if ($link->getSampleType() == 'url'
- && !$this->urlValidator->isValid($link->getSampleUrl())
- ) {
- throw new InputException(__('Sample URL must have valid format.'));
+ if ($link->getSampleType() === 'url') {
+ if (!$this->urlValidator->isValid($link->getSampleUrl())) {
+ throw new InputException(__('Sample URL must have valid format.'));
+ }
+ if (!$this->domainValidator->isValid($link->getSampleUrl())) {
+ throw new InputException(__('Sample URL\'s domain is not in list of downloadable_domains in env.php.'));
+ }
+ } elseif ($link->getSampleFileContent()) {
+ if (!$this->fileContentValidator->isValid($link->getSampleFileContent())) {
+ throw new InputException(__('Provided file content must be valid base64 encoded data.'));
+ }
+ } elseif (!$this->isFileValid($link->getBaseSamplePath() . $link->getSampleFile())) {
+ throw new InputException(__('Link sample file not found. Please try again.'));
}
- if ($link->getSampleType() == 'file'
- && (!$link->getSampleFileContent()
- || !$this->fileContentValidator->isValid($link->getSampleFileContent()))
- ) {
- throw new InputException(__('Provided file content must be valid base64 encoded data.'));
+ }
+
+ /**
+ * Check that Links File or Sample is valid.
+ *
+ * @param string $file
+ * @return bool
+ */
+ private function isFileValid(string $file): bool
+ {
+ try {
+ return $this->fileHelper->ensureFileInFilesystem($file);
+ } catch (ValidatorException $e) {
+ return false;
}
}
}
diff --git a/app/code/Magento/Downloadable/Model/LinkRepository.php b/app/code/Magento/Downloadable/Model/LinkRepository.php
index 0898f1924e538..83fc5020866e0 100644
--- a/app/code/Magento/Downloadable/Model/LinkRepository.php
+++ b/app/code/Magento/Downloadable/Model/LinkRepository.php
@@ -97,7 +97,7 @@ public function __construct(
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function getList($sku)
{
@@ -107,8 +107,7 @@ public function getList($sku)
}
/**
- * @param \Magento\Catalog\Api\Data\ProductInterface $product
- * @return array
+ * @inheritdoc
*/
public function getLinksByProduct(\Magento\Catalog\Api\Data\ProductInterface $product)
{
@@ -166,9 +165,11 @@ protected function setBasicFields($resourceData, $dataObject)
}
/**
- * {@inheritdoc}
+ * @inheritdoc
+ *
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
* @SuppressWarnings(PHPMD.NPathComplexity)
+ * @throws InputException
*/
public function save($sku, LinkInterface $link, $isGlobalScopeContent = true)
{
@@ -176,29 +177,28 @@ public function save($sku, LinkInterface $link, $isGlobalScopeContent = true)
if ($link->getId() !== null) {
return $this->updateLink($product, $link, $isGlobalScopeContent);
} else {
- if ($product->getTypeId() !== \Magento\Downloadable\Model\Product\Type::TYPE_DOWNLOADABLE) {
+ if ($product->getTypeId() !== Type::TYPE_DOWNLOADABLE) {
throw new InputException(
__('The product needs to be the downloadable type. Verify the product and try again.')
);
}
- $validateLinkContent = !($link->getLinkType() === 'file' && $link->getLinkFile());
- $validateSampleContent = !($link->getSampleType() === 'file' && $link->getSampleFile());
- if (!$this->contentValidator->isValid($link, $validateLinkContent, $validateSampleContent)) {
+ $this->validateLinkType($link);
+ $this->validateSampleType($link);
+ if (!$this->contentValidator->isValid($link, true, $link->hasSampleType())) {
throw new InputException(__('The link information is invalid. Verify the link and try again.'));
}
-
- if (!in_array($link->getLinkType(), ['url', 'file'], true)) {
- throw new InputException(__('The link type is invalid. Verify and try again.'));
- }
$title = $link->getTitle();
if (empty($title)) {
throw new InputException(__('The link title is empty. Enter the link title and try again.'));
}
+
return $this->saveLink($product, $link, $isGlobalScopeContent);
}
}
/**
+ * Construct Data structure and Save it.
+ *
* @param \Magento\Catalog\Api\Data\ProductInterface $product
* @param LinkInterface $link
* @param bool $isGlobalScopeContent
@@ -220,7 +220,7 @@ protected function saveLink(
'is_shareable' => $link->getIsShareable(),
];
- if ($link->getLinkType() == 'file' && $link->getLinkFile() === null) {
+ if ($link->getLinkType() == 'file' && $link->getLinkFileContent() !== null) {
$linkData['file'] = $this->jsonEncoder->encode(
[
$this->fileContentUploader->upload($link->getLinkFileContent(), 'link_file'),
@@ -242,7 +242,7 @@ protected function saveLink(
if ($link->getSampleType() == 'file') {
$linkData['sample']['type'] = 'file';
- if ($link->getSampleFile() === null) {
+ if ($link->getSampleFileContent() !== null) {
$fileData = [
$this->fileContentUploader->upload($link->getSampleFileContent(), 'link_sample_file'),
];
@@ -269,6 +269,8 @@ protected function saveLink(
}
/**
+ * Update existing Link.
+ *
* @param \Magento\Catalog\Api\Data\ProductInterface $product
* @param LinkInterface $link
* @param bool $isGlobalScopeContent
@@ -298,9 +300,10 @@ protected function updateLink(
__("The downloadable link isn't related to the product. Verify the link and try again.")
);
}
- $validateLinkContent = !($link->getLinkFileContent() === null);
- $validateSampleContent = !($link->getSampleFileContent() === null);
- if (!$this->contentValidator->isValid($link, $validateLinkContent, $validateSampleContent)) {
+ $this->validateLinkType($link);
+ $this->validateSampleType($link);
+ $validateSampleContent = $link->hasSampleType();
+ if (!$this->contentValidator->isValid($link, true, $validateSampleContent)) {
throw new InputException(__('The link information is invalid. Verify the link and try again.'));
}
if ($isGlobalScopeContent) {
@@ -312,20 +315,16 @@ protected function updateLink(
throw new InputException(__('The link title is empty. Enter the link title and try again.'));
}
}
-
- if ($link->getLinkType() == 'file' && $link->getLinkFileContent() === null && !$link->getLinkFile()) {
- $link->setLinkFile($existingLink->getLinkFile());
- }
- if ($link->getSampleType() == 'file' && $link->getSampleFileContent() === null && !$link->getSampleFile()) {
- $link->setSampleFile($existingLink->getSampleFile());
+ if (!$validateSampleContent) {
+ $this->resetLinkSampleContent($link, $existingLink);
}
-
$this->saveLink($product, $link, $isGlobalScopeContent);
+
return $existingLink->getId();
}
/**
- * {@inheritdoc}
+ * @inheritdoc
*/
public function delete($id)
{
@@ -344,6 +343,52 @@ public function delete($id)
return true;
}
+ /**
+ * Check that Link type exist.
+ *
+ * @param LinkInterface $link
+ * @return void
+ * @throws InputException
+ */
+ private function validateLinkType(LinkInterface $link): void
+ {
+ if (!in_array($link->getLinkType(), ['url', 'file'], true)) {
+ throw new InputException(__('The link type is invalid. Verify and try again.'));
+ }
+ }
+
+ /**
+ * Check that Link sample type exist.
+ *
+ * @param LinkInterface $link
+ * @return void
+ * @throws InputException
+ */
+ private function validateSampleType(LinkInterface $link): void
+ {
+ if ($link->hasSampleType() && !in_array($link->getSampleType(), ['url', 'file'], true)) {
+ throw new InputException(__('The link sample type is invalid. Verify and try again.'));
+ }
+ }
+
+ /**
+ * Reset Sample type and file.
+ *
+ * @param LinkInterface $link
+ * @param LinkInterface $existingLink
+ * @return void
+ */
+ private function resetLinkSampleContent(LinkInterface $link, LinkInterface $existingLink): void
+ {
+ $existingType = $existingLink->getSampleType();
+ $link->setSampleType($existingType);
+ if ($existingType === 'file') {
+ $link->setSampleFile($existingLink->getSampleFile());
+ } else {
+ $link->setSampleUrl($existingLink->getSampleUrl());
+ }
+ }
+
/**
* Get MetadataPool instance
*
diff --git a/app/code/Magento/Downloadable/Model/Sample/Builder.php b/app/code/Magento/Downloadable/Model/Sample/Builder.php
index 7cc7cb640ae74..4a068e1de5a9a 100644
--- a/app/code/Magento/Downloadable/Model/Sample/Builder.php
+++ b/app/code/Magento/Downloadable/Model/Sample/Builder.php
@@ -74,6 +74,7 @@ public function __construct(
* @param array $data
* @return $this;
* @since 100.1.0
+ * @since 100.1.0
*/
public function setData(array $data)
{
diff --git a/app/code/Magento/Downloadable/Model/Sample/ContentValidator.php b/app/code/Magento/Downloadable/Model/Sample/ContentValidator.php
index 6a273bfe5d34e..e3e016869e9c5 100644
--- a/app/code/Magento/Downloadable/Model/Sample/ContentValidator.php
+++ b/app/code/Magento/Downloadable/Model/Sample/ContentValidator.php
@@ -6,10 +6,17 @@
namespace Magento\Downloadable\Model\Sample;
use Magento\Downloadable\Api\Data\SampleInterface;
+use Magento\Downloadable\Helper\File;
use Magento\Downloadable\Model\File\ContentValidator as FileContentValidator;
+use Magento\Downloadable\Model\Url\DomainValidator;
+use Magento\Framework\App\ObjectManager;
use Magento\Framework\Exception\InputException;
+use Magento\Framework\Exception\ValidatorException;
use Magento\Framework\Url\Validator as UrlValidator;
+/**
+ * Class to validate Sample Content.
+ */
class ContentValidator
{
/**
@@ -22,20 +29,36 @@ class ContentValidator
*/
protected $fileContentValidator;
+ /**
+ * @var File
+ */
+ private $fileHelper;
+
+ /**
+ * @var DomainValidator
+ */
+ private $domainValidator;
+
/**
* @param FileContentValidator $fileContentValidator
* @param UrlValidator $urlValidator
+ * @param File|null $fileHelper
+ * @param DomainValidator|null $domainValidator
*/
public function __construct(
FileContentValidator $fileContentValidator,
- UrlValidator $urlValidator
+ UrlValidator $urlValidator,
+ File $fileHelper = null,
+ DomainValidator $domainValidator = null
) {
$this->fileContentValidator = $fileContentValidator;
$this->urlValidator = $urlValidator;
+ $this->fileHelper = $fileHelper ?? ObjectManager::getInstance()->get(File::class);
+ $this->domainValidator = $domainValidator ?? ObjectManager::getInstance()->get(DomainValidator::class);
}
/**
- * Check if sample content is valid
+ * Check if sample content is valid.
*
* @param SampleInterface $sample
* @param bool $validateSampleContent
@@ -51,29 +74,47 @@ public function isValid(SampleInterface $sample, $validateSampleContent = true)
if ($validateSampleContent) {
$this->validateSampleResource($sample);
}
+
return true;
}
/**
- * Validate sample resource (file or URL)
+ * Validate sample resource (file or URL).
*
* @param SampleInterface $sample
- * @throws InputException
* @return void
+ * @throws InputException
*/
protected function validateSampleResource(SampleInterface $sample)
{
- $sampleFile = $sample->getSampleFileContent();
- if ($sample->getSampleType() == 'file'
- && (!$sampleFile || !$this->fileContentValidator->isValid($sampleFile))
- ) {
- throw new InputException(__('Provided file content must be valid base64 encoded data.'));
+ if ($sample->getSampleType() === 'url') {
+ if (!$this->urlValidator->isValid($sample->getSampleUrl())) {
+ throw new InputException(__('Sample URL must have valid format.'));
+ }
+ if (!$this->domainValidator->isValid($sample->getSampleUrl())) {
+ throw new InputException(__('Sample URL\'s domain is not in list of downloadable_domains in env.php.'));
+ }
+ } elseif ($sample->getSampleFileContent()) {
+ if (!$this->fileContentValidator->isValid($sample->getSampleFileContent())) {
+ throw new InputException(__('Provided file content must be valid base64 encoded data.'));
+ }
+ } elseif (!$this->isFileValid($sample->getBasePath() . $sample->getSampleFile())) {
+ throw new InputException(__('Sample file not found. Please try again.'));
}
+ }
- if ($sample->getSampleType() == 'url'
- && !$this->urlValidator->isValid($sample->getSampleUrl())
- ) {
- throw new InputException(__('Sample URL must have valid format.'));
+ /**
+ * Check that Samples file is valid.
+ *
+ * @param string $file
+ * @return bool
+ */
+ private function isFileValid(string $file): bool
+ {
+ try {
+ return $this->fileHelper->ensureFileInFilesystem($file);
+ } catch (ValidatorException $e) {
+ return false;
}
}
}
diff --git a/app/code/Magento/Downloadable/Model/SampleRepository.php b/app/code/Magento/Downloadable/Model/SampleRepository.php
index 07c7631fade13..37f376e666243 100644
--- a/app/code/Magento/Downloadable/Model/SampleRepository.php
+++ b/app/code/Magento/Downloadable/Model/SampleRepository.php
@@ -189,17 +189,12 @@ public function save(
__('The product needs to be the downloadable type. Verify the product and try again.')
);
}
- $validateSampleContent = !($sample->getSampleType() === 'file' && $sample->getSampleFile());
- if (!$this->contentValidator->isValid($sample, $validateSampleContent)) {
+ $this->validateSampleType($sample);
+ if (!$this->contentValidator->isValid($sample, true)) {
throw new InputException(
__('The sample information is invalid. Verify the information and try again.')
);
}
-
- if (!in_array($sample->getSampleType(), ['url', 'file'], true)) {
- throw new InputException(__('The sample type is invalid. Verify the sample type and try again.'));
- }
-
$title = $sample->getTitle();
if (empty($title)) {
throw new InputException(__('The sample title is empty. Enter the title and try again.'));
@@ -230,7 +225,7 @@ protected function saveSample(
'title' => $sample->getTitle(),
];
- if ($sample->getSampleType() === 'file' && $sample->getSampleFile() === null) {
+ if ($sample->getSampleType() === 'file' && $sample->getSampleFileContent() !== null) {
$sampleData['file'] = $this->jsonEncoder->encode(
[
$this->fileContentUploader->upload($sample->getSampleFileContent(), 'sample'),
@@ -293,9 +288,8 @@ protected function updateSample(
__("The downloadable sample isn't related to the product. Verify the link and try again.")
);
}
-
- $validateFileContent = $sample->getSampleFileContent() === null ? false : true;
- if (!$this->contentValidator->isValid($sample, $validateFileContent)) {
+ $this->validateSampleType($sample);
+ if (!$this->contentValidator->isValid($sample, true)) {
throw new InputException(__('The sample information is invalid. Verify the information and try again.'));
}
if ($isGlobalScopeContent) {
@@ -312,14 +306,8 @@ protected function updateSample(
} else {
$existingSample->setTitle($sample->getTitle());
}
-
- if ($sample->getSampleType() === 'file'
- && $sample->getSampleFileContent() === null
- && $sample->getSampleFile() !== null
- ) {
- $existingSample->setSampleFile($sample->getSampleFile());
- }
$this->saveSample($product, $sample, $isGlobalScopeContent);
+
return $existingSample->getId();
}
@@ -343,6 +331,20 @@ public function delete($id)
return true;
}
+ /**
+ * Check that Sample type exist.
+ *
+ * @param SampleInterface $sample
+ * @throws InputException
+ * @return void
+ */
+ private function validateSampleType(SampleInterface $sample): void
+ {
+ if (!in_array($sample->getSampleType(), ['url', 'file'], true)) {
+ throw new InputException(__('The sample type is invalid. Verify the sample type and try again.'));
+ }
+ }
+
/**
* Get MetadataPool instance
*
diff --git a/app/code/Magento/Downloadable/Model/Url/DomainValidator.php b/app/code/Magento/Downloadable/Model/Url/DomainValidator.php
new file mode 100644
index 0000000000000..1d3e6572cfa44
--- /dev/null
+++ b/app/code/Magento/Downloadable/Model/Url/DomainValidator.php
@@ -0,0 +1,88 @@
+domainManager = $domainManager;
+ $this->ipValidator = $ipValidator;
+ $this->uriHandler = $uriHandler;
+ }
+
+ /**
+ * Validate url input.
+ *
+ * Assert parsed host of $value is contained within environment whitelist.
+ *
+ * @param string $value
+ * @return bool
+ */
+ public function isValid(string $value): bool
+ {
+ $host = $this->getHost($value);
+ $isIpAddress = $this->ipValidator->isValid($host);
+ $isValid = !$isIpAddress && in_array($host, $this->domainManager->getDomains());
+
+ return $isValid;
+ }
+
+ /**
+ * Extract host from url.
+ *
+ * @param string $url
+ * @return string
+ */
+ private function getHost(string $url): string
+ {
+ $host = $this->uriHandler->parse($url)->getHost();
+
+ if ($host === null) {
+ return '';
+ }
+
+ // ipv6 hosts are brace-delimited in url; they are removed here for subsequent validation
+ return trim($host, '[] ');
+ }
+}
diff --git a/app/code/Magento/Downloadable/Setup/Patch/Data/AddDownloadableHostsConfig.php b/app/code/Magento/Downloadable/Setup/Patch/Data/AddDownloadableHostsConfig.php
new file mode 100644
index 0000000000000..2b53feaab6d0c
--- /dev/null
+++ b/app/code/Magento/Downloadable/Setup/Patch/Data/AddDownloadableHostsConfig.php
@@ -0,0 +1,255 @@
+uriHandler = $uriHandler;
+ $this->scopeResolver = $scopeResolver;
+ $this->scopeConfig = $scopeConfig;
+ $this->domainManager = $domainManager;
+ $this->moduleDataSetup = $moduleDataSetup;
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function apply()
+ {
+ $this->resolveScopeUrls();
+ $this->resolveCustomAdminUrl();
+ $this->resolveDownloadableLinkUrls();
+ $this->resolveDownloadableSampleUrls();
+
+ $this->domainManager->addDomains($this->whitelist);
+ }
+
+ /**
+ * Add stores and website urls from store scope.
+ *
+ * @param Store $scope
+ * @return void
+ */
+ private function addStoreAndWebsiteUrlsFromScope(Store $scope): void
+ {
+ $this->addHost($scope->getBaseUrl(UrlInterface::URL_TYPE_WEB, false));
+ $this->addHost($scope->getBaseUrl(UrlInterface::URL_TYPE_WEB, true));
+ $this->addHost($scope->getBaseUrl(UrlInterface::URL_TYPE_LINK, false));
+ $this->addHost($scope->getBaseUrl(UrlInterface::URL_TYPE_LINK, true));
+ $this->addHost($scope->getBaseUrl(UrlInterface::URL_TYPE_DIRECT_LINK, false));
+ $this->addHost($scope->getBaseUrl(UrlInterface::URL_TYPE_DIRECT_LINK, true));
+ $this->addHost($scope->getBaseUrl(UrlInterface::URL_TYPE_MEDIA, false));
+ $this->addHost($scope->getBaseUrl(UrlInterface::URL_TYPE_MEDIA, true));
+
+ try {
+ $this->addHost($scope->getBaseUrl(UrlInterface::URL_TYPE_STATIC, false));
+ $this->addHost($scope->getBaseUrl(UrlInterface::URL_TYPE_STATIC, true));
+ // phpcs:ignore Magento2.CodeAnalysis.EmptyBlock.DetectedCatch
+ } catch (\UnexpectedValueException $e) {
+ }
+
+ try {
+ $website = $scope->getWebsite();
+ } catch (NoSuchEntityException $e) {
+ return;
+ }
+
+ if ($website) {
+ $this->addHost($website->getConfig(Store::XML_PATH_SECURE_BASE_URL));
+ $this->addHost($website->getConfig(Store::XML_PATH_UNSECURE_BASE_URL));
+ $this->addHost($website->getConfig(Store::XML_PATH_SECURE_BASE_LINK_URL));
+ $this->addHost($website->getConfig(Store::XML_PATH_UNSECURE_BASE_LINK_URL));
+ $this->addHost($website->getConfig(Store::XML_PATH_SECURE_BASE_MEDIA_URL));
+ $this->addHost($website->getConfig(Store::XML_PATH_UNSECURE_BASE_MEDIA_URL));
+ $this->addHost($website->getConfig(Store::XML_PATH_SECURE_BASE_STATIC_URL));
+ $this->addHost($website->getConfig(Store::XML_PATH_UNSECURE_BASE_STATIC_URL));
+ }
+ }
+
+ /**
+ * Add host to whitelist.
+ *
+ * @param string|bool $url
+ * @return void
+ */
+ private function addHost($url): void
+ {
+ if (!is_string($url)) {
+ return;
+ }
+
+ $host = $this->uriHandler->parse($url)->getHost();
+ if ($host && !in_array($host, $this->whitelist)) {
+ $this->whitelist[] = $host;
+ }
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public static function getDependencies()
+ {
+ return [];
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function getAliases()
+ {
+ return [];
+ }
+
+ /**
+ * Add urls from scope.
+ *
+ * @return void
+ */
+ private function resolveScopeUrls(): void
+ {
+ $customStoreScope = $this->scopeResolver->getScope(Custom::CONFIG_SCOPE_ID);
+ $storeScopes = $this->scopeResolver->getScopes();
+ $storeScopes[] = $customStoreScope;
+
+ foreach ($storeScopes as $scope) {
+ $this->addStoreAndWebsiteUrlsFromScope($scope);
+ }
+ }
+
+ /**
+ * Add custom admin url to whitelist.
+ *
+ * @return void
+ */
+ private function resolveCustomAdminUrl(): void
+ {
+ $customAdminUrl = $this->scopeConfig->getValue(
+ FrontNameResolver::XML_PATH_CUSTOM_ADMIN_URL,
+ ScopeInterface::SCOPE_STORE
+ );
+
+ if ($customAdminUrl) {
+ $this->addHost($customAdminUrl);
+ }
+ }
+
+ /**
+ * Add downloadable links urls to whitelist.
+ *
+ * @return void
+ */
+ private function resolveDownloadableLinkUrls(): void
+ {
+ if ($this->moduleDataSetup->tableExists('downloadable_link')) {
+ $select = $this->moduleDataSetup->getConnection()
+ ->select()
+ ->from(
+ $this->moduleDataSetup->getTable('downloadable_link'),
+ ['link_url', 'sample_url']
+ )
+ ->where('link_type = ? OR sample_type = ?', 'url');
+
+ $linkUrls = $this->moduleDataSetup->getConnection()->fetchAll($select);
+ foreach ($linkUrls as $url) {
+ if (!empty($url['link_url'])) {
+ $this->addHost($url['link_url']);
+ }
+ if (!empty($url['sample_url'])) {
+ $this->addHost($url['sample_url']);
+ }
+ }
+ }
+ }
+
+ /**
+ * Add downloadable sample urls to whitelist.
+ *
+ * @return void
+ */
+ private function resolveDownloadableSampleUrls(): void
+ {
+ if ($this->moduleDataSetup->tableExists('downloadable_sample')) {
+ $select = $this->moduleDataSetup->getConnection()
+ ->select()
+ ->from(
+ $this->moduleDataSetup->getTable('downloadable_sample'),
+ ['sample_url']
+ )
+ ->where('sample_type = ?', 'url');
+
+ $sampleUrls = $this->moduleDataSetup->getConnection()->fetchCol($select);
+ foreach ($sampleUrls as $url) {
+ if (!empty($url)) {
+ $this->addHost($url);
+ }
+ }
+ }
+ }
+}
diff --git a/app/code/Magento/Downloadable/Test/Mftf/ActionGroup/AdminDownloadableProductActionGroup.xml b/app/code/Magento/Downloadable/Test/Mftf/ActionGroup/AdminDownloadableProductActionGroup.xml
index 363911daa41ed..c703885ad7360 100644
--- a/app/code/Magento/Downloadable/Test/Mftf/ActionGroup/AdminDownloadableProductActionGroup.xml
+++ b/app/code/Magento/Downloadable/Test/Mftf/ActionGroup/AdminDownloadableProductActionGroup.xml
@@ -40,17 +40,19 @@
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
@@ -77,4 +79,4 @@
-
\ No newline at end of file
+
diff --git a/app/code/Magento/Downloadable/Test/Mftf/Test/AdminAddDefaultImageDownloadableProductTest.xml b/app/code/Magento/Downloadable/Test/Mftf/Test/AdminAddDefaultImageDownloadableProductTest.xml
index 3d779740849c5..de93f2d4ea26f 100644
--- a/app/code/Magento/Downloadable/Test/Mftf/Test/AdminAddDefaultImageDownloadableProductTest.xml
+++ b/app/code/Magento/Downloadable/Test/Mftf/Test/AdminAddDefaultImageDownloadableProductTest.xml
@@ -19,9 +19,11 @@
+
+
diff --git a/app/code/Magento/Downloadable/Test/Mftf/Test/AdminAddDefaultVideoDownloadableProductTest.xml b/app/code/Magento/Downloadable/Test/Mftf/Test/AdminAddDefaultVideoDownloadableProductTest.xml
index a7acdfded29b6..88908c1fa141d 100644
--- a/app/code/Magento/Downloadable/Test/Mftf/Test/AdminAddDefaultVideoDownloadableProductTest.xml
+++ b/app/code/Magento/Downloadable/Test/Mftf/Test/AdminAddDefaultVideoDownloadableProductTest.xml
@@ -18,7 +18,12 @@
-
+
+
+
+
+
+
diff --git a/app/code/Magento/Downloadable/Test/Mftf/Test/AdminDeleteDownloadableProductTest.xml b/app/code/Magento/Downloadable/Test/Mftf/Test/AdminDeleteDownloadableProductTest.xml
index d7e93d3429b96..2d951175f48ee 100644
--- a/app/code/Magento/Downloadable/Test/Mftf/Test/AdminDeleteDownloadableProductTest.xml
+++ b/app/code/Magento/Downloadable/Test/Mftf/Test/AdminDeleteDownloadableProductTest.xml
@@ -10,6 +10,7 @@
+
@@ -17,6 +18,7 @@
+
@@ -30,6 +32,7 @@
+
diff --git a/app/code/Magento/Downloadable/Test/Mftf/Test/AdminRemoveDefaultImageDownloadableProductTest.xml b/app/code/Magento/Downloadable/Test/Mftf/Test/AdminRemoveDefaultImageDownloadableProductTest.xml
index 3ee6cef47738b..085de23e82000 100644
--- a/app/code/Magento/Downloadable/Test/Mftf/Test/AdminRemoveDefaultImageDownloadableProductTest.xml
+++ b/app/code/Magento/Downloadable/Test/Mftf/Test/AdminRemoveDefaultImageDownloadableProductTest.xml
@@ -19,9 +19,11 @@
+
+
diff --git a/app/code/Magento/Downloadable/Test/Mftf/Test/AdminRemoveDefaultVideoDownloadableProductTest.xml b/app/code/Magento/Downloadable/Test/Mftf/Test/AdminRemoveDefaultVideoDownloadableProductTest.xml
index d8bbbb2b4d62b..c18d0f39fe40a 100644
--- a/app/code/Magento/Downloadable/Test/Mftf/Test/AdminRemoveDefaultVideoDownloadableProductTest.xml
+++ b/app/code/Magento/Downloadable/Test/Mftf/Test/AdminRemoveDefaultVideoDownloadableProductTest.xml
@@ -18,6 +18,12 @@
+
+
+
+
+
+
diff --git a/app/code/Magento/Downloadable/Test/Mftf/Test/AdvanceCatalogSearchDownloadableProductTest.xml b/app/code/Magento/Downloadable/Test/Mftf/Test/AdvanceCatalogSearchDownloadableProductTest.xml
index 66177b6875dd9..f01d4d60da1ac 100644
--- a/app/code/Magento/Downloadable/Test/Mftf/Test/AdvanceCatalogSearchDownloadableProductTest.xml
+++ b/app/code/Magento/Downloadable/Test/Mftf/Test/AdvanceCatalogSearchDownloadableProductTest.xml
@@ -19,6 +19,7 @@
+
@@ -27,6 +28,9 @@
+
+
+
@@ -39,6 +43,7 @@
+
@@ -47,6 +52,9 @@
+
+
+
@@ -59,6 +67,7 @@
+
@@ -67,6 +76,9 @@
+
+
+
@@ -79,6 +91,7 @@
+
@@ -87,6 +100,9 @@
+
+
+
@@ -99,6 +115,7 @@
+
@@ -107,5 +124,8 @@
+
+
+
diff --git a/app/code/Magento/Downloadable/Test/Mftf/Test/NewProductsListWidgetDownloadableProductTest.xml b/app/code/Magento/Downloadable/Test/Mftf/Test/NewProductsListWidgetDownloadableProductTest.xml
index 4864d11c884bc..91787e9c050eb 100644
--- a/app/code/Magento/Downloadable/Test/Mftf/Test/NewProductsListWidgetDownloadableProductTest.xml
+++ b/app/code/Magento/Downloadable/Test/Mftf/Test/NewProductsListWidgetDownloadableProductTest.xml
@@ -19,6 +19,12 @@
+
+
+
+
+
+
@@ -52,4 +58,4 @@
-
\ No newline at end of file
+
diff --git a/app/code/Magento/Downloadable/Test/Unit/Controller/Adminhtml/Product/Initialization/Helper/Plugin/DownloadableTest.php b/app/code/Magento/Downloadable/Test/Unit/Controller/Adminhtml/Product/Initialization/Helper/Plugin/DownloadableTest.php
index 25a5d86b0385c..55353c16b4727 100644
--- a/app/code/Magento/Downloadable/Test/Unit/Controller/Adminhtml/Product/Initialization/Helper/Plugin/DownloadableTest.php
+++ b/app/code/Magento/Downloadable/Test/Unit/Controller/Adminhtml/Product/Initialization/Helper/Plugin/DownloadableTest.php
@@ -7,6 +7,9 @@
use Magento\Catalog\Api\Data\ProductExtensionInterface;
+/**
+ * Unit tests for \Magento\Downloadable\Controller\Adminhtml\Product\Initialization\Helper\Plugin\Downloadable.
+ */
class DownloadableTest extends \PHPUnit\Framework\TestCase
{
/**
@@ -34,12 +37,20 @@ class DownloadableTest extends \PHPUnit\Framework\TestCase
*/
private $extensionAttributesMock;
+ /**
+ * @var \Magento\Downloadable\Model\Product\Type|\Magento\Catalog\Api\Data\ProductExtensionInterface
+ */
+ private $downloadableProductTypeMock;
+
+ /**
+ * @inheritdoc
+ */
protected function setUp()
{
$this->requestMock = $this->createMock(\Magento\Framework\App\Request\Http::class);
$this->productMock = $this->createPartialMock(
\Magento\Catalog\Model\Product::class,
- ['setDownloadableData', 'getExtensionAttributes', '__wakeup']
+ ['setDownloadableData', 'getExtensionAttributes', '__wakeup', 'getTypeInstance']
);
$this->subjectMock = $this->createMock(
\Magento\Catalog\Controller\Adminhtml\Product\Initialization\Helper::class
@@ -62,6 +73,10 @@ protected function setUp()
$sampleBuilderMock = $this->getMockBuilder(\Magento\Downloadable\Model\Sample\Builder::class)
->disableOriginalConstructor()
->getMock();
+ $this->downloadableProductTypeMock = $this->createPartialMock(
+ \Magento\Downloadable\Model\Product\Type::class,
+ ['getLinks', 'getSamples']
+ );
$this->downloadablePlugin =
new \Magento\Downloadable\Controller\Adminhtml\Product\Initialization\Helper\Plugin\Downloadable(
$this->requestMock,
@@ -86,6 +101,11 @@ public function testAfterInitializeWithNoDataToSave($downloadable)
$this->productMock->expects($this->once())
->method('getExtensionAttributes')
->willReturn($this->extensionAttributesMock);
+ $this->productMock->expects($this->exactly(2))
+ ->method('getTypeInstance')
+ ->willReturn($this->downloadableProductTypeMock);
+ $this->downloadableProductTypeMock->expects($this->once())->method('getLinks')->willReturn([]);
+ $this->downloadableProductTypeMock->expects($this->once())->method('getSamples')->willReturn([]);
$this->extensionAttributesMock->expects($this->once())
->method('setDownloadableProductLinks')
->with([]);
diff --git a/app/code/Magento/Downloadable/Test/Unit/Model/Link/ContentValidatorTest.php b/app/code/Magento/Downloadable/Test/Unit/Model/Link/ContentValidatorTest.php
index 2639c22ff2ca2..49dcd1282a270 100644
--- a/app/code/Magento/Downloadable/Test/Unit/Model/Link/ContentValidatorTest.php
+++ b/app/code/Magento/Downloadable/Test/Unit/Model/Link/ContentValidatorTest.php
@@ -5,8 +5,13 @@
*/
namespace Magento\Downloadable\Test\Unit\Model\Link;
+use Magento\Downloadable\Helper\File;
use Magento\Downloadable\Model\Link\ContentValidator;
+use Magento\Downloadable\Model\Url\DomainValidator;
+/**
+ * Unit tests for Magento\Downloadable\Model\Link\ContentValidator.
+ */
class ContentValidatorTest extends \PHPUnit\Framework\TestCase
{
/**
@@ -34,13 +39,39 @@ class ContentValidatorTest extends \PHPUnit\Framework\TestCase
*/
protected $sampleFileMock;
+ /**
+ * @var File|\PHPUnit_Framework_MockObject_MockObject
+ */
+ private $fileMock;
+
+ /**
+ * @var DomainValidator|\PHPUnit_Framework_MockObject_MockObject
+ */
+ private $domainValidatorMock;
+
+ /**
+ * @inheritdoc
+ */
protected function setUp()
{
+ $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
+
$this->fileValidatorMock = $this->createMock(\Magento\Downloadable\Model\File\ContentValidator::class);
$this->urlValidatorMock = $this->createMock(\Magento\Framework\Url\Validator::class);
$this->linkFileMock = $this->createMock(\Magento\Downloadable\Api\Data\File\ContentInterface::class);
$this->sampleFileMock = $this->createMock(\Magento\Downloadable\Api\Data\File\ContentInterface::class);
- $this->validator = new ContentValidator($this->fileValidatorMock, $this->urlValidatorMock);
+ $this->fileMock = $this->createMock(File::class);
+ $this->domainValidatorMock = $this->createMock(DomainValidator::class);
+
+ $this->validator = $objectManager->getObject(
+ ContentValidator::class,
+ [
+ 'fileContentValidator' => $this->fileValidatorMock,
+ 'urlValidator' => $this->urlValidatorMock,
+ 'fileHelper' => $this->fileMock,
+ 'domainValidator' => $this->domainValidatorMock,
+ ]
+ );
}
public function testIsValid()
@@ -58,8 +89,9 @@ public function testIsValid()
'link_file_content' => $linkFileContentMock,
'sample_file_content' => $sampleFileContentMock,
];
- $this->fileValidatorMock->expects($this->any())->method('isValid')->will($this->returnValue(true));
- $this->urlValidatorMock->expects($this->any())->method('isValid')->will($this->returnValue(true));
+ $this->fileValidatorMock->expects($this->any())->method('isValid')->willReturn(true);
+ $this->urlValidatorMock->expects($this->any())->method('isValid')->willReturn(true);
+ $this->domainValidatorMock->expects($this->any())->method('isValid')->willReturn(true);
$linkMock = $this->getLinkMock($linkData);
$this->assertTrue($this->validator->isValid($linkMock));
}
@@ -78,8 +110,9 @@ public function testIsValidSkipLinkContent()
'sample_type' => 'file',
'sample_file_content' => $sampleFileContentMock,
];
- $this->fileValidatorMock->expects($this->once())->method('isValid')->will($this->returnValue(true));
- $this->urlValidatorMock->expects($this->never())->method('isValid')->will($this->returnValue(true));
+ $this->fileValidatorMock->expects($this->once())->method('isValid')->willReturn(true);
+ $this->urlValidatorMock->expects($this->never())->method('isValid')->willReturn(true);
+ $this->domainValidatorMock->expects($this->never())->method('isValid')->willReturn(true);
$linkMock = $this->getLinkMock($linkData);
$this->assertTrue($this->validator->isValid($linkMock, false));
}
@@ -98,8 +131,9 @@ public function testIsValidSkipSampleContent()
'sample_type' => 'file',
'sample_file_content' => $sampleFileContentMock,
];
- $this->fileValidatorMock->expects($this->never())->method('isValid')->will($this->returnValue(true));
- $this->urlValidatorMock->expects($this->once())->method('isValid')->will($this->returnValue(true));
+ $this->fileValidatorMock->expects($this->never())->method('isValid')->willReturn(true);
+ $this->urlValidatorMock->expects($this->once())->method('isValid')->willReturn(true);
+ $this->domainValidatorMock->expects($this->once())->method('isValid')->willReturn(true);
$linkMock = $this->getLinkMock($linkData);
$this->assertTrue($this->validator->isValid($linkMock, true, false));
}
@@ -121,8 +155,9 @@ public function testIsValidThrowsExceptionIfSortOrderIsInvalid($sortOrder)
'link_type' => 'file',
'sample_type' => 'file',
];
- $this->fileValidatorMock->expects($this->any())->method('isValid')->will($this->returnValue(true));
- $this->urlValidatorMock->expects($this->any())->method('isValid')->will($this->returnValue(true));
+ $this->fileValidatorMock->expects($this->any())->method('isValid')->willReturn(true);
+ $this->urlValidatorMock->expects($this->any())->method('isValid')->willReturn(true);
+ $this->domainValidatorMock->expects($this->any())->method('isValid')->willReturn(true);
$contentMock = $this->getLinkMock($linkContentData);
$this->validator->isValid($contentMock);
}
@@ -156,8 +191,9 @@ public function testIsValidThrowsExceptionIfPriceIsInvalid($price)
'link_type' => 'file',
'sample_type' => 'file',
];
- $this->fileValidatorMock->expects($this->any())->method('isValid')->will($this->returnValue(true));
- $this->urlValidatorMock->expects($this->any())->method('isValid')->will($this->returnValue(true));
+ $this->fileValidatorMock->expects($this->any())->method('isValid')->willReturn(true);
+ $this->urlValidatorMock->expects($this->any())->method('isValid')->willReturn(true);
+ $this->domainValidatorMock->expects($this->any())->method('isValid')->willReturn(true);
$contentMock = $this->getLinkMock($linkContentData);
$this->validator->isValid($contentMock);
}
@@ -190,8 +226,9 @@ public function testIsValidThrowsExceptionIfNumberOfDownloadsIsInvalid($numberOf
'link_type' => 'file',
'sample_type' => 'file',
];
- $this->urlValidatorMock->expects($this->any())->method('isValid')->will($this->returnValue(true));
- $this->fileValidatorMock->expects($this->any())->method('isValid')->will($this->returnValue(true));
+ $this->urlValidatorMock->expects($this->any())->method('isValid')->willReturn(true);
+ $this->fileValidatorMock->expects($this->any())->method('isValid')->willReturn(true);
+ $this->domainValidatorMock->expects($this->any())->method('isValid')->willReturn(true);
$contentMock = $this->getLinkMock($linkContentData);
$this->validator->isValid($contentMock);
}
@@ -223,56 +260,40 @@ protected function getLinkMock(array $linkData)
'isShareable',
'getNumberOfDownloads',
'getLinkType',
- 'getLinkFile'
+ 'getLinkFile',
]
)
->getMockForAbstractClass();
- $linkMock->expects($this->any())->method('getTitle')->will($this->returnValue(
- $linkData['title']
- ));
- $linkMock->expects($this->any())->method('getPrice')->will($this->returnValue(
- $linkData['price']
- ));
- $linkMock->expects($this->any())->method('getSortOrder')->will($this->returnValue(
- $linkData['sort_order']
- ));
- $linkMock->expects($this->any())->method('isShareable')->will($this->returnValue(
- $linkData['shareable']
- ));
- $linkMock->expects($this->any())->method('getNumberOfDownloads')->will($this->returnValue(
- $linkData['number_of_downloads']
- ));
- $linkMock->expects($this->any())->method('getLinkType')->will($this->returnValue(
- $linkData['link_type']
- ));
- $linkMock->expects($this->any())->method('getLinkFile')->will($this->returnValue(
- $this->linkFileMock
- ));
+ $linkMock->expects($this->any())->method('getTitle')->willReturn($linkData['title']);
+ $linkMock->expects($this->any())->method('getPrice')->willReturn($linkData['price']);
+ $linkMock->expects($this->any())->method('getSortOrder')->willReturn($linkData['sort_order']);
+ $linkMock->expects($this->any())->method('isShareable')->willReturn($linkData['shareable']);
+ $linkMock->expects($this->any())->method('getNumberOfDownloads')->will(
+ $this->returnValue($linkData['number_of_downloads'])
+ );
+ $linkMock->expects($this->any())->method('getLinkType')->willReturn($linkData['link_type']);
+ $linkMock->expects($this->any())->method('getLinkFile')->willReturn($this->linkFileMock);
if (isset($linkData['link_url'])) {
- $linkMock->expects($this->any())->method('getLinkUrl')->will($this->returnValue(
- $linkData['link_url']
- ));
+ $linkMock->expects($this->any())->method('getLinkUrl')->willReturn($linkData['link_url']);
}
if (isset($linkData['sample_url'])) {
- $linkMock->expects($this->any())->method('getSampleUrl')->will($this->returnValue(
- $linkData['sample_url']
- ));
+ $linkMock->expects($this->any())->method('getSampleUrl')->willReturn($linkData['sample_url']);
}
if (isset($linkData['sample_type'])) {
- $linkMock->expects($this->any())->method('getSampleType')->will($this->returnValue(
- $linkData['sample_type']
- ));
+ $linkMock->expects($this->any())->method('getSampleType')->willReturn($linkData['sample_type']);
}
if (isset($linkData['link_file_content'])) {
- $linkMock->expects($this->any())->method('getLinkFileContent')->willReturn($linkData['link_file_content']);
+ $linkMock->expects($this->any())
+ ->method('getLinkFileContent')
+ ->willReturn($linkData['link_file_content']);
}
if (isset($linkData['sample_file_content'])) {
- $linkMock->expects($this->any())->method('getSampleFileContent')
+ $linkMock->expects($this->any())
+ ->method('getSampleFileContent')
->willReturn($linkData['sample_file_content']);
}
- $linkMock->expects($this->any())->method('getSampleFile')->will($this->returnValue(
- $this->sampleFileMock
- ));
+ $linkMock->expects($this->any())->method('getSampleFile')->willReturn($this->sampleFileMock);
+
return $linkMock;
}
}
diff --git a/app/code/Magento/Downloadable/Test/Unit/Model/LinkRepositoryTest.php b/app/code/Magento/Downloadable/Test/Unit/Model/LinkRepositoryTest.php
index 821f251929f8b..25f720f27150c 100644
--- a/app/code/Magento/Downloadable/Test/Unit/Model/LinkRepositoryTest.php
+++ b/app/code/Magento/Downloadable/Test/Unit/Model/LinkRepositoryTest.php
@@ -98,7 +98,9 @@ protected function setUp()
\Magento\Framework\Json\EncoderInterface::class
);
$this->linkFactoryMock = $this->createPartialMock(\Magento\Downloadable\Model\LinkFactory::class, ['create']);
- $this->productMock = $this->createPartialMock(\Magento\Catalog\Model\Product::class, [
+ $this->productMock = $this->createPartialMock(
+ \Magento\Catalog\Model\Product::class,
+ [
'__wakeup',
'getTypeId',
'setDownloadableData',
@@ -107,8 +109,9 @@ protected function setUp()
'getStoreId',
'getStore',
'getWebsiteIds',
- 'getData'
- ]);
+ 'getData',
+ ]
+ );
$this->service = new \Magento\Downloadable\Model\LinkRepository(
$this->repositoryMock,
$this->productTypeMock,
@@ -162,7 +165,8 @@ protected function getLinkMock(array $linkData)
'getNumberOfDownloads',
'getIsShareable',
'getLinkUrl',
- 'getLinkFile'
+ 'getLinkFile',
+ 'hasSampleType',
]
)
->getMockForAbstractClass();
@@ -309,12 +313,15 @@ public function testUpdate()
$storeMock = $this->createMock(\Magento\Store\Model\Store::class);
$storeMock->expects($this->any())->method('getWebsiteId')->will($this->returnValue($websiteId));
$this->productMock->expects($this->any())->method('getStore')->will($this->returnValue($storeMock));
- $existingLinkMock = $this->createPartialMock(\Magento\Downloadable\Model\Link::class, [
+ $existingLinkMock = $this->createPartialMock(
+ \Magento\Downloadable\Model\Link::class,
+ [
'__wakeup',
'getId',
'load',
- 'getProductId'
- ]);
+ 'getProductId',
+ ]
+ );
$this->linkFactoryMock->expects($this->once())->method('create')->will($this->returnValue($existingLinkMock));
$linkMock = $this->getLinkMock($linkData);
$this->contentValidatorMock->expects($this->any())->method('isValid')->with($linkMock)
@@ -371,12 +378,15 @@ public function testUpdateWithExistingFile()
$storeMock = $this->createMock(\Magento\Store\Model\Store::class);
$storeMock->expects($this->any())->method('getWebsiteId')->will($this->returnValue($websiteId));
$this->productMock->expects($this->any())->method('getStore')->will($this->returnValue($storeMock));
- $existingLinkMock = $this->createPartialMock(\Magento\Downloadable\Model\Link::class, [
+ $existingLinkMock = $this->createPartialMock(
+ \Magento\Downloadable\Model\Link::class,
+ [
'__wakeup',
'getId',
'load',
- 'getProductId'
- ]);
+ 'getProductId',
+ ]
+ );
$this->linkFactoryMock->expects($this->once())->method('create')->will($this->returnValue($existingLinkMock));
$linkMock = $this->getLinkMock($linkData);
$this->contentValidatorMock->expects($this->any())->method('isValid')->with($linkMock)
@@ -436,6 +446,8 @@ public function testUpdateThrowsExceptionIfTitleIsEmptyAndScopeIsGlobal()
'price' => 10.1,
'number_of_downloads' => 100,
'is_shareable' => true,
+ 'link_type' => 'url',
+ 'link_url' => 'https://google.com',
];
$this->repositoryMock->expects($this->any())->method('get')->with($productSku, true)
->will($this->returnValue($this->productMock));
@@ -501,10 +513,12 @@ public function testGetList()
'sample_file' => '/r/o/rock.melody.ogg',
'link_type' => 'url',
'link_url' => 'http://link.url',
- 'link_file' => null
+ 'link_file' => null,
];
- $linkMock = $this->createPartialMock(\Magento\Downloadable\Model\Link::class, [
+ $linkMock = $this->createPartialMock(
+ \Magento\Downloadable\Model\Link::class,
+ [
'getId',
'getStoreTitle',
'getTitle',
@@ -519,8 +533,9 @@ public function testGetList()
'getSampleUrl',
'getLinkType',
'getLinkFile',
- 'getLinkUrl'
- ]);
+ 'getLinkUrl',
+ ]
+ );
$linkInterfaceMock = $this->createMock(\Magento\Downloadable\Api\Data\LinkInterface::class);
diff --git a/app/code/Magento/Downloadable/Test/Unit/Model/Sample/ContentValidatorTest.php b/app/code/Magento/Downloadable/Test/Unit/Model/Sample/ContentValidatorTest.php
index c863fb7ad62ff..317a9c89b0754 100644
--- a/app/code/Magento/Downloadable/Test/Unit/Model/Sample/ContentValidatorTest.php
+++ b/app/code/Magento/Downloadable/Test/Unit/Model/Sample/ContentValidatorTest.php
@@ -6,7 +6,11 @@
namespace Magento\Downloadable\Test\Unit\Model\Sample;
use Magento\Downloadable\Model\Sample\ContentValidator;
+use Magento\Downloadable\Helper\File;
+/**
+ * Unit tests for Magento\Downloadable\Model\Sample\ContentValidator.
+ */
class ContentValidatorTest extends \PHPUnit\Framework\TestCase
{
/**
@@ -34,12 +38,31 @@ class ContentValidatorTest extends \PHPUnit\Framework\TestCase
*/
protected $sampleFileMock;
+ /**
+ * @var File|\PHPUnit_Framework_MockObject_MockObject
+ */
+ private $fileMock;
+
+ /**
+ * @inheritdoc
+ */
protected function setUp()
{
+ $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
+
$this->fileValidatorMock = $this->createMock(\Magento\Downloadable\Model\File\ContentValidator::class);
$this->urlValidatorMock = $this->createMock(\Magento\Framework\Url\Validator::class);
$this->sampleFileMock = $this->createMock(\Magento\Downloadable\Api\Data\File\ContentInterface::class);
- $this->validator = new ContentValidator($this->fileValidatorMock, $this->urlValidatorMock);
+ $this->fileMock = $this->createMock(File::class);
+
+ $this->validator = $objectManager->getObject(
+ ContentValidator::class,
+ [
+ 'fileContentValidator' => $this->fileValidatorMock,
+ 'urlValidator' => $this->urlValidatorMock,
+ 'fileHelper' => $this->fileMock,
+ ]
+ );
}
public function testIsValid()
@@ -94,28 +117,28 @@ public function getInvalidSortOrder()
protected function getSampleContentMock(array $sampleContentData)
{
$contentMock = $this->createMock(\Magento\Downloadable\Api\Data\SampleInterface::class);
- $contentMock->expects($this->any())->method('getTitle')->will($this->returnValue(
- $sampleContentData['title']
- ));
-
- $contentMock->expects($this->any())->method('getSortOrder')->will($this->returnValue(
- $sampleContentData['sort_order']
- ));
- $contentMock->expects($this->any())->method('getSampleType')->will($this->returnValue(
- $sampleContentData['sample_type']
- ));
+ $contentMock->expects($this->any())->method('getTitle')->willReturn($sampleContentData['title']);
+
+ $contentMock->expects($this->any())
+ ->method('getSortOrder')
+ ->willReturn($sampleContentData['sort_order']);
+ $contentMock->expects($this->any())
+ ->method('getSampleType')
+ ->willReturn($sampleContentData['sample_type']);
if (isset($sampleContentData['sample_url'])) {
- $contentMock->expects($this->any())->method('getSampleUrl')->will($this->returnValue(
- $sampleContentData['sample_url']
- ));
+ $contentMock->expects($this->any())
+ ->method('getSampleUrl')
+ ->willReturn($sampleContentData['sample_url']);
}
if (isset($sampleContentData['sample_file_content'])) {
- $contentMock->expects($this->any())->method('getSampleFileContent')
+ $contentMock->expects($this->any())
+ ->method('getSampleFileContent')
->willReturn($sampleContentData['sample_file_content']);
}
- $contentMock->expects($this->any())->method('getSampleFile')->will($this->returnValue(
- $this->sampleFileMock
- ));
+ $contentMock->expects($this->any())
+ ->method('getSampleFile')
+ ->willReturn($this->sampleFileMock);
+
return $contentMock;
}
}
diff --git a/app/code/Magento/Downloadable/Test/Unit/Model/SampleRepositoryTest.php b/app/code/Magento/Downloadable/Test/Unit/Model/SampleRepositoryTest.php
index 8e13bd83b039e..8e32b5193f5c7 100644
--- a/app/code/Magento/Downloadable/Test/Unit/Model/SampleRepositoryTest.php
+++ b/app/code/Magento/Downloadable/Test/Unit/Model/SampleRepositoryTest.php
@@ -148,26 +148,23 @@ protected function getSampleMock(array $sampleData)
if (isset($sampleData['id'])) {
$sampleMock->expects($this->any())->method('getId')->willReturn($sampleData['id']);
}
- $sampleMock->expects($this->any())->method('getTitle')->will($this->returnValue($sampleData['title']));
- $sampleMock->expects($this->any())->method('getSortOrder')->will($this->returnValue(
- $sampleData['sort_order']
- ));
+ $sampleMock->expects($this->any())->method('getTitle')->willReturn($sampleData['title']);
+ $sampleMock->expects($this->any())->method('getSortOrder')->willReturn($sampleData['sort_order']);
if (isset($sampleData['sample_type'])) {
- $sampleMock->expects($this->any())->method('getSampleType')->will($this->returnValue(
- $sampleData['sample_type']
- ));
+ $sampleMock->expects($this->any())
+ ->method('getSampleType')
+ ->willReturn($sampleData['sample_type']);
}
if (isset($sampleData['sample_url'])) {
- $sampleMock->expects($this->any())->method('getSampleUrl')->will($this->returnValue(
- $sampleData['sample_url']
- ));
+ $sampleMock->expects($this->any())->method('getSampleUrl')->willReturn($sampleData['sample_url']);
}
if (isset($sampleData['sample_file'])) {
- $sampleMock->expects($this->any())->method('getSampleFile')->will($this->returnValue(
- $sampleData['sample_file']
- ));
+ $sampleMock->expects($this->any())
+ ->method('getSampleFile')
+ ->willReturn($sampleData['sample_file']);
}
+
return $sampleMock;
}
@@ -353,6 +350,8 @@ public function testUpdateThrowsExceptionIfTitleIsEmptyAndScopeIsGlobal()
'id' => $sampleId,
'title' => '',
'sort_order' => 1,
+ 'sample_type' => 'url',
+ 'sample_url' => 'https://google.com',
];
$this->repositoryMock->expects($this->any())->method('get')->with($productSku, true)
->will($this->returnValue($this->productMock));
@@ -414,10 +413,12 @@ public function testGetList()
'sort_order' => 21,
'sample_type' => 'file',
'sample_url' => null,
- 'sample_file' => '/r/o/rock.melody.ogg'
+ 'sample_file' => '/r/o/rock.melody.ogg',
];
- $sampleMock = $this->createPartialMock(\Magento\Downloadable\Model\Sample::class, [
+ $sampleMock = $this->createPartialMock(
+ \Magento\Downloadable\Model\Sample::class,
+ [
'getId',
'getStoreTitle',
'getTitle',
@@ -426,8 +427,9 @@ public function testGetList()
'getSampleUrl',
'getSortOrder',
'getData',
- '__wakeup'
- ]);
+ '__wakeup',
+ ]
+ );
$sampleInterfaceMock = $this->createMock(\Magento\Downloadable\Api\Data\SampleInterface::class);
diff --git a/app/code/Magento/Downloadable/Ui/DataProvider/Product/Form/Modifier/Data/Links.php b/app/code/Magento/Downloadable/Ui/DataProvider/Product/Form/Modifier/Data/Links.php
index f29708cc9a2c6..0a3ea2fc6ba19 100644
--- a/app/code/Magento/Downloadable/Ui/DataProvider/Product/Form/Modifier/Data/Links.php
+++ b/app/code/Magento/Downloadable/Ui/DataProvider/Product/Form/Modifier/Data/Links.php
@@ -13,6 +13,7 @@
use Magento\Framework\UrlInterface;
use Magento\Downloadable\Model\Link as LinkModel;
use Magento\Downloadable\Api\Data\LinkInterface;
+use Magento\Framework\Exception\ValidatorException;
/**
* Class Links
@@ -155,7 +156,7 @@ protected function addSampleFile(array $linkData, LinkInterface $link)
$sampleFile = $link->getSampleFile();
if ($sampleFile) {
$file = $this->downloadableFile->getFilePath($this->linkModel->getBaseSamplePath(), $sampleFile);
- if ($this->downloadableFile->ensureFileInFilesystem($file)) {
+ if ($this->isLinkFileValid($file)) {
$linkData['sample']['file'][0] = [
'file' => $sampleFile,
'name' => $this->downloadableFile->getFileFromPathFile($sampleFile),
@@ -184,7 +185,7 @@ protected function addLinkFile(array $linkData, LinkInterface $link)
$linkFile = $link->getLinkFile();
if ($linkFile) {
$file = $this->downloadableFile->getFilePath($this->linkModel->getBasePath(), $linkFile);
- if ($this->downloadableFile->ensureFileInFilesystem($file)) {
+ if ($this->isLinkFileValid($file)) {
$linkData['file'][0] = [
'file' => $linkFile,
'name' => $this->downloadableFile->getFileFromPathFile($linkFile),
@@ -201,6 +202,21 @@ protected function addLinkFile(array $linkData, LinkInterface $link)
return $linkData;
}
+ /**
+ * Check that Links File or Sample is valid.
+ *
+ * @param string $file
+ * @return bool
+ */
+ private function isLinkFileValid(string $file): bool
+ {
+ try {
+ return $this->downloadableFile->ensureFileInFilesystem($file);
+ } catch (ValidatorException $e) {
+ return false;
+ }
+ }
+
/**
* Return formatted price with two digits after decimal point
*
diff --git a/app/code/Magento/Downloadable/Ui/DataProvider/Product/Form/Modifier/Data/Samples.php b/app/code/Magento/Downloadable/Ui/DataProvider/Product/Form/Modifier/Data/Samples.php
index b000de487b775..988f429de1d87 100644
--- a/app/code/Magento/Downloadable/Ui/DataProvider/Product/Form/Modifier/Data/Samples.php
+++ b/app/code/Magento/Downloadable/Ui/DataProvider/Product/Form/Modifier/Data/Samples.php
@@ -11,6 +11,7 @@
use Magento\Catalog\Model\Locator\LocatorInterface;
use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Downloadable\Helper\File as DownloadableFile;
+use Magento\Framework\Exception\ValidatorException;
use Magento\Framework\UrlInterface;
use Magento\Downloadable\Api\Data\SampleInterface;
@@ -136,7 +137,7 @@ protected function addSampleFile(array $sampleData, SampleInterface $sample)
$sampleFile = $sample->getSampleFile();
if ($sampleFile) {
$file = $this->downloadableFile->getFilePath($this->sampleModel->getBasePath(), $sampleFile);
- if ($this->downloadableFile->ensureFileInFilesystem($file)) {
+ if ($this->isSampleFileValid($file)) {
$sampleData['file'][0] = [
'file' => $sampleFile,
'name' => $this->downloadableFile->getFileFromPathFile($sampleFile),
@@ -152,4 +153,19 @@ protected function addSampleFile(array $sampleData, SampleInterface $sample)
return $sampleData;
}
+
+ /**
+ * Check that Sample file is valid.
+ *
+ * @param string $file
+ * @return bool
+ */
+ private function isSampleFileValid(string $file): bool
+ {
+ try {
+ return $this->downloadableFile->ensureFileInFilesystem($file);
+ } catch (ValidatorException $e) {
+ return false;
+ }
+ }
}
diff --git a/app/code/Magento/Downloadable/composer.json b/app/code/Magento/Downloadable/composer.json
index 88658b8644cad..c5c30ed7c1b59 100644
--- a/app/code/Magento/Downloadable/composer.json
+++ b/app/code/Magento/Downloadable/composer.json
@@ -6,26 +6,26 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-catalog": "*",
- "magento/module-catalog-inventory": "*",
- "magento/module-checkout": "*",
- "magento/module-config": "*",
- "magento/module-customer": "*",
- "magento/module-directory": "*",
- "magento/module-eav": "*",
- "magento/module-gift-message": "*",
- "magento/module-media-storage": "*",
- "magento/module-quote": "*",
- "magento/module-sales": "*",
- "magento/module-store": "*",
- "magento/module-tax": "*",
- "magento/module-theme": "*",
- "magento/module-ui": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-catalog-inventory": "100.3.*",
+ "magento/module-checkout": "100.3.*",
+ "magento/module-config": "101.1.*",
+ "magento/module-customer": "102.0.*",
+ "magento/module-directory": "100.3.*",
+ "magento/module-eav": "102.0.*",
+ "magento/module-gift-message": "100.3.*",
+ "magento/module-media-storage": "100.3.*",
+ "magento/module-quote": "101.1.*",
+ "magento/module-sales": "102.0.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-tax": "100.3.*",
+ "magento/module-theme": "101.0.*",
+ "magento/module-ui": "101.1.*"
},
"suggest": {
- "magento/module-downloadable-sample-data": "*"
+ "magento/module-downloadable-sample-data": "Sample Data version: 100.3.*"
},
"type": "magento2-module",
"license": [
@@ -39,5 +39,6 @@
"psr-4": {
"Magento\\Downloadable\\": ""
}
- }
+ },
+ "version": "100.3.2-p2"
}
diff --git a/app/code/Magento/Downloadable/etc/di.xml b/app/code/Magento/Downloadable/etc/di.xml
index 4e9b0b55afb0b..a932e5598f8ae 100644
--- a/app/code/Magento/Downloadable/etc/di.xml
+++ b/app/code/Magento/Downloadable/etc/di.xml
@@ -92,6 +92,7 @@
+
@@ -164,4 +165,13 @@
indexer
+
+
+
+ - Magento\Downloadable\Console\Command\DomainsAddCommand
+ - Magento\Downloadable\Console\Command\DomainsRemoveCommand
+ - Magento\Downloadable\Console\Command\DomainsShowCommand
+
+
+
diff --git a/app/code/Magento/Downloadable/i18n/en_US.csv b/app/code/Magento/Downloadable/i18n/en_US.csv
index 87427bf483966..1e96413aa08a1 100644
--- a/app/code/Magento/Downloadable/i18n/en_US.csv
+++ b/app/code/Magento/Downloadable/i18n/en_US.csv
@@ -118,3 +118,5 @@ Downloads,Downloads
"Use Content-Disposition","Use Content-Disposition"
"Disable Guest Checkout if Cart Contains Downloadable Items","Disable Guest Checkout if Cart Contains Downloadable Items"
"Guest checkout will only work with shareable.","Guest checkout will only work with shareable."
+"Link URL's domain is not in list of downloadable_domains in env.php.","Link URL's domain is not in list of downloadable_domains in env.php."
+"Sample URL's domain is not in list of downloadable_domains in env.php.","Sample URL's domain is not in list of downloadable_domains in env.php."
diff --git a/app/code/Magento/DownloadableGraphQl/composer.json b/app/code/Magento/DownloadableGraphQl/composer.json
index 5c4613beabc26..9c6ff0578a362 100644
--- a/app/code/Magento/DownloadableGraphQl/composer.json
+++ b/app/code/Magento/DownloadableGraphQl/composer.json
@@ -4,12 +4,12 @@
"type": "magento2-module",
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/module-catalog": "*",
- "magento/module-downloadable": "*",
- "magento/framework": "*"
+ "magento/module-catalog": "103.0.*",
+ "magento/module-downloadable": "100.3.*",
+ "magento/framework": "102.0.*"
},
"suggest": {
- "magento/module-catalog-graph-ql": "*"
+ "magento/module-catalog-graph-ql": "100.3.*"
},
"license": [
"OSL-3.0",
@@ -22,5 +22,6 @@
"psr-4": {
"Magento\\DownloadableGraphQl\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/DownloadableImportExport/Model/Import/Product/Type/Downloadable.php b/app/code/Magento/DownloadableImportExport/Model/Import/Product/Type/Downloadable.php
index e03964bd2c386..3bb9a7a5b8ceb 100644
--- a/app/code/Magento/DownloadableImportExport/Model/Import/Product/Type/Downloadable.php
+++ b/app/code/Magento/DownloadableImportExport/Model/Import/Product/Type/Downloadable.php
@@ -1,18 +1,18 @@
'Group titles not found for downloadable products',
self::ERROR_OPTION_NO_TITLE => 'Option no title',
self::ERROR_MOVE_FILE => 'Error move file',
- self::ERROR_COLS_IS_EMPTY => 'Missing sample and links data for the downloadable product'
+ self::ERROR_COLS_IS_EMPTY => 'Missing sample and links data for the downloadable product',
+ self::ERROR_LINK_URL_NOT_IN_DOMAIN_WHITELIST =>
+ 'Link URL\'s domain is not in list of downloadable_domains in env.php.',
+ self::ERROR_SAMPLE_URL_NOT_IN_DOMAIN_WHITELIST =>
+ 'Sample URL\'s domain is not in list of downloadable_domains in env.php.'
];
/**
@@ -244,6 +251,11 @@ class Downloadable extends \Magento\CatalogImportExport\Model\Import\Product\Typ
*/
protected $downloadableHelper;
+ /**
+ * @var DomainValidator
+ */
+ private $domainValidator;
+
/**
* Downloadable constructor
*
@@ -253,6 +265,7 @@ class Downloadable extends \Magento\CatalogImportExport\Model\Import\Product\Typ
* @param array $params
* @param \Magento\DownloadableImportExport\Helper\Uploader $uploaderHelper
* @param \Magento\DownloadableImportExport\Helper\Data $downloadableHelper
+ * @param DomainValidator $domainValidator
* @param MetadataPool $metadataPool
*/
public function __construct(
@@ -262,12 +275,14 @@ public function __construct(
array $params,
\Magento\DownloadableImportExport\Helper\Uploader $uploaderHelper,
\Magento\DownloadableImportExport\Helper\Data $downloadableHelper,
+ DomainValidator $domainValidator,
MetadataPool $metadataPool = null
) {
parent::__construct($attrSetColFac, $prodAttrColFac, $resource, $params, $metadataPool);
$this->parameters = $this->_entityModel->getParameters();
$this->_resource = $resource;
$this->uploaderHelper = $uploaderHelper;
+ $this->domainValidator = $domainValidator;
$this->downloadableHelper = $downloadableHelper;
}
@@ -329,48 +344,84 @@ public function isRowValid(array $rowData, $rowNum, $isNewProduct = true)
}
/**
- * Validation sample options
+ * Validation sample options.
*
* @param array $rowData
* @return bool
*/
protected function isRowValidSample(array $rowData)
{
- $result = false;
- if (isset($rowData[self::COL_DOWNLOADABLE_SAMPLES])
- && $rowData[self::COL_DOWNLOADABLE_SAMPLES] != ''
- && $this->sampleGroupTitle($rowData) == '') {
- $this->_entityModel->addRowError(self::ERROR_GROUP_TITLE_NOT_FOUND, $this->rowNum);
+ $hasSampleLinkData = (
+ isset($rowData[self::COL_DOWNLOADABLE_SAMPLES]) &&
+ $rowData[self::COL_DOWNLOADABLE_SAMPLES] != ''
+ );
+
+ if (!$hasSampleLinkData) {
+ return false;
+ }
+
+ $sampleData = $this->prepareSampleData($rowData[static::COL_DOWNLOADABLE_SAMPLES]);
+
+ if ($this->sampleGroupTitle($rowData) == '') {
$result = true;
+ $this->_entityModel->addRowError(self::ERROR_GROUP_TITLE_NOT_FOUND, $this->rowNum);
}
- if (isset($rowData[self::COL_DOWNLOADABLE_SAMPLES])
- && $rowData[self::COL_DOWNLOADABLE_SAMPLES] != '') {
- $result = $this->isTitle($this->prepareSampleData($rowData[self::COL_DOWNLOADABLE_SAMPLES]));
+
+ $result = $result ?? $this->isTitle($sampleData);
+
+ foreach ($sampleData as $link) {
+ if ($this->hasDomainNotInWhitelist($link, 'link_type', 'link_url')) {
+ $this->_entityModel->addRowError(static::ERROR_LINK_URL_NOT_IN_DOMAIN_WHITELIST, $this->rowNum);
+ $result = true;
+ }
+
+ if ($this->hasDomainNotInWhitelist($link, 'sample_type', 'sample_url')) {
+ $this->_entityModel->addRowError(static::ERROR_SAMPLE_URL_NOT_IN_DOMAIN_WHITELIST, $this->rowNum);
+ $result = true;
+ }
}
+
return $result;
}
/**
- * Validation links option
+ * Validation links option.
*
* @param array $rowData
* @return bool
*/
protected function isRowValidLink(array $rowData)
{
- $result = false;
- if (isset($rowData[self::COL_DOWNLOADABLE_LINKS]) &&
- $rowData[self::COL_DOWNLOADABLE_LINKS] != '' &&
- $this->linksAdditionalAttributes($rowData, 'group_title', self::DEFAULT_GROUP_TITLE) == ''
- ) {
+ $hasLinkData = (
+ isset($rowData[self::COL_DOWNLOADABLE_LINKS]) &&
+ $rowData[self::COL_DOWNLOADABLE_LINKS] != ''
+ );
+
+ if (!$hasLinkData) {
+ return false;
+ }
+
+ $linkData = $this->prepareLinkData($rowData[self::COL_DOWNLOADABLE_LINKS]);
+
+ if ($this->linksAdditionalAttributes($rowData, 'group_title', self::DEFAULT_GROUP_TITLE) == '') {
$this->_entityModel->addRowError(self::ERROR_GROUP_TITLE_NOT_FOUND, $this->rowNum);
$result = true;
}
- if (isset($rowData[self::COL_DOWNLOADABLE_LINKS]) &&
- $rowData[self::COL_DOWNLOADABLE_LINKS] != ''
- ) {
- $result = $this->isTitle($this->prepareLinkData($rowData[self::COL_DOWNLOADABLE_LINKS]));
+
+ $result = $result ?? $this->isTitle($linkData);
+
+ foreach ($linkData as $link) {
+ if ($this->hasDomainNotInWhitelist($link, 'link_type', 'link_url')) {
+ $this->_entityModel->addRowError(static::ERROR_LINK_URL_NOT_IN_DOMAIN_WHITELIST, $this->rowNum);
+ $result = true;
+ }
+
+ if ($this->hasDomainNotInWhitelist($link, 'sample_type', 'sample_url')) {
+ $this->_entityModel->addRowError(static::ERROR_SAMPLE_URL_NOT_IN_DOMAIN_WHITELIST, $this->rowNum);
+ $result = true;
+ }
}
+
return $result;
}
@@ -829,6 +880,7 @@ protected function parseSampleOption($values)
/**
* Uploading files into the "downloadable/files" media folder.
+ *
* Return a new file name if the same file is already exists.
*
* @param string $fileName
@@ -861,4 +913,23 @@ protected function clear()
$this->productIds = [];
return $this;
}
+
+ /**
+ * Does link contain url not in whitelist?
+ *
+ * @param array $link
+ * @param string $linkTypeKey
+ * @param string $linkUrlKey
+ * @return bool
+ */
+ private function hasDomainNotInWhitelist(array $link, string $linkTypeKey, string $linkUrlKey): bool
+ {
+ return (
+ isset($link[$linkTypeKey]) &&
+ $link[$linkTypeKey] === 'url' &&
+ isset($link[$linkUrlKey]) &&
+ strlen($link[$linkUrlKey]) &&
+ !$this->domainValidator->isValid($link[$linkUrlKey])
+ );
+ }
}
diff --git a/app/code/Magento/DownloadableImportExport/composer.json b/app/code/Magento/DownloadableImportExport/composer.json
index 860303b0c86aa..9dd833484328a 100644
--- a/app/code/Magento/DownloadableImportExport/composer.json
+++ b/app/code/Magento/DownloadableImportExport/composer.json
@@ -6,13 +6,13 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-catalog": "*",
- "magento/module-catalog-import-export": "*",
- "magento/module-downloadable": "*",
- "magento/module-eav": "*",
- "magento/module-import-export": "*",
- "magento/module-store": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-catalog-import-export": "101.0.*",
+ "magento/module-downloadable": "100.3.*",
+ "magento/module-eav": "102.0.*",
+ "magento/module-import-export": "100.3.*",
+ "magento/module-store": "101.0.*"
},
"type": "magento2-module",
"license": [
@@ -26,5 +26,6 @@
"psr-4": {
"Magento\\DownloadableImportExport\\": ""
}
- }
+ },
+ "version": "100.3.2-p2"
}
diff --git a/app/code/Magento/Eav/Api/Data/AttributeDefaultValueInterface.php b/app/code/Magento/Eav/Api/Data/AttributeDefaultValueInterface.php
index 56ae16c53402c..45022e25c5c31 100644
--- a/app/code/Magento/Eav/Api/Data/AttributeDefaultValueInterface.php
+++ b/app/code/Magento/Eav/Api/Data/AttributeDefaultValueInterface.php
@@ -11,7 +11,7 @@
* Allows to manage attribute default value through interface
* @api
* @package Magento\Eav\Api\Data
- * @since 100.2.0
+ * @since 101.0.0
*/
interface AttributeDefaultValueInterface
{
@@ -20,13 +20,13 @@ interface AttributeDefaultValueInterface
/**
* @param string $defaultValue
* @return \Magento\Framework\Api\MetadataObjectInterface
- * @since 100.2.0
+ * @since 101.0.0
*/
public function setDefaultValue($defaultValue);
/**
* @return string
- * @since 100.2.0
+ * @since 101.0.0
*/
public function getDefaultValue();
}
diff --git a/app/code/Magento/Eav/Api/Data/AttributeInterface.php b/app/code/Magento/Eav/Api/Data/AttributeInterface.php
index 55d6e58b64b71..d96c2329ec594 100644
--- a/app/code/Magento/Eav/Api/Data/AttributeInterface.php
+++ b/app/code/Magento/Eav/Api/Data/AttributeInterface.php
@@ -316,6 +316,7 @@ public function getExtensionAttributes();
*
* @param \Magento\Eav\Api\Data\AttributeExtensionInterface $extensionAttributes
* @return $this
+ * @since 102.0.0
*/
public function setExtensionAttributes(
\Magento\Eav\Api\Data\AttributeExtensionInterface $extensionAttributes
diff --git a/app/code/Magento/Eav/Block/Adminhtml/Attribute/Edit/Js.php b/app/code/Magento/Eav/Block/Adminhtml/Attribute/Edit/Js.php
index 7dd6b0a19ec02..577dac5b0c28b 100644
--- a/app/code/Magento/Eav/Block/Adminhtml/Attribute/Edit/Js.php
+++ b/app/code/Magento/Eav/Block/Adminhtml/Attribute/Edit/Js.php
@@ -38,7 +38,7 @@ public function __construct(
}
/**
- * @deprecated Misspelled method
+ * @deprecated 102.0.0 Misspelled method
* @see getCompatibleInputTypes
*/
public function getComaptibleInputTypes()
diff --git a/app/code/Magento/Eav/Block/Adminhtml/Attribute/Edit/Options/AbstractOptions.php b/app/code/Magento/Eav/Block/Adminhtml/Attribute/Edit/Options/AbstractOptions.php
index 9b44b2c7395ac..70fd5b2914600 100644
--- a/app/code/Magento/Eav/Block/Adminhtml/Attribute/Edit/Options/AbstractOptions.php
+++ b/app/code/Magento/Eav/Block/Adminhtml/Attribute/Edit/Options/AbstractOptions.php
@@ -9,7 +9,7 @@
* Attribute add/edit form options tab
*
* @api
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @since 100.0.2
*/
abstract class AbstractOptions extends \Magento\Framework\View\Element\AbstractBlock
diff --git a/app/code/Magento/Eav/Block/Adminhtml/Attribute/Grid/AbstractGrid.php b/app/code/Magento/Eav/Block/Adminhtml/Attribute/Grid/AbstractGrid.php
index 55c0583191492..839ee7584cf03 100644
--- a/app/code/Magento/Eav/Block/Adminhtml/Attribute/Grid/AbstractGrid.php
+++ b/app/code/Magento/Eav/Block/Adminhtml/Attribute/Grid/AbstractGrid.php
@@ -10,7 +10,7 @@
*
* @api
* @SuppressWarnings(PHPMD.DepthOfInheritance)
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @since 100.0.2
*/
abstract class AbstractGrid extends \Magento\Backend\Block\Widget\Grid\Extended
diff --git a/app/code/Magento/Eav/Model/Attribute/GroupRepository.php b/app/code/Magento/Eav/Model/Attribute/GroupRepository.php
index 07ca71d95eba5..f717a01a4384f 100644
--- a/app/code/Magento/Eav/Model/Attribute/GroupRepository.php
+++ b/app/code/Magento/Eav/Model/Attribute/GroupRepository.php
@@ -181,7 +181,7 @@ public function deleteById($groupId)
/**
* @param \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria
* @return null|string
- * @deprecated
+ * @deprecated 101.0.3
*/
protected function retrieveAttributeSetIdFromSearchCriteria(
\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria
@@ -199,7 +199,7 @@ protected function retrieveAttributeSetIdFromSearchCriteria(
/**
* Retrieve collection processor
*
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @return CollectionProcessorInterface
*/
private function getCollectionProcessor()
diff --git a/app/code/Magento/Eav/Model/AttributeRepository.php b/app/code/Magento/Eav/Model/AttributeRepository.php
index 337ae7334486e..bb307d5581121 100644
--- a/app/code/Magento/Eav/Model/AttributeRepository.php
+++ b/app/code/Magento/Eav/Model/AttributeRepository.php
@@ -208,7 +208,7 @@ public function deleteById($attributeId)
/**
* Retrieve collection processor
*
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @return CollectionProcessorInterface
*/
private function getCollectionProcessor()
diff --git a/app/code/Magento/Eav/Model/AttributeSetRepository.php b/app/code/Magento/Eav/Model/AttributeSetRepository.php
index caab82da3910d..73e8749952812 100644
--- a/app/code/Magento/Eav/Model/AttributeSetRepository.php
+++ b/app/code/Magento/Eav/Model/AttributeSetRepository.php
@@ -126,7 +126,7 @@ public function getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCr
/**
* Retrieve entity type code from search criteria
*
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @param \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria
* @return null|string
*/
@@ -188,7 +188,7 @@ public function deleteById($attributeSetId)
/**
* Retrieve collection processor
*
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @return CollectionProcessorInterface
*/
private function getCollectionProcessor()
diff --git a/app/code/Magento/Eav/Model/Config.php b/app/code/Magento/Eav/Model/Config.php
index 0eecca21b0d54..2261fd3098faf 100644
--- a/app/code/Magento/Eav/Model/Config.php
+++ b/app/code/Magento/Eav/Model/Config.php
@@ -469,12 +469,12 @@ protected function _initAttributes($entityType)
/**
* Get attributes by entity type
*
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @see \Magento\Eav\Model\Config::getEntityAttributes
*
* @param string $entityType
* @return AbstractAttribute[]
- * @since 100.2.0
+ * @since 101.0.0
*/
public function getAttributes($entityType)
{
@@ -540,7 +540,7 @@ private function createAttribute($model)
/**
* Get codes of all entity type attributes
*
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @see \Magento\Eav\Model\Config::getEntityAttributes
*
* @param mixed $entityType
@@ -561,7 +561,7 @@ public function getEntityAttributeCodes($entityType, $object = null)
*
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
* @SuppressWarnings(PHPMD.NPathComplexity)
- * @since 100.2.0
+ * @since 101.0.0
*/
public function getEntityAttributes($entityType, $object = null)
{
diff --git a/app/code/Magento/Eav/Model/Entity/AbstractEntity.php b/app/code/Magento/Eav/Model/Entity/AbstractEntity.php
index 1fd71e446e6bb..267ff82879b4a 100644
--- a/app/code/Magento/Eav/Model/Entity/AbstractEntity.php
+++ b/app/code/Magento/Eav/Model/Entity/AbstractEntity.php
@@ -1026,7 +1026,7 @@ public function load($object, $entityId, $attributes = [])
/**
* Loads attributes metadata.
*
- * @deprecated 100.2.0 Use self::loadAttributesForObject instead
+ * @deprecated 101.0.0 Use self::loadAttributesForObject instead
* @param array|null $attributes
* @return $this
* @since 100.1.0
@@ -1989,7 +1989,7 @@ public function afterDelete(DataObject $object)
* @param array $attributes
* @param AbstractEntity|null $object
* @return void
- * @since 100.2.0
+ * @since 101.0.0
*/
protected function loadAttributesForObject($attributes, $object = null)
{
diff --git a/app/code/Magento/Eav/Model/Entity/Attribute/AbstractAttribute.php b/app/code/Magento/Eav/Model/Entity/Attribute/AbstractAttribute.php
index 3857118ae67ca..6b35737b09ab9 100644
--- a/app/code/Magento/Eav/Model/Entity/Attribute/AbstractAttribute.php
+++ b/app/code/Magento/Eav/Model/Entity/Attribute/AbstractAttribute.php
@@ -130,7 +130,7 @@ abstract class AbstractAttribute extends \Magento\Framework\Model\AbstractExtens
* Serializer Instance.
*
* @var Json
- * @since 100.2.0
+ * @since 101.0.0
*/
protected $serializer;
@@ -219,10 +219,10 @@ public function __construct(
/**
* Get Serializer instance.
*
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
*
* @return Json
- * @since 100.2.0
+ * @since 101.0.0
*/
protected function getSerializer()
{
@@ -929,7 +929,7 @@ public function _getFlatColumnsDdlDefinition()
*
* Used in database compatible mode
*
- * @deprecated 100.2.0
+ * @deprecated 101.0.0
* @return array
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*/
diff --git a/app/code/Magento/Eav/Model/Entity/Attribute/AttributeGroupAlreadyExistsException.php b/app/code/Magento/Eav/Model/Entity/Attribute/AttributeGroupAlreadyExistsException.php
index fa50aa588b4ed..892018983cd1c 100644
--- a/app/code/Magento/Eav/Model/Entity/Attribute/AttributeGroupAlreadyExistsException.php
+++ b/app/code/Magento/Eav/Model/Entity/Attribute/AttributeGroupAlreadyExistsException.php
@@ -9,7 +9,7 @@
/**
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
class AttributeGroupAlreadyExistsException extends AlreadyExistsException
{
diff --git a/app/code/Magento/Eav/Model/Entity/Attribute/Backend/JsonEncoded.php b/app/code/Magento/Eav/Model/Entity/Attribute/Backend/JsonEncoded.php
index 156c0326f2b6f..b9fbb876dd6c3 100644
--- a/app/code/Magento/Eav/Model/Entity/Attribute/Backend/JsonEncoded.php
+++ b/app/code/Magento/Eav/Model/Entity/Attribute/Backend/JsonEncoded.php
@@ -11,7 +11,7 @@
* Backend model for attribute that stores structures in json format
*
* @api
- * @since 100.2.0
+ * @since 101.0.0
*/
class JsonEncoded extends \Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend
{
@@ -35,7 +35,7 @@ public function __construct(Json $jsonSerializer)
*
* @param \Magento\Framework\DataObject $object
* @return $this
- * @since 100.2.0
+ * @since 101.0.0
*/
public function beforeSave($object)
{
@@ -52,7 +52,7 @@ public function beforeSave($object)
*
* @param \Magento\Framework\DataObject $object
* @return $this
- * @since 100.2.0
+ * @since 101.0.0
*/
public function afterLoad($object)
{
diff --git a/app/code/Magento/Eav/Model/Entity/Attribute/Set.php b/app/code/Magento/Eav/Model/Entity/Attribute/Set.php
index da7d5fac089cb..fce95d7eb9c72 100644
--- a/app/code/Magento/Eav/Model/Entity/Attribute/Set.php
+++ b/app/code/Magento/Eav/Model/Entity/Attribute/Set.php
@@ -375,7 +375,7 @@ public function getDefaultGroupId($setId = null)
* Get resource instance
*
* @return \Magento\Framework\Model\ResourceModel\Db\AbstractDb
- * @deprecated 100.2.0 because resource models should be used directly
+ * @deprecated 101.0.0 because resource models should be used directly
*/
protected function _getResource()
{
diff --git a/app/code/Magento/Eav/Model/Entity/Collection/AbstractCollection.php b/app/code/Magento/Eav/Model/Entity/Collection/AbstractCollection.php
index e50abbc11e54a..06a169783557c 100644
--- a/app/code/Magento/Eav/Model/Entity/Collection/AbstractCollection.php
+++ b/app/code/Magento/Eav/Model/Entity/Collection/AbstractCollection.php
@@ -1604,6 +1604,7 @@ protected function _reset()
*
* @param string $attributeCode
* @return bool
+ * @since 102.0.0
*/
public function isAttributeAdded($attributeCode) : bool
{
diff --git a/app/code/Magento/Eav/Model/ResourceModel/Entity/Attribute.php b/app/code/Magento/Eav/Model/ResourceModel/Entity/Attribute.php
index 0e7a46125d872..5a8aeed3f22be 100644
--- a/app/code/Magento/Eav/Model/ResourceModel/Entity/Attribute.php
+++ b/app/code/Magento/Eav/Model/ResourceModel/Entity/Attribute.php
@@ -11,7 +11,9 @@
use Magento\Eav\Model\Entity\Attribute as EntityAttribute;
use Magento\Framework\App\ObjectManager;
use Magento\Framework\DB\Select;
+use Magento\Framework\Exception\CouldNotDeleteException;
use Magento\Framework\Model\AbstractModel;
+use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
/**
* EAV attribute resource model
@@ -20,7 +22,7 @@
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @since 100.0.2
*/
-class Attribute extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
+class Attribute extends AbstractDb
{
/**
* Eav Entity attributes cache
@@ -189,6 +191,24 @@ protected function _beforeSave(AbstractModel $object)
return parent::_beforeSave($object);
}
+ /**
+ * @inheritdoc
+ *
+ * @param AbstractModel $attribute
+ * @return AbstractDb
+ * @throws CouldNotDeleteException
+ * @since 102.0.2
+ */
+ protected function _beforeDelete(AbstractModel $attribute)
+ {
+ /** @var $attribute \Magento\Eav\Api\Data\AttributeInterface */
+ if ($attribute->getId() && !$attribute->getIsUserDefined()) {
+ throw new CouldNotDeleteException(__("The system attribute can't be deleted."));
+ }
+
+ return parent::_beforeDelete($attribute);
+ }
+
/**
* Save additional attribute data after save attribute
*
diff --git a/app/code/Magento/Eav/Model/ResourceModel/ReadHandler.php b/app/code/Magento/Eav/Model/ResourceModel/ReadHandler.php
index 7f6dfa2a5e9ab..ce58ec7955f72 100644
--- a/app/code/Magento/Eav/Model/ResourceModel/ReadHandler.php
+++ b/app/code/Magento/Eav/Model/ResourceModel/ReadHandler.php
@@ -64,7 +64,7 @@ public function __construct(
* @param string $entityType
* @return \Magento\Eav\Api\Data\AttributeInterface[]
* @throws \Exception if for unknown entity type
- * @deprecated Not used anymore
+ * @deprecated 101.0.5 Not used anymore
* @see ReadHandler::getEntityAttributes
*/
protected function getAttributes($entityType)
diff --git a/app/code/Magento/Eav/Model/TypeLocator/ServiceClassLocator.php b/app/code/Magento/Eav/Model/TypeLocator/ServiceClassLocator.php
index a4225b550ab10..7ffcf689c4381 100644
--- a/app/code/Magento/Eav/Model/TypeLocator/ServiceClassLocator.php
+++ b/app/code/Magento/Eav/Model/TypeLocator/ServiceClassLocator.php
@@ -14,7 +14,7 @@
/**
* Class to find type based off of ServiceTypeToEntityTypeMap. This locator is introduced for backwards compatibility.
- * @deprecated
+ * @deprecated 102.0.0
*/
class ServiceClassLocator implements CustomAttributeTypeLocatorInterface
{
diff --git a/app/code/Magento/Eav/Setup/EavSetup.php b/app/code/Magento/Eav/Setup/EavSetup.php
index de285e81b1d03..1a90ff417c793 100644
--- a/app/code/Magento/Eav/Setup/EavSetup.php
+++ b/app/code/Magento/Eav/Setup/EavSetup.php
@@ -115,7 +115,7 @@ public function __construct(
/**
* Gets setup model.
*
- * @deprecated
+ * @deprecated 102.0.0
* @return ModuleDataSetupInterface
*/
public function getSetup()
diff --git a/app/code/Magento/Eav/composer.json b/app/code/Magento/Eav/composer.json
index 80692bf37bc25..3ff4a1d107e5a 100644
--- a/app/code/Magento/Eav/composer.json
+++ b/app/code/Magento/Eav/composer.json
@@ -6,12 +6,12 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-catalog": "*",
- "magento/module-config": "*",
- "magento/module-media-storage": "*",
- "magento/module-store": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-config": "101.1.*",
+ "magento/module-media-storage": "100.3.*",
+ "magento/module-store": "101.0.*"
},
"type": "magento2-module",
"license": [
@@ -25,5 +25,6 @@
"psr-4": {
"Magento\\Eav\\": ""
}
- }
+ },
+ "version": "102.0.2-p2"
}
diff --git a/app/code/Magento/EavGraphQl/Model/Resolver/Query/Type.php b/app/code/Magento/EavGraphQl/Model/Resolver/Query/Type.php
index ef21a26f1f62e..7ee87681dc630 100644
--- a/app/code/Magento/EavGraphQl/Model/Resolver/Query/Type.php
+++ b/app/code/Magento/EavGraphQl/Model/Resolver/Query/Type.php
@@ -15,6 +15,7 @@
* Translate type names found by the custom type locator to GraphQL type names.
*
* @api
+ * @since 100.3.0
*/
class Type
{
@@ -55,6 +56,7 @@ public function __construct(
* @param string $entityType
* @return string
* @throws GraphQlInputException
+ * @since 100.3.0
*/
public function getType(string $attributeCode, string $entityType) : string
{
diff --git a/app/code/Magento/EavGraphQl/composer.json b/app/code/Magento/EavGraphQl/composer.json
index a2c2d025a3d9d..9c6a8b0db40b7 100644
--- a/app/code/Magento/EavGraphQl/composer.json
+++ b/app/code/Magento/EavGraphQl/composer.json
@@ -4,11 +4,11 @@
"type": "magento2-module",
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-eav": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-eav": "102.0.*"
},
"suggest": {
- "magento/module-graph-ql": "*"
+ "magento/module-graph-ql": "100.3.*"
},
"license": [
"OSL-3.0",
@@ -21,5 +21,6 @@
"psr-4": {
"Magento\\EavGraphQl\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/Elasticsearch/Elasticsearch5/Model/Adapter/DataMapper/ProductDataMapper.php b/app/code/Magento/Elasticsearch/Elasticsearch5/Model/Adapter/DataMapper/ProductDataMapper.php
index f0b7380397235..936e95bcfa488 100644
--- a/app/code/Magento/Elasticsearch/Elasticsearch5/Model/Adapter/DataMapper/ProductDataMapper.php
+++ b/app/code/Magento/Elasticsearch/Elasticsearch5/Model/Adapter/DataMapper/ProductDataMapper.php
@@ -22,7 +22,7 @@
/**
* Don't use this product data mapper class.
*
- * @deprecated 100.2.0
+ * @deprecated 100.2.2
* @see \Magento\Elasticsearch\Model\Adapter\BatchDataMapperInterface
*/
class ProductDataMapper implements DataMapperInterface
diff --git a/app/code/Magento/Elasticsearch/Elasticsearch5/Model/Adapter/FieldMapper/ProductFieldMapper.php b/app/code/Magento/Elasticsearch/Elasticsearch5/Model/Adapter/FieldMapper/ProductFieldMapper.php
index 5aea87e5e6ae1..409fc8048cbdb 100644
--- a/app/code/Magento/Elasticsearch/Elasticsearch5/Model/Adapter/FieldMapper/ProductFieldMapper.php
+++ b/app/code/Magento/Elasticsearch/Elasticsearch5/Model/Adapter/FieldMapper/ProductFieldMapper.php
@@ -23,31 +23,31 @@
class ProductFieldMapper implements FieldMapperInterface
{
/**
- * @deprecated
+ * @deprecated 100.3.0
* @var Config
*/
protected $eavConfig;
/**
- * @deprecated
+ * @deprecated 100.3.0
* @var FieldType
*/
protected $fieldType;
/**
- * @deprecated
+ * @deprecated 100.3.0
* @var CustomerSession
*/
protected $customerSession;
/**
- * @deprecated
+ * @deprecated 100.3.0
* @var StoreManager
*/
protected $storeManager;
/**
- * @deprecated
+ * @deprecated 100.3.0
* @var Registry
*/
protected $coreRegistry;
diff --git a/app/code/Magento/Elasticsearch/Elasticsearch5/Model/Adapter/FieldMapper/ProductFieldMapperProxy.php b/app/code/Magento/Elasticsearch/Elasticsearch5/Model/Adapter/FieldMapper/ProductFieldMapperProxy.php
index b912446acd63e..840a4e16e8ab2 100644
--- a/app/code/Magento/Elasticsearch/Elasticsearch5/Model/Adapter/FieldMapper/ProductFieldMapperProxy.php
+++ b/app/code/Magento/Elasticsearch/Elasticsearch5/Model/Adapter/FieldMapper/ProductFieldMapperProxy.php
@@ -50,7 +50,6 @@ private function getProductFieldMapper()
* @param string $attributeCode
* @param array $context
* @return string
- * @since 100.1.0
*/
public function getFieldName($attributeCode, $context = [])
{
@@ -62,7 +61,6 @@ public function getFieldName($attributeCode, $context = [])
*
* @param array $context
* @return array
- * @since 100.1.0
*/
public function getAllAttributesTypes($context = [])
{
diff --git a/app/code/Magento/Elasticsearch/Elasticsearch5/Model/Adapter/FieldType.php b/app/code/Magento/Elasticsearch/Elasticsearch5/Model/Adapter/FieldType.php
index 6891b8c693624..332d61a1037b7 100644
--- a/app/code/Magento/Elasticsearch/Elasticsearch5/Model/Adapter/FieldType.php
+++ b/app/code/Magento/Elasticsearch/Elasticsearch5/Model/Adapter/FieldType.php
@@ -12,9 +12,9 @@
* Class FieldType
*
* @api
- * @since 100.1.0
+ * @since 100.2.2
*
- * @deprecated This class provide not full data about field type. Only basic rules apply on this class.
+ * @deprecated 100.3.0 This class provide not full data about field type. Only basic rules apply on this class.
* @see ResolverInterface
*/
class FieldType
@@ -38,12 +38,12 @@ class FieldType
/**
* Get field type.
*
- * @deprecated
+ * @deprecated 100.3.0
* @see ResolverInterface::getFieldType
*
* @param AbstractAttribute $attribute
* @return string
- * @since 100.1.0
+ * @since 100.2.2
*/
public function getFieldType($attribute)
{
diff --git a/app/code/Magento/Elasticsearch/Elasticsearch5/SearchAdapter/Mapper.php b/app/code/Magento/Elasticsearch/Elasticsearch5/SearchAdapter/Mapper.php
index abd27abdac8a7..9db1375f16c71 100644
--- a/app/code/Magento/Elasticsearch/Elasticsearch5/SearchAdapter/Mapper.php
+++ b/app/code/Magento/Elasticsearch/Elasticsearch5/SearchAdapter/Mapper.php
@@ -17,25 +17,25 @@
/**
* Mapper class
* @api
- * @since 100.1.0
+ * @since 100.2.2
*/
class Mapper
{
/**
* @var QueryBuilder
- * @since 100.1.0
+ * @since 100.2.2
*/
protected $queryBuilder;
/**
* @var MatchQueryBuilder
- * @since 100.1.0
+ * @since 100.2.2
*/
protected $matchQueryBuilder;
/**
* @var FilterBuilder
- * @since 100.1.0
+ * @since 100.2.2
*/
protected $filterBuilder;
@@ -59,7 +59,7 @@ public function __construct(
*
* @param RequestInterface $request
* @return array
- * @since 100.1.0
+ * @since 100.2.2
*/
public function buildQuery(RequestInterface $request)
{
@@ -89,7 +89,7 @@ public function buildQuery(RequestInterface $request)
* @param string $conditionType
* @return array
* @throws \InvalidArgumentException
- * @since 100.1.0
+ * @since 100.2.2
*/
protected function processQuery(
RequestQueryInterface $requestQuery,
@@ -126,7 +126,7 @@ protected function processQuery(
* @param BoolQuery $query
* @param array $selectQuery
* @return array
- * @since 100.1.0
+ * @since 100.2.2
*/
protected function processBoolQuery(
BoolQuery $query,
@@ -160,7 +160,7 @@ protected function processBoolQuery(
* @param array $selectQuery
* @param string $conditionType
* @return array
- * @since 100.1.0
+ * @since 100.2.2
*/
protected function processBoolQueryCondition(
array $subQueryList,
diff --git a/app/code/Magento/Elasticsearch/Elasticsearch5/SearchAdapter/Query/Builder.php b/app/code/Magento/Elasticsearch/Elasticsearch5/SearchAdapter/Query/Builder.php
index 75c675663f03f..5337cbec9e1a5 100644
--- a/app/code/Magento/Elasticsearch/Elasticsearch5/SearchAdapter/Query/Builder.php
+++ b/app/code/Magento/Elasticsearch/Elasticsearch5/SearchAdapter/Query/Builder.php
@@ -18,31 +18,31 @@
* Query builder for search adapter.
*
* @api
- * @since 100.1.0
+ * @since 100.2.2
*/
class Builder
{
/**
* @var Config
- * @since 100.1.0
+ * @since 100.2.2
*/
protected $clientConfig;
/**
* @var SearchIndexNameResolver
- * @since 100.1.0
+ * @since 100.2.2
*/
protected $searchIndexNameResolver;
/**
* @var AggregationBuilder
- * @since 100.1.0
+ * @since 100.2.2
*/
protected $aggregationBuilder;
/**
* @var ScopeResolverInterface
- * @since 100.1.0
+ * @since 100.2.2
*/
protected $scopeResolver;
@@ -74,7 +74,7 @@ public function __construct(
*
* @param RequestInterface $request
* @return array
- * @since 100.1.0
+ * @since 100.2.2
*/
public function initQuery(RequestInterface $request)
{
@@ -101,7 +101,7 @@ public function initQuery(RequestInterface $request)
* @param RequestInterface $request
* @param array $searchQuery
* @return array
- * @since 100.1.0
+ * @since 100.2.2
*/
public function initAggregations(
RequestInterface $request,
diff --git a/app/code/Magento/Elasticsearch/Model/Adapter/FieldMapper/Product/FieldProvider/DynamicField.php b/app/code/Magento/Elasticsearch/Model/Adapter/FieldMapper/Product/FieldProvider/DynamicField.php
index 76bc7a15e47a7..69ecb709fe4a2 100644
--- a/app/code/Magento/Elasticsearch/Model/Adapter/FieldMapper/Product/FieldProvider/DynamicField.php
+++ b/app/code/Magento/Elasticsearch/Model/Adapter/FieldMapper/Product/FieldProvider/DynamicField.php
@@ -29,7 +29,7 @@ class DynamicField implements FieldProviderInterface
/**
* Category list.
*
- * @deprecated
+ * @deprecated 100.3.2
* @var CategoryListInterface
*/
private $categoryList;
diff --git a/app/code/Magento/Elasticsearch/Model/Adapter/FieldMapper/Product/FieldProvider/FieldType/ConverterInterface.php b/app/code/Magento/Elasticsearch/Model/Adapter/FieldMapper/Product/FieldProvider/FieldType/ConverterInterface.php
index 3e7c3e9b592bd..a1563f75e6607 100644
--- a/app/code/Magento/Elasticsearch/Model/Adapter/FieldMapper/Product/FieldProvider/FieldType/ConverterInterface.php
+++ b/app/code/Magento/Elasticsearch/Model/Adapter/FieldMapper/Product/FieldProvider/FieldType/ConverterInterface.php
@@ -10,6 +10,7 @@
/**
* @api
* Field type converter from internal data types to elastic service.
+ * @since 100.3.0
*/
interface ConverterInterface
{
@@ -28,6 +29,7 @@ interface ConverterInterface
*
* @param string $internalType
* @return string
+ * @since 100.3.0
*/
public function convert(string $internalType): string;
}
diff --git a/app/code/Magento/Elasticsearch/Model/Adapter/FieldType.php b/app/code/Magento/Elasticsearch/Model/Adapter/FieldType.php
index e7d8d0672aaf0..069bf6e2ab33a 100644
--- a/app/code/Magento/Elasticsearch/Model/Adapter/FieldType.php
+++ b/app/code/Magento/Elasticsearch/Model/Adapter/FieldType.php
@@ -14,7 +14,7 @@
* @api
* @since 100.1.0
*
- * @deprecated This class provide not full data about field type. Only basic rules apply in this class.
+ * @deprecated 100.3.0 This class provide not full data about field type. Only basic rules apply in this class.
* @see ResolverInterface
*/
class FieldType
@@ -37,11 +37,12 @@ class FieldType
/**
* Get field type.
*
- * @deprecated
+ * @deprecated 100.3.0
* @see ResolverInterface::getFieldType
*
* @param AbstractAttribute $attribute
* @return string
+ * @since 100.1.0
*/
public function getFieldType($attribute)
{
diff --git a/app/code/Magento/Elasticsearch/Model/ResourceModel/Fulltext/Collection/DefaultFilterStrategyApplyChecker.php b/app/code/Magento/Elasticsearch/Model/ResourceModel/Fulltext/Collection/DefaultFilterStrategyApplyChecker.php
index 21ff9a53e4f96..12887207e2c5e 100644
--- a/app/code/Magento/Elasticsearch/Model/ResourceModel/Fulltext/Collection/DefaultFilterStrategyApplyChecker.php
+++ b/app/code/Magento/Elasticsearch/Model/ResourceModel/Fulltext/Collection/DefaultFilterStrategyApplyChecker.php
@@ -10,7 +10,7 @@
/**
* This class add in backward compatibility purposes to check if need to apply old strategy for filter prepare process.
- * @deprecated
+ * @deprecated 100.3.2
*/
class DefaultFilterStrategyApplyChecker implements DefaultFilterStrategyApplyCheckerInterface
{
diff --git a/app/code/Magento/Elasticsearch/SearchAdapter/Query/Builder/Match.php b/app/code/Magento/Elasticsearch/SearchAdapter/Query/Builder/Match.php
index afd383c13421f..5cb714cee9ad9 100644
--- a/app/code/Magento/Elasticsearch/SearchAdapter/Query/Builder/Match.php
+++ b/app/code/Magento/Elasticsearch/SearchAdapter/Query/Builder/Match.php
@@ -30,7 +30,7 @@ class Match implements QueryInterface
private $fieldMapper;
/**
- * @deprecated
+ * @deprecated 100.3.2
* @see \Magento\Elasticsearch\SearchAdapter\Query\ValueTransformer\TextTransformer
* @var PreprocessorInterface[]
*/
@@ -174,7 +174,7 @@ protected function buildQueries(array $matches, array $queryValue)
/**
* Escape a value for special query characters such as ':', '(', ')', '*', '?', etc.
*
- * @deprecated
+ * @deprecated 100.3.2
* @see \Magento\Elasticsearch\SearchAdapter\Query\ValueTransformer\TextTransformer
* @param string $value
* @return string
diff --git a/app/code/Magento/Elasticsearch/composer.json b/app/code/Magento/Elasticsearch/composer.json
index c6ac38c1e4005..b69d7d4106d04 100644
--- a/app/code/Magento/Elasticsearch/composer.json
+++ b/app/code/Magento/Elasticsearch/composer.json
@@ -3,19 +3,19 @@
"description": "N/A",
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/module-advanced-search": "*",
- "magento/module-catalog": "*",
- "magento/module-catalog-search": "*",
- "magento/module-customer": "*",
- "magento/module-eav": "*",
- "magento/module-search": "*",
- "magento/module-store": "*",
- "magento/module-catalog-inventory": "*",
- "magento/framework": "*",
+ "magento/module-advanced-search": "100.3.*",
+ "magento/module-catalog": "103.0.*",
+ "magento/module-catalog-search": "101.0.*",
+ "magento/module-customer": "102.0.*",
+ "magento/module-eav": "102.0.*",
+ "magento/module-search": "101.0.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-catalog-inventory": "100.3.*",
+ "magento/framework": "102.0.*",
"elasticsearch/elasticsearch": "~2.0|~5.1|~6.1"
},
"suggest": {
- "magento/module-config": "*"
+ "magento/module-config": "101.1.*"
},
"type": "magento2-module",
"license": [
@@ -29,5 +29,6 @@
"psr-4": {
"Magento\\Elasticsearch\\": ""
}
- }
+ },
+ "version": "100.3.2"
}
diff --git a/app/code/Magento/Elasticsearch6/composer.json b/app/code/Magento/Elasticsearch6/composer.json
index 26b6c8c678ade..b467d44c3f054 100644
--- a/app/code/Magento/Elasticsearch6/composer.json
+++ b/app/code/Magento/Elasticsearch6/composer.json
@@ -3,16 +3,16 @@
"description": "N/A",
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-advanced-search": "*",
- "magento/module-catalog-search": "*",
- "magento/module-search": "*",
- "magento/module-store": "*",
- "magento/module-elasticsearch": "*",
+ "magento/framework": "102.0.*",
+ "magento/module-advanced-search": "100.3.*",
+ "magento/module-catalog-search": "101.0.*",
+ "magento/module-search": "101.0.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-elasticsearch": "100.3.*",
"elasticsearch/elasticsearch": "~2.0|~5.1|~6.1"
},
"suggest": {
- "magento/module-config": "*"
+ "magento/module-config": "101.1.*"
},
"type": "magento2-module",
"license": [
@@ -26,5 +26,6 @@
"psr-4": {
"Magento\\Elasticsearch6\\": ""
}
- }
+ },
+ "version": "100.3.1"
}
diff --git a/app/code/Magento/Email/Block/Adminhtml/Template/Edit.php b/app/code/Magento/Email/Block/Adminhtml/Template/Edit.php
index 112813c3b096c..7beb266508cc9 100644
--- a/app/code/Magento/Email/Block/Adminhtml/Template/Edit.php
+++ b/app/code/Magento/Email/Block/Adminhtml/Template/Edit.php
@@ -20,7 +20,7 @@ class Edit extends Widget implements ContainerInterface
{
/**
* @var \Magento\Framework\Registry
- * @deprecated since 2.3.0 in favor of stateful global objects elimination.
+ * @deprecated 101.0.0 since 2.3.0 in favor of stateful global objects elimination.
*/
protected $_registryManager;
diff --git a/app/code/Magento/Email/Block/Adminhtml/Template/Preview.php b/app/code/Magento/Email/Block/Adminhtml/Template/Preview.php
index acc367de742dd..39347e099f6f6 100644
--- a/app/code/Magento/Email/Block/Adminhtml/Template/Preview.php
+++ b/app/code/Magento/Email/Block/Adminhtml/Template/Preview.php
@@ -3,12 +3,8 @@
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
+declare(strict_types=1);
-/**
- * Adminhtml system template preview block
- *
- * @author Magento Core Team
- */
namespace Magento\Email\Block\Adminhtml\Template;
/**
diff --git a/app/code/Magento/Email/Controller/Adminhtml/Email/Template.php b/app/code/Magento/Email/Controller/Adminhtml/Email/Template.php
index 50153b2bb6520..5af5230b0e33d 100644
--- a/app/code/Magento/Email/Controller/Adminhtml/Email/Template.php
+++ b/app/code/Magento/Email/Controller/Adminhtml/Email/Template.php
@@ -23,7 +23,7 @@ abstract class Template extends \Magento\Backend\App\Action
* Core registry
*
* @var \Magento\Framework\Registry
- * @deprecated since 2.3.0 in favor of stateful global objects elimination.
+ * @deprecated 101.0.0 since 2.3.0 in favor of stateful global objects elimination.
*/
protected $_coreRegistry = null;
diff --git a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Popup.php b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Popup.php
index 31d172935da7f..4f36eedd09b83 100644
--- a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Popup.php
+++ b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Popup.php
@@ -7,12 +7,12 @@
namespace Magento\Email\Controller\Adminhtml\Email\Template;
-use Magento\Framework\App\Action\HttpGetActionInterface;
+use Magento\Framework\App\Action\HttpPostActionInterface;
/**
* Rendering popup email template.
*/
-class Popup extends \Magento\Backend\App\Action implements HttpGetActionInterface
+class Popup extends \Magento\Backend\App\Action implements HttpPostActionInterface
{
/**
* @var \Magento\Framework\View\Result\PageFactory
diff --git a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Preview.php b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Preview.php
index c1a8eec07e461..0d737f4549c9f 100644
--- a/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Preview.php
+++ b/app/code/Magento/Email/Controller/Adminhtml/Email/Template/Preview.php
@@ -1,22 +1,23 @@
_view->loadLayout();
$this->_view->getPage()->getConfig()->getTitle()->prepend(__('Email Preview'));
$this->_view->renderLayout();
- $this->getResponse()->setHeader('Content-Security-Policy', "script-src 'self'");
} catch (\Exception $e) {
$this->messageManager->addErrorMessage(
__('An error occurred. The email template can not be opened for preview.')
diff --git a/app/code/Magento/Email/Test/Mftf/ActionGroup/EmailTemplateActionGroup.xml b/app/code/Magento/Email/Test/Mftf/ActionGroup/EmailTemplateActionGroup.xml
index 4285f6dbdbb08..7ade0e459f52d 100644
--- a/app/code/Magento/Email/Test/Mftf/ActionGroup/EmailTemplateActionGroup.xml
+++ b/app/code/Magento/Email/Test/Mftf/ActionGroup/EmailTemplateActionGroup.xml
@@ -17,15 +17,17 @@
+
+
-
+
@@ -44,7 +46,8 @@
-
+
+
@@ -57,7 +60,7 @@
-
+
diff --git a/app/code/Magento/Email/Test/Unit/Controller/Adminhtml/Email/Template/PreviewTest.php b/app/code/Magento/Email/Test/Unit/Controller/Adminhtml/Email/Template/PreviewTest.php
index 9a67bf59dd4bf..d4584ce86dff2 100644
--- a/app/code/Magento/Email/Test/Unit/Controller/Adminhtml/Email/Template/PreviewTest.php
+++ b/app/code/Magento/Email/Test/Unit/Controller/Adminhtml/Email/Template/PreviewTest.php
@@ -54,11 +54,6 @@ class PreviewTest extends \PHPUnit\Framework\TestCase
*/
protected $pageTitleMock;
- /**
- * @var \Magento\Framework\App\ResponseInterface|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $responseMock;
-
protected function setUp()
{
$objectManager = new ObjectManager($this);
@@ -84,16 +79,11 @@ protected function setUp()
->disableOriginalConstructor()
->getMock();
- $this->responseMock = $this->getMockBuilder(\Magento\Framework\App\ResponseInterface::class)
- ->setMethods(['setHeader'])
- ->getMockForAbstractClass();
-
$this->context = $objectManager->getObject(
\Magento\Backend\App\Action\Context::class,
[
'request' => $this->requestMock,
- 'view' => $this->viewMock,
- 'response' => $this->responseMock
+ 'view' => $this->viewMock
]
);
$this->object = $objectManager->getObject(
@@ -118,9 +108,6 @@ public function testExecute()
$this->pageTitleMock->expects($this->once())
->method('prepend')
->willReturnSelf();
- $this->responseMock->expects($this->once())
- ->method('setHeader')
- ->with('Content-Security-Policy', "script-src 'self'");
$this->assertNull($this->object->execute());
}
diff --git a/app/code/Magento/Email/Test/Unit/ViewModel/Template/Preview/FormTest.php b/app/code/Magento/Email/Test/Unit/ViewModel/Template/Preview/FormTest.php
new file mode 100644
index 0000000000000..bf62235c4295c
--- /dev/null
+++ b/app/code/Magento/Email/Test/Unit/ViewModel/Template/Preview/FormTest.php
@@ -0,0 +1,153 @@
+requestMock = $this->createPartialMock(
+ Http::class,
+ ['getParam', 'getMethod']
+ );
+
+ $objectManagerHelper = new ObjectManager($this);
+
+ $this->form = $objectManagerHelper->getObject(
+ Form::class,
+ ['request'=> $this->requestMock]
+ );
+ }
+
+ /**
+ * Tests that the form is created with the expected fields based on the request type.
+ *
+ * @dataProvider getFormFieldsDataProvider
+ * @param string $httpMethod
+ * @param array $httpParams
+ * @param array $expectedFields
+ * @throws LocalizedException
+ */
+ public function testGetFormFields(string $httpMethod, array $httpParams, array $expectedFields)
+ {
+ $this->requestMock->expects($this->once())
+ ->method('getMethod')
+ ->willReturn($httpMethod);
+
+ $this->requestMock->expects($this->any())
+ ->method('getParam')
+ ->willReturnMap($httpParams);
+
+ $actualFields = $this->form->getFormFields();
+
+ $this->assertEquals($expectedFields, $actualFields);
+ }
+
+ /**
+ * Tests that an exception is thrown when a required parameter is missing for the request type.
+ *
+ * @dataProvider getFormFieldsInvalidDataProvider
+ * @expectedException \Magento\Framework\Exception\LocalizedException
+ * @expectedExceptionMessage Missing expected parameter
+ * @param string $httpMethod
+ * @param array $httpParams
+ */
+ public function testGetFormFieldsMissingParameter(string $httpMethod, array $httpParams)
+ {
+ $this->requestMock->expects($this->once())
+ ->method('getMethod')
+ ->willReturn($httpMethod);
+
+ $this->requestMock->expects($this->once())
+ ->method('getParam')
+ ->willReturnMap($httpParams);
+
+ $this->form->getFormFields();
+ }
+
+ /**
+ * @return array
+ */
+ public function getFormFieldsDataProvider()
+ {
+ return [
+ 'get_request_valid' => [
+ 'httpMethod' => 'GET',
+ 'httpParams' => [
+ ['id', null, 1]
+ ],
+ 'expectedFields' => [
+ 'id' => 1
+ ]
+ ],
+ 'get_request_valid_ignore_params' => [
+ 'httpMethod' => 'GET',
+ 'httpParams' => [
+ ['id', null, 1],
+ ['text', null, 'Hello World'],
+ ['type', null, 2],
+ ['styles', null, '']
+ ],
+ 'expectedFields' => [
+ 'id' => 1
+ ]
+ ],
+ 'post_request_valid' => [
+ 'httpMethod' => 'POST',
+ 'httpParams' => [
+ ['text', null, 'Hello World'],
+ ['type', null, 2],
+ ['styles', null, '']
+ ],
+ 'expectedFields' => [
+ 'text' => 'Hello World',
+ 'type' => 2,
+ 'styles' => ''
+ ]
+ ]
+ ];
+ }
+
+ /**
+ * @return array
+ */
+ public function getFormFieldsInvalidDataProvider()
+ {
+ return [
+ 'get_request_missing_id' => [
+ 'httpMethod' => 'GET',
+ 'httpParams' => [
+ ['text', null, 'Hello World'],
+ ['type', null, 2],
+ ['styles', null, '']
+ ]
+ ],
+ 'post_request_missing_text' => [
+ 'httpMethod' => 'POST',
+ 'httpParams' => [
+ ['type', null, 2],
+ ['styles', null, '']
+ ]
+ ]
+ ];
+ }
+}
diff --git a/app/code/Magento/Email/ViewModel/Template/Preview/Form.php b/app/code/Magento/Email/ViewModel/Template/Preview/Form.php
new file mode 100644
index 0000000000000..9db93cb94a299
--- /dev/null
+++ b/app/code/Magento/Email/ViewModel/Template/Preview/Form.php
@@ -0,0 +1,71 @@
+request = $request;
+ }
+
+ /**
+ * Gets the fields to be included in the email preview form.
+ *
+ * @return array
+ * @throws LocalizedException
+ */
+ public function getFormFields()
+ {
+ $params = $fields = [];
+ $method = $this->request->getMethod();
+
+ if ($method === 'GET') {
+ $params = $this->expectedParamsGetRequest;
+ } elseif ($method === 'POST') {
+ $params = $this->expectedParamsPostRequest;
+ }
+
+ foreach ($params as $paramName) {
+ $fieldValue = $this->request->getParam($paramName);
+ if ($fieldValue === null) {
+ throw new LocalizedException(
+ __("Missing expected parameter \"$paramName\" while attempting to generate template preview.")
+ );
+ }
+ $fields[$paramName] = $fieldValue;
+ }
+
+ return $fields;
+ }
+}
diff --git a/app/code/Magento/Email/composer.json b/app/code/Magento/Email/composer.json
index 1011b16f8537d..4a53bbde695fa 100644
--- a/app/code/Magento/Email/composer.json
+++ b/app/code/Magento/Email/composer.json
@@ -6,16 +6,16 @@
},
"require": {
"php": "~7.1.3||~7.2.0",
- "magento/framework": "*",
- "magento/module-backend": "*",
- "magento/module-cms": "*",
- "magento/module-config": "*",
- "magento/module-store": "*",
- "magento/module-theme": "*",
- "magento/module-variable": "*"
+ "magento/framework": "102.0.*",
+ "magento/module-backend": "101.0.*",
+ "magento/module-cms": "103.0.*",
+ "magento/module-config": "101.1.*",
+ "magento/module-store": "101.0.*",
+ "magento/module-theme": "101.0.*",
+ "magento/module-variable": "100.3.*"
},
"suggest": {
- "magento/module-theme": "*"
+ "magento/module-theme": "101.0.*"
},
"type": "magento2-module",
"license": [
@@ -29,5 +29,6 @@
"psr-4": {
"Magento\\Email\\": ""
}
- }
+ },
+ "version": "101.0.2-p2"
}
diff --git a/app/code/Magento/Email/view/adminhtml/layout/adminhtml_email_template_preview.xml b/app/code/Magento/Email/view/adminhtml/layout/adminhtml_email_template_preview.xml
index 97f31c618f9b7..e7cbc675ce386 100644
--- a/app/code/Magento/Email/view/adminhtml/layout/adminhtml_email_template_preview.xml
+++ b/app/code/Magento/Email/view/adminhtml/layout/adminhtml_email_template_preview.xml
@@ -12,7 +12,11 @@
-
+
+
+ Magento\Email\ViewModel\Template\Preview\Form
+
+