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 @@ + <description value="Google chart on Magento dashboard page is not broken"/> <severity value="MAJOR"/> 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 @@ <test name="AdminUserLoginWithStoreCodeInUrlTest"> <annotations> <features value="Backend"/> + <stories value="Admin login"/> <title value="Admin panel should be accessible with Add Store Code to URL setting enabled"/> <description value="Admin panel should be accessible with Add Store Code to URL setting enabled"/> <testCaseId value="MC-14279" /> 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 @@ <label>Validate HTTP_USER_AGENT</label> <source_model>Magento\Config\Model\Config\Source\Yesno</source_model> </field> - <field id="use_frontend_sid" translate="label comment" type="select" sortOrder="50" showInDefault="1" showInWebsite="1" showInStore="0" canRestore="1"> - <label>Use SID on Storefront</label> - <comment>Allows customers to stay logged in when switching between different stores.</comment> - <source_model>Magento\Config\Model\Config\Source\Yesno</source_model> - </field> </group> </section> </system> 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 @@ <?php /** - * * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ @@ -8,7 +7,11 @@ use Magento\Framework\App\Action\HttpPostActionInterface as HttpPostActionInterface; use Magento\Framework\App\Filesystem\DirectoryList; +use Magento\Framework\Exception\LocalizedException; +/** + * Class Upload + */ class Upload extends \Magento\Backend\App\Action implements HttpPostActionInterface { /** @@ -23,6 +26,16 @@ class Upload extends \Magento\Backend\App\Action implements HttpPostActionInterf */ protected $resultRawFactory; + /** + * @var array + */ + private $allowedMimeTypes = [ + 'jpg' => '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 @@ <?php /** - * * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Catalog\Controller\Product\Compare; +use Magento\Catalog\Model\Product\Attribute\Source\Status; use Magento\Framework\App\Action\HttpPostActionInterface as HttpPostActionInterface; use Magento\Framework\Exception\NoSuchEntityException; @@ -36,7 +36,7 @@ public function execute() $product = null; } - if ($product && $product->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 <core@magentocommerce.com> * @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 @@ <input type="hidden" name="product" value="<?= /* @escapeNotVerified */ $_product->getId() ?>" /> <input type="hidden" name="selected_configurable_option" value="" /> <input type="hidden" name="related_product" id="related-products-field" value="" /> - <input type="hidden" name="item" value="<?= $block->escapeHtmlAttr($block->getRequest()->getParam('id')) ?>" /> + <input type="hidden" name="item" value="<?= (int)$block->getRequest()->getParam('id') ?>" /> <?= $block->getBlockHtml('formkey') ?> <?= $block->getChildHtml('form_top') ?> <?php if (!$block->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 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +declare(strict_types=1); + +namespace Magento\CatalogImportExport\Model\Import\Product\Validator; + +use Magento\Framework\Config\ValidationStateInterface; +use Magento\Framework\View\Model\Layout\Update\ValidatorFactory; + +/** + * Validates layout and custom layout update fields + */ +class LayoutUpdate extends AbstractImportValidator +{ + /** + * @var ValidatorFactory + */ + private $layoutValidatorFactory; + + /** + * @var ValidationStateInterface + */ + private $validationState; + + /** + * @param ValidatorFactory $layoutValidatorFactory + * @param ValidationStateInterface $validationState + */ + public function __construct( + ValidatorFactory $layoutValidatorFactory, + ValidationStateInterface $validationState + ) { + $this->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 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +declare(strict_types=1); + +namespace Magento\CatalogImportExport\Model\Import\Product\Validator; + +use Magento\Authorization\Model\UserContextInterface; +use Magento\Framework\AuthorizationInterface; +use Magento\CatalogImportExport\Model\Import\Product\Validator\AbstractImportValidator; + +/** + * Validator to assert that the current user is allowed to make design updates if a layout is provided in the import + */ +class LayoutUpdatePermissions extends AbstractImportValidator +{ + /** + * @var UserContextInterface + */ + private $userContext; + + /** + * @var AuthorizationInterface + */ + private $authorization; + + /** + * @var array + */ + private $allowedUserTypes = [ + UserContextInterface::USER_TYPE_ADMIN, + UserContextInterface::USER_TYPE_INTEGRATION + ]; + + /** + * @param UserContextInterface $userContext + * @param AuthorizationInterface $authorization + */ + public function __construct( + UserContextInterface $userContext, + AuthorizationInterface $authorization + ) { + $this->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 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +declare(strict_types=1); + +namespace Magento\CatalogImportExport\Test\Unit\Model\Import\Product\Validator; + +use Magento\CatalogImportExport\Model\Import\Product; +use Magento\Authorization\Model\UserContextInterface; +use Magento\CatalogImportExport\Model\Import\Product\Validator\LayoutUpdatePermissions; +use Magento\Framework\AuthorizationInterface; +use PHPUnit\Framework\TestCase; +use PHPUnit_Framework_MockObject_MockObject as MockObject; + +/** + * Test validation for layout update permissions + */ +class LayoutUpdatePermissionsTest extends TestCase +{ + /** + * @var LayoutUpdatePermissions|MockObject + */ + private $validator; + + /** + * @var UserContextInterface|MockObject + */ + private $userContext; + + /** + * @var AuthorizationInterface|MockObject + */ + private $authorization; + + /** + * @var Product + */ + private $context; + + protected function setUp() + { + $this->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 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +declare(strict_types=1); + +namespace Magento\CatalogImportExport\Test\Unit\Model\Import\Product\Validator; + +use Magento\CatalogImportExport\Model\Import\Product; +use Magento\CatalogImportExport\Model\Import\Product\Validator\LayoutUpdate; +use Magento\Framework\Config\ValidationStateInterface; +use Magento\Framework\View\Model\Layout\Update\Validator; +use Magento\Framework\View\Model\Layout\Update\ValidatorFactory; +use PHPUnit\Framework\TestCase; +use PHPUnit_Framework_MockObject_MockObject as MockObject; + +/** + * Test validation for layout update + */ +class LayoutUpdateTest extends TestCase +{ + /** + * @var LayoutUpdate|MockObject + */ + private $validator; + + /** + * @var Validator|MockObject + */ + private $layoutValidator; + + protected function setUp() + { + $validatorFactory = $this->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 @@ <item name="website" xsi:type="object">Magento\CatalogImportExport\Model\Import\Product\Validator\Website</item> <item name="weight" xsi:type="object">Magento\CatalogImportExport\Model\Import\Product\Validator\Weight</item> <item name="quantity" xsi:type="object">Magento\CatalogImportExport\Model\Import\Product\Validator\Quantity</item> + <item name="layout_update" xsi:type="object">Magento\CatalogImportExport\Model\Import\Product\Validator\LayoutUpdate</item> + <item name="layout_update_permissions" xsi:type="object">Magento\CatalogImportExport\Model\Import\Product\Validator\LayoutUpdatePermissions</item> </argument> </arguments> </type> + <type name="Magento\CatalogImportExport\Model\Import\Product\Validator\LayoutUpdate"> + <arguments> + <argument name="validationState" xsi:type="object">Magento\Framework\Config\ValidationState\Required</argument> + </arguments> + </type> </config> 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> + <test name="AdminCreateOrderWithDownloadableProductDefaultStockTest"> + <annotations> + <features value="Inventory"/> + <stories value="Skipped tests"/> + <title value="Skipped tests"/> + <description value="Skipped tests"/> + <severity value="MAJOR"/> + <testCaseId value="MSI-1301"/> + <group value="Inventory"/> + <skip> + <issueId value="MC-19341"/> + </skip> + </annotations> + </test> + + <test name="AdminMassActionAssignProductSourcesForDifferentTypesOfProductsTest"> + <annotations> + <features value="Inventory"/> + <stories value="Skipped tests"/> + <title value="Skipped tests"/> + <description value="Skipped tests"/> + <severity value="MAJOR"/> + <testCaseId value="MSI-1495"/> + <group value="Inventory"/> + <skip> + <issueId value="MC-19341"/> + </skip> + </annotations> + </test> + + <test name="AdminMassActionUnassignProductSourcesForDifferentTypesOfProductsTest"> + <annotations> + <features value="Inventory"/> + <stories value="Skipped tests"/> + <title value="Skipped tests"/> + <description value="Skipped tests"/> + <severity value="MAJOR"/> + <testCaseId value="MSI-1497"/> + <group value="Inventory"/> + <skip> + <issueId value="MC-19341"/> + </skip> + </annotations> + </test> + + <test name="AdminMassActionTransferInventoryToSourceForDifferentTypeOfProductsTest"> + <annotations> + <features value="Inventory"/> + <stories value="Skipped tests"/> + <title value="Skipped tests"/> + <description value="Skipped tests"/> + <severity value="MAJOR"/> + <testCaseId value="MSI-1516"/> + <group value="Inventory"/> + <skip> + <issueId value="MC-19341"/> + </skip> + </annotations> + </test> + + <test name="AdminCreateDownloadableProductOnSingleStockModeTest"> + <annotations> + <features value="Inventory"/> + <stories value="Skipped tests"/> + <title value="Skipped tests"/> + <description value="Skipped tests"/> + <severity value="MAJOR"/> + <testCaseId value="MSI-1748"/> + <group value="Inventory"/> + <skip> + <issueId value="MC-19341"/> + </skip> + </annotations> + </test> + + <test name="AdminCreateDownloadableProductWithDefaultSourceTest"> + <annotations> + <features value="Inventory"/> + <stories value="Skipped tests"/> + <title value="Skipped tests"/> + <description value="Skipped tests"/> + <severity value="MAJOR"/> + <testCaseId value="MSI-1749"/> + <group value="Inventory"/> + <skip> + <issueId value="MC-19341"/> + </skip> + </annotations> + </test> + + <test name="AdminCreateDownloadableProductWithCustomStockTest"> + <annotations> + <features value="Inventory"/> + <stories value="Skipped tests"/> + <title value="Skipped tests"/> + <description value="Skipped tests"/> + <severity value="MAJOR"/> + <testCaseId value="MSI-1750"/> + <group value="Inventory"/> + <skip> + <issueId value="MC-19341"/> + </skip> + </annotations> + </test> + + <test name="AdminCacheValidationWhenDownloadableProductIsSoldOutOnSingleStockModeTest"> + <annotations> + <features value="Inventory"/> + <stories value="Skipped tests"/> + <title value="Skipped tests"/> + <description value="Skipped tests"/> + <severity value="MAJOR"/> + <testCaseId value="MSI-1753"/> + <group value="Inventory"/> + <skip> + <issueId value="MC-19341"/> + </skip> + </annotations> + </test> + + <test name="AdminCacheValidationWhenDownloadableProductIsSoldOutOnMultipleStockModeTest"> + <annotations> + <features value="Inventory"/> + <stories value="Skipped tests"/> + <title value="Skipped tests"/> + <description value="Skipped tests"/> + <severity value="MAJOR"/> + <testCaseId value="MSI-1754"/> + <group value="Inventory"/> + <skip> + <issueId value="MC-19341"/> + </skip> + </annotations> + </test> + + <test name="AdminCatalogQuickSearchForDownloadableProductOnTestStockTest"> + <annotations> + <features value="Inventory"/> + <stories value="Skipped tests"/> + <title value="Skipped tests"/> + <description value="Skipped tests"/> + <severity value="MAJOR"/> + <testCaseId value="MSI-1790"/> + <group value="Inventory"/> + <skip> + <issueId value="MC-19341"/> + </skip> + </annotations> + </test> + + <test name="AdminCatalogQuickSearchForDownloadableProductInSingleStockModeTest"> + <annotations> + <features value="Inventory"/> + <stories value="Skipped tests"/> + <title value="Skipped tests"/> + <description value="Skipped tests"/> + <severity value="MAJOR"/> + <testCaseId value="MSI-1814"/> + <group value="Inventory"/> + <skip> + <issueId value="MC-19341"/> + </skip> + </annotations> + </test> + + <test name="GuestCustomerOrderedDownloadableProductOnCustomStockFromHomepageTest"> + <annotations> + <features value="Inventory"/> + <stories value="Skipped tests"/> + <title value="Skipped tests"/> + <description value="Skipped tests"/> + <severity value="MAJOR"/> + <testCaseId value="MSI-1300"/> + <group value="Inventory"/> + <skip> + <issueId value="MC-19341"/> + </skip> + </annotations> + </test> + + <test name="GuestCustomerOrderedDownloadableProductOnDefaultStockFromHomepageTest"> + <annotations> + <features value="Inventory"/> + <stories value="Skipped tests"/> + <title value="Skipped tests"/> + <description value="Skipped tests"/> + <severity value="MAJOR"/> + <testCaseId value="MSI-1299"/> + <group value="Inventory"/> + <skip> + <issueId value="MC-19341"/> + </skip> + </annotations> + </test> +</tests> 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 @@ <group value="mtf_migrated"/> </annotations> <before> + <magentoCLI command="downloadable:domains:add" arguments="example.com static.magento.com" stepKey="addDownloadableDomain"/> <createData entity="_defaultCategory" stepKey="createCategory"/> <createData entity="DownloadableProductWithOneLink" stepKey="createProduct"> <requiredEntity createDataKey="createCategory"/> @@ -377,6 +378,7 @@ </createData> </before> <after> + <magentoCLI command="downloadable:domains:remove" arguments="example.com static.magento.com" stepKey="removeDownloadableDomain"/> <deleteData stepKey="deleteProduct" createDataKey="createProduct"/> <deleteData stepKey="deleteCategory" createDataKey="createCategory"/> </after> 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 <core@magentocommerce.com> + * @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 <core@magentocommerce.com> + * @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 <core@magentocommerce.com> + * @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 <core@magentocommerce.com> * @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 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +declare(strict_types=1); + +namespace Magento\Cms\Model\PageRepository; + +use Magento\Cms\Api\Data\PageInterface; +use Magento\Cms\Api\PageRepositoryInterface; +use Magento\Framework\Api\SearchCriteriaInterface; + +/** + * Validates and saves a page + */ +class ValidationComposite implements PageRepositoryInterface +{ + /** + * @var PageRepositoryInterface + */ + private $repository; + + /** + * @var array + */ + private $validators; + + /** + * @param PageRepositoryInterface $repository + * @param ValidatorInterface[] $validators + */ + public function __construct( + PageRepositoryInterface $repository, + array $validators = [] + ) { + foreach ($validators as $validator) { + if (!$validator instanceof ValidatorInterface) { + throw new \InvalidArgumentException( + sprintf('Supplied validator does not implement %s', ValidatorInterface::class) + ); + } + } + $this->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 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +declare(strict_types=1); + +namespace Magento\Cms\Model\PageRepository\Validator; + +use Magento\Cms\Api\Data\PageInterface; +use Magento\Cms\Model\PageRepository\ValidatorInterface; +use Magento\Framework\Config\Dom\ValidationException; +use Magento\Framework\Config\Dom\ValidationSchemaException; +use Magento\Framework\Config\ValidationStateInterface; +use Magento\Framework\Exception\LocalizedException; +use Magento\Framework\View\Model\Layout\Update\Validator; +use Magento\Framework\View\Model\Layout\Update\ValidatorFactory; + +/** + * Validate a given page + */ +class LayoutUpdateValidator implements ValidatorInterface +{ + /** + * @var ValidatorFactory + */ + private $validatorFactory; + + /** + * @var ValidationStateInterface + */ + private $validationState; + + /** + * @param ValidatorFactory $validatorFactory + * @param ValidationStateInterface $validationState + */ + public function __construct( + ValidatorFactory $validatorFactory, + ValidationStateInterface $validationState + ) { + $this->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 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +declare(strict_types=1); + +namespace Magento\Cms\Model\PageRepository; + +use Magento\Cms\Api\Data\PageInterface; +use Magento\Framework\Exception\LocalizedException; + +/** + * Validate a page repository + */ +interface ValidatorInterface +{ + /** + * Assert the given page valid + * + * @param PageInterface $page + * @return void + * @throws LocalizedException + */ + public function validate(PageInterface $page): void; +} diff --git a/app/code/Magento/Cms/Model/Wysiwyg/Config.php b/app/code/Magento/Cms/Model/Wysiwyg/Config.php index 1da7b99c6d886..95f5971251f1c 100644 --- a/app/code/Magento/Cms/Model/Wysiwyg/Config.php +++ b/app/code/Magento/Cms/Model/Wysiwyg/Config.php @@ -61,14 +61,14 @@ class Config extends \Magento\Framework\DataObject implements ConfigInterface /** * @var \Magento\Variable\Model\Variable\Config - * @deprecated + * @deprecated 103.0.0 * @see \Magento\Cms\Model\ConfigProvider::processVariableConfig */ protected $_variableConfig; /** * @var \Magento\Widget\Model\Widget\Config - * @deprecated + * @deprecated 103.0.0 * @see \Magento\Cms\Model\ConfigProvider::processWidgetConfig */ protected $_widgetConfig; diff --git a/app/code/Magento/Cms/Test/Mftf/Data/WysiwygConfigData.xml b/app/code/Magento/Cms/Test/Mftf/Data/WysiwygConfigData.xml new file mode 100644 index 0000000000000..46a968959407f --- /dev/null +++ b/app/code/Magento/Cms/Test/Mftf/Data/WysiwygConfigData.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<entities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:DataGenerator/etc/dataProfileSchema.xsd"> + <entity name="WysiwygEnabledByDefault"> + <data key="path">cms/wysiwyg/enabled</data> + <data key="scope_id">0</data> + <data key="value">enabled</data> + </entity> + <entity name="WysiwygDisabledByDefault"> + <data key="path">cms/wysiwyg/enabled</data> + <data key="scope_id">0</data> + <data key="value">hidden</data> + </entity> + <entity name="WysiwygTinyMCE3Enable"> + <data key="path">cms/wysiwyg/editor</data> + <data key="scope_id">0</data> + <data key="value">Magento_Tinymce3/tinymce3Adapter</data> + </entity> + <entity name="WysiwygTinyMCE4Enable"> + <data key="path">cms/wysiwyg/editor</data> + <data key="scope_id">0</data> + <data key="value">mage/adminhtml/wysiwyg/tiny_mce/tinymce4Adapter</data> + </entity> +</entities> 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 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +declare(strict_types=1); + +namespace Magento\Cms\Test\Unit\Model\PageRepository; + +use Magento\Cms\Api\Data\PageInterface; +use Magento\Cms\Api\PageRepositoryInterface; +use Magento\Cms\Model\PageRepository\ValidationComposite; +use Magento\Cms\Model\PageRepository\ValidatorInterface; +use Magento\Framework\Api\SearchCriteriaInterface; +use Magento\Framework\Exception\LocalizedException; +use PHPUnit\Framework\MockObject\MockObject; +use PHPUnit\Framework\TestCase; + +/** + * Validate behavior of the validation composite + */ +class ValidationCompositeTest extends TestCase +{ + /** + * @var PageRepositoryInterface|MockObject + */ + private $subject; + + protected function setUp() + { + /** @var PageRepositoryInterface subject */ + $this->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 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +declare(strict_types=1); + +namespace Magento\Cms\Test\Unit\Model\PageRepository\Validator; + +use Magento\Cms\Api\Data\PageInterface; +use Magento\Cms\Model\PageRepository\Validator\LayoutUpdateValidator; +use Magento\Framework\Config\Dom\ValidationException; +use Magento\Framework\Config\Dom\ValidationSchemaException; +use Magento\Framework\Config\ValidationStateInterface; +use Magento\Framework\Exception\LocalizedException; +use Magento\Framework\View\Model\Layout\Update\ValidatorFactory; +use Magento\Framework\View\Model\Layout\Update\Validator; +use PHPUnit\Framework\MockObject\MockObject; +use PHPUnit\Framework\TestCase; + +/** + * Test cases for the layout update validator + */ +class LayoutUpdateValidatorTest extends TestCase +{ + /** + * @var Validator|MockObject + */ + private $layoutValidator; + + /** + * @var LayoutUpdateValidator + */ + private $validator; + + protected function setUp() + { + $layoutValidatorFactory = $this->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 @@ <preference for="Magento\Cms\Api\Data\PageInterface" type="Magento\Cms\Model\Page" /> <preference for="Magento\Cms\Api\Data\BlockInterface" type="Magento\Cms\Model\Block" /> <preference for="Magento\Cms\Api\BlockRepositoryInterface" type="Magento\Cms\Model\BlockRepository" /> - <preference for="Magento\Cms\Api\PageRepositoryInterface" type="Magento\Cms\Model\PageRepository" /> + <preference for="Magento\Cms\Api\PageRepositoryInterface" type="Magento\Cms\Model\PageRepository\ValidationComposite" /> <preference for="Magento\Ui\Component\Wysiwyg\ConfigInterface" type="Magento\Cms\Model\Wysiwyg\Config"/> <preference for="Magento\Cms\Api\GetUtilityPageIdentifiersInterface" type="Magento\Cms\Model\GetUtilityPageIdentifiers" /> <type name="Magento\Cms\Model\Wysiwyg\Config"> @@ -232,5 +232,14 @@ </argument> </arguments> </type> + + <type name="Magento\Cms\Model\PageRepository\ValidationComposite"> + <arguments> + <argument name="repository" xsi:type="object">Magento\Cms\Model\PageRepository</argument> + <argument name="validators" xsi:type="array"> + <item name="layout_update" xsi:type="object">Magento\Cms\Model\PageRepository\Validator\LayoutUpdateValidator</item> + </argument> + </arguments> + </type> </config> 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"/> <column xsi:type="varchar" name="path" nullable="false" length="255" default="general" comment="Config Path"/> <column xsi:type="text" name="value" nullable="true" comment="Config Value"/> + <column xsi:type="timestamp" name="updated_at" on_update="true" nullable="false" default="CURRENT_TIMESTAMP" + comment="Updated At"/> <constraint xsi:type="primary" referenceId="PRIMARY"> <column name="config_id"/> </constraint> 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; <tr> <th> </th> <?php $_i = 0; foreach ($block->getAllowedCurrencies() as $_currencyCode): ?> - <th><span><?= /* @escapeNotVerified */ $_currencyCode ?></span></th> + <th><span><?= $block->escapeHtml($_currencyCode) ?></span></th> <?php endforeach; ?> </tr> </thead> 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 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +namespace Magento\Downloadable\Api; + +/** + * Manage downloadable domains whitelist. + */ +interface DomainManagerInterface +{ + /** + * Get the domains whitelist. + * + * @return array + */ + public function getDomains(): array; + + /** + * Add hosts to the domains whitelist. + * + * @param array $hosts + * @return void + */ + public function addDomains(array $hosts): void; + + /** + * Remove hosts from the domains whitelist. + * + * @param array $hosts + * @return void + */ + public function removeDomains(array $hosts): void; +} diff --git a/app/code/Magento/Downloadable/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Downloadable.php b/app/code/Magento/Downloadable/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Downloadable.php index 973d52e865dc9..b3c906c1bb9ad 100644 --- a/app/code/Magento/Downloadable/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Downloadable.php +++ b/app/code/Magento/Downloadable/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Downloadable.php @@ -11,7 +11,7 @@ * * @api * @since 100.0.2 - * @deprecated + * @deprecated 100.3.1 * @see \Magento\Downloadable\Ui\DataProvider\Product\Form\Modifier\Composite */ class Downloadable extends \Magento\Downloadable\Block\Catalog\Product\Links diff --git a/app/code/Magento/Downloadable/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable.php b/app/code/Magento/Downloadable/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable.php index 8fdf1d395308e..707e9788141c4 100644 --- a/app/code/Magento/Downloadable/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable.php +++ b/app/code/Magento/Downloadable/Block/Adminhtml/Catalog/Product/Edit/Tab/Downloadable.php @@ -15,7 +15,7 @@ * Adminhtml catalog product downloadable items tab and form * * @author Magento Core Team <core@magentocommerce.com> - * @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 <core@magentocommerce.com> * @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 <core@magentocommerce.com> * - * @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 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +namespace Magento\Downloadable\Console\Command; + +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputArgument; +use Magento\Downloadable\Api\DomainManagerInterface as DomainManager; + +/** + * Command for adding downloadable domain to the whitelist. + */ +class DomainsAddCommand extends Command +{ + /** + * Name of domains input argument. + */ + const INPUT_KEY_DOMAINS = 'domains'; + + /** + * @var DomainManager + */ + private $domainManager; + + /** + * @param DomainManager $domainManager + */ + public function __construct( + DomainManager $domainManager + ) { + $this->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('<error>' . $e->getMessage() . '</error>'); + 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 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +namespace Magento\Downloadable\Console\Command; + +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputArgument; +use Magento\Downloadable\Api\DomainManagerInterface as DomainManager; + +/** + * Command for removing downloadable domain from the whitelist. + */ +class DomainsRemoveCommand extends Command +{ + /** + * Name of domains input argument. + */ + const INPUT_KEY_DOMAINS = 'domains'; + + /** + * @var DomainManager + */ + private $domainManager; + + /** + * @param DomainManager $domainManager + */ + public function __construct( + DomainManager $domainManager + ) { + $this->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('<error>' . $e->getMessage() . '</error>'); + 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 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +namespace Magento\Downloadable\Console\Command; + +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Input\InputInterface; +use Magento\Downloadable\Api\DomainManagerInterface as DomainManager; + +/** + * Command for listing allowed downloadable domains. + */ +class DomainsShowCommand extends Command +{ + /** + * @var DomainManager + */ + private $domainManager; + + /** + * @param DomainManager $domainManager + */ + public function __construct( + DomainManager $domainManager + ) { + $this->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('<error>' . $e->getMessage() . '</error>'); + 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 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +namespace Magento\Downloadable\Model; + +use Magento\Downloadable\Api\DomainManagerInterface; +use Magento\Framework\App\DeploymentConfig; +use Magento\Framework\App\DeploymentConfig\Writer as ConfigWriter; +use Magento\Framework\Config\File\ConfigFilePool; + +/** + * Manage downloadable domains whitelist in the environment config. + */ +class DomainManager implements DomainManagerInterface +{ + /** + * Path to the allowed domains in the deployment config. + */ + private const PARAM_DOWNLOADABLE_DOMAINS = 'downloadable_domains'; + + /** + * @var ConfigWriter + */ + private $configWriter; + + /** + * @var DeploymentConfig + */ + private $deploymentConfig; + + /** + * @param ConfigWriter $configWriter + * @param DeploymentConfig $deploymentConfig + */ + public function __construct( + ConfigWriter $configWriter, + DeploymentConfig $deploymentConfig + ) { + $this->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 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +namespace Magento\Downloadable\Model\Url; + +use Magento\Downloadable\Api\DomainManagerInterface as DomainManager; +use Magento\Framework\Validator\Ip as IpValidator; +use Zend\Uri\Uri as UriHandler; + +/** + * Class is responsible for checking if downloadable product link domain is allowed. + */ +class DomainValidator +{ + /** + * Path to the allowed domains in the deployment config. + */ + const PARAM_DOWNLOADABLE_DOMAINS = 'downloadable_domains'; + + /** + * @var IpValidator + */ + private $ipValidator; + + /** + * @var UriHandler + */ + private $uriHandler; + + /** + * @var DomainManager + */ + private $domainManager; + + /** + * @param DomainManager $domainManager + * @param IpValidator $ipValidator + * @param UriHandler $uriHandler + */ + public function __construct( + DomainManager $domainManager, + IpValidator $ipValidator, + UriHandler $uriHandler + ) { + $this->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 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +namespace Magento\Downloadable\Setup\Patch\Data; + +use Magento\Config\Model\Config\Backend\Admin\Custom; +use Magento\Framework\App\Config\ScopeConfigInterface; +use Magento\Framework\Exception\NoSuchEntityException; +use Magento\Framework\Setup\Patch\DataPatchInterface; +use Magento\Framework\UrlInterface; +use Magento\Store\Model\ScopeInterface; +use Magento\Store\Model\Store; +use Zend\Uri\Uri as UriHandler; +use Magento\Framework\Url\ScopeResolverInterface; +use Magento\Downloadable\Api\DomainManagerInterface as DomainManager; +use Magento\Framework\Setup\ModuleDataSetupInterface; +use Magento\Backend\App\Area\FrontNameResolver; + +/** + * Adding base url as allowed downloadable domain. + * + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + */ +class AddDownloadableHostsConfig implements DataPatchInterface +{ + /** + * @var UriHandler + */ + private $uriHandler; + + /** + * @var ScopeResolverInterface + */ + private $scopeResolver; + + /** + * @var ScopeConfigInterface + */ + private $scopeConfig; + + /** + * @var ModuleDataSetupInterface + */ + private $moduleDataSetup; + + /** + * @var DomainManager + */ + private $domainManager; + + /** + * @var array + */ + private $whitelist = []; + + /** + * @param UriHandler $uriHandler + * @param ScopeResolverInterface $scopeResolver + * @param ScopeConfigInterface $scopeConfig + * @param DomainManager $domainManager + * @param ModuleDataSetupInterface $moduleDataSetup + */ + public function __construct( + UriHandler $uriHandler, + ScopeResolverInterface $scopeResolver, + ScopeConfigInterface $scopeConfig, + DomainManager $domainManager, + ModuleDataSetupInterface $moduleDataSetup + ) { + $this->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 @@ <actionGroup name="addDownloadableProductLink"> <arguments> <argument name="link" defaultValue="downloadableLink"/> + <argument name="index" type="string" defaultValue="1"/> </arguments> <click selector="{{AdminProductDownloadableSection.linksAddLinkButton}}" stepKey="clickLinkAddLinkButton"/> <waitForPageLoad stepKey="waitForPageLoad"/> - <fillField userInput="{{link.title}}" selector="{{AdminProductDownloadableSection.addLinkTitleInput('1')}}" stepKey="fillDownloadableLinkTitle"/> - <fillField userInput="{{link.price}}" selector="{{AdminProductDownloadableSection.addLinkPriceInput('1')}}" stepKey="fillDownloadableLinkPrice"/> - <selectOption userInput="{{link.file_type}}" selector="{{AdminProductDownloadableSection.addLinkFileTypeSelector('1')}}" stepKey="selectDownloadableLinkFileType"/> - <selectOption userInput="{{link.sample_type}}" selector="{{AdminProductDownloadableSection.addLinkSampleTypeSelector('1')}}" stepKey="selectDownloadableLinkSampleType"/> - <selectOption userInput="{{link.shareable}}" selector="{{AdminProductDownloadableSection.addLinkShareableSelector('1')}}" stepKey="selectDownloadableLinkShareable"/> - <checkOption selector="{{AdminProductDownloadableSection.addLinkIsUnlimitedDownloads('1')}}" stepKey="checkDownloadableLinkUnlimited"/> - <fillField userInput="{{link.file}}" selector="{{AdminProductDownloadableSection.addLinkFileUrlInput('1')}}" stepKey="fillDownloadableLinkFileUrl"/> - <attachFile userInput="{{link.sample}}" selector="{{AdminProductDownloadableSection.addLinkSampleUploadFile('1')}}" stepKey="attachDownloadableLinkUploadSample"/> + <fillField userInput="{{link.title}}" selector="{{AdminProductDownloadableSection.addLinkTitleInput(index)}}" stepKey="fillDownloadableLinkTitle"/> + <fillField userInput="{{link.price}}" selector="{{AdminProductDownloadableSection.addLinkPriceInput(index)}}" stepKey="fillDownloadableLinkPrice"/> + <selectOption userInput="{{link.file_type}}" selector="{{AdminProductDownloadableSection.addLinkFileTypeSelector(index)}}" stepKey="selectDownloadableLinkFileType"/> + <selectOption userInput="{{link.sample_type}}" selector="{{AdminProductDownloadableSection.addLinkSampleTypeSelector(index)}}" stepKey="selectDownloadableLinkSampleType"/> + <selectOption userInput="{{link.shareable}}" selector="{{AdminProductDownloadableSection.addLinkShareableSelector(index)}}" stepKey="selectDownloadableLinkShareable"/> + <checkOption selector="{{AdminProductDownloadableSection.addLinkIsUnlimitedDownloads(index)}}" stepKey="checkDownloadableLinkUnlimited"/> + <fillField userInput="{{link.file}}" selector="{{AdminProductDownloadableSection.addLinkFileUrlInput(index)}}" stepKey="fillDownloadableLinkFileUrl"/> + <attachFile userInput="{{link.sample}}" selector="{{AdminProductDownloadableSection.addLinkSampleUploadFile(index)}}" stepKey="attachDownloadableLinkUploadSample"/> + <waitForPageLoad stepKey="waitForPageLoadAfterFillingOutForm" /> </actionGroup> <!--Add a downloadable sample file--> @@ -77,4 +79,4 @@ <selectOption userInput="{{sample.file_type}}" selector="{{AdminProductDownloadableSection.addSampleFileTypeSelector('1')}}" stepKey="selectDownloadableSampleFileType"/> <fillField userInput="{{sample.file}}" selector="{{AdminProductDownloadableSection.addSampleFileUrlInput('1')}}" stepKey="fillDownloadableSampleFileUrl"/> </actionGroup> -</actionGroups> \ No newline at end of file +</actionGroups> 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 @@ <group value="Downloadable"/> </annotations> <before> + <magentoCLI command="downloadable:domains:add" arguments="static.magento.com" stepKey="addDownloadableDomain"/> <actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/> </before> <after> + <magentoCLI command="downloadable:domains:remove" arguments="static.magento.com" stepKey="removeDownloadableDomain"/> <amOnPage url="{{AdminLogoutPage.url}}" stepKey="amOnLogoutPage"/> </after> 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 @@ <testCaseId value="MC-114"/> <group value="Downloadable"/> </annotations> - + <before> + <magentoCLI command="downloadable:domains:add" arguments="static.magento.com" before="enableAdminAccountSharing" stepKey="addDownloadableDomain"/> + </before> + <after> + <magentoCLI command="downloadable:domains:remove" arguments="static.magento.com" before="setStoreDefaultConfig" stepKey="removeDownloadableDomain"/> + </after> <!-- Create a downloadable product --> <!-- Replacing steps in base AdminAddDefaultVideoSimpleProductTest --> <actionGroup ref="goToCreateProductPage" stepKey="goToCreateProductPage"> 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 @@ <test name="AdminDeleteDownloadableProductTest"> <annotations> <features value="Downloadable"/> + <stories value="Downloadable product"/> <title value="Delete Downloadable Product"/> <description value="Admin should be able to delete a downloadable product"/> <testCaseId value="MC-11018"/> @@ -17,6 +18,7 @@ <group value="mtf_migrated"/> </annotations> <before> + <magentoCLI command="downloadable:domains:add" arguments="example.com static.magento.com" stepKey="addDownloadableDomain"/> <actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/> <createData entity="_defaultCategory" stepKey="createCategory"/> <createData entity="DownloadableProductWithTwoLink" stepKey="createDownloadableProduct"> @@ -30,6 +32,7 @@ </createData> </before> <after> + <magentoCLI command="downloadable:domains:remove" arguments="example.com static.magento.com" stepKey="removeDownloadableDomain"/> <deleteData createDataKey="createCategory" stepKey="deleteCategory"/> <actionGroup ref="logout" stepKey="logout"/> </after> 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 @@ <group value="Downloadable"/> </annotations> <before> + <magentoCLI command="downloadable:domains:add" arguments="static.magento.com" stepKey="addDownloadableDomain"/> <actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/> </before> <after> + <magentoCLI command="downloadable:domains:remove" arguments="static.magento.com" stepKey="removeDownloadableDomain"/> <amOnPage url="{{AdminLogoutPage.url}}" stepKey="amOnLogoutPage"/> </after> 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 @@ <testCaseId value="MC-207"/> <group value="Downloadable"/> </annotations> + <before> + <magentoCLI command="downloadable:domains:add" arguments="static.magento.com" before="enableAdminAccountSharing" stepKey="addDownloadableDomain"/> + </before> + <after> + <magentoCLI command="downloadable:domains:remove" arguments="static.magento.com" before="setStoreDefaultConfig" stepKey="removeDownloadableDomain"/> + </after> <!-- Create a downloadable product --> <!-- Replacing steps in base AdminRemoveDefaultVideoSimpleProductTest --> 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 @@ <group value="Downloadable"/> </annotations> <before> + <magentoCLI command="downloadable:domains:add" arguments="static.magento.com" before="product" stepKey="addDownloadableDomain"/> <createData entity="ApiDownloadableProduct" stepKey="product"/> <createData entity="ApiDownloadableLink" stepKey="addDownloadableLink1"> <requiredEntity createDataKey="product"/> @@ -27,6 +28,9 @@ <requiredEntity createDataKey="product"/> </createData> </before> + <after> + <magentoCLI command="downloadable:domains:remove" arguments="static.magento.com" before="delete" stepKey="removeDownloadableDomain"/> + </after> </test> <test name="AdvanceCatalogSearchDownloadableBySkuTest" extends="AdvanceCatalogSearchSimpleProductBySkuTest"> <annotations> @@ -39,6 +43,7 @@ <group value="Downloadable"/> </annotations> <before> + <magentoCLI command="downloadable:domains:add" arguments="static.magento.com" before="product" stepKey="addDownloadableDomain"/> <createData entity="ApiDownloadableProduct" stepKey="product"/> <createData entity="ApiDownloadableLink" stepKey="addDownloadableLink1"> <requiredEntity createDataKey="product"/> @@ -47,6 +52,9 @@ <requiredEntity createDataKey="product"/> </createData> </before> + <after> + <magentoCLI command="downloadable:domains:remove" arguments="static.magento.com" before="delete" stepKey="removeDownloadableDomain"/> + </after> </test> <test name="AdvanceCatalogSearchDownloadableByDescriptionTest" extends="AdvanceCatalogSearchSimpleProductByDescriptionTest"> <annotations> @@ -59,6 +67,7 @@ <group value="Downloadable"/> </annotations> <before> + <magentoCLI command="downloadable:domains:add" arguments="static.magento.com" before="product" stepKey="addDownloadableDomain"/> <createData entity="ApiDownloadableProduct" stepKey="product"/> <createData entity="ApiDownloadableLink" stepKey="addDownloadableLink1"> <requiredEntity createDataKey="product"/> @@ -67,6 +76,9 @@ <requiredEntity createDataKey="product"/> </createData> </before> + <after> + <magentoCLI command="downloadable:domains:remove" arguments="static.magento.com" before="delete" stepKey="removeDownloadableDomain"/> + </after> </test> <test name="AdvanceCatalogSearchDownloadableByShortDescriptionTest" extends="AdvanceCatalogSearchSimpleProductByShortDescriptionTest"> <annotations> @@ -79,6 +91,7 @@ <group value="Downloadable"/> </annotations> <before> + <magentoCLI command="downloadable:domains:add" arguments="static.magento.com" before="product" stepKey="addDownloadableDomain"/> <createData entity="ApiDownloadableProduct" stepKey="product"/> <createData entity="ApiDownloadableLink" stepKey="addDownloadableLink1"> <requiredEntity createDataKey="product"/> @@ -87,6 +100,9 @@ <requiredEntity createDataKey="product"/> </createData> </before> + <after> + <magentoCLI command="downloadable:domains:remove" arguments="static.magento.com" before="delete" stepKey="removeDownloadableDomain"/> + </after> </test> <test name="AdvanceCatalogSearchDownloadableByPriceTest" extends="AdvanceCatalogSearchSimpleProductByPriceTest"> <annotations> @@ -99,6 +115,7 @@ <group value="Downloadable"/> </annotations> <before> + <magentoCLI command="downloadable:domains:add" arguments="static.magento.com" before="product" stepKey="addDownloadableDomain"/> <createData entity="ApiDownloadableProduct" stepKey="product"/> <createData entity="ApiDownloadableLink" stepKey="addDownloadableLink1"> <requiredEntity createDataKey="product"/> @@ -107,5 +124,8 @@ <requiredEntity createDataKey="product"/> </createData> </before> + <after> + <magentoCLI command="downloadable:domains:remove" arguments="static.magento.com" before="delete" stepKey="removeDownloadableDomain"/> + </after> </test> </tests> 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 @@ <group value="Downloadable"/> <group value="WYSIWYGDisabled"/> </annotations> + <before> + <magentoCLI command="downloadable:domains:add" arguments="static.magento.com" before="loginAsAdmin" stepKey="addDownloadableDomain"/> + </before> + <after> + <magentoCLI command="downloadable:domains:remove" arguments="static.magento.com" before="logout" stepKey="removeDownloadableDomain"/> + </after> <!-- A Cms page containing the New Products Widget gets created here via extends --> @@ -52,4 +58,4 @@ <waitForPageLoad stepKey="waitForCmsPage"/> <see selector="{{StorefrontCategoryMainSection.ProductItemInfo}}" userInput="{{_defaultProduct.name}}" stepKey="seeProductName"/> </test> -</tests> \ No newline at end of file +</tests> 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 @@ <preference for="Magento\Downloadable\Api\Data\File\ContentUploaderInterface" type="Magento\Downloadable\Model\File\ContentUploader" /> <preference for="Magento\Downloadable\Model\Product\TypeHandler\TypeHandlerInterface" type="Magento\Downloadable\Model\Product\TypeHandler\TypeHandler" /> <preference for="Magento\Downloadable\Api\Data\DownloadableOptionInterface" type="Magento\Downloadable\Model\DownloadableOption" /> + <preference for="Magento\Downloadable\Api\DomainManagerInterface" type="Magento\Downloadable\Model\DomainManager"/> <type name="Magento\Framework\EntityManager\Operation\ExtensionPool"> <arguments> <argument name="extensionActions" xsi:type="array"> @@ -164,4 +165,13 @@ <argument name="connectionName" xsi:type="string">indexer</argument> </arguments> </type> + <type name="Magento\Framework\Console\CommandListInterface"> + <arguments> + <argument name="commands" xsi:type="array"> + <item name="addDomainsCommand" xsi:type="object">Magento\Downloadable\Console\Command\DomainsAddCommand</item> + <item name="removeDomainsCommand" xsi:type="object">Magento\Downloadable\Console\Command\DomainsRemoveCommand</item> + <item name="showDomainsCommand" xsi:type="object">Magento\Downloadable\Console\Command\DomainsShowCommand</item> + </argument> + </arguments> + </type> </config> 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 @@ <?php /** - * Import entity of downloadable product type - * * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ + namespace Magento\DownloadableImportExport\Model\Import\Product\Type; use Magento\CatalogImportExport\Model\Import\Product as ImportProduct; +use Magento\Downloadable\Model\Url\DomainValidator; use Magento\Framework\EntityManager\MetadataPool; -use \Magento\Store\Model\Store; +use Magento\Store\Model\Store; /** - * Class Downloadable + * Import entity of downloadable product type. * * @SuppressWarnings(PHPMD.TooManyFields) */ @@ -101,8 +101,11 @@ class Downloadable extends \Magento\CatalogImportExport\Model\Import\Product\Typ const ERROR_COLS_IS_EMPTY = 'emptyOptions'; + private const ERROR_LINK_URL_NOT_IN_DOMAIN_WHITELIST = 'linkUrlNotInDomainWhitelist'; + private const ERROR_SAMPLE_URL_NOT_IN_DOMAIN_WHITELIST = 'sampleUrlNotInDomainWhitelist'; + /** - * Validation failure message template definitions + * Validation failure message template definitions. * * @var array */ @@ -111,7 +114,11 @@ class Downloadable extends \Magento\CatalogImportExport\Model\Import\Product\Typ self::ERROR_GROUP_TITLE_NOT_FOUND => '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 <core@magentocommerce.com> - */ 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 @@ <?php /** - * * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ +declare(strict_types=1); + namespace Magento\Email\Controller\Adminhtml\Email\Template; +use Magento\Email\Controller\Adminhtml\Email\Template; use Magento\Framework\App\Action\HttpGetActionInterface; +use Magento\Framework\App\Action\HttpPostActionInterface; /** * Rendering email template preview. */ -class Preview extends \Magento\Email\Controller\Adminhtml\Email\Template implements HttpGetActionInterface +class Preview extends Template implements HttpGetActionInterface, HttpPostActionInterface { /** * Preview transactional email action. - * - * @return void */ public function execute() { @@ -24,7 +25,6 @@ public function execute() $this->_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 @@ <!--Go to Marketing> Email Templates--> <amOnPage url="{{AdminEmailTemplateIndexPage.url}}" stepKey="navigateToEmailTemplatePage"/> + <waitForPageLoad time="30" stepKey="waitEmailTemplateGridLoad"/> <!--Click "Add New Template" button--> <click selector="{{AdminMainActionsSection.add}}" stepKey="clickAddNewTemplateButton"/> + <waitForElementVisible selector="{{AdminEmailTemplateEditSection.templateDropDown}}" stepKey="waitTemplateDropdown"/> <!--Select value for "Template" drop-down menu in "Load default template" tab--> <selectOption selector="{{AdminEmailTemplateEditSection.templateDropDown}}" userInput="Registry Update" stepKey="selectValueFromTemplateDropDown"/> <!--Fill in required fields in "Template Information" tab and click "Save Template" button--> <click selector="{{AdminEmailTemplateEditSection.loadTemplateButton}}" stepKey="clickLoadTemplateButton"/> <fillField selector="{{AdminEmailTemplateEditSection.templateCode}}" userInput="{{EmailTemplate.templateName}}" stepKey="fillTemplateNameField"/> <click selector="{{AdminMainActionsSection.save}}" stepKey="clickSaveTemplateButton"/> - <waitForElementVisible selector="{{AdminMessagesSection.successMessage}}" stepKey="waitForSuccessMessage"/> + <waitForElementVisible selector="{{AdminMessagesSection.successMessage}}" time="30" stepKey="waitForSuccessMessage"/> <see selector="{{AdminMessagesSection.successMessage}}" userInput="You saved the email template." stepKey="seeSuccessMessage"/> </actionGroup> @@ -44,7 +46,8 @@ <argument name="template" defaultValue="EmailTemplate"/> </arguments> - <amOnPage url="{{AdminEmailTemplateIndexPage.url}}" stepKey="navigateEmailTemplatePage" /> + <amOnPage url="{{AdminEmailTemplateIndexPage.url}}" stepKey="navigateEmailTemplatePage"/> + <waitForPageLoad time="30" stepKey="waitEmailTemplateGridLoad"/> <click selector="{{AdminDataGridHeaderSection.clearFilters}}" stepKey="clearFilters"/> <fillField selector="{{AdminEmailTemplateIndexSection.searchTemplateField}}" userInput="{{template.templateName}}" stepKey="findCreatedTemplate"/> <click selector="{{AdminDataGridHeaderSection.applyFilters}}" stepKey="clickSearch"/> @@ -57,7 +60,7 @@ <actionGroup name="DeleteEmailTemplate" extends="FindAndOpenEmailTemplate"> <click selector="{{AdminEmailTemplateEditSection.deleteTemplateButton}}" after="checkTemplateName" stepKey="deleteTemplate"/> <acceptPopup after="deleteTemplate" stepKey="acceptPopup"/> - <waitForElementVisible selector="{{AdminMessagesSection.successMessage}}" after="acceptPopup" stepKey="waitForSuccessMessage"/> + <waitForElementVisible selector="{{AdminMessagesSection.successMessage}}" time="30" after="acceptPopup" stepKey="waitForSuccessMessage"/> <see selector="{{AdminMessagesSection.successMessage}}" userInput="You deleted the email template." after="waitForSuccessMessage" stepKey="seeSuccessfulMessage"/> </actionGroup> 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 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Email\Test\Unit\ViewModel\Template\Preview; + +use Magento\Email\ViewModel\Template\Preview\Form; +use Magento\Framework\App\Request\Http; +use Magento\Framework\Exception\LocalizedException; +use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; + +/** + * Class FormTest + * + * @covers \Magento\Email\ViewModel\Template\Preview\Form + */ +class FormTest extends \PHPUnit\Framework\TestCase +{ + /** @var Form */ + protected $form; + + /** @var Http|\PHPUnit_Framework_MockObject_MockObject */ + protected $requestMock; + + protected function setUp() + { + $this->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 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +namespace Magento\Email\ViewModel\Template\Preview; + +use Magento\Framework\App\RequestInterface; +use Magento\Framework\Exception\LocalizedException; +use Magento\Framework\View\Element\Block\ArgumentInterface; + +/** + * Class Form + */ +class Form implements ArgumentInterface +{ + private $expectedParamsGetRequest = [ + 'id' + ]; + + private $expectedParamsPostRequest = [ + 'text', + 'type', + 'styles' + ]; + + /** + * @var RequestInterface + */ + private $request; + + /** + * @param RequestInterface $request + */ + public function __construct(RequestInterface $request) + { + $this->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 @@ <referenceContainer name="backend.page" remove="true"/> <referenceContainer name="menu.wrapper" remove="true"/> <referenceContainer name="root"> - <block name="preview.page.content" class="Magento\Backend\Block\Page" template="Magento_Email::preview/iframeswitcher.phtml"/> + <block name="preview.page.content" class="Magento\Backend\Block\Page" template="Magento_Email::preview/iframeswitcher.phtml"> + <arguments> + <argument name="preview_form_view_model" xsi:type="object">Magento\Email\ViewModel\Template\Preview\Form</argument> + </arguments> + </block> </referenceContainer> </body> </page> diff --git a/app/code/Magento/Email/view/adminhtml/templates/preview/iframeswitcher.phtml b/app/code/Magento/Email/view/adminhtml/templates/preview/iframeswitcher.phtml index 4d26b59b093e2..29ceb71a138e4 100644 --- a/app/code/Magento/Email/view/adminhtml/templates/preview/iframeswitcher.phtml +++ b/app/code/Magento/Email/view/adminhtml/templates/preview/iframeswitcher.phtml @@ -7,13 +7,34 @@ /** @var \Magento\Backend\Block\Page $block */ ?> <div id="preview" class="cms-revision-preview"> - <iframe - name="preview_iframe" + <iframe name="preview_iframe" id="preview_iframe" frameborder="0" title="<?= $block->escapeHtmlAttr(__('Preview')) ?>" width="100%" - sandbox="allow-forms allow-pointer-lock" - src="<?= $block->escapeUrl($block->getUrl('*/*/popup', ['_current' => true])) ?>" - /> + sandbox="allow-same-origin allow-pointer-lock" + ></iframe> + <form id="preview_form" + action="<?= $block->escapeUrl($block->getUrl('*/*/popup')) ?>" + method="post" + target="preview_iframe" + > + <input type="hidden" name="form_key" value="<?= /* @noEscape */ $block->getFormKey() ?>" /> + <?php foreach ($block->getPreviewFormViewModel()->getFormFields() as $name => $value) : ?> + <input type="hidden" name="<?= $block->escapeHtmlAttr($name) ?>" value="<?= $block->escapeHtmlAttr($value) ?>"/> + <?php endforeach; ?> + </form> </div> +<script> +require([ + 'jquery' +], function($) { + $(document).ready(function() { + $('#preview_form').submit(); + }); + + $('#preview_iframe').load(function() { + $(this).height($(this).contents().height()); + }); +}); +</script> diff --git a/app/code/Magento/Email/view/adminhtml/templates/template/edit.phtml b/app/code/Magento/Email/view/adminhtml/templates/template/edit.phtml index d75f2922140c7..441e79da8e082 100644 --- a/app/code/Magento/Email/view/adminhtml/templates/template/edit.phtml +++ b/app/code/Magento/Email/view/adminhtml/templates/template/edit.phtml @@ -50,7 +50,7 @@ use Magento\Framework\App\TemplateTypesInterface; <?= /* @noEscape */ $block->getFormHtml() ?> </form> -<form action="<?= $block->escapeUrl($block->getPreviewUrl()) ?>" method="get" id="email_template_preview_form" target="_blank"> +<form action="<?= $block->escapeUrl($block->getPreviewUrl()) ?>" method="post" id="email_template_preview_form" target="_blank"> <?= /* @noEscape */ $block->getBlockHtml('formkey') ?> <div class="no-display"> <input type="hidden" id="preview_type" name="type" value="<?= /* @noEscape */ $block->isTextType() ? 1 : 2 ?>" /> @@ -150,6 +150,7 @@ require([ } else { $('preview_type').value = <?= (int) $block->getTemplateType() ?>; } + if (typeof tinyMCE == 'undefined' || !tinyMCE.get('template_text')) { $('preview_text').value = $('template_text').value; } else { diff --git a/app/code/Magento/EncryptionKey/composer.json b/app/code/Magento/EncryptionKey/composer.json index 4a140c4b1315e..b4819c20f4d83 100644 --- a/app/code/Magento/EncryptionKey/composer.json +++ b/app/code/Magento/EncryptionKey/composer.json @@ -6,9 +6,9 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-config": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-config": "101.1.*" }, "type": "magento2-module", "license": [ @@ -22,5 +22,6 @@ "psr-4": { "Magento\\EncryptionKey\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Fedex/composer.json b/app/code/Magento/Fedex/composer.json index 9bc0c8b217a57..9ce9db3b8533e 100644 --- a/app/code/Magento/Fedex/composer.json +++ b/app/code/Magento/Fedex/composer.json @@ -7,15 +7,15 @@ "require": { "php": "~7.1.3||~7.2.0", "lib-libxml": "*", - "magento/framework": "*", - "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-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.*" }, "type": "magento2-module", "license": [ @@ -29,5 +29,6 @@ "psr-4": { "Magento\\Fedex\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/GiftMessage/Block/Message/Inline.php b/app/code/Magento/GiftMessage/Block/Message/Inline.php index 4a9311c1b4ba2..475f1c2b717ae 100644 --- a/app/code/Magento/GiftMessage/Block/Message/Inline.php +++ b/app/code/Magento/GiftMessage/Block/Message/Inline.php @@ -280,7 +280,7 @@ public function countItems() /** * Call method getItemsHasMessages * - * @deprecated Misspelled method + * @deprecated 100.2.4 Misspelled method * @see getItemsHasMessages */ public function getItemsHasMesssages() diff --git a/app/code/Magento/GiftMessage/composer.json b/app/code/Magento/GiftMessage/composer.json index 6efc7c6ca231f..e8b879b3ad2a9 100644 --- a/app/code/Magento/GiftMessage/composer.json +++ b/app/code/Magento/GiftMessage/composer.json @@ -6,18 +6,18 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-catalog": "*", - "magento/module-checkout": "*", - "magento/module-customer": "*", - "magento/module-quote": "*", - "magento/module-sales": "*", - "magento/module-store": "*", - "magento/module-ui": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-checkout": "100.3.*", + "magento/module-customer": "102.0.*", + "magento/module-quote": "101.1.*", + "magento/module-sales": "102.0.*", + "magento/module-store": "101.0.*", + "magento/module-ui": "101.1.*" }, "suggest": { - "magento/module-multishipping": "*" + "magento/module-multishipping": "100.3.*" }, "type": "magento2-module", "license": [ @@ -31,5 +31,6 @@ "psr-4": { "Magento\\GiftMessage\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/GoogleAdwords/Helper/Data.php b/app/code/Magento/GoogleAdwords/Helper/Data.php index 0e95859193d42..e3b85822059d8 100644 --- a/app/code/Magento/GoogleAdwords/Helper/Data.php +++ b/app/code/Magento/GoogleAdwords/Helper/Data.php @@ -280,6 +280,7 @@ public function getConversionValue() * Get send order currency to Google Adwords * * @return boolean + * @since 100.3.0 */ public function hasSendConversionValueCurrency() { @@ -293,6 +294,7 @@ public function hasSendConversionValueCurrency() * Get Google AdWords conversion value currency * * @return string|false + * @since 100.3.0 */ public function getConversionValueCurrency() { diff --git a/app/code/Magento/GoogleAdwords/composer.json b/app/code/Magento/GoogleAdwords/composer.json index 8aa1428652144..4f4a2d1f78d14 100644 --- a/app/code/Magento/GoogleAdwords/composer.json +++ b/app/code/Magento/GoogleAdwords/composer.json @@ -6,9 +6,9 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-sales": "*", - "magento/module-store": "*" + "magento/framework": "102.0.*", + "magento/module-sales": "102.0.*", + "magento/module-store": "101.0.*" }, "type": "magento2-module", "license": [ @@ -22,5 +22,6 @@ "psr-4": { "Magento\\GoogleAdwords\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/GoogleAnalytics/composer.json b/app/code/Magento/GoogleAnalytics/composer.json index 9c86005706e83..70be2ce6ea9da 100644 --- a/app/code/Magento/GoogleAnalytics/composer.json +++ b/app/code/Magento/GoogleAnalytics/composer.json @@ -6,13 +6,13 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-cookie": "*", - "magento/module-sales": "*", - "magento/module-store": "*" + "magento/framework": "102.0.*", + "magento/module-cookie": "100.3.*", + "magento/module-sales": "102.0.*", + "magento/module-store": "101.0.*" }, "suggest": { - "magento/module-config": "*" + "magento/module-config": "101.1.*" }, "type": "magento2-module", "license": [ @@ -26,5 +26,6 @@ "psr-4": { "Magento\\GoogleAnalytics\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/GoogleOptimizer/composer.json b/app/code/Magento/GoogleOptimizer/composer.json index 51036562857f2..d1b5cb67dda40 100644 --- a/app/code/Magento/GoogleOptimizer/composer.json +++ b/app/code/Magento/GoogleOptimizer/composer.json @@ -6,13 +6,13 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-catalog": "*", - "magento/module-cms": "*", - "magento/module-google-analytics": "*", - "magento/module-store": "*", - "magento/module-ui": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-cms": "103.0.*", + "magento/module-google-analytics": "100.3.*", + "magento/module-store": "101.0.*", + "magento/module-ui": "101.1.*" }, "type": "magento2-module", "license": [ @@ -26,5 +26,6 @@ "psr-4": { "Magento\\GoogleOptimizer\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/GraphQl/Controller/GraphQl.php b/app/code/Magento/GraphQl/Controller/GraphQl.php index 75b3ad277c603..19bfff0bea177 100644 --- a/app/code/Magento/GraphQl/Controller/GraphQl.php +++ b/app/code/Magento/GraphQl/Controller/GraphQl.php @@ -27,12 +27,13 @@ * * @api * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @since 100.3.0 */ class GraphQl implements FrontControllerInterface { /** * @var \Magento\Framework\Webapi\Response - * @deprecated + * @deprecated 100.3.2 */ private $response; @@ -123,6 +124,7 @@ public function __construct( * * @param RequestInterface $request * @return ResponseInterface + * @since 100.3.0 */ public function dispatch(RequestInterface $request) : ResponseInterface { diff --git a/app/code/Magento/GraphQl/composer.json b/app/code/Magento/GraphQl/composer.json index 3a1e8d1bfd9f4..35d2fd7e0a5bb 100644 --- a/app/code/Magento/GraphQl/composer.json +++ b/app/code/Magento/GraphQl/composer.json @@ -4,13 +4,13 @@ "type": "magento2-module", "require": { "php": "~7.1.3||~7.2.0", - "magento/module-authorization": "*", - "magento/module-eav": "*", - "magento/framework": "*" + "magento/module-authorization": "100.3.*", + "magento/module-eav": "102.0.*", + "magento/framework": "102.0.*" }, "suggest": { - "magento/module-webapi": "*", - "magento/module-graph-ql-cache": "*" + "magento/module-webapi": "100.3.*", + "magento/module-graph-ql-cache": "100.3.*" }, "license": [ "OSL-3.0", @@ -23,5 +23,6 @@ "psr-4": { "Magento\\GraphQl\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/GraphQlCache/composer.json b/app/code/Magento/GraphQlCache/composer.json index 436ae95da40f5..3348e881d9c4b 100644 --- a/app/code/Magento/GraphQlCache/composer.json +++ b/app/code/Magento/GraphQlCache/composer.json @@ -4,9 +4,9 @@ "type": "magento2-module", "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-page-cache": "*", - "magento/module-graph-ql": "*" + "magento/framework": "102.0.*", + "magento/module-page-cache": "100.3.*", + "magento/module-graph-ql": "100.3.*" }, "license": [ "OSL-3.0", @@ -19,5 +19,6 @@ "psr-4": { "Magento\\GraphQlCache\\": "" } - } + }, + "version": "100.3.0" } diff --git a/app/code/Magento/GroupedCatalogInventory/composer.json b/app/code/Magento/GroupedCatalogInventory/composer.json index c9946bc3f36ac..cf82a5155022e 100644 --- a/app/code/Magento/GroupedCatalogInventory/composer.json +++ b/app/code/Magento/GroupedCatalogInventory/composer.json @@ -6,10 +6,10 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-catalog": "*", - "magento/module-catalog-inventory": "*", - "magento/module-grouped-product": "*" + "magento/framework": "102.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-catalog-inventory": "100.3.*", + "magento/module-grouped-product": "100.3.*" }, "type": "magento2-module", "license": [ @@ -23,5 +23,6 @@ "psr-4": { "Magento\\GroupedCatalogInventory\\": "" } - } + }, + "version": "100.3.1" } diff --git a/app/code/Magento/GroupedImportExport/composer.json b/app/code/Magento/GroupedImportExport/composer.json index b7674e2157021..2141c13fda82f 100644 --- a/app/code/Magento/GroupedImportExport/composer.json +++ b/app/code/Magento/GroupedImportExport/composer.json @@ -6,12 +6,12 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-catalog": "*", - "magento/module-catalog-import-export": "*", - "magento/module-eav": "*", - "magento/module-grouped-product": "*", - "magento/module-import-export": "*" + "magento/framework": "102.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-catalog-import-export": "101.0.*", + "magento/module-eav": "102.0.*", + "magento/module-grouped-product": "100.3.*", + "magento/module-import-export": "100.3.*" }, "type": "magento2-module", "license": [ @@ -25,5 +25,6 @@ "psr-4": { "Magento\\GroupedImportExport\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/GroupedProduct/composer.json b/app/code/Magento/GroupedProduct/composer.json index 19509ae3ce084..ea72a3ce1f447 100644 --- a/app/code/Magento/GroupedProduct/composer.json +++ b/app/code/Magento/GroupedProduct/composer.json @@ -6,22 +6,22 @@ }, "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-msrp": "*", - "magento/module-quote": "*", - "magento/module-sales": "*", - "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-msrp": "100.3.*", + "magento/module-quote": "101.1.*", + "magento/module-sales": "102.0.*", + "magento/module-store": "101.0.*", + "magento/module-ui": "101.1.*" }, "suggest": { - "magento/module-grouped-product-sample-data": "*" + "magento/module-grouped-product-sample-data": "Sample Data version: 100.3.*" }, "type": "magento2-module", "license": [ @@ -35,5 +35,6 @@ "psr-4": { "Magento\\GroupedProduct\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/GroupedProductGraphQl/composer.json b/app/code/Magento/GroupedProductGraphQl/composer.json index bf6745370b4be..dadddef37e456 100644 --- a/app/code/Magento/GroupedProductGraphQl/composer.json +++ b/app/code/Magento/GroupedProductGraphQl/composer.json @@ -4,9 +4,9 @@ "type": "magento2-module", "require": { "php": "~7.1.3||~7.2.0", - "magento/module-grouped-product": "*", - "magento/module-catalog-graph-ql": "*", - "magento/framework": "*" + "magento/module-grouped-product": "100.3.*", + "magento/module-catalog-graph-ql": "100.3.*", + "magento/framework": "102.0.*" }, "license": [ "OSL-3.0", @@ -19,5 +19,6 @@ "psr-4": { "Magento\\GroupedProductGraphQl\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/ImportExport/Api/Data/ExportInfoInterface.php b/app/code/Magento/ImportExport/Api/Data/ExportInfoInterface.php index 01c41e35fc4eb..f670d97626725 100644 --- a/app/code/Magento/ImportExport/Api/Data/ExportInfoInterface.php +++ b/app/code/Magento/ImportExport/Api/Data/ExportInfoInterface.php @@ -10,6 +10,7 @@ /** * Basic interface with data needed for export operation. * @api + * @since 100.3.2 */ interface ExportInfoInterface { @@ -17,6 +18,7 @@ interface ExportInfoInterface * Return filename. * * @return string + * @since 100.3.2 */ public function getFileName(); @@ -25,6 +27,7 @@ public function getFileName(); * * @param string $fileName * @return void + * @since 100.3.2 */ public function setFileName($fileName); @@ -32,6 +35,7 @@ public function setFileName($fileName); * Override standard entity getter. * * @return string + * @since 100.3.2 */ public function getFileFormat(); @@ -40,6 +44,7 @@ public function getFileFormat(); * * @param string $fileFormat * @return void + * @since 100.3.2 */ public function setFileFormat($fileFormat); @@ -47,6 +52,7 @@ public function setFileFormat($fileFormat); * Return content type. * * @return string + * @since 100.3.2 */ public function getContentType(); @@ -55,6 +61,7 @@ public function getContentType(); * * @param string $contentType * @return void + * @since 100.3.2 */ public function setContentType($contentType); @@ -62,6 +69,7 @@ public function setContentType($contentType); * Returns entity. * * @return string + * @since 100.3.2 */ public function getEntity(); @@ -70,6 +78,7 @@ public function getEntity(); * * @param string $entity * @return void + * @since 100.3.2 */ public function setEntity($entity); @@ -77,6 +86,7 @@ public function setEntity($entity); * Returns export filter. * * @return string + * @since 100.3.2 */ public function getExportFilter(); @@ -85,6 +95,7 @@ public function getExportFilter(); * * @param string $exportFilter * @return void + * @since 100.3.2 */ public function setExportFilter($exportFilter); } diff --git a/app/code/Magento/ImportExport/Api/ExportManagementInterface.php b/app/code/Magento/ImportExport/Api/ExportManagementInterface.php index 39bb89b43c838..0383b2a43b45e 100644 --- a/app/code/Magento/ImportExport/Api/ExportManagementInterface.php +++ b/app/code/Magento/ImportExport/Api/ExportManagementInterface.php @@ -12,6 +12,7 @@ /** * Describes how to do export operation with data interface. * @api + * @since 100.3.2 */ interface ExportManagementInterface { @@ -20,6 +21,7 @@ interface ExportManagementInterface * * @param ExportInfoInterface $exportInfo * @return string + * @since 100.3.2 */ public function export(ExportInfoInterface $exportInfo); } diff --git a/app/code/Magento/ImportExport/Block/Adminhtml/Import/Edit/Form.php b/app/code/Magento/ImportExport/Block/Adminhtml/Import/Edit/Form.php index d6b96a28afcc9..ba44c50e145fd 100644 --- a/app/code/Magento/ImportExport/Block/Adminhtml/Import/Edit/Form.php +++ b/app/code/Magento/ImportExport/Block/Adminhtml/Import/Edit/Form.php @@ -5,6 +5,7 @@ */ namespace Magento\ImportExport\Block\Adminhtml\Import\Edit; +use Magento\Framework\App\ObjectManager; use Magento\ImportExport\Model\Import; use Magento\ImportExport\Model\Import\ErrorProcessing\ProcessingErrorAggregatorInterface; @@ -32,6 +33,11 @@ class Form extends \Magento\Backend\Block\Widget\Form\Generic */ protected $_behaviorFactory; + /** + * @var Import\ImageDirectoryBaseProvider + */ + private $imagesDirectoryProvider; + /** * @param \Magento\Backend\Block\Template\Context $context * @param \Magento\Framework\Registry $registry @@ -40,6 +46,7 @@ class Form extends \Magento\Backend\Block\Widget\Form\Generic * @param \Magento\ImportExport\Model\Source\Import\EntityFactory $entityFactory * @param \Magento\ImportExport\Model\Source\Import\Behavior\Factory $behaviorFactory * @param array $data + * @param Import\ImageDirectoryBaseProvider|null $imageDirProvider */ public function __construct( \Magento\Backend\Block\Template\Context $context, @@ -48,12 +55,15 @@ public function __construct( \Magento\ImportExport\Model\Import $importModel, \Magento\ImportExport\Model\Source\Import\EntityFactory $entityFactory, \Magento\ImportExport\Model\Source\Import\Behavior\Factory $behaviorFactory, - array $data = [] + array $data = [], + Import\ImageDirectoryBaseProvider $imageDirProvider = null ) { $this->_entityFactory = $entityFactory; $this->_behaviorFactory = $behaviorFactory; parent::__construct($context, $registry, $formFactory, $data); $this->_importModel = $importModel; + $this->imagesDirectoryProvider = $imageDirProvider + ?? ObjectManager::getInstance()->get(Import\ImageDirectoryBaseProvider::class); } /** @@ -231,8 +241,11 @@ protected function _prepareForm() 'required' => false, 'class' => 'input-text', 'note' => __( - 'For Type "Local Server" use relative path to Magento installation, - e.g. var/export, var/import, var/export/some/dir' + $this->escapeHtml( + 'For Type "Local Server" use relative path to <Magento installation>/' + .$this->imagesDirectoryProvider->getDirectoryRelativePath() + .', e.g. product_images, import_images/batch1' + ) ), ] ); diff --git a/app/code/Magento/ImportExport/Controller/Adminhtml/Export/File/Delete.php b/app/code/Magento/ImportExport/Controller/Adminhtml/Export/File/Delete.php index 10ae2dc5e58e1..1e9d194653c9c 100644 --- a/app/code/Magento/ImportExport/Controller/Adminhtml/Export/File/Delete.php +++ b/app/code/Magento/ImportExport/Controller/Adminhtml/Export/File/Delete.php @@ -67,6 +67,11 @@ public function execute() } $directory = $this->filesystem->getDirectoryRead(DirectoryList::VAR_DIR); $path = $directory->getAbsolutePath() . 'export/' . $fileName; + + if (!$directory->isFile($path)) { + throw new LocalizedException(__('Sorry, but the data is invalid or the file is not uploaded.')); + } + $this->file->deleteFile($path); /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); diff --git a/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Start.php b/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Start.php index e850f6af86cf9..ad4c7d4e5e61b 100644 --- a/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Start.php +++ b/app/code/Magento/ImportExport/Controller/Adminhtml/Import/Start.php @@ -6,12 +6,15 @@ namespace Magento\ImportExport\Controller\Adminhtml\Import; use Magento\Framework\App\Action\HttpPostActionInterface as HttpPostActionInterface; +use Magento\Framework\App\ObjectManager; use Magento\ImportExport\Controller\Adminhtml\ImportResult as ImportResultController; use Magento\Framework\Controller\ResultFactory; use Magento\ImportExport\Model\Import; /** - * Controller responsible for initiating the import process + * Controller responsible for initiating the import process. + * + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class Start extends ImportResultController implements HttpPostActionInterface { @@ -25,25 +28,35 @@ class Start extends ImportResultController implements HttpPostActionInterface */ private $exceptionMessageFactory; + /** + * @var Import\ImageDirectoryBaseProvider + */ + private $imagesDirProvider; + /** * @param \Magento\Backend\App\Action\Context $context * @param \Magento\ImportExport\Model\Report\ReportProcessorInterface $reportProcessor * @param \Magento\ImportExport\Model\History $historyModel * @param \Magento\ImportExport\Helper\Report $reportHelper - * @param \Magento\ImportExport\Model\Import $importModel + * @param Import $importModel * @param \Magento\Framework\Message\ExceptionMessageFactoryInterface $exceptionMessageFactory + * @param Import\ImageDirectoryBaseProvider|null $imageDirectoryBaseProvider */ public function __construct( \Magento\Backend\App\Action\Context $context, \Magento\ImportExport\Model\Report\ReportProcessorInterface $reportProcessor, \Magento\ImportExport\Model\History $historyModel, \Magento\ImportExport\Helper\Report $reportHelper, - \Magento\ImportExport\Model\Import $importModel, - \Magento\Framework\Message\ExceptionMessageFactoryInterface $exceptionMessageFactory + Import $importModel, + \Magento\Framework\Message\ExceptionMessageFactoryInterface $exceptionMessageFactory, + Import\ImageDirectoryBaseProvider $imageDirectoryBaseProvider = null ) { parent::__construct($context, $reportProcessor, $historyModel, $reportHelper); + $this->importModel = $importModel; $this->exceptionMessageFactory = $exceptionMessageFactory; + $this->imagesDirProvider = $imageDirectoryBaseProvider + ?? ObjectManager::getInstance()->get(Import\ImageDirectoryBaseProvider::class); } /** @@ -66,6 +79,8 @@ public function execute() ->addAction('hide', ['edit_form', 'upload_button', 'messages']); $this->importModel->setData($data); + //Images can be read only from given directory. + $this->importModel->setData('images_base_directory', $this->imagesDirProvider->getDirectory()); $errorAggregator = $this->importModel->getErrorAggregator(); $errorAggregator->initValidationStrategy( $this->importModel->getData(Import::FIELD_NAME_VALIDATION_STRATEGY), diff --git a/app/code/Magento/ImportExport/Helper/Report.php b/app/code/Magento/ImportExport/Helper/Report.php index 012aeefd8bf94..952a1855b2493 100644 --- a/app/code/Magento/ImportExport/Helper/Report.php +++ b/app/code/Magento/ImportExport/Helper/Report.php @@ -138,6 +138,7 @@ protected function getFilePath($filename) * Get csv delimiter from request. * * @return string + * @since 100.2.2 */ public function getDelimiter() { diff --git a/app/code/Magento/ImportExport/Model/Export.php b/app/code/Magento/ImportExport/Model/Export.php index 850ded7c8f256..3d7a190919525 100644 --- a/app/code/Magento/ImportExport/Model/Export.php +++ b/app/code/Magento/ImportExport/Model/Export.php @@ -13,7 +13,7 @@ * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @since 100.0.2 - * @deprecated + * @deprecated 100.3.2 */ class Export extends \Magento\ImportExport\Model\AbstractModel { diff --git a/app/code/Magento/ImportExport/Model/History.php b/app/code/Magento/ImportExport/Model/History.php index b85bf7da81a35..9a97367ba8453 100644 --- a/app/code/Magento/ImportExport/Model/History.php +++ b/app/code/Magento/ImportExport/Model/History.php @@ -44,6 +44,7 @@ class History extends \Magento\Framework\Model\AbstractModel /** * @var \Magento\Backend\Model\Auth\Session + * @since 100.3.1 */ protected $session; diff --git a/app/code/Magento/ImportExport/Model/Import.php b/app/code/Magento/ImportExport/Model/Import.php index 04f4111d3a0a8..217477321354e 100644 --- a/app/code/Magento/ImportExport/Model/Import.php +++ b/app/code/Magento/ImportExport/Model/Import.php @@ -13,6 +13,7 @@ use Magento\Framework\App\ObjectManager; use Magento\Framework\Exception\FileSystemException; use Magento\Framework\Exception\LocalizedException; +use Magento\Framework\Exception\ValidatorException; use Magento\Framework\Filesystem; use Magento\Framework\HTTP\Adapter\FileTransferFactory; use Magento\Framework\Indexer\IndexerRegistry; @@ -464,8 +465,28 @@ public function importSource() { $this->setData('entity', $this->getDataSourceModel()->getEntityTypeCode()); $this->setData('behavior', $this->getDataSourceModel()->getBehavior()); - $this->importHistoryModel->updateReport($this); + //Validating images temporary directory path if the constraint has been provided + if ($this->hasData('images_base_directory') + && $this->getData('images_base_directory') instanceof Filesystem\Directory\ReadInterface + ) { + /** @var Filesystem\Directory\ReadInterface $imagesDirectory */ + $imagesDirectory = $this->getData('images_base_directory'); + if (!$imagesDirectory->isReadable()) { + $rootWrite = $this->_filesystem->getDirectoryWrite(DirectoryList::ROOT); + $rootWrite->create($imagesDirectory->getAbsolutePath()); + } + try { + $this->setData( + self::FIELD_NAME_IMG_FILE_DIR, + $imagesDirectory->getAbsolutePath($this->getData(self::FIELD_NAME_IMG_FILE_DIR)) + ); + $this->_getEntityAdapter()->setParameters($this->getData()); + } catch (ValidatorException $exception) { + throw new LocalizedException(__('Images file directory is outside required directory'), $exception); + } + } + $this->importHistoryModel->updateReport($this); $this->addLogComment(__('Begin import of "%1" with "%2" behavior', $this->getEntity(), $this->getBehavior())); $result = $this->processImport(); @@ -547,9 +568,15 @@ public function uploadSource() $entity = $this->getEntity(); /** @var $uploader Uploader */ $uploader = $this->_uploaderFactory->create(['fileId' => self::FIELD_NAME_SOURCE_FILE]); + $uploader->setAllowedExtensions(['csv', 'zip']); $uploader->skipDbProcessing(true); $fileName = $this->random->getRandomString(32) . '.' . $uploader->getFileExtension(); - $result = $uploader->save($this->getWorkingDir(), $fileName); + try { + $result = $uploader->save($this->getWorkingDir(), $fileName); + } catch (\Exception $e) { + throw new LocalizedException(__('The file cannot be uploaded.')); + } + // phpcs:disable Magento2.Functions.DiscouragedFunction.Discouraged $extension = pathinfo($result['file'], PATHINFO_EXTENSION); @@ -587,6 +614,7 @@ public function uploadSource() * * @return Import\AbstractSource * @throws LocalizedException + * @since 100.2.7 */ public function uploadFileAndGetSource() { diff --git a/app/code/Magento/ImportExport/Model/Import/ImageDirectoryBaseProvider.php b/app/code/Magento/ImportExport/Model/Import/ImageDirectoryBaseProvider.php new file mode 100644 index 0000000000000..9c90b57c30ea8 --- /dev/null +++ b/app/code/Magento/ImportExport/Model/Import/ImageDirectoryBaseProvider.php @@ -0,0 +1,64 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +declare(strict_types=1); + +namespace Magento\ImportExport\Model\Import; + +use Magento\Framework\App\Config\ScopeConfigInterface; +use Magento\Framework\Filesystem\Directory\ReadInterface; +use Magento\Framework\Filesystem; +use Magento\Framework\App\Filesystem\DirectoryList; + +/** + * Provides base directory to use for images when user imports entities. + */ +class ImageDirectoryBaseProvider +{ + /** + * @var ScopeConfigInterface + */ + private $config; + + /** + * @var Filesystem + */ + private $filesystem; + + /** + * @param ScopeConfigInterface $config + * @param Filesystem $filesystem + */ + public function __construct(ScopeConfigInterface $config, Filesystem $filesystem) + { + $this->config = $config; + $this->filesystem = $filesystem; + } + + /** + * Directory that users are allowed to place images for importing. + * + * @return ReadInterface + */ + public function getDirectory(): ReadInterface + { + $path = $this->getDirectoryRelativePath(); + + return $this->filesystem->getDirectoryReadByPath( + $this->filesystem->getDirectoryRead(DirectoryList::ROOT)->getAbsolutePath($path) + ); + } + + /** + * The directory's path relative to Magento root. + * + * @return string + */ + public function getDirectoryRelativePath(): string + { + return $this->config->getValue('general/file/import_images_base_dir'); + } +} diff --git a/app/code/Magento/ImportExport/Model/Import/Source/Zip.php b/app/code/Magento/ImportExport/Model/Import/Source/Zip.php index 6fa87ab5d5c4d..274a737288d8b 100644 --- a/app/code/Magento/ImportExport/Model/Import/Source/Zip.php +++ b/app/code/Magento/ImportExport/Model/Import/Source/Zip.php @@ -33,6 +33,11 @@ public function __construct( throw new ValidatorException(__('Sorry, but the data is invalid or the file is not uploaded.')); } $directory->delete($directory->getRelativePath($file)); - parent::__construct($csvFile, $directory, $options); + try { + parent::__construct($csvFile, $directory, $options); + } catch (\LogicException $e) { + $directory->delete($directory->getRelativePath($csvFile)); + throw $e; + } } } diff --git a/app/code/Magento/ImportExport/composer.json b/app/code/Magento/ImportExport/composer.json index 6363722eba7c8..01921fc34ea9e 100644 --- a/app/code/Magento/ImportExport/composer.json +++ b/app/code/Magento/ImportExport/composer.json @@ -7,13 +7,13 @@ "require": { "php": "~7.1.3||~7.2.0", "ext-ctype": "*", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-catalog": "*", - "magento/module-eav": "*", - "magento/module-media-storage": "*", - "magento/module-store": "*", - "magento/module-ui": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-eav": "102.0.*", + "magento/module-media-storage": "100.3.*", + "magento/module-store": "101.0.*", + "magento/module-ui": "101.1.*" }, "type": "magento2-module", "license": [ @@ -27,5 +27,6 @@ "psr-4": { "Magento\\ImportExport\\": "" } - } + }, + "version": "100.3.2-p2" } diff --git a/app/code/Magento/ImportExport/etc/config.xml b/app/code/Magento/ImportExport/etc/config.xml index 7aee9bdd2fd6d..b8ce1c70ee16d 100644 --- a/app/code/Magento/ImportExport/etc/config.xml +++ b/app/code/Magento/ImportExport/etc/config.xml @@ -18,6 +18,7 @@ </available> </importexport_local_valid_paths> <bunch_size>100</bunch_size> + <import_images_base_dir>var/import/images</import_images_base_dir> </file> </general> <import> diff --git a/app/code/Magento/Indexer/composer.json b/app/code/Magento/Indexer/composer.json index 6aefa433495af..1e5936fbd2771 100644 --- a/app/code/Magento/Indexer/composer.json +++ b/app/code/Magento/Indexer/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\\Indexer\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/InstantPurchase/Block/Button.php b/app/code/Magento/InstantPurchase/Block/Button.php index e6ea50073ed48..d4f19918afaf3 100644 --- a/app/code/Magento/InstantPurchase/Block/Button.php +++ b/app/code/Magento/InstantPurchase/Block/Button.php @@ -13,6 +13,7 @@ * Configuration for JavaScript instant purchase button component. * * @api + * @since 100.2.0 */ class Button extends Template { @@ -40,6 +41,7 @@ public function __construct( * Checks if button enabled. * * @return bool + * @since 100.2.0 */ public function isEnabled(): bool { @@ -48,6 +50,7 @@ public function isEnabled(): bool /** * @inheritdoc + * @since 100.2.0 */ public function getJsLayout(): string { diff --git a/app/code/Magento/InstantPurchase/Model/BillingAddressChoose/BillingAddressChooserInterface.php b/app/code/Magento/InstantPurchase/Model/BillingAddressChoose/BillingAddressChooserInterface.php index cfed97cfefd36..91eb91e2cd33c 100644 --- a/app/code/Magento/InstantPurchase/Model/BillingAddressChoose/BillingAddressChooserInterface.php +++ b/app/code/Magento/InstantPurchase/Model/BillingAddressChoose/BillingAddressChooserInterface.php @@ -12,12 +12,14 @@ * Interface to choose billing address for a customer if available. * * @api + * @since 100.2.0 */ interface BillingAddressChooserInterface { /** * @param Customer $customer * @return Address|null + * @since 100.2.0 */ public function choose(Customer $customer); } diff --git a/app/code/Magento/InstantPurchase/Model/InstantPurchaseInterface.php b/app/code/Magento/InstantPurchase/Model/InstantPurchaseInterface.php index b205ccab5067d..24a9569128064 100644 --- a/app/code/Magento/InstantPurchase/Model/InstantPurchaseInterface.php +++ b/app/code/Magento/InstantPurchase/Model/InstantPurchaseInterface.php @@ -12,6 +12,7 @@ * Interface for detecting customer option to make instant purchase in a store. * * @api + * @since 100.2.0 */ interface InstantPurchaseInterface { @@ -21,6 +22,7 @@ interface InstantPurchaseInterface * @param Store $store * @param Customer $customer * @return InstantPurchaseOption + * @since 100.2.0 */ public function getOption( Store $store, diff --git a/app/code/Magento/InstantPurchase/Model/InstantPurchaseOption.php b/app/code/Magento/InstantPurchase/Model/InstantPurchaseOption.php index 0748c5818c857..11ab119d6e5a5 100644 --- a/app/code/Magento/InstantPurchase/Model/InstantPurchaseOption.php +++ b/app/code/Magento/InstantPurchase/Model/InstantPurchaseOption.php @@ -16,6 +16,7 @@ * Option to make instant purchase. * * @api + * @since 100.2.0 */ class InstantPurchaseOption { @@ -82,6 +83,7 @@ public function __construct( * Checks if option available * * @return bool + * @since 100.2.0 */ public function isAvailable(): bool { @@ -98,6 +100,7 @@ public function isAvailable(): bool * * @return PaymentTokenInterface * @throws LocalizedException if payment token is not defined + * @since 100.2.0 */ public function getPaymentToken(): PaymentTokenInterface { @@ -114,6 +117,7 @@ public function getPaymentToken(): PaymentTokenInterface * * @return Address * @throws LocalizedException if shipping address is not defined + * @since 100.2.0 */ public function getShippingAddress(): Address { @@ -128,6 +132,7 @@ public function getShippingAddress(): Address * * @return Address * @throws LocalizedException if billing address is not defined + * @since 100.2.0 */ public function getBillingAddress(): Address { @@ -142,6 +147,7 @@ public function getBillingAddress(): Address * * @return ShippingMethodInterface * @throws LocalizedException if shipping method is not defined + * @since 100.2.0 */ public function getShippingMethod(): ShippingMethodInterface { diff --git a/app/code/Magento/InstantPurchase/Model/InstantPurchaseOptionFactory.php b/app/code/Magento/InstantPurchase/Model/InstantPurchaseOptionFactory.php index bd5811578ab1c..6e9490c9edb69 100644 --- a/app/code/Magento/InstantPurchase/Model/InstantPurchaseOptionFactory.php +++ b/app/code/Magento/InstantPurchase/Model/InstantPurchaseOptionFactory.php @@ -14,6 +14,7 @@ * Create instances of instant purchase option. * * @api + * @since 100.2.0 */ class InstantPurchaseOptionFactory { @@ -39,6 +40,7 @@ public function __construct(ObjectManagerInterface $objectManager) * @param Address|null $billingAddress * @param ShippingMethodInterface|null $shippingMethod * @return InstantPurchaseOption + * @since 100.2.0 */ public function create( PaymentTokenInterface $paymentToken = null, @@ -58,6 +60,7 @@ public function create( * Creates new empty instance (no option available). * * @return InstantPurchaseOption + * @since 100.2.0 */ public function createDisabledOption(): InstantPurchaseOption { diff --git a/app/code/Magento/InstantPurchase/Model/PaymentMethodChoose/PaymentTokenChooserInterface.php b/app/code/Magento/InstantPurchase/Model/PaymentMethodChoose/PaymentTokenChooserInterface.php index 2a4f1adeb4155..b96173081164c 100644 --- a/app/code/Magento/InstantPurchase/Model/PaymentMethodChoose/PaymentTokenChooserInterface.php +++ b/app/code/Magento/InstantPurchase/Model/PaymentMethodChoose/PaymentTokenChooserInterface.php @@ -13,6 +13,7 @@ * Interface to choose one of the stored payment methods for a customer if available. * * @api + * @since 100.2.0 */ interface PaymentTokenChooserInterface { @@ -20,6 +21,7 @@ interface PaymentTokenChooserInterface * @param Store $store * @param Customer $customer * @return PaymentTokenInterface|null + * @since 100.2.0 */ public function choose(Store $store, Customer $customer); } diff --git a/app/code/Magento/InstantPurchase/Model/PlaceOrder.php b/app/code/Magento/InstantPurchase/Model/PlaceOrder.php index 2ad56a8859cf3..bd30d19d6456b 100644 --- a/app/code/Magento/InstantPurchase/Model/PlaceOrder.php +++ b/app/code/Magento/InstantPurchase/Model/PlaceOrder.php @@ -21,6 +21,7 @@ * Place an order using instant purchase option. * * @api + * @since 100.2.0 */ class PlaceOrder { @@ -90,6 +91,7 @@ public function __construct( * @return int order identifier * @throws LocalizedException if order can not be placed. * @throws Throwable if unpredictable error occurred. + * @since 100.2.0 */ public function placeOrder( Store $store, diff --git a/app/code/Magento/InstantPurchase/Model/QuoteManagement/PaymentConfiguration.php b/app/code/Magento/InstantPurchase/Model/QuoteManagement/PaymentConfiguration.php index 9c8c44231e843..d1dfb11851500 100644 --- a/app/code/Magento/InstantPurchase/Model/QuoteManagement/PaymentConfiguration.php +++ b/app/code/Magento/InstantPurchase/Model/QuoteManagement/PaymentConfiguration.php @@ -15,6 +15,7 @@ * Configure payment method for quote. * * @api May be used for pluginization. + * @since 100.2.0 */ class PaymentConfiguration { @@ -42,6 +43,7 @@ public function __construct( * @param PaymentTokenInterface $paymentToken * @return Quote * @throws LocalizedException if payment method can not be configured for a quote. + * @since 100.2.0 */ public function configurePayment( Quote $quote, diff --git a/app/code/Magento/InstantPurchase/Model/QuoteManagement/Purchase.php b/app/code/Magento/InstantPurchase/Model/QuoteManagement/Purchase.php index b8220b4ca87eb..d05a4f2a1621a 100644 --- a/app/code/Magento/InstantPurchase/Model/QuoteManagement/Purchase.php +++ b/app/code/Magento/InstantPurchase/Model/QuoteManagement/Purchase.php @@ -14,6 +14,7 @@ * Purchase products from quote. * * @api May be used for pluginization. + * @since 100.2.0 */ class Purchase { @@ -46,6 +47,7 @@ public function __construct( * @param Quote $quote * @return int Order id * @throws LocalizedException if order can not be placed for a quote. + * @since 100.2.0 */ public function purchase(Quote $quote): int { diff --git a/app/code/Magento/InstantPurchase/Model/QuoteManagement/QuoteCreation.php b/app/code/Magento/InstantPurchase/Model/QuoteManagement/QuoteCreation.php index 993a64a3f0d7d..4db9c86f7184e 100644 --- a/app/code/Magento/InstantPurchase/Model/QuoteManagement/QuoteCreation.php +++ b/app/code/Magento/InstantPurchase/Model/QuoteManagement/QuoteCreation.php @@ -16,6 +16,7 @@ * Create Quote for instance purchase. * * @api May be used for pluginization. + * @since 100.2.0 */ class QuoteCreation { @@ -43,6 +44,7 @@ public function __construct( * @param Address $billingAddress * @return Quote * @throws LocalizedException if quote can not be created. + * @since 100.2.0 */ public function createQuote( Store $store, diff --git a/app/code/Magento/InstantPurchase/Model/QuoteManagement/QuoteFilling.php b/app/code/Magento/InstantPurchase/Model/QuoteManagement/QuoteFilling.php index 4afa964050fcd..727917f9e3406 100644 --- a/app/code/Magento/InstantPurchase/Model/QuoteManagement/QuoteFilling.php +++ b/app/code/Magento/InstantPurchase/Model/QuoteManagement/QuoteFilling.php @@ -14,6 +14,7 @@ * Fill quote with products for instant purchase. * * @api May be used for pluginization. + * @since 100.2.0 */ class QuoteFilling { @@ -25,6 +26,7 @@ class QuoteFilling * @param array $productRequest * @return Quote * @throws LocalizedException if product can not be added to quote. + * @since 100.2.0 */ public function fillQuote( Quote $quote, diff --git a/app/code/Magento/InstantPurchase/Model/QuoteManagement/ShippingConfiguration.php b/app/code/Magento/InstantPurchase/Model/QuoteManagement/ShippingConfiguration.php index 796fb924b31c9..772d6c6a033fa 100644 --- a/app/code/Magento/InstantPurchase/Model/QuoteManagement/ShippingConfiguration.php +++ b/app/code/Magento/InstantPurchase/Model/QuoteManagement/ShippingConfiguration.php @@ -16,6 +16,7 @@ * Configure shipping method for instant purchase * * @api May be used for pluginization. + * @since 100.2.0 */ class ShippingConfiguration { @@ -41,6 +42,7 @@ public function __construct( * @param ShippingMethodInterface $shippingMethod * @return Quote * @throws LocalizedException if shipping can not be configured for a quote. + * @since 100.2.0 */ public function configureShippingMethod( Quote $quote, diff --git a/app/code/Magento/InstantPurchase/Model/ShippingAddressChoose/ShippingAddressChooserInterface.php b/app/code/Magento/InstantPurchase/Model/ShippingAddressChoose/ShippingAddressChooserInterface.php index a65c8036a1e82..06f4358ecfa92 100644 --- a/app/code/Magento/InstantPurchase/Model/ShippingAddressChoose/ShippingAddressChooserInterface.php +++ b/app/code/Magento/InstantPurchase/Model/ShippingAddressChoose/ShippingAddressChooserInterface.php @@ -12,12 +12,14 @@ * Interface to choose shipping address for a customer if available. * * @api + * @since 100.2.0 */ interface ShippingAddressChooserInterface { /** * @param Customer $customer * @return Address|null + * @since 100.2.0 */ public function choose(Customer $customer); } diff --git a/app/code/Magento/InstantPurchase/Model/ShippingMethodChoose/DeferredShippingMethodChooserInterface.php b/app/code/Magento/InstantPurchase/Model/ShippingMethodChoose/DeferredShippingMethodChooserInterface.php index 3339ca34ee29b..0476f2c690d4d 100644 --- a/app/code/Magento/InstantPurchase/Model/ShippingMethodChoose/DeferredShippingMethodChooserInterface.php +++ b/app/code/Magento/InstantPurchase/Model/ShippingMethodChoose/DeferredShippingMethodChooserInterface.php @@ -11,6 +11,7 @@ * Provides mechanism to defer shipping method choose to the moment when quote is defined. * * @api + * @since 100.2.0 */ interface DeferredShippingMethodChooserInterface { @@ -24,6 +25,7 @@ interface DeferredShippingMethodChooserInterface * * @param Address $address * @return string|null Quote shipping method code if available + * @since 100.2.0 */ public function choose(Address $address); } diff --git a/app/code/Magento/InstantPurchase/Model/ShippingMethodChoose/DeferredShippingMethodChooserPool.php b/app/code/Magento/InstantPurchase/Model/ShippingMethodChoose/DeferredShippingMethodChooserPool.php index ca0e9351967ad..6e2e8e562167c 100644 --- a/app/code/Magento/InstantPurchase/Model/ShippingMethodChoose/DeferredShippingMethodChooserPool.php +++ b/app/code/Magento/InstantPurchase/Model/ShippingMethodChoose/DeferredShippingMethodChooserPool.php @@ -10,6 +10,7 @@ * Use deferred shipping method code as a key for a deferred chooser. * * @api + * @since 100.2.0 */ class DeferredShippingMethodChooserPool { @@ -34,6 +35,7 @@ public function __construct(array $choosers) /** * @param string $type * @return DeferredShippingMethodChooserInterface + * @since 100.2.0 */ public function get($type) : DeferredShippingMethodChooserInterface { diff --git a/app/code/Magento/InstantPurchase/Model/ShippingMethodChoose/ShippingMethodChooserInterface.php b/app/code/Magento/InstantPurchase/Model/ShippingMethodChoose/ShippingMethodChooserInterface.php index c227ad793f255..dd3f9d0a6cd52 100644 --- a/app/code/Magento/InstantPurchase/Model/ShippingMethodChoose/ShippingMethodChooserInterface.php +++ b/app/code/Magento/InstantPurchase/Model/ShippingMethodChoose/ShippingMethodChooserInterface.php @@ -20,12 +20,14 @@ * DeferredShippingMethodChooserPool. * * @api + * @since 100.2.0 */ interface ShippingMethodChooserInterface { /** * @param Address $address * @return ShippingMethodInterface|null + * @since 100.2.0 */ public function choose(Address $address); } diff --git a/app/code/Magento/InstantPurchase/Model/Ui/CustomerAddressesFormatter.php b/app/code/Magento/InstantPurchase/Model/Ui/CustomerAddressesFormatter.php index 31c98143385a6..3b886fb03929e 100644 --- a/app/code/Magento/InstantPurchase/Model/Ui/CustomerAddressesFormatter.php +++ b/app/code/Magento/InstantPurchase/Model/Ui/CustomerAddressesFormatter.php @@ -11,6 +11,7 @@ * Address string presentation. * * @api May be used for pluginization. + * @since 100.2.0 */ class CustomerAddressesFormatter { @@ -19,6 +20,7 @@ class CustomerAddressesFormatter * * @param Address $address * @return string + * @since 100.2.0 */ public function format(Address $address): string { diff --git a/app/code/Magento/InstantPurchase/Model/Ui/PaymentTokenFormatter.php b/app/code/Magento/InstantPurchase/Model/Ui/PaymentTokenFormatter.php index 4c2a78e3a6024..16992ff6bf3f1 100644 --- a/app/code/Magento/InstantPurchase/Model/Ui/PaymentTokenFormatter.php +++ b/app/code/Magento/InstantPurchase/Model/Ui/PaymentTokenFormatter.php @@ -12,6 +12,7 @@ * Payment token string presentation. * * @api May be used for pluginization. + * @since 100.2.0 */ class PaymentTokenFormatter { @@ -34,6 +35,7 @@ public function __construct(IntegrationsManager $integrationsManager) * * @param PaymentTokenInterface $paymentToken * @return string + * @since 100.2.0 */ public function format(PaymentTokenInterface $paymentToken): string { diff --git a/app/code/Magento/InstantPurchase/Model/Ui/ShippingMethodFormatter.php b/app/code/Magento/InstantPurchase/Model/Ui/ShippingMethodFormatter.php index ec56b3e3dae02..eaefbe4c5f104 100644 --- a/app/code/Magento/InstantPurchase/Model/Ui/ShippingMethodFormatter.php +++ b/app/code/Magento/InstantPurchase/Model/Ui/ShippingMethodFormatter.php @@ -11,12 +11,14 @@ * Ship[ping method string presentation. * * @api May be used for pluginization. + * @since 100.2.0 */ class ShippingMethodFormatter { /** * @param ShippingMethodInterface $shippingMethod * @return string + * @since 100.2.0 */ public function format(ShippingMethodInterface $shippingMethod) : string { diff --git a/app/code/Magento/InstantPurchase/PaymentMethodIntegration/AvailabilityCheckerInterface.php b/app/code/Magento/InstantPurchase/PaymentMethodIntegration/AvailabilityCheckerInterface.php index 825c6830b3aa6..7fe336b7a6a66 100644 --- a/app/code/Magento/InstantPurchase/PaymentMethodIntegration/AvailabilityCheckerInterface.php +++ b/app/code/Magento/InstantPurchase/PaymentMethodIntegration/AvailabilityCheckerInterface.php @@ -12,6 +12,7 @@ * instant_purchase/available configuration option in vault payment config. * * @api + * @since 100.2.0 */ interface AvailabilityCheckerInterface { @@ -19,6 +20,7 @@ interface AvailabilityCheckerInterface * Checks if payment method may be used for instant purchase. * * @return bool + * @since 100.2.0 */ public function isAvailable(): bool; } diff --git a/app/code/Magento/InstantPurchase/PaymentMethodIntegration/PaymentAdditionalInformationProviderInterface.php b/app/code/Magento/InstantPurchase/PaymentMethodIntegration/PaymentAdditionalInformationProviderInterface.php index 6f1e291a9a83b..9119b54329486 100644 --- a/app/code/Magento/InstantPurchase/PaymentMethodIntegration/PaymentAdditionalInformationProviderInterface.php +++ b/app/code/Magento/InstantPurchase/PaymentMethodIntegration/PaymentAdditionalInformationProviderInterface.php @@ -14,6 +14,7 @@ * instant_purchase/additionalInformation configuration option in vault payment config. * * @api + * @since 100.2.0 */ interface PaymentAdditionalInformationProviderInterface { @@ -22,6 +23,7 @@ interface PaymentAdditionalInformationProviderInterface * * @param PaymentTokenInterface $paymentToken * @return array + * @since 100.2.0 */ public function getAdditionalInformation(PaymentTokenInterface $paymentToken): array; } diff --git a/app/code/Magento/InstantPurchase/PaymentMethodIntegration/PaymentTokenFormatterInterface.php b/app/code/Magento/InstantPurchase/PaymentMethodIntegration/PaymentTokenFormatterInterface.php index 1ee583c45cf40..c6d31a86b622d 100644 --- a/app/code/Magento/InstantPurchase/PaymentMethodIntegration/PaymentTokenFormatterInterface.php +++ b/app/code/Magento/InstantPurchase/PaymentMethodIntegration/PaymentTokenFormatterInterface.php @@ -15,6 +15,7 @@ * instant_purchase/tokenFormat configuration option in vault payment config. * * @api + * @since 100.2.0 */ interface PaymentTokenFormatterInterface { @@ -23,6 +24,7 @@ interface PaymentTokenFormatterInterface * * @param PaymentTokenInterface $paymentToken * @return string + * @since 100.2.0 */ public function formatPaymentToken(PaymentTokenInterface $paymentToken): string; } diff --git a/app/code/Magento/InstantPurchase/PaymentMethodIntegration/StaticAdditionalInformationProvider.php b/app/code/Magento/InstantPurchase/PaymentMethodIntegration/StaticAdditionalInformationProvider.php index 56079823e9e91..0e788079794d6 100644 --- a/app/code/Magento/InstantPurchase/PaymentMethodIntegration/StaticAdditionalInformationProvider.php +++ b/app/code/Magento/InstantPurchase/PaymentMethodIntegration/StaticAdditionalInformationProvider.php @@ -11,6 +11,7 @@ * Payment additional information provider that returns predefined value. * * @api + * @since 100.2.0 */ class StaticAdditionalInformationProvider implements PaymentAdditionalInformationProviderInterface { @@ -30,6 +31,7 @@ public function __construct(array $value = []) /** * @inheritdoc + * @since 100.2.0 */ public function getAdditionalInformation(PaymentTokenInterface $paymentToken): array { diff --git a/app/code/Magento/InstantPurchase/PaymentMethodIntegration/StaticAvailabilityChecker.php b/app/code/Magento/InstantPurchase/PaymentMethodIntegration/StaticAvailabilityChecker.php index 02e24b78f741c..78f421db6aaa8 100644 --- a/app/code/Magento/InstantPurchase/PaymentMethodIntegration/StaticAvailabilityChecker.php +++ b/app/code/Magento/InstantPurchase/PaymentMethodIntegration/StaticAvailabilityChecker.php @@ -9,6 +9,7 @@ * Availability checker with predefined result. * * @api + * @since 100.2.0 */ class StaticAvailabilityChecker implements AvailabilityCheckerInterface { @@ -28,6 +29,7 @@ public function __construct(bool $value = true) /** * @inheritdoc + * @since 100.2.0 */ public function isAvailable(): bool { diff --git a/app/code/Magento/InstantPurchase/composer.json b/app/code/Magento/InstantPurchase/composer.json index 2b39920fefc6e..13218af3f0d64 100644 --- a/app/code/Magento/InstantPurchase/composer.json +++ b/app/code/Magento/InstantPurchase/composer.json @@ -1,28 +1,29 @@ { - "name": "magento/module-instant-purchase", - "description": "N/A", - "type": "magento2-module", - "license": [ - "OSL-3.0", - "AFL-3.0" - ], - "require": { - "php": "~7.1.3||~7.2.0", - "magento/module-store": "*", - "magento/module-catalog": "*", - "magento/module-customer": "*", - "magento/module-sales": "*", - "magento/module-shipping": "*", - "magento/module-quote": "*", - "magento/module-vault": "*", - "magento/framework": "*" - }, - "autoload": { - "files": [ - "registration.php" + "name": "magento/module-instant-purchase", + "description": "N/A", + "type": "magento2-module", + "license": [ + "OSL-3.0", + "AFL-3.0" ], - "psr-4": { - "Magento\\InstantPurchase\\": "" - } - } + "require": { + "php": "~7.1.3||~7.2.0", + "magento/module-store": "101.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-customer": "102.0.*", + "magento/module-sales": "102.0.*", + "magento/module-shipping": "100.3.*", + "magento/module-quote": "101.1.*", + "magento/module-vault": "101.1.*", + "magento/framework": "102.0.*" + }, + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\InstantPurchase\\": "" + } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Integration/composer.json b/app/code/Magento/Integration/composer.json index 6a63854775ac3..461cbc5bff5b4 100644 --- a/app/code/Magento/Integration/composer.json +++ b/app/code/Magento/Integration/composer.json @@ -6,13 +6,13 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-authorization": "*", - "magento/module-backend": "*", - "magento/module-customer": "*", - "magento/module-security": "*", - "magento/module-store": "*", - "magento/module-user": "*" + "magento/framework": "102.0.*", + "magento/module-authorization": "100.3.*", + "magento/module-backend": "101.0.*", + "magento/module-customer": "102.0.*", + "magento/module-security": "100.3.*", + "magento/module-store": "101.0.*", + "magento/module-user": "101.1.*" }, "type": "magento2-module", "license": [ @@ -26,5 +26,6 @@ "psr-4": { "Magento\\Integration\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/LayeredNavigation/composer.json b/app/code/Magento/LayeredNavigation/composer.json index 6d322fc3ab50c..0830cfc2e3186 100644 --- a/app/code/Magento/LayeredNavigation/composer.json +++ b/app/code/Magento/LayeredNavigation/composer.json @@ -6,9 +6,9 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-catalog": "*", - "magento/module-config": "*" + "magento/framework": "102.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-config": "101.1.*" }, "type": "magento2-module", "license": [ @@ -22,5 +22,6 @@ "psr-4": { "Magento\\LayeredNavigation\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Marketplace/composer.json b/app/code/Magento/Marketplace/composer.json index b52d507f825fc..bb2e5e9531e90 100644 --- a/app/code/Magento/Marketplace/composer.json +++ b/app/code/Magento/Marketplace/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\\Marketplace\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/MediaStorage/Model/ResourceModel/File/Storage/File.php b/app/code/Magento/MediaStorage/Model/ResourceModel/File/Storage/File.php index 8dfce40419b4a..e1e098aab3624 100644 --- a/app/code/Magento/MediaStorage/Model/ResourceModel/File/Storage/File.php +++ b/app/code/Magento/MediaStorage/Model/ResourceModel/File/Storage/File.php @@ -6,12 +6,20 @@ namespace Magento\MediaStorage\Model\ResourceModel\File\Storage; use Magento\Framework\App\Filesystem\DirectoryList; +use Magento\Framework\Exception\LocalizedException; +use Magento\Framework\Filesystem\Io\File as FileIo; +use Magento\Framework\App\ObjectManager; /** * Class File */ class File { + /** + * @var FileIo + */ + private $fileIo; + /** * @var \Magento\Framework\Filesystem */ @@ -25,11 +33,16 @@ class File /** * @param \Magento\Framework\Filesystem $filesystem * @param \Psr\Log\LoggerInterface $log + * @param FileIo|null $fileIo */ - public function __construct(\Magento\Framework\Filesystem $filesystem, \Psr\Log\LoggerInterface $log) - { + public function __construct( + \Magento\Framework\Filesystem $filesystem, + \Psr\Log\LoggerInterface $log, + FileIo $fileIo = null + ) { $this->_logger = $log; $this->_filesystem = $filesystem; + $this->fileIo = $fileIo ?? ObjectManager::getInstance()->get(FileIo::class); } /** @@ -45,14 +58,15 @@ public function getStorageData($dir = '/') $directoryInstance = $this->_filesystem->getDirectoryRead(DirectoryList::MEDIA); if ($directoryInstance->isDirectory($dir)) { foreach ($directoryInstance->readRecursively($dir) as $path) { - $itemName = basename($path); + $pathInfo = $this->fileIo->getPathInfo($path); + $itemName = $pathInfo['basename']; if ($itemName == '.svn' || $itemName == '.htaccess') { continue; } if ($directoryInstance->isDirectory($path)) { $directories[] = [ 'name' => $itemName, - 'path' => dirname($path) == '.' ? '/' : dirname($path), + 'path' => $pathInfo['dirname'] === '.' ? '/' : $pathInfo['dirname'], ]; } else { $files[] = $path; @@ -64,7 +78,7 @@ public function getStorageData($dir = '/') } /** - * Clear files and directories in storage + * Clear all files in storage $dir. * * @param string $dir * @return $this @@ -73,8 +87,17 @@ public function clear($dir = '') { $directoryInstance = $this->_filesystem->getDirectoryWrite(DirectoryList::MEDIA); if ($directoryInstance->isDirectory($dir)) { - foreach ($directoryInstance->read($dir) as $path) { - $directoryInstance->delete($path); + $paths = $directoryInstance->readRecursively($dir); + foreach ($paths as $path) { + if ($directoryInstance->isDirectory($path)) { + continue; + } + + $pathInfo = $this->fileIo->getPathInfo($path); + + if ($pathInfo['basename'] !== '.htaccess') { + $directoryInstance->delete($path); + } } } @@ -127,7 +150,7 @@ public function saveFile($filePath, $content, $overwrite = false) } } catch (\Magento\Framework\Exception\FileSystemException $e) { $this->_logger->info($e->getMessage()); - throw new \Magento\Framework\Exception\LocalizedException(__('Unable to save file: %1', $filePath)); + throw new LocalizedException(__('Unable to save file: %1', $filePath)); } return false; diff --git a/app/code/Magento/MediaStorage/Test/Unit/Model/ResourceModel/File/Storage/FileTest.php b/app/code/Magento/MediaStorage/Test/Unit/Model/ResourceModel/File/Storage/FileTest.php index 97dffbe0e39a9..62afb76f6a2ba 100644 --- a/app/code/Magento/MediaStorage/Test/Unit/Model/ResourceModel/File/Storage/FileTest.php +++ b/app/code/Magento/MediaStorage/Test/Unit/Model/ResourceModel/File/Storage/FileTest.php @@ -6,12 +6,18 @@ namespace Magento\MediaStorage\Test\Unit\Model\ResourceModel\File\Storage; use Magento\Framework\App\Filesystem\DirectoryList; +use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; /** * Class FileTest */ class FileTest extends \PHPUnit\Framework\TestCase { + /** + * @var \Magento\Framework\Filesystem\Io\File + */ + private $fileIoMock; + /** * @var \Magento\MediaStorage\Model\ResourceModel\File\Storage\File */ @@ -44,9 +50,17 @@ protected function setUp() ['isDirectory', 'readRecursively'] ); - $this->storageFile = new \Magento\MediaStorage\Model\ResourceModel\File\Storage\File( - $this->filesystemMock, - $this->loggerMock + $this->fileIoMock = $this->createPartialMock(\Magento\Framework\Filesystem\Io\File::class, ['getPathInfo']); + + $objectManager = new ObjectManager($this); + + $this->storageFile = $objectManager->getObject( + \Magento\MediaStorage\Model\ResourceModel\File\Storage\File::class, + [ + 'filesystem' => $this->filesystemMock, + 'log' => $this->loggerMock, + 'fileIo' => $this->fileIoMock, + ] ); } @@ -98,6 +112,18 @@ public function testGetStorageData() 'folder_one/folder_two/.htaccess', 'folder_one/folder_two/file_two.txt', ]; + + $pathInfos = array_map( + function ($path) { + return [$path, pathinfo($path)]; + }, + $paths + ); + + $this->fileIoMock->expects($this->any()) + ->method('getPathInfo') + ->willReturnMap($pathInfos); + sort($paths); $this->directoryReadMock->expects( $this->once() diff --git a/app/code/Magento/MediaStorage/composer.json b/app/code/Magento/MediaStorage/composer.json index 7d27c88b3dcb2..59b6ba073ffd4 100644 --- a/app/code/Magento/MediaStorage/composer.json +++ b/app/code/Magento/MediaStorage/composer.json @@ -6,12 +6,12 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-config": "*", - "magento/module-store": "*", - "magento/module-catalog": "*", - "magento/module-theme": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-config": "101.1.*", + "magento/module-store": "101.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-theme": "101.0.*" }, "type": "magento2-module", "license": [ @@ -25,5 +25,6 @@ "psr-4": { "Magento\\MediaStorage\\": "" } - } + }, + "version": "100.3.2-p2" } diff --git a/app/code/Magento/MessageQueue/composer.json b/app/code/Magento/MessageQueue/composer.json index 9d3c77fa0184a..7d776926aa228 100644 --- a/app/code/Magento/MessageQueue/composer.json +++ b/app/code/Magento/MessageQueue/composer.json @@ -5,7 +5,7 @@ "sort-packages": true }, "require": { - "magento/framework": "*", + "magento/framework": "102.0.*", "magento/magento-composer-installer": "*", "php": "~7.1.3||~7.2.0" }, @@ -21,5 +21,6 @@ "psr-4": { "Magento\\MessageQueue\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Msrp/composer.json b/app/code/Magento/Msrp/composer.json index a2e6da6de5387..7e7e0e4102f28 100644 --- a/app/code/Magento/Msrp/composer.json +++ b/app/code/Magento/Msrp/composer.json @@ -6,16 +6,16 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-catalog": "*", - "magento/module-downloadable": "*", - "magento/module-eav": "*", - "magento/module-store": "*", - "magento/module-tax": "*" + "magento/framework": "102.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-downloadable": "100.3.*", + "magento/module-eav": "102.0.*", + "magento/module-store": "101.0.*", + "magento/module-tax": "100.3.*" }, "suggest": { - "magento/module-bundle": "*", - "magento/module-msrp-sample-data": "*" + "magento/module-bundle": "100.3.*", + "magento/module-msrp-sample-data": "Sample Data version: 100.3.*" }, "type": "magento2-module", "license": [ @@ -29,5 +29,6 @@ "psr-4": { "Magento\\Msrp\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/MsrpConfigurableProduct/composer.json b/app/code/Magento/MsrpConfigurableProduct/composer.json index 00c3cf6b03078..3593689bc734f 100644 --- a/app/code/Magento/MsrpConfigurableProduct/composer.json +++ b/app/code/Magento/MsrpConfigurableProduct/composer.json @@ -6,10 +6,10 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-catalog": "*", - "magento/module-msrp": "*", - "magento/module-configurable-product": "*" + "magento/framework": "102.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-msrp": "100.3.*", + "magento/module-configurable-product": "100.3.*" }, "type": "magento2-module", "license": [ @@ -23,5 +23,6 @@ "psr-4": { "Magento\\MsrpConfigurableProduct\\": "" } - } + }, + "version": "100.3.1" } diff --git a/app/code/Magento/MsrpGroupedProduct/composer.json b/app/code/Magento/MsrpGroupedProduct/composer.json index a626f199ad6cc..5f3740d309d10 100644 --- a/app/code/Magento/MsrpGroupedProduct/composer.json +++ b/app/code/Magento/MsrpGroupedProduct/composer.json @@ -6,10 +6,10 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-catalog": "*", - "magento/module-msrp": "*", - "magento/module-grouped-product": "*" + "magento/framework": "102.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-msrp": "100.3.*", + "magento/module-grouped-product": "100.3.*" }, "type": "magento2-module", "license": [ @@ -23,5 +23,6 @@ "psr-4": { "Magento\\MsrpGroupedProduct\\": "" } - } + }, + "version": "100.3.1" } diff --git a/app/code/Magento/Multishipping/Block/Checkout/Overview.php b/app/code/Magento/Multishipping/Block/Checkout/Overview.php index 5963e62e948f9..5a51953d34e03 100644 --- a/app/code/Magento/Multishipping/Block/Checkout/Overview.php +++ b/app/code/Magento/Multishipping/Block/Checkout/Overview.php @@ -319,7 +319,7 @@ public function getQuote() } /** - * @deprecated + * @deprecated 100.2.3 * typo in method name, see getBillingAddressTotals() * @return mixed */ @@ -330,6 +330,7 @@ public function getBillinAddressTotals() /** * @return mixed + * @since 100.2.3 */ public function getBillingAddressTotals() { diff --git a/app/code/Magento/Multishipping/Block/Checkout/Results.php b/app/code/Magento/Multishipping/Block/Checkout/Results.php index 35c050d5ff8c1..40cbce1990d00 100644 --- a/app/code/Magento/Multishipping/Block/Checkout/Results.php +++ b/app/code/Magento/Multishipping/Block/Checkout/Results.php @@ -21,6 +21,7 @@ * Multi-shipping checkout results information * * @api + * @since 100.2.1 */ class Results extends Success { @@ -66,6 +67,7 @@ public function __construct( * Returns shipping addresses from quote. * * @return array + * @since 100.2.1 */ public function getQuoteShippingAddresses(): array { @@ -76,6 +78,7 @@ public function getQuoteShippingAddresses(): array * Returns all failed addresses from quote. * * @return array + * @since 100.2.1 */ public function getFailedAddresses(): array { @@ -91,6 +94,7 @@ public function getFailedAddresses(): array * * @param int $orderId * @return OrderAddress|null + * @since 100.2.1 */ public function getOrderShippingAddress(int $orderId) { @@ -101,6 +105,7 @@ public function getOrderShippingAddress(int $orderId) * Retrieve quote billing address. * * @return QuoteAddress + * @since 100.2.1 */ public function getQuoteBillingAddress(): QuoteAddress { @@ -112,6 +117,7 @@ public function getQuoteBillingAddress(): QuoteAddress * * @param OrderAddress $address * @return string + * @since 100.2.1 */ public function formatOrderShippingAddress(OrderAddress $address): string { @@ -123,6 +129,7 @@ public function formatOrderShippingAddress(OrderAddress $address): string * * @param QuoteAddress $address * @return string + * @since 100.2.1 */ public function formatQuoteShippingAddress(QuoteAddress $address): string { @@ -134,6 +141,7 @@ public function formatQuoteShippingAddress(QuoteAddress $address): string * * @param QuoteAddress $address * @return bool + * @since 100.2.1 */ public function isShippingAddress(QuoteAddress $address): bool { @@ -158,6 +166,7 @@ private function getAddressOneline(array $address): string * * @param QuoteAddress $address * @return string + * @since 100.2.1 */ public function getAddressError(QuoteAddress $address): string { @@ -171,6 +180,7 @@ public function getAddressError(QuoteAddress $address): string * * @throws LocalizedException * @return Success + * @since 100.2.1 */ protected function _prepareLayout(): Success { diff --git a/app/code/Magento/Multishipping/Model/Checkout/Type/Multishipping/PlaceOrderInterface.php b/app/code/Magento/Multishipping/Model/Checkout/Type/Multishipping/PlaceOrderInterface.php index 5d384a5373d5e..85726a8dab0b5 100644 --- a/app/code/Magento/Multishipping/Model/Checkout/Type/Multishipping/PlaceOrderInterface.php +++ b/app/code/Magento/Multishipping/Model/Checkout/Type/Multishipping/PlaceOrderInterface.php @@ -13,6 +13,7 @@ * Place orders during multishipping checkout flow. * * @api + * @since 100.2.1 */ interface PlaceOrderInterface { @@ -21,6 +22,7 @@ interface PlaceOrderInterface * * @param OrderInterface[] $orderList * @return array + * @since 100.2.1 */ public function place(array $orderList): array; } diff --git a/app/code/Magento/Multishipping/composer.json b/app/code/Magento/Multishipping/composer.json index 0d7982518d2c8..3ea072dda0389 100644 --- a/app/code/Magento/Multishipping/composer.json +++ b/app/code/Magento/Multishipping/composer.json @@ -6,16 +6,16 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-checkout": "*", - "magento/module-customer": "*", - "magento/module-directory": "*", - "magento/module-payment": "*", - "magento/module-quote": "*", - "magento/module-sales": "*", - "magento/module-store": "*", - "magento/module-tax": "*", - "magento/module-theme": "*" + "magento/framework": "102.0.*", + "magento/module-checkout": "100.3.*", + "magento/module-customer": "102.0.*", + "magento/module-directory": "100.3.*", + "magento/module-payment": "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.*" }, "type": "magento2-module", "license": [ @@ -29,5 +29,6 @@ "psr-4": { "Magento\\Multishipping\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/MysqlMq/composer.json b/app/code/Magento/MysqlMq/composer.json index d9bcf307a5bf9..1393d23435723 100644 --- a/app/code/Magento/MysqlMq/composer.json +++ b/app/code/Magento/MysqlMq/composer.json @@ -5,9 +5,9 @@ "sort-packages": true }, "require": { - "magento/framework": "*", + "magento/framework": "102.0.*", "magento/magento-composer-installer": "*", - "magento/module-store": "*", + "magento/module-store": "101.0.*", "php": "~7.1.3||~7.2.0" }, "type": "magento2-module", @@ -22,5 +22,6 @@ "psr-4": { "Magento\\MysqlMq\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/NewRelicReporting/composer.json b/app/code/Magento/NewRelicReporting/composer.json index 25e7193ce0e2f..b0a4747a48908 100644 --- a/app/code/Magento/NewRelicReporting/composer.json +++ b/app/code/Magento/NewRelicReporting/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-backend": "*", - "magento/module-catalog": "*", - "magento/module-config": "*", - "magento/module-configurable-product": "*", - "magento/module-customer": "*", - "magento/module-store": "*" + "magento/module-backend": "101.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-config": "101.1.*", + "magento/module-configurable-product": "100.3.*", + "magento/module-customer": "102.0.*", + "magento/module-store": "101.0.*" }, "type": "magento2-module", "license": [ @@ -27,5 +27,6 @@ "psr-4": { "Magento\\NewRelicReporting\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Newsletter/Model/Subscriber.php b/app/code/Magento/Newsletter/Model/Subscriber.php index e7e5d5f202811..b4dd9ab9e8eda 100644 --- a/app/code/Magento/Newsletter/Model/Subscriber.php +++ b/app/code/Magento/Newsletter/Model/Subscriber.php @@ -870,6 +870,7 @@ public function getSubscriberFullName() * Set date of last changed status * * @return $this + * @since 100.2.1 */ public function beforeSave() { diff --git a/app/code/Magento/Newsletter/Model/Template.php b/app/code/Magento/Newsletter/Model/Template.php index 4c71014826cf5..352585ef513ca 100644 --- a/app/code/Magento/Newsletter/Model/Template.php +++ b/app/code/Magento/Newsletter/Model/Template.php @@ -40,7 +40,7 @@ class Template extends \Magento\Email\Model\AbstractTemplate /** * Mail object * - * @deprecated Unused property + * @deprecated 100.3.0 Unused property * */ protected $_mail; diff --git a/app/code/Magento/Newsletter/composer.json b/app/code/Magento/Newsletter/composer.json index dc1334af295c8..b7aebe22b05dd 100644 --- a/app/code/Magento/Newsletter/composer.json +++ b/app/code/Magento/Newsletter/composer.json @@ -6,15 +6,15 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-cms": "*", - "magento/module-customer": "*", - "magento/module-eav": "*", - "magento/module-email": "*", - "magento/module-require-js": "*", - "magento/module-store": "*", - "magento/module-widget": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-cms": "103.0.*", + "magento/module-customer": "102.0.*", + "magento/module-eav": "102.0.*", + "magento/module-email": "101.0.*", + "magento/module-require-js": "100.3.*", + "magento/module-store": "101.0.*", + "magento/module-widget": "101.1.*" }, "type": "magento2-module", "license": [ @@ -28,5 +28,6 @@ "psr-4": { "Magento\\Newsletter\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/OfflinePayments/Model/Purchaseorder.php b/app/code/Magento/OfflinePayments/Model/Purchaseorder.php index 464142df5b996..fe30570aba50d 100644 --- a/app/code/Magento/OfflinePayments/Model/Purchaseorder.php +++ b/app/code/Magento/OfflinePayments/Model/Purchaseorder.php @@ -62,6 +62,7 @@ public function assignData(\Magento\Framework\DataObject $data) * @return $this * @throws LocalizedException * @api + * @since 100.2.3 */ public function validate() { diff --git a/app/code/Magento/OfflinePayments/composer.json b/app/code/Magento/OfflinePayments/composer.json index aa2e45b01e9f2..b7d651adc1cee 100644 --- a/app/code/Magento/OfflinePayments/composer.json +++ b/app/code/Magento/OfflinePayments/composer.json @@ -6,12 +6,12 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-checkout": "*", - "magento/module-payment": "*" + "magento/framework": "102.0.*", + "magento/module-checkout": "100.3.*", + "magento/module-payment": "100.3.*" }, "suggest": { - "magento/module-config": "*" + "magento/module-config": "101.1.*" }, "type": "magento2-module", "license": [ @@ -25,5 +25,6 @@ "psr-4": { "Magento\\OfflinePayments\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/OfflineShipping/Model/ResourceModel/Carrier/Tablerate/LocationDirectory.php b/app/code/Magento/OfflineShipping/Model/ResourceModel/Carrier/Tablerate/LocationDirectory.php index e015f7b54637d..bd75a1ffe698c 100644 --- a/app/code/Magento/OfflineShipping/Model/ResourceModel/Carrier/Tablerate/LocationDirectory.php +++ b/app/code/Magento/OfflineShipping/Model/ResourceModel/Carrier/Tablerate/LocationDirectory.php @@ -155,7 +155,7 @@ protected function loadRegions() * @param int $countryId * @param string $regionCode * @return string - * @deprecated + * @deprecated 100.3.1 */ public function getRegionId($countryId, $regionCode) { diff --git a/app/code/Magento/OfflineShipping/composer.json b/app/code/Magento/OfflineShipping/composer.json index a3e1dad5de854..098073f88bcc8 100644 --- a/app/code/Magento/OfflineShipping/composer.json +++ b/app/code/Magento/OfflineShipping/composer.json @@ -6,20 +6,20 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-catalog": "*", - "magento/module-config": "*", - "magento/module-directory": "*", - "magento/module-quote": "*", - "magento/module-sales": "*", - "magento/module-sales-rule": "*", - "magento/module-shipping": "*", - "magento/module-store": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-config": "101.1.*", + "magento/module-directory": "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.*" }, "suggest": { - "magento/module-checkout": "*", - "magento/module-offline-shipping-sample-data": "*" + "magento/module-checkout": "100.3.*", + "magento/module-offline-shipping-sample-data": "Sample Data version: 100.3.*" }, "type": "magento2-module", "license": [ @@ -33,5 +33,6 @@ "psr-4": { "Magento\\OfflineShipping\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/PageCache/composer.json b/app/code/Magento/PageCache/composer.json index 56385fcc528de..b9cddc05285b0 100644 --- a/app/code/Magento/PageCache/composer.json +++ b/app/code/Magento/PageCache/composer.json @@ -6,10 +6,10 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "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": [ @@ -23,5 +23,6 @@ "psr-4": { "Magento\\PageCache\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Payment/Gateway/ErrorMapper/ErrorMessageMapper.php b/app/code/Magento/Payment/Gateway/ErrorMapper/ErrorMessageMapper.php index 2072615a39b92..8a9f08e83005e 100644 --- a/app/code/Magento/Payment/Gateway/ErrorMapper/ErrorMessageMapper.php +++ b/app/code/Magento/Payment/Gateway/ErrorMapper/ErrorMessageMapper.php @@ -17,6 +17,7 @@ * In that case, this implementation can be extended via di.xml and configured with appropriate mappers. * * @api + * @since 100.2.2 */ class ErrorMessageMapper implements ErrorMessageMapperInterface { @@ -35,6 +36,7 @@ public function __construct(DataInterface $messageMapping) /** * @inheritdoc + * @since 100.2.2 */ public function getMessage(string $code) { diff --git a/app/code/Magento/Payment/Gateway/ErrorMapper/ErrorMessageMapperInterface.php b/app/code/Magento/Payment/Gateway/ErrorMapper/ErrorMessageMapperInterface.php index f09f49b7f8100..fc8c69902f373 100644 --- a/app/code/Magento/Payment/Gateway/ErrorMapper/ErrorMessageMapperInterface.php +++ b/app/code/Magento/Payment/Gateway/ErrorMapper/ErrorMessageMapperInterface.php @@ -13,6 +13,7 @@ * Interface to provide customization for payment validation errors. * * @api + * @since 100.2.2 */ interface ErrorMessageMapperInterface { @@ -22,6 +23,7 @@ interface ErrorMessageMapperInterface * * @param string $code * @return Phrase|null + * @since 100.2.2 */ public function getMessage(string $code); } diff --git a/app/code/Magento/Payment/Gateway/Validator/ResultInterface.php b/app/code/Magento/Payment/Gateway/Validator/ResultInterface.php index c1ad947e49c5b..9ed30b1c56cf4 100644 --- a/app/code/Magento/Payment/Gateway/Validator/ResultInterface.php +++ b/app/code/Magento/Payment/Gateway/Validator/ResultInterface.php @@ -33,6 +33,7 @@ public function getFailsDescription(); * Returns list of error codes. * * @return string[] + * @since 100.3.0 */ public function getErrorCodes(); } diff --git a/app/code/Magento/Payment/Gateway/Validator/ValidatorComposite.php b/app/code/Magento/Payment/Gateway/Validator/ValidatorComposite.php index 8ea97d31ed4d9..916b4890a2e21 100644 --- a/app/code/Magento/Payment/Gateway/Validator/ValidatorComposite.php +++ b/app/code/Magento/Payment/Gateway/Validator/ValidatorComposite.php @@ -13,6 +13,7 @@ * Compiles a result using the results of multiple validators * * @api + * @since 100.0.2 */ class ValidatorComposite extends AbstractValidator { diff --git a/app/code/Magento/Payment/Model/Method/ConfigInterface.php b/app/code/Magento/Payment/Model/Method/ConfigInterface.php index 06afde4657f26..7c74736cf2ef1 100644 --- a/app/code/Magento/Payment/Model/Method/ConfigInterface.php +++ b/app/code/Magento/Payment/Model/Method/ConfigInterface.php @@ -8,7 +8,7 @@ /** * Interface for payment methods config * - * @deprecated This interface has no semantic meaning and all it implementations has no joint points. + * @deprecated 100.3.0 This interface has no semantic meaning and all it implementations has no joint points. */ interface ConfigInterface extends \Magento\Payment\Gateway\ConfigInterface { diff --git a/app/code/Magento/Payment/Model/MethodList.php b/app/code/Magento/Payment/Model/MethodList.php index 5a426d72e4cfd..5dda8de349875 100644 --- a/app/code/Magento/Payment/Model/MethodList.php +++ b/app/code/Magento/Payment/Model/MethodList.php @@ -19,7 +19,7 @@ class MethodList { /** * @var \Magento\Payment\Helper\Data - * @deprecated 100.1.3 Do not use this property in case of inheritance. + * @deprecated 100.1.0 Do not use this property in case of inheritance. */ protected $paymentHelper; diff --git a/app/code/Magento/Payment/Ui/Component/Listing/Column/Method/Options.php b/app/code/Magento/Payment/Ui/Component/Listing/Column/Method/Options.php index fbf80de519f9f..71e0384c72f79 100644 --- a/app/code/Magento/Payment/Ui/Component/Listing/Column/Method/Options.php +++ b/app/code/Magento/Payment/Ui/Component/Listing/Column/Method/Options.php @@ -3,6 +3,7 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ +declare(strict_types=1); namespace Magento\Payment\Ui\Component\Listing\Column\Method; /** @@ -41,6 +42,14 @@ public function toOptionArray() if ($this->options === null) { $this->options = $this->paymentHelper->getPaymentMethodList(true, true); } + + array_walk( + $this->options, + function (&$item) { + $item['__disableTmpl'] = true; + } + ); + return $this->options; } } diff --git a/app/code/Magento/Payment/composer.json b/app/code/Magento/Payment/composer.json index 293d36e093954..22ae812460286 100644 --- a/app/code/Magento/Payment/composer.json +++ b/app/code/Magento/Payment/composer.json @@ -6,13 +6,13 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-checkout": "*", - "magento/module-config": "*", - "magento/module-directory": "*", - "magento/module-quote": "*", - "magento/module-sales": "*", - "magento/module-store": "*" + "magento/framework": "102.0.*", + "magento/module-checkout": "100.3.*", + "magento/module-config": "101.1.*", + "magento/module-directory": "100.3.*", + "magento/module-quote": "101.1.*", + "magento/module-sales": "102.0.*", + "magento/module-store": "101.0.*" }, "type": "magento2-module", "license": [ @@ -26,5 +26,6 @@ "psr-4": { "Magento\\Payment\\": "" } - } + }, + "version": "100.3.2-p2" } diff --git a/app/code/Magento/Paypal/Block/Adminhtml/Order/View.php b/app/code/Magento/Paypal/Block/Adminhtml/Order/View.php index 0cbd82798a2c1..82f2b6ab577e0 100644 --- a/app/code/Magento/Paypal/Block/Adminhtml/Order/View.php +++ b/app/code/Magento/Paypal/Block/Adminhtml/Order/View.php @@ -19,6 +19,7 @@ /** * Adminhtml sales order view. * @api + * @since 100.2.2 */ class View extends OrderView { @@ -59,6 +60,7 @@ public function __construct( * * @return void * @throws LocalizedException + * @since 100.2.2 */ protected function _construct() { @@ -97,6 +99,7 @@ private function getPaymentAuthorizationUrl(): string * @param Order $order * @return bool * @throws LocalizedException + * @since 100.2.2 */ public function canAuthorize(Order $order): bool { diff --git a/app/code/Magento/Paypal/Block/Adminhtml/System/Config/Field/Enable/BmlApi.php b/app/code/Magento/Paypal/Block/Adminhtml/System/Config/Field/Enable/BmlApi.php index 88a33f19de2f4..76fa0856fd23c 100644 --- a/app/code/Magento/Paypal/Block/Adminhtml/System/Config/Field/Enable/BmlApi.php +++ b/app/code/Magento/Paypal/Block/Adminhtml/System/Config/Field/Enable/BmlApi.php @@ -7,7 +7,7 @@ /** * Class Bml - * @deprecated + * @deprecated 100.3.1 * "Enable PayPal Credit" setting was removed. Please @see "Disable Funding Options" */ class BmlApi extends AbstractEnable diff --git a/app/code/Magento/Paypal/Block/Adminhtml/System/Config/Fieldset/Hint.php b/app/code/Magento/Paypal/Block/Adminhtml/System/Config/Fieldset/Hint.php index 944b30f5792ae..567322fd89372 100644 --- a/app/code/Magento/Paypal/Block/Adminhtml/System/Config/Fieldset/Hint.php +++ b/app/code/Magento/Paypal/Block/Adminhtml/System/Config/Fieldset/Hint.php @@ -17,7 +17,7 @@ class Hint extends Template implements RendererInterface { /** * @var string - * @deprecated 100.1.2 + * @deprecated 100.1.0 */ protected $_template = 'Magento_Paypal::system/config/fieldset/hint.phtml'; diff --git a/app/code/Magento/Paypal/Block/Express/InContext/Minicart/Button.php b/app/code/Magento/Paypal/Block/Express/InContext/Minicart/Button.php index 8d1e04c1397fc..6b4071120b511 100644 --- a/app/code/Magento/Paypal/Block/Express/InContext/Minicart/Button.php +++ b/app/code/Magento/Paypal/Block/Express/InContext/Minicart/Button.php @@ -16,7 +16,7 @@ /** * Class Button - * @deprecated @see \Magento\Paypal\Block\Express\InContext\Minicart\SmartButton + * @deprecated 100.3.1 @see \Magento\Paypal\Block\Express\InContext\Minicart\SmartButton */ class Button extends Template implements ShortcutInterface { diff --git a/app/code/Magento/Paypal/Model/AbstractConfig.php b/app/code/Magento/Paypal/Model/AbstractConfig.php index 41f122ed9b3c9..79b5903baf472 100644 --- a/app/code/Magento/Paypal/Model/AbstractConfig.php +++ b/app/code/Magento/Paypal/Model/AbstractConfig.php @@ -229,7 +229,7 @@ public function shouldUseUnilateralPayments() /** * Check whether WPP API credentials are available for this method * - * @deprecated + * @deprecated 100.3.1 * @return bool */ public function isWppApiAvailabe() diff --git a/app/code/Magento/Paypal/Model/Api/Nvp.php b/app/code/Magento/Paypal/Model/Api/Nvp.php index 624068395394d..f88276dcf5334 100644 --- a/app/code/Magento/Paypal/Model/Api/Nvp.php +++ b/app/code/Magento/Paypal/Model/Api/Nvp.php @@ -1461,7 +1461,7 @@ protected function _exportLineItems(array &$request, $i = 0) * * @param array $data * @return void - * @deprecated 100.2.2 typo in method name + * @deprecated 100.2.4 typo in method name * @see _exportAddresses */ protected function _exportAddressses($data) diff --git a/app/code/Magento/Paypal/composer.json b/app/code/Magento/Paypal/composer.json index b62985e8b8b70..0c4fca122d745 100644 --- a/app/code/Magento/Paypal/composer.json +++ b/app/code/Magento/Paypal/composer.json @@ -7,26 +7,26 @@ "require": { "php": "~7.1.3||~7.2.0", "lib-libxml": "*", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-catalog": "*", - "magento/module-checkout": "*", - "magento/module-config": "*", - "magento/module-customer": "*", - "magento/module-directory": "*", - "magento/module-eav": "*", - "magento/module-instant-purchase": "*", - "magento/module-payment": "*", - "magento/module-quote": "*", - "magento/module-sales": "*", - "magento/module-store": "*", - "magento/module-tax": "*", - "magento/module-theme": "*", - "magento/module-ui": "*", - "magento/module-vault": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-catalog": "103.0.*", + "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-instant-purchase": "100.3.*", + "magento/module-payment": "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.*", + "magento/module-vault": "101.1.*" }, "suggest": { - "magento/module-checkout-agreements": "*" + "magento/module-checkout-agreements": "100.3.*" }, "type": "magento2-module", "license": [ @@ -40,5 +40,6 @@ "psr-4": { "Magento\\Paypal\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/PaypalCaptcha/composer.json b/app/code/Magento/PaypalCaptcha/composer.json index e71ef8c0ec7de..860cead0a5f14 100644 --- a/app/code/Magento/PaypalCaptcha/composer.json +++ b/app/code/Magento/PaypalCaptcha/composer.json @@ -6,13 +6,13 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-captcha": "*", - "magento/module-checkout": "*", - "magento/module-store": "*" + "magento/framework": "102.0.*", + "magento/module-captcha": "100.3.*", + "magento/module-checkout": "100.3.*", + "magento/module-store": "101.0.*" }, "suggest": { - "magento/module-paypal": "*" + "magento/module-paypal": "100.3.*" }, "type": "magento2-module", "license": [ @@ -26,5 +26,6 @@ "psr-4": { "Magento\\PaypalCaptcha\\": "" } - } + }, + "version": "100.3.0" } diff --git a/app/code/Magento/Persistent/composer.json b/app/code/Magento/Persistent/composer.json index 4a304c549b760..6e4982f0a9041 100644 --- a/app/code/Magento/Persistent/composer.json +++ b/app/code/Magento/Persistent/composer.json @@ -6,13 +6,13 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-checkout": "*", - "magento/module-cron": "*", - "magento/module-customer": "*", - "magento/module-page-cache": "*", - "magento/module-quote": "*", - "magento/module-store": "*" + "magento/framework": "102.0.*", + "magento/module-checkout": "100.3.*", + "magento/module-cron": "100.3.*", + "magento/module-customer": "102.0.*", + "magento/module-page-cache": "100.3.*", + "magento/module-quote": "101.1.*", + "magento/module-store": "101.0.*" }, "type": "magento2-module", "license": [ @@ -26,5 +26,6 @@ "psr-4": { "Magento\\Persistent\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/ProductAlert/composer.json b/app/code/Magento/ProductAlert/composer.json index e8488187f839a..30459625c04ae 100644 --- a/app/code/Magento/ProductAlert/composer.json +++ b/app/code/Magento/ProductAlert/composer.json @@ -6,14 +6,14 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-catalog": "*", - "magento/module-customer": "*", - "magento/module-store": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-customer": "102.0.*", + "magento/module-store": "101.0.*" }, "suggest": { - "magento/module-config": "*" + "magento/module-config": "101.1.*" }, "type": "magento2-module", "license": [ @@ -27,5 +27,6 @@ "psr-4": { "Magento\\ProductAlert\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/ProductVideo/composer.json b/app/code/Magento/ProductVideo/composer.json index 24497f891db43..0a8c26cffbdeb 100644 --- a/app/code/Magento/ProductVideo/composer.json +++ b/app/code/Magento/ProductVideo/composer.json @@ -6,17 +6,17 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", + "magento/framework": "102.0.*", "magento/magento-composer-installer": "*", - "magento/module-backend": "*", - "magento/module-catalog": "*", - "magento/module-eav": "*", - "magento/module-media-storage": "*", - "magento/module-store": "*" + "magento/module-backend": "101.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-eav": "102.0.*", + "magento/module-media-storage": "100.3.*", + "magento/module-store": "101.0.*" }, "suggest": { - "magento/module-customer": "*", - "magento/module-config": "*" + "magento/module-customer": "102.0.*", + "magento/module-config": "101.1.*" }, "type": "magento2-module", "license": [ @@ -30,5 +30,6 @@ "psr-4": { "Magento\\ProductVideo\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Quote/Model/BillingAddressManagement.php b/app/code/Magento/Quote/Model/BillingAddressManagement.php index bc055e71c662e..6f8a44dff464c 100644 --- a/app/code/Magento/Quote/Model/BillingAddressManagement.php +++ b/app/code/Magento/Quote/Model/BillingAddressManagement.php @@ -103,7 +103,7 @@ public function get($cartId) * Get shipping address assignment * * @return \Magento\Quote\Model\ShippingAddressAssignment - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getShippingAddressAssignment() { diff --git a/app/code/Magento/Quote/Model/MaskedQuoteIdToQuoteIdInterface.php b/app/code/Magento/Quote/Model/MaskedQuoteIdToQuoteIdInterface.php index 152d575e059c8..5cdcca5349c1b 100644 --- a/app/code/Magento/Quote/Model/MaskedQuoteIdToQuoteIdInterface.php +++ b/app/code/Magento/Quote/Model/MaskedQuoteIdToQuoteIdInterface.php @@ -12,6 +12,7 @@ /** * Converts masked quote id to the quote id (entity id) * @api + * @since 101.1.0 */ interface MaskedQuoteIdToQuoteIdInterface { @@ -19,6 +20,7 @@ interface MaskedQuoteIdToQuoteIdInterface * @param string $maskedQuoteId * @return int * @throws NoSuchEntityException + * @since 101.1.0 */ public function execute(string $maskedQuoteId): int; } diff --git a/app/code/Magento/Quote/Model/Quote.php b/app/code/Magento/Quote/Model/Quote.php index b1f68d0411cf0..6ac6e7715ad13 100644 --- a/app/code/Magento/Quote/Model/Quote.php +++ b/app/code/Magento/Quote/Model/Quote.php @@ -860,7 +860,7 @@ public function beforeSave() * Loading quote data by customer * * @param \Magento\Customer\Model\Customer|int $customer - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @return $this */ public function loadByCustomer($customer) diff --git a/app/code/Magento/Quote/Model/Quote/Address.php b/app/code/Magento/Quote/Model/Quote/Address.php index 3ecbc69b80785..4bfaacb10d38b 100644 --- a/app/code/Magento/Quote/Model/Quote/Address.php +++ b/app/code/Magento/Quote/Model/Quote/Address.php @@ -206,7 +206,7 @@ class Address extends \Magento\Customer\Model\Address\AbstractAddress implements /** * @var \Magento\Quote\Model\Quote\Address\RateFactory - * @since 100.2.0 + * @since 101.0.0 */ protected $_addressRateFactory; diff --git a/app/code/Magento/Quote/Model/Quote/Address/Item.php b/app/code/Magento/Quote/Model/Quote/Address/Item.php index ade4f9270b68f..bbf74d5a28935 100644 --- a/app/code/Magento/Quote/Model/Quote/Address/Item.php +++ b/app/code/Magento/Quote/Model/Quote/Address/Item.php @@ -199,6 +199,7 @@ public function importQuoteItem(\Magento\Quote\Model\Quote\Item $quoteItem) /** * @inheritdoc + * @since 101.1.1 */ public function getOptionByCode($code) { diff --git a/app/code/Magento/Quote/Model/Quote/Item.php b/app/code/Magento/Quote/Model/Quote/Item.php index fe6d712500bcd..7baa163c6b388 100644 --- a/app/code/Magento/Quote/Model/Quote/Item.php +++ b/app/code/Magento/Quote/Model/Quote/Item.php @@ -171,7 +171,7 @@ class Item extends \Magento\Quote\Model\Quote\Item\AbstractItem implements \Mage /** * @var \Magento\CatalogInventory\Api\StockRegistryInterface - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected $stockRegistry; diff --git a/app/code/Magento/Quote/Model/Quote/Validator/MinimumOrderAmount/ValidationMessage.php b/app/code/Magento/Quote/Model/Quote/Validator/MinimumOrderAmount/ValidationMessage.php index 38bfcbf1d30ca..78aa31d7d9527 100644 --- a/app/code/Magento/Quote/Model/Quote/Validator/MinimumOrderAmount/ValidationMessage.php +++ b/app/code/Magento/Quote/Model/Quote/Validator/MinimumOrderAmount/ValidationMessage.php @@ -19,7 +19,7 @@ class ValidationMessage /** * @var \Magento\Framework\Locale\CurrencyInterface - * @deprecated since 101.0.0 + * @deprecated 101.0.3 since 101.0.0 */ private $currency; diff --git a/app/code/Magento/Quote/Model/QuoteAddressValidator.php b/app/code/Magento/Quote/Model/QuoteAddressValidator.php index e7750f5879de5..f0bc12f7b3a36 100644 --- a/app/code/Magento/Quote/Model/QuoteAddressValidator.php +++ b/app/code/Magento/Quote/Model/QuoteAddressValidator.php @@ -31,7 +31,7 @@ class QuoteAddressValidator protected $customerRepository; /** - * @deprecated This class is not a part of HTML presentation layer and should not use sessions. + * @deprecated 101.1.1 This class is not a part of HTML presentation layer and should not use sessions. */ protected $customerSession; diff --git a/app/code/Magento/Quote/Model/QuoteIdToMaskedQuoteIdInterface.php b/app/code/Magento/Quote/Model/QuoteIdToMaskedQuoteIdInterface.php index 4d2a8ce877d8c..2a73a648889fb 100644 --- a/app/code/Magento/Quote/Model/QuoteIdToMaskedQuoteIdInterface.php +++ b/app/code/Magento/Quote/Model/QuoteIdToMaskedQuoteIdInterface.php @@ -12,6 +12,7 @@ /** * Converts quote id to the masked quote id * @api + * @since 101.1.0 */ interface QuoteIdToMaskedQuoteIdInterface { @@ -19,6 +20,7 @@ interface QuoteIdToMaskedQuoteIdInterface * @param int $quoteId * @return string * @throws NoSuchEntityException + * @since 101.1.0 */ public function execute(int $quoteId): string; } diff --git a/app/code/Magento/Quote/Model/QuoteRepository.php b/app/code/Magento/Quote/Model/QuoteRepository.php index 30931821ddc7d..fb335cbc50366 100644 --- a/app/code/Magento/Quote/Model/QuoteRepository.php +++ b/app/code/Magento/Quote/Model/QuoteRepository.php @@ -43,7 +43,7 @@ class QuoteRepository implements CartRepositoryInterface /** * @var QuoteFactory - * @deprecated + * @deprecated 101.1.2 */ protected $quoteFactory; @@ -54,7 +54,7 @@ class QuoteRepository implements CartRepositoryInterface /** * @var QuoteCollection - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected $quoteCollection; @@ -261,7 +261,7 @@ public function getList(SearchCriteriaInterface $searchCriteria) * @param FilterGroup $filterGroup The filter group. * @param QuoteCollection $collection The quote collection. * @return void - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @throws InputException The specified filter group or quote collection does not exist. */ protected function addFilterGroupToCollection(FilterGroup $filterGroup, QuoteCollection $collection) diff --git a/app/code/Magento/Quote/Model/ResourceModel/Quote.php b/app/code/Magento/Quote/Model/ResourceModel/Quote.php index ae26407c74522..640d984334ab9 100644 --- a/app/code/Magento/Quote/Model/ResourceModel/Quote.php +++ b/app/code/Magento/Quote/Model/ResourceModel/Quote.php @@ -254,7 +254,7 @@ public function subtractProductFromQuotes($product) * * @param \Magento\Catalog\Model\Product $product * - * @deprecated 101.0.1 + * @deprecated 101.0.3 * @see \Magento\Quote\Model\ResourceModel\Quote::subtractProductFromQuotes * * @return $this diff --git a/app/code/Magento/Quote/Model/ShippingMethodManagement.php b/app/code/Magento/Quote/Model/ShippingMethodManagement.php index f62866539c6cc..1b86f062652d5 100644 --- a/app/code/Magento/Quote/Model/ShippingMethodManagement.php +++ b/app/code/Magento/Quote/Model/ShippingMethodManagement.php @@ -266,7 +266,7 @@ public function estimateByAddressId($cartId, $addressId) * @param string $region * @param \Magento\Framework\Api\ExtensibleDataInterface|null $address * @return \Magento\Quote\Api\Data\ShippingMethodInterface[] An array of shipping methods. - * @deprecated 100.2.0 + * @deprecated 100.1.6 */ protected function getEstimatedRates( \Magento\Quote\Model\Quote $quote, @@ -334,7 +334,7 @@ private function extractAddressData($address) * Gets the data object processor * * @return \Magento\Framework\Reflection\DataObjectProcessor - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getDataObjectProcessor() { diff --git a/app/code/Magento/Quote/composer.json b/app/code/Magento/Quote/composer.json index 0281c75507f54..1c327a225ce28 100644 --- a/app/code/Magento/Quote/composer.json +++ b/app/code/Magento/Quote/composer.json @@ -6,24 +6,24 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-authorization": "*", - "magento/module-backend": "*", - "magento/module-catalog": "*", - "magento/module-catalog-inventory": "*", - "magento/module-checkout": "*", - "magento/module-customer": "*", - "magento/module-directory": "*", - "magento/module-eav": "*", - "magento/module-payment": "*", - "magento/module-sales": "*", - "magento/module-sales-sequence": "*", - "magento/module-shipping": "*", - "magento/module-store": "*", - "magento/module-tax": "*" + "magento/framework": "102.0.*", + "magento/module-authorization": "100.3.*", + "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-directory": "100.3.*", + "magento/module-eav": "102.0.*", + "magento/module-payment": "100.3.*", + "magento/module-sales": "102.0.*", + "magento/module-sales-sequence": "100.3.*", + "magento/module-shipping": "100.3.*", + "magento/module-store": "101.0.*", + "magento/module-tax": "100.3.*" }, "suggest": { - "magento/module-webapi": "*" + "magento/module-webapi": "100.3.*" }, "type": "magento2-module", "license": [ @@ -37,5 +37,6 @@ "psr-4": { "Magento\\Quote\\": "" } - } + }, + "version": "101.1.2" } diff --git a/app/code/Magento/QuoteAnalytics/composer.json b/app/code/Magento/QuoteAnalytics/composer.json index 706bed674b4a9..9442c216bd45e 100644 --- a/app/code/Magento/QuoteAnalytics/composer.json +++ b/app/code/Magento/QuoteAnalytics/composer.json @@ -3,9 +3,9 @@ "description": "N/A", "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-quote": "*", - "magento/module-analytics": "*" + "magento/framework": "102.0.*", + "magento/module-quote": "101.1.*", + "magento/module-analytics": "100.3.*" }, "type": "magento2-module", "license": [ @@ -19,5 +19,6 @@ "psr-4": { "Magento\\QuoteAnalytics\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/QuoteGraphQl/composer.json b/app/code/Magento/QuoteGraphQl/composer.json index 6f4d3969d1018..3886810a20e9c 100644 --- a/app/code/Magento/QuoteGraphQl/composer.json +++ b/app/code/Magento/QuoteGraphQl/composer.json @@ -4,19 +4,19 @@ "type": "magento2-module", "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-quote": "*", - "magento/module-checkout": "*", - "magento/module-catalog": "*", - "magento/module-store": "*", - "magento/module-customer": "*", - "magento/module-customer-graph-ql": "*", - "magento/module-sales": "*", - "magento/module-directory": "*" + "magento/framework": "102.0.*", + "magento/module-quote": "101.1.*", + "magento/module-checkout": "100.3.*", + "magento/module-catalog": "103.0.*", + "magento/module-store": "101.0.*", + "magento/module-customer": "102.0.*", + "magento/module-customer-graph-ql": "100.3.*", + "magento/module-sales": "102.0.*", + "magento/module-directory": "100.3.*" }, "suggest": { - "magento/module-graph-ql": "*", - "magento/module-graph-ql-cache": "*" + "magento/module-graph-ql": "100.3.*", + "magento/module-graph-ql-cache": "100.3.*" }, "license": [ "OSL-3.0", @@ -29,5 +29,6 @@ "psr-4": { "Magento\\QuoteGraphQl\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/ReleaseNotification/composer.json b/app/code/Magento/ReleaseNotification/composer.json index 97b312b74ff74..c6aa4994dc991 100644 --- a/app/code/Magento/ReleaseNotification/composer.json +++ b/app/code/Magento/ReleaseNotification/composer.json @@ -1,27 +1,28 @@ { - "name": "magento/module-release-notification", - "description": "N/A", - "require": { - "php": "~7.1.3||~7.2.0", - "magento/module-user": "*", - "magento/module-backend": "*", - "magento/module-ui": "*", - "magento/framework": "*" - }, - "suggest": { - "magento/module-config": "*" - }, - "type": "magento2-module", - "license": [ - "OSL-3.0", - "AFL-3.0" - ], - "autoload": { - "files": [ - "registration.php" + "name": "magento/module-release-notification", + "description": "N/A", + "require": { + "php": "~7.1.3||~7.2.0", + "magento/module-user": "101.1.*", + "magento/module-backend": "101.0.*", + "magento/module-ui": "101.1.*", + "magento/framework": "102.0.*" + }, + "suggest": { + "magento/module-config": "101.1.*" + }, + "type": "magento2-module", + "license": [ + "OSL-3.0", + "AFL-3.0" ], - "psr-4": { - "Magento\\ReleaseNotification\\": "" - } - } + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReleaseNotification\\": "" + } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Reports/Model/ResourceModel/Order/Collection.php b/app/code/Magento/Reports/Model/ResourceModel/Order/Collection.php index d89a118bff94b..552d48a35a254 100644 --- a/app/code/Magento/Reports/Model/ResourceModel/Order/Collection.php +++ b/app/code/Magento/Reports/Model/ResourceModel/Order/Collection.php @@ -817,7 +817,7 @@ public function addSumAvgTotals($storeId = 0) * @param string $baseSubtotalCanceled * @param string $baseDiscountCanceled * @return string - * @deprecated + * @deprecated 100.3.2 * @see getTotalsExpressionWithDiscountRefunded */ protected function getTotalsExpression( diff --git a/app/code/Magento/Reports/Model/ResourceModel/Product/Downloads/Collection.php b/app/code/Magento/Reports/Model/ResourceModel/Product/Downloads/Collection.php index 2009cd3ff9d92..6cffa238e97ba 100644 --- a/app/code/Magento/Reports/Model/ResourceModel/Product/Downloads/Collection.php +++ b/app/code/Magento/Reports/Model/ResourceModel/Product/Downloads/Collection.php @@ -100,6 +100,7 @@ public function addFieldToFilter($field, $condition = null) /** * @inheritDoc + * @since 100.3.2 */ public function getSelectCountSql() { diff --git a/app/code/Magento/Reports/Model/ResourceModel/Quote/Collection.php b/app/code/Magento/Reports/Model/ResourceModel/Quote/Collection.php index c1c6fb2eaed88..b69ea94aac9bb 100644 --- a/app/code/Magento/Reports/Model/ResourceModel/Quote/Collection.php +++ b/app/code/Magento/Reports/Model/ResourceModel/Quote/Collection.php @@ -58,6 +58,7 @@ public function __construct( * @param array $storeIds * @param bool $withAdmin * @return $this + * @since 100.3.1 */ public function addStoreFilter(array $storeIds, $withAdmin = true) { diff --git a/app/code/Magento/Reports/Model/ResourceModel/Review/Customer/Collection.php b/app/code/Magento/Reports/Model/ResourceModel/Review/Customer/Collection.php index 02eae4d75d2a7..19906e03c057c 100644 --- a/app/code/Magento/Reports/Model/ResourceModel/Review/Customer/Collection.php +++ b/app/code/Magento/Reports/Model/ResourceModel/Review/Customer/Collection.php @@ -108,6 +108,7 @@ protected function _joinCustomers() * * Additional processing of 'customer_name' field is required, as it is a concat field, which can not be aliased. * @see _joinCustomers + * @since 100.2.2 */ public function addFieldToFilter($field, $condition = null) { diff --git a/app/code/Magento/Reports/composer.json b/app/code/Magento/Reports/composer.json index f2ead8fedff74..3697fe66c3d2f 100644 --- a/app/code/Magento/Reports/composer.json +++ b/app/code/Magento/Reports/composer.json @@ -6,23 +6,23 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-catalog": "*", - "magento/module-catalog-inventory": "*", - "magento/module-cms": "*", - "magento/module-config": "*", - "magento/module-customer": "*", - "magento/module-downloadable": "*", - "magento/module-eav": "*", - "magento/module-quote": "*", - "magento/module-review": "*", - "magento/module-sales": "*", - "magento/module-sales-rule": "*", - "magento/module-store": "*", - "magento/module-tax": "*", - "magento/module-widget": "*", - "magento/module-wishlist": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-catalog-inventory": "100.3.*", + "magento/module-cms": "103.0.*", + "magento/module-config": "101.1.*", + "magento/module-customer": "102.0.*", + "magento/module-downloadable": "100.3.*", + "magento/module-eav": "102.0.*", + "magento/module-quote": "101.1.*", + "magento/module-review": "100.3.*", + "magento/module-sales": "102.0.*", + "magento/module-sales-rule": "101.1.*", + "magento/module-store": "101.0.*", + "magento/module-tax": "100.3.*", + "magento/module-widget": "101.1.*", + "magento/module-wishlist": "101.1.*" }, "type": "magento2-module", "license": [ @@ -36,5 +36,6 @@ "psr-4": { "Magento\\Reports\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/RequireJs/composer.json b/app/code/Magento/RequireJs/composer.json index e48082a69319c..ba7340b69ea6d 100644 --- a/app/code/Magento/RequireJs/composer.json +++ b/app/code/Magento/RequireJs/composer.json @@ -6,7 +6,7 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*" + "magento/framework": "102.0.*" }, "type": "magento2-module", "license": [ @@ -20,5 +20,6 @@ "psr-4": { "Magento\\RequireJs\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Review/Controller/Adminhtml/Rating.php b/app/code/Magento/Review/Controller/Adminhtml/Rating.php index 02649661154af..672c3ed327941 100644 --- a/app/code/Magento/Review/Controller/Adminhtml/Rating.php +++ b/app/code/Magento/Review/Controller/Adminhtml/Rating.php @@ -41,7 +41,7 @@ public function __construct( } /** - * @deprecated Misspelled method + * @deprecated 100.3.0 Misspelled method * @see initEntityId */ protected function initEnityId() diff --git a/app/code/Magento/Review/Model/ResourceModel/Review/Product/Collection.php b/app/code/Magento/Review/Model/ResourceModel/Review/Product/Collection.php index ab264ef1b6179..1fb7e7df2461f 100644 --- a/app/code/Magento/Review/Model/ResourceModel/Review/Product/Collection.php +++ b/app/code/Magento/Review/Model/ResourceModel/Review/Product/Collection.php @@ -553,6 +553,7 @@ protected function _afterLoad() * Not add store ids to items * * @return $this + * @since 100.2.8 */ protected function prepareStoreId() { diff --git a/app/code/Magento/Review/composer.json b/app/code/Magento/Review/composer.json index 17e0d9bebcf50..25257169015cf 100644 --- a/app/code/Magento/Review/composer.json +++ b/app/code/Magento/Review/composer.json @@ -6,19 +6,19 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-catalog": "*", - "magento/module-customer": "*", - "magento/module-eav": "*", - "magento/module-newsletter": "*", - "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-customer": "102.0.*", + "magento/module-eav": "102.0.*", + "magento/module-newsletter": "100.3.*", + "magento/module-store": "101.0.*", + "magento/module-theme": "101.0.*", + "magento/module-ui": "101.1.*" }, "suggest": { - "magento/module-cookie": "*", - "magento/module-review-sample-data": "*" + "magento/module-cookie": "100.3.*", + "magento/module-review-sample-data": "Sample Data version: 100.3.*" }, "type": "magento2-module", "license": [ @@ -32,5 +32,6 @@ "psr-4": { "Magento\\Review\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/ReviewAnalytics/composer.json b/app/code/Magento/ReviewAnalytics/composer.json index a82d4328ca159..e041ba1c6b549 100644 --- a/app/code/Magento/ReviewAnalytics/composer.json +++ b/app/code/Magento/ReviewAnalytics/composer.json @@ -3,9 +3,9 @@ "description": "N/A", "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-review": "*", - "magento/module-analytics": "*" + "magento/framework": "102.0.*", + "magento/module-review": "100.3.*", + "magento/module-analytics": "100.3.*" }, "type": "magento2-module", "license": [ @@ -19,5 +19,6 @@ "psr-4": { "Magento\\ReviewAnalytics\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Robots/Block/Data.php b/app/code/Magento/Robots/Block/Data.php index 460225d3ed71c..9a28f91de19d9 100644 --- a/app/code/Magento/Robots/Block/Data.php +++ b/app/code/Magento/Robots/Block/Data.php @@ -19,7 +19,7 @@ * Prepares base content for robots.txt and implements Page Cache functionality. * * @api - * @since 100.2.0 + * @since 100.1.0 */ class Data extends AbstractBlock implements IdentityInterface { @@ -60,7 +60,7 @@ public function __construct( * Retrieve base content for robots.txt file * * @return string - * @since 100.2.0 + * @since 100.1.0 */ protected function _toHtml() { @@ -71,7 +71,7 @@ protected function _toHtml() * Get unique page cache identities * * @return array - * @since 100.2.0 + * @since 100.1.0 */ public function getIdentities() { diff --git a/app/code/Magento/Robots/Model/Config/Value.php b/app/code/Magento/Robots/Model/Config/Value.php index 16a5a486e1078..ab955dadbe33d 100644 --- a/app/code/Magento/Robots/Model/Config/Value.php +++ b/app/code/Magento/Robots/Model/Config/Value.php @@ -23,7 +23,7 @@ * Required to implement Page Cache functionality. * * @api - * @since 100.2.0 + * @since 100.1.0 */ class Value extends ConfigValue implements IdentityInterface { @@ -35,7 +35,7 @@ class Value extends ConfigValue implements IdentityInterface /** * @inheritdoc * - * @since 100.2.0 + * @since 100.1.0 */ protected $_cacheTag = [self::CACHE_TAG]; @@ -86,7 +86,7 @@ public function __construct( * Get unique page cache identities * * @return array - * @since 100.2.0 + * @since 100.1.0 */ public function getIdentities() { diff --git a/app/code/Magento/Robots/composer.json b/app/code/Magento/Robots/composer.json index 6f812857873b8..9ad01cab3b1f2 100644 --- a/app/code/Magento/Robots/composer.json +++ b/app/code/Magento/Robots/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-theme": "*" + "magento/module-theme": "101.0.*" }, "type": "magento2-module", "license": [ @@ -24,5 +24,6 @@ "psr-4": { "Magento\\Robots\\": "" } - } + }, + "version": "101.0.2" } diff --git a/app/code/Magento/Rss/Controller/Feed.php b/app/code/Magento/Rss/Controller/Feed.php index 8fbe7addb560d..b800165e57c8a 100644 --- a/app/code/Magento/Rss/Controller/Feed.php +++ b/app/code/Magento/Rss/Controller/Feed.php @@ -6,7 +6,9 @@ namespace Magento\Rss\Controller; /** - * Class Feed + * Class Feed. + * + * @SuppressWarnings(PHPMD.AllPurposeAction) */ abstract class Feed extends \Magento\Framework\App\Action\Action { @@ -76,6 +78,8 @@ public function __construct( } /** + * Authenticate not logged in customer. + * * @return bool */ protected function auth() @@ -85,7 +89,6 @@ protected function auth() try { $customer = $this->customerAccountManagement->authenticate($login, $password); $this->customerSession->setCustomerDataAsLoggedIn($customer); - $this->customerSession->regenerateId(); } catch (\Exception $e) { $this->logger->critical($e); } diff --git a/app/code/Magento/Rss/composer.json b/app/code/Magento/Rss/composer.json index 5b6c34688c31a..6162ee1a7f7b9 100644 --- a/app/code/Magento/Rss/composer.json +++ b/app/code/Magento/Rss/composer.json @@ -6,10 +6,10 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-customer": "*", - "magento/module-store": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-customer": "102.0.*", + "magento/module-store": "101.0.*" }, "type": "magento2-module", "license": [ @@ -23,5 +23,6 @@ "psr-4": { "Magento\\Rss\\": "" } - } + }, + "version": "100.3.2-p2" } diff --git a/app/code/Magento/Rule/Model/Condition/Sql/Builder.php b/app/code/Magento/Rule/Model/Condition/Sql/Builder.php index 33e1bf97c3474..f44b788354103 100644 --- a/app/code/Magento/Rule/Model/Condition/Sql/Builder.php +++ b/app/code/Magento/Rule/Model/Condition/Sql/Builder.php @@ -152,9 +152,11 @@ protected function _getMappedSqlCondition( ): string { $argument = $condition->getMappedSqlField(); - // If rule hasn't valid argument - create negative expression to prevent incorrect rule behavior. + // If rule hasn't valid argument - prevent incorrect rule behavior. if (empty($argument)) { return $this->_expressionFactory->create(['expression' => '1 = -1']); + } elseif (preg_match('/[^a-z0-9\-_\.\`]/i', $argument) > 0) { + throw new \Magento\Framework\Exception\LocalizedException(__('Invalid field')); } $conditionOperator = $condition->getOperatorForValidate(); @@ -195,7 +197,6 @@ protected function _getMappedSqlCondition( ); } } - return $this->_expressionFactory->create( ['expression' => $expression] ); @@ -241,6 +242,7 @@ protected function _getMappedSqlCombination( * @param AbstractCollection $collection * @param Combine $combine * @return void + * @throws \Magento\Framework\Exception\LocalizedException */ public function attachConditionToCollection( AbstractCollection $collection, @@ -250,29 +252,45 @@ public function attachConditionToCollection( $this->_joinTablesToCollection($collection, $combine); $whereExpression = (string)$this->_getMappedSqlCombination($combine); if (!empty($whereExpression)) { - if (!empty($combine->getConditions())) { - $conditions = ''; - $attributeField = ''; - foreach ($combine->getConditions() as $condition) { - if ($condition->getData('attribute') === \Magento\Catalog\Api\Data\ProductInterface::SKU) { - $conditions = $condition->getData('value'); - $attributeField = $condition->getMappedSqlField(); - } - } + $collection->getSelect()->where($whereExpression); + $this->buildConditions($collection, $combine); + } + } - $collection->getSelect()->where($whereExpression); + /** + * Build sql conditions from combination. + * + * @param AbstractCollection $collection + * @param Combine $combine + * @return void + */ + private function buildConditions(AbstractCollection $collection, Combine $combine) : void + { + if (!empty($combine->getConditions())) { + $conditions = ''; + $attributeField = ''; + foreach ($combine->getConditions() as $condition) { + if ($condition->getData('attribute') === \Magento\Catalog\Api\Data\ProductInterface::SKU) { + $conditions = $condition->getData('value'); + $attributeField = $condition->getMappedSqlField(); + } + } - if (!empty($conditions) && !empty($attributeField)) { - $conditions = explode(',', $conditions); - foreach ($conditions as &$condition) { - $condition = "'" . trim($condition) . "'"; - } - $conditions = implode(', ', $conditions); - $collection->getSelect()->order("FIELD($attributeField, $conditions)"); + if (!empty($conditions) && !empty($attributeField)) { + $conditions = explode(',', $conditions); + foreach ($conditions as &$condition) { + $condition = trim($condition); } - } else { - // Select ::where method adds braces even on empty expression - $collection->getSelect()->where($whereExpression); + $conditions = implode(', ', $conditions); + $collection->getSelect()->order( + $this->_connection->quoteInto( + "FIELD(?, ?)", + [ + $attributeField, + $conditions + ] + ) + ); } } } diff --git a/app/code/Magento/Rule/composer.json b/app/code/Magento/Rule/composer.json index 15f72b8ec24a0..757c0e9c50224 100644 --- a/app/code/Magento/Rule/composer.json +++ b/app/code/Magento/Rule/composer.json @@ -7,11 +7,11 @@ "require": { "php": "~7.1.3||~7.2.0", "lib-libxml": "*", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-catalog": "*", - "magento/module-eav": "*", - "magento/module-store": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-eav": "102.0.*", + "magento/module-store": "101.0.*" }, "type": "magento2-module", "license": [ @@ -25,5 +25,6 @@ "psr-4": { "Magento\\Rule\\": "" } - } + }, + "version": "100.3.2-p2" } diff --git a/app/code/Magento/Sales/Block/Adminhtml/Order/Create/Items/Grid.php b/app/code/Magento/Sales/Block/Adminhtml/Order/Create/Items/Grid.php index 8a427a30a6c7a..7a3167e88137b 100644 --- a/app/code/Magento/Sales/Block/Adminhtml/Order/Create/Items/Grid.php +++ b/app/code/Magento/Sales/Block/Adminhtml/Order/Create/Items/Grid.php @@ -428,7 +428,7 @@ protected function _getTierPriceInfo($prices) * @param Item $item * @return string * - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ public function getCustomOptions(Item $item) { diff --git a/app/code/Magento/Sales/Block/Adminhtml/Order/Create/Sidebar/Cart.php b/app/code/Magento/Sales/Block/Adminhtml/Order/Create/Sidebar/Cart.php index f2200e1c1a108..0388925f20b1d 100644 --- a/app/code/Magento/Sales/Block/Adminhtml/Order/Create/Sidebar/Cart.php +++ b/app/code/Magento/Sales/Block/Adminhtml/Order/Create/Sidebar/Cart.php @@ -65,6 +65,7 @@ public function getItemCollection() /** * @inheritdoc + * @since 102.0.1 */ public function getItemPrice(Product $product) { diff --git a/app/code/Magento/Sales/Block/Adminhtml/Order/Totalbar.php b/app/code/Magento/Sales/Block/Adminhtml/Order/Totalbar.php index c4ce48d162c2c..33e5250d27d26 100644 --- a/app/code/Magento/Sales/Block/Adminhtml/Order/Totalbar.php +++ b/app/code/Magento/Sales/Block/Adminhtml/Order/Totalbar.php @@ -8,7 +8,7 @@ /** * Adminhtml creditmemo bar * - * @deprecated + * @deprecated 101.0.6 * @api * @author Magento Core Team <core@magentocommerce.com> * @since 100.0.2 diff --git a/app/code/Magento/Sales/Block/Adminhtml/Order/View/Info.php b/app/code/Magento/Sales/Block/Adminhtml/Order/View/Info.php index 598a3e226a879..22f61d3583faa 100644 --- a/app/code/Magento/Sales/Block/Adminhtml/Order/View/Info.php +++ b/app/code/Magento/Sales/Block/Adminhtml/Order/View/Info.php @@ -305,7 +305,7 @@ public function getFormattedAddress(Address $address) /** * @inheritdoc - * @since 100.2.0 + * @since 101.0.0 */ public function getChildHtml($alias = '', $useCache = true) { diff --git a/app/code/Magento/Sales/Block/Order/PrintShipment.php b/app/code/Magento/Sales/Block/Order/PrintShipment.php index 0006a38f0f1ce..039bf2c79e78b 100644 --- a/app/code/Magento/Sales/Block/Order/PrintShipment.php +++ b/app/code/Magento/Sales/Block/Order/PrintShipment.php @@ -88,7 +88,7 @@ public function getOrder() * Disable pager for printing page * * @return bool - * @since 100.2.0 + * @since 100.1.9 */ public function isPagerDisplayed() { @@ -99,7 +99,7 @@ public function isPagerDisplayed() * Get order items * * @return \Magento\Framework\DataObject[] - * @since 100.2.0 + * @since 100.1.9 */ public function getItems() { diff --git a/app/code/Magento/Sales/Block/Order/View.php b/app/code/Magento/Sales/Block/Order/View.php index 03d1340e0f690..eef13fd47bf94 100644 --- a/app/code/Magento/Sales/Block/Order/View.php +++ b/app/code/Magento/Sales/Block/Order/View.php @@ -29,7 +29,7 @@ class View extends \Magento\Framework\View\Element\Template /** * @var \Magento\Framework\App\Http\Context - * @since 100.2.0 + * @since 101.0.0 */ protected $httpContext; diff --git a/app/code/Magento/Sales/Controller/Adminhtml/Order/AbstractMassAction.php b/app/code/Magento/Sales/Controller/Adminhtml/Order/AbstractMassAction.php index c6b45f282debc..1f75008897102 100644 --- a/app/code/Magento/Sales/Controller/Adminhtml/Order/AbstractMassAction.php +++ b/app/code/Magento/Sales/Controller/Adminhtml/Order/AbstractMassAction.php @@ -14,7 +14,7 @@ /** * Class AbstractMassStatus - * @deprecated 100.2.0 + * @deprecated 101.0.0 * Never extend from this action. Implement mass-action logic in the "execute" method of your controller. */ abstract class AbstractMassAction extends \Magento\Backend\App\Action diff --git a/app/code/Magento/Sales/Controller/Download/DownloadCustomOption.php b/app/code/Magento/Sales/Controller/Download/DownloadCustomOption.php index fc4e238d47c99..069b2783076d9 100644 --- a/app/code/Magento/Sales/Controller/Download/DownloadCustomOption.php +++ b/app/code/Magento/Sales/Controller/Download/DownloadCustomOption.php @@ -33,7 +33,7 @@ class DownloadCustomOption extends \Magento\Framework\App\Action\Action implemen /** * @var \Magento\Framework\Unserialize\Unserialize - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected $unserialize; diff --git a/app/code/Magento/Sales/Model/AdminOrder/Create.php b/app/code/Magento/Sales/Model/AdminOrder/Create.php index 063433140566a..6b5454e50aa68 100644 --- a/app/code/Magento/Sales/Model/AdminOrder/Create.php +++ b/app/code/Magento/Sales/Model/AdminOrder/Create.php @@ -1145,7 +1145,7 @@ public function updateQuoteItems($items) * @return array * @throws \Magento\Framework\Exception\LocalizedException * - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected function _parseOptions(\Magento\Quote\Model\Quote\Item $item, $additionalOptions) { @@ -1215,7 +1215,7 @@ protected function _parseOptions(\Magento\Quote\Model\Quote\Item $item, $additio * @param array $options * @return $this * - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected function _assignOptionsToItem(\Magento\Quote\Model\Quote\Item $item, $options) { diff --git a/app/code/Magento/Sales/Model/Increment.php b/app/code/Magento/Sales/Model/Increment.php index 75ff1ee044a95..813b3dcc40a7a 100644 --- a/app/code/Magento/Sales/Model/Increment.php +++ b/app/code/Magento/Sales/Model/Increment.php @@ -9,7 +9,7 @@ /** * Class Increment - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ class Increment { diff --git a/app/code/Magento/Sales/Model/Order.php b/app/code/Magento/Sales/Model/Order.php index 48deddb2fe5ac..8347c15d64012 100644 --- a/app/code/Magento/Sales/Model/Order.php +++ b/app/code/Magento/Sales/Model/Order.php @@ -190,7 +190,7 @@ class Order extends AbstractModel implements EntityInterface, OrderInterface /** * @var \Magento\Catalog\Api\ProductRepositoryInterface - * @deprecated 100.1.7 Remove unused dependency. + * @deprecated 100.1.0 Remove unused dependency. */ protected $productRepository; @@ -1065,6 +1065,7 @@ public function setState($state) * Retrieve frontend label of order status * * @return string + * @since 102.0.1 */ public function getFrontendStatusLabel() { @@ -1104,7 +1105,7 @@ public function addStatusToHistory($status, $comment = '', $isCustomerNotified = * @param string $comment * @param bool|string $status * @return OrderStatusHistoryInterface - * @deprecated + * @deprecated 101.0.5 * @see addCommentToStatusHistory */ public function addStatusHistoryComment($comment, $status = false) @@ -1121,6 +1122,7 @@ public function addStatusHistoryComment($comment, $status = false) * @param bool|string $status * @param bool $isVisibleOnFront * @return OrderStatusHistoryInterface + * @since 101.0.5 */ public function addCommentToStatusHistory($comment, $status = false, $isVisibleOnFront = false) { diff --git a/app/code/Magento/Sales/Model/Order/AddressRepository.php b/app/code/Magento/Sales/Model/Order/AddressRepository.php index af83dde99c6f2..705b779fefe6a 100644 --- a/app/code/Magento/Sales/Model/Order/AddressRepository.php +++ b/app/code/Magento/Sales/Model/Order/AddressRepository.php @@ -167,7 +167,7 @@ public function create() /** * Retrieve collection processor * - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @return CollectionProcessorInterface */ private function getCollectionProcessor() diff --git a/app/code/Magento/Sales/Model/Order/Config.php b/app/code/Magento/Sales/Model/Order/Config.php index 1b31caa573f99..748162386d75f 100644 --- a/app/code/Magento/Sales/Model/Order/Config.php +++ b/app/code/Magento/Sales/Model/Order/Config.php @@ -157,6 +157,7 @@ public function getStatusLabel($code) * * @param string|null $code * @return string|null + * @since 102.0.1 */ public function getStatusFrontendLabel(?string $code): ?string { @@ -307,7 +308,7 @@ protected function _getStatuses($visibility) * @param string $state * @param string $status * @return \Magento\Framework\Phrase|string - * @since 100.2.0 + * @since 101.0.0 */ public function getStateLabelByStateAndStatus($state, $status) { diff --git a/app/code/Magento/Sales/Model/Order/CreditmemoFactory.php b/app/code/Magento/Sales/Model/Order/CreditmemoFactory.php index 73afd0a06f710..d838716d2c383 100644 --- a/app/code/Magento/Sales/Model/Order/CreditmemoFactory.php +++ b/app/code/Magento/Sales/Model/Order/CreditmemoFactory.php @@ -27,7 +27,7 @@ class CreditmemoFactory /** * @var \Magento\Framework\Unserialize\Unserialize - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected $unserialize; diff --git a/app/code/Magento/Sales/Model/Order/CreditmemoRepository.php b/app/code/Magento/Sales/Model/Order/CreditmemoRepository.php index ce4a0aa5b3e3a..269ee313c09df 100644 --- a/app/code/Magento/Sales/Model/Order/CreditmemoRepository.php +++ b/app/code/Magento/Sales/Model/Order/CreditmemoRepository.php @@ -151,7 +151,7 @@ public function save(\Magento\Sales\Api\Data\CreditmemoInterface $entity) /** * Retrieve collection processor * - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @return CollectionProcessorInterface */ private function getCollectionProcessor() diff --git a/app/code/Magento/Sales/Model/Order/CustomerManagement.php b/app/code/Magento/Sales/Model/Order/CustomerManagement.php index ae3f940dbb2ba..50c7f88af546b 100644 --- a/app/code/Magento/Sales/Model/Order/CustomerManagement.php +++ b/app/code/Magento/Sales/Model/Order/CustomerManagement.php @@ -27,17 +27,17 @@ class CustomerManagement implements \Magento\Sales\Api\OrderCustomerManagementIn protected $accountManagement; /** - * @deprecated + * @deprecated 101.0.4 */ protected $customerFactory; /** - * @deprecated + * @deprecated 101.0.4 */ protected $addressFactory; /** - * @deprecated + * @deprecated 101.0.4 */ protected $regionFactory; @@ -47,7 +47,7 @@ class CustomerManagement implements \Magento\Sales\Api\OrderCustomerManagementIn protected $orderRepository; /** - * @deprecated + * @deprecated 101.0.4 */ protected $objectCopyService; diff --git a/app/code/Magento/Sales/Model/Order/InvoiceRepository.php b/app/code/Magento/Sales/Model/Order/InvoiceRepository.php index 2244a86260c2f..ac1a782367ab3 100644 --- a/app/code/Magento/Sales/Model/Order/InvoiceRepository.php +++ b/app/code/Magento/Sales/Model/Order/InvoiceRepository.php @@ -145,7 +145,7 @@ public function save(\Magento\Sales\Api\Data\InvoiceInterface $entity) /** * Retrieve collection processor * - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @return CollectionProcessorInterface */ private function getCollectionProcessor() diff --git a/app/code/Magento/Sales/Model/Order/Item.php b/app/code/Magento/Sales/Model/Order/Item.php index a0eff45179ac8..67eec21f482c1 100644 --- a/app/code/Magento/Sales/Model/Order/Item.php +++ b/app/code/Magento/Sales/Model/Order/Item.php @@ -2399,7 +2399,7 @@ public function setExtensionAttributes(\Magento\Sales\Api\Data\OrderItemExtensio * Check if it is possible to process item after cancellation * * @return bool - * @since 100.2.0 + * @since 101.0.0 */ public function isProcessingAvailable() { diff --git a/app/code/Magento/Sales/Model/Order/Payment.php b/app/code/Magento/Sales/Model/Order/Payment.php index 5d1d3f0d040a7..035e1cc050ea5 100644 --- a/app/code/Magento/Sales/Model/Order/Payment.php +++ b/app/code/Magento/Sales/Model/Order/Payment.php @@ -1480,7 +1480,7 @@ protected function _getInvoiceForTransactionId($transactionId) /** * Get order state resolver instance. * - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @return OrderStateResolverInterface */ private function getOrderStateResolver() diff --git a/app/code/Magento/Sales/Model/Order/Payment/Repository.php b/app/code/Magento/Sales/Model/Order/Payment/Repository.php index 4353f6b1cc391..27686ffb46c9d 100644 --- a/app/code/Magento/Sales/Model/Order/Payment/Repository.php +++ b/app/code/Magento/Sales/Model/Order/Payment/Repository.php @@ -131,7 +131,7 @@ public function create() /** * Retrieve collection processor * - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @return CollectionProcessorInterface */ private function getCollectionProcessor() diff --git a/app/code/Magento/Sales/Model/Order/Payment/State/AuthorizeCommand.php b/app/code/Magento/Sales/Model/Order/Payment/State/AuthorizeCommand.php index 98cf1babdc92d..91fbbef606b82 100644 --- a/app/code/Magento/Sales/Model/Order/Payment/State/AuthorizeCommand.php +++ b/app/code/Magento/Sales/Model/Order/Payment/State/AuthorizeCommand.php @@ -61,7 +61,7 @@ public function execute(OrderPaymentInterface $payment, $amount, OrderInterface } /** - * @deprecated 100.2.0 Replaced by a StatusResolver class call. + * @deprecated 100.1.9 Replaced by a StatusResolver class call. * * @param Order $order * @param string $status diff --git a/app/code/Magento/Sales/Model/Order/Payment/State/CaptureCommand.php b/app/code/Magento/Sales/Model/Order/Payment/State/CaptureCommand.php index 0e4135a1bf814..e39704ba1ddc1 100644 --- a/app/code/Magento/Sales/Model/Order/Payment/State/CaptureCommand.php +++ b/app/code/Magento/Sales/Model/Order/Payment/State/CaptureCommand.php @@ -61,7 +61,7 @@ public function execute(OrderPaymentInterface $payment, $amount, OrderInterface } /** - * @deprecated 100.2.0 Replaced by a StatusResolver class call. + * @deprecated 100.1.9 Replaced by a StatusResolver class call. * * @param Order $order * @param string $status diff --git a/app/code/Magento/Sales/Model/Order/Payment/State/OrderCommand.php b/app/code/Magento/Sales/Model/Order/Payment/State/OrderCommand.php index 2a7e7145f6886..d6acd82613c0a 100644 --- a/app/code/Magento/Sales/Model/Order/Payment/State/OrderCommand.php +++ b/app/code/Magento/Sales/Model/Order/Payment/State/OrderCommand.php @@ -61,7 +61,7 @@ public function execute(OrderPaymentInterface $payment, $amount, OrderInterface } /** - * @deprecated 100.2.0 Replaced by a StatusResolver class call. + * @deprecated 100.1.9 Replaced by a StatusResolver class call. * * @param Order $order * @param string $status diff --git a/app/code/Magento/Sales/Model/Order/Payment/State/RegisterCaptureNotificationCommand.php b/app/code/Magento/Sales/Model/Order/Payment/State/RegisterCaptureNotificationCommand.php index d38e58d7341c1..f54b2d0b88e28 100644 --- a/app/code/Magento/Sales/Model/Order/Payment/State/RegisterCaptureNotificationCommand.php +++ b/app/code/Magento/Sales/Model/Order/Payment/State/RegisterCaptureNotificationCommand.php @@ -61,7 +61,7 @@ public function execute(OrderPaymentInterface $payment, $amount, OrderInterface } /** - * @deprecated 100.2.0 Replaced by a StatusResolver class call. + * @deprecated 100.1.9 Replaced by a StatusResolver class call. * * @param Order $order * @param string $status diff --git a/app/code/Magento/Sales/Model/Order/Payment/Transaction/Repository.php b/app/code/Magento/Sales/Model/Order/Payment/Transaction/Repository.php index a602fe54363ed..30af4e07a42bf 100644 --- a/app/code/Magento/Sales/Model/Order/Payment/Transaction/Repository.php +++ b/app/code/Magento/Sales/Model/Order/Payment/Transaction/Repository.php @@ -233,7 +233,7 @@ public function create() /** * Retrieve collection processor * - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @return CollectionProcessorInterface */ private function getCollectionProcessor() diff --git a/app/code/Magento/Sales/Model/Order/ProductOption.php b/app/code/Magento/Sales/Model/Order/ProductOption.php index dc9ec42e27e60..f4372ccf042ab 100644 --- a/app/code/Magento/Sales/Model/Order/ProductOption.php +++ b/app/code/Magento/Sales/Model/Order/ProductOption.php @@ -17,6 +17,7 @@ * Adds product option to the order item according to product options processors pool. * * @api + * @since 102.0.1 */ class ProductOption { @@ -54,6 +55,7 @@ public function __construct( * Adds product option to the order item. * * @param OrderItemInterface $orderItem + * @since 102.0.1 */ public function add(OrderItemInterface $orderItem): void { diff --git a/app/code/Magento/Sales/Model/Order/Reorder/OrderedProductAvailabilityChecker.php b/app/code/Magento/Sales/Model/Order/Reorder/OrderedProductAvailabilityChecker.php index dd70c6b5481df..e4f2ff0d57035 100644 --- a/app/code/Magento/Sales/Model/Order/Reorder/OrderedProductAvailabilityChecker.php +++ b/app/code/Magento/Sales/Model/Order/Reorder/OrderedProductAvailabilityChecker.php @@ -16,7 +16,7 @@ * of the array $productAvailabilityChecks(constructor argument). A product type should be a key for the new element. * * @api - * @since 100.2.0 + * @since 101.0.0 */ class OrderedProductAvailabilityChecker implements OrderedProductAvailabilityCheckerInterface { @@ -36,7 +36,7 @@ public function __construct(array $productAvailabilityChecks) /** * @inheritdoc - * @since 100.2.0 + * @since 101.0.0 */ public function isAvailable(Item $item) { diff --git a/app/code/Magento/Sales/Model/Order/Reorder/OrderedProductAvailabilityCheckerInterface.php b/app/code/Magento/Sales/Model/Order/Reorder/OrderedProductAvailabilityCheckerInterface.php index 989bd482ed4e8..59f7dfc63b095 100644 --- a/app/code/Magento/Sales/Model/Order/Reorder/OrderedProductAvailabilityCheckerInterface.php +++ b/app/code/Magento/Sales/Model/Order/Reorder/OrderedProductAvailabilityCheckerInterface.php @@ -9,7 +9,7 @@ /** * @api - * @since 100.2.0 + * @since 101.0.0 */ interface OrderedProductAvailabilityCheckerInterface { @@ -19,7 +19,7 @@ interface OrderedProductAvailabilityCheckerInterface * * @param Item $item * @return bool - * @since 100.2.0 + * @since 101.0.0 */ public function isAvailable(Item $item); } diff --git a/app/code/Magento/Sales/Model/Order/ShipmentFactory.php b/app/code/Magento/Sales/Model/Order/ShipmentFactory.php index 21b42abeb293d..3cd318ea67adb 100644 --- a/app/code/Magento/Sales/Model/Order/ShipmentFactory.php +++ b/app/code/Magento/Sales/Model/Order/ShipmentFactory.php @@ -12,6 +12,7 @@ * Factory class for @see \Magento\Sales\Api\Data\ShipmentInterface * * @api + * @since 100.0.2 */ class ShipmentFactory { diff --git a/app/code/Magento/Sales/Model/Order/ShipmentRepository.php b/app/code/Magento/Sales/Model/Order/ShipmentRepository.php index 0b86bec895b75..ad73b22e94555 100644 --- a/app/code/Magento/Sales/Model/Order/ShipmentRepository.php +++ b/app/code/Magento/Sales/Model/Order/ShipmentRepository.php @@ -166,7 +166,7 @@ public function create() /** * Retrieve collection processor * - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @return CollectionProcessorInterface */ private function getCollectionProcessor() diff --git a/app/code/Magento/Sales/Model/OrderRepository.php b/app/code/Magento/Sales/Model/OrderRepository.php index 79548cb190754..2de53546d2542 100644 --- a/app/code/Magento/Sales/Model/OrderRepository.php +++ b/app/code/Magento/Sales/Model/OrderRepository.php @@ -312,7 +312,7 @@ private function getShippingAssignmentBuilderDependency() * @param \Magento\Framework\Api\Search\FilterGroup $filterGroup * @param \Magento\Sales\Api\Data\OrderSearchResultInterface $searchResult * @return void - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @throws \Magento\Framework\Exception\InputException */ protected function addFilterGroupToCollection( diff --git a/app/code/Magento/Sales/Model/ResourceModel/AbstractGrid.php b/app/code/Magento/Sales/Model/ResourceModel/AbstractGrid.php index 25c15449a9fb4..444fc589748ab 100644 --- a/app/code/Magento/Sales/Model/ResourceModel/AbstractGrid.php +++ b/app/code/Magento/Sales/Model/ResourceModel/AbstractGrid.php @@ -90,7 +90,7 @@ public function purge($value, $field = null) * * @param string $default * @return string - * @deprecated 100.2.0 this method is not used in abstract model but only in single child so + * @deprecated 101.0.0 this method is not used in abstract model but only in single child so * this deprecation is a part of cleaning abstract classes. * @see \Magento\Sales\Model\ResourceModel\Provider\UpdatedIdListProvider */ diff --git a/app/code/Magento/Sales/composer.json b/app/code/Magento/Sales/composer.json index 4286fbb506a53..0c9044304536c 100644 --- a/app/code/Magento/Sales/composer.json +++ b/app/code/Magento/Sales/composer.json @@ -6,34 +6,34 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-authorization": "*", - "magento/module-backend": "*", - "magento/module-catalog": "*", - "magento/module-bundle": "*", - "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-payment": "*", - "magento/module-quote": "*", - "magento/module-reports": "*", - "magento/module-sales-rule": "*", - "magento/module-sales-sequence": "*", - "magento/module-shipping": "*", - "magento/module-store": "*", - "magento/module-tax": "*", - "magento/module-theme": "*", - "magento/module-ui": "*", - "magento/module-widget": "*", - "magento/module-wishlist": "*" + "magento/framework": "102.0.*", + "magento/module-authorization": "100.3.*", + "magento/module-backend": "101.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-bundle": "100.3.*", + "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-payment": "100.3.*", + "magento/module-quote": "101.1.*", + "magento/module-reports": "100.3.*", + "magento/module-sales-rule": "101.1.*", + "magento/module-sales-sequence": "100.3.*", + "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-widget": "101.1.*", + "magento/module-wishlist": "101.1.*" }, "suggest": { - "magento/module-sales-sample-data": "*" + "magento/module-sales-sample-data": "Sample Data version: 100.3.*" }, "type": "magento2-module", "license": [ @@ -47,5 +47,6 @@ "psr-4": { "Magento\\Sales\\": "" } - } + }, + "version": "102.0.2" } diff --git a/app/code/Magento/SalesAnalytics/composer.json b/app/code/Magento/SalesAnalytics/composer.json index b77dcd7e71c65..5f2f587a1e5f7 100644 --- a/app/code/Magento/SalesAnalytics/composer.json +++ b/app/code/Magento/SalesAnalytics/composer.json @@ -3,9 +3,9 @@ "description": "N/A", "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-sales": "*", - "magento/module-analytics": "*" + "magento/framework": "102.0.*", + "magento/module-sales": "102.0.*", + "magento/module-analytics": "100.3.*" }, "type": "magento2-module", "license": [ @@ -19,5 +19,6 @@ "psr-4": { "Magento\\SalesAnalytics\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/SalesGraphQl/composer.json b/app/code/Magento/SalesGraphQl/composer.json index 0549d31d59a24..b8cac7a884552 100644 --- a/app/code/Magento/SalesGraphQl/composer.json +++ b/app/code/Magento/SalesGraphQl/composer.json @@ -4,12 +4,12 @@ "type": "magento2-module", "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-customer-graph-ql": "*", - "magento/module-sales": "*" + "magento/framework": "102.0.*", + "magento/module-customer-graph-ql": "100.3.*", + "magento/module-sales": "102.0.*" }, "suggest": { - "magento/module-graph-ql": "*" + "magento/module-graph-ql": "100.3.*" }, "license": [ "OSL-3.0", @@ -22,5 +22,6 @@ "psr-4": { "Magento\\SalesGraphQl\\": "" } - } + }, + "version": "100.3.1" } diff --git a/app/code/Magento/SalesInventory/Model/Order/ReturnProcessor.php b/app/code/Magento/SalesInventory/Model/Order/ReturnProcessor.php index 3f2ba38fa5a55..2739226c5fb5a 100644 --- a/app/code/Magento/SalesInventory/Model/Order/ReturnProcessor.php +++ b/app/code/Magento/SalesInventory/Model/Order/ReturnProcessor.php @@ -12,6 +12,7 @@ * Class ReturnProcessor * * @api + * @since 100.0.0 */ class ReturnProcessor { @@ -68,6 +69,7 @@ public function __construct( * @param array $returnToStockItems * @param bool $isAutoReturn * @return void + * @since 100.0.0 */ public function execute( CreditmemoInterface $creditmemo, diff --git a/app/code/Magento/SalesInventory/composer.json b/app/code/Magento/SalesInventory/composer.json index d8a48bed9169a..bb970ff0945a1 100644 --- a/app/code/Magento/SalesInventory/composer.json +++ b/app/code/Magento/SalesInventory/composer.json @@ -6,11 +6,11 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-catalog": "*", - "magento/module-catalog-inventory": "*", - "magento/module-sales": "*", - "magento/module-store": "*" + "magento/framework": "102.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-catalog-inventory": "100.3.*", + "magento/module-sales": "102.0.*", + "magento/module-store": "101.0.*" }, "type": "magento2-module", "license": [ @@ -24,5 +24,6 @@ "psr-4": { "Magento\\SalesInventory\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/SalesRule/Model/CouponRepository.php b/app/code/Magento/SalesRule/Model/CouponRepository.php index 8a77c3bb0f935..4a94bdc87721c 100644 --- a/app/code/Magento/SalesRule/Model/CouponRepository.php +++ b/app/code/Magento/SalesRule/Model/CouponRepository.php @@ -198,7 +198,7 @@ public function deleteById($couponId) * * @param FilterGroup $filterGroup * @param Collection $collection - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @return void */ protected function addFilterGroupToCollection( @@ -220,7 +220,7 @@ protected function addFilterGroupToCollection( /** * Retrieve collection processor * - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @return CollectionProcessorInterface */ private function getCollectionProcessor() diff --git a/app/code/Magento/SalesRule/Model/Rule/Condition/Product/Combine.php b/app/code/Magento/SalesRule/Model/Rule/Condition/Product/Combine.php index 1649dea80ef5b..d03135e18ce4f 100644 --- a/app/code/Magento/SalesRule/Model/Rule/Condition/Product/Combine.php +++ b/app/code/Magento/SalesRule/Model/Rule/Condition/Product/Combine.php @@ -89,6 +89,7 @@ public function collectValidatedAttributes($productCollection) /** * @inheritdoc + * @since 101.0.6 */ protected function _isValid($entity) { diff --git a/app/code/Magento/SalesRule/Model/RuleRepository.php b/app/code/Magento/SalesRule/Model/RuleRepository.php index 2cff0d64dba01..2016ae0dde1c7 100644 --- a/app/code/Magento/SalesRule/Model/RuleRepository.php +++ b/app/code/Magento/SalesRule/Model/RuleRepository.php @@ -184,7 +184,7 @@ public function deleteById($id) * * @param FilterGroup $filterGroup * @param Collection $collection - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @return void */ protected function addFilterGroupToCollection( @@ -206,7 +206,7 @@ protected function addFilterGroupToCollection( /** * Retrieve collection processor * - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @return CollectionProcessorInterface */ private function getCollectionProcessor() diff --git a/app/code/Magento/SalesRule/Model/Service/CouponManagementService.php b/app/code/Magento/SalesRule/Model/Service/CouponManagementService.php index b698190997d7e..7f355a62c4631 100644 --- a/app/code/Magento/SalesRule/Model/Service/CouponManagementService.php +++ b/app/code/Magento/SalesRule/Model/Service/CouponManagementService.php @@ -19,7 +19,7 @@ class CouponManagementService implements \Magento\SalesRule\Api\CouponManagement { /** * @var \Magento\SalesRule\Model\CouponFactory - * @deprecated + * @deprecated 101.1.2 */ protected $couponFactory; @@ -30,7 +30,7 @@ class CouponManagementService implements \Magento\SalesRule\Api\CouponManagement /** * @var \Magento\SalesRule\Model\ResourceModel\Coupon\CollectionFactory - * @deprecated + * @deprecated 101.1.2 */ protected $collectionFactory; @@ -41,7 +41,7 @@ class CouponManagementService implements \Magento\SalesRule\Api\CouponManagement /** * @var \Magento\SalesRule\Model\Spi\CouponResourceInterface - * @deprecated + * @deprecated 101.1.2 */ protected $resourceModel; diff --git a/app/code/Magento/SalesRule/composer.json b/app/code/Magento/SalesRule/composer.json index bb51ef8dca685..53d976ba188f6 100644 --- a/app/code/Magento/SalesRule/composer.json +++ b/app/code/Magento/SalesRule/composer.json @@ -6,29 +6,29 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-catalog": "*", - "magento/module-catalog-rule": "*", - "magento/module-config": "*", - "magento/module-customer": "*", - "magento/module-directory": "*", - "magento/module-eav": "*", - "magento/module-payment": "*", - "magento/module-quote": "*", - "magento/module-reports": "*", - "magento/module-rule": "*", - "magento/module-sales": "*", - "magento/module-shipping": "*", - "magento/module-store": "*", - "magento/module-ui": "*", - "magento/module-widget": "*", - "magento/module-captcha": "*", - "magento/module-checkout": "*", - "magento/module-authorization": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-catalog-rule": "101.1.*", + "magento/module-config": "101.1.*", + "magento/module-customer": "102.0.*", + "magento/module-directory": "100.3.*", + "magento/module-eav": "102.0.*", + "magento/module-payment": "100.3.*", + "magento/module-quote": "101.1.*", + "magento/module-reports": "100.3.*", + "magento/module-rule": "100.3.*", + "magento/module-sales": "102.0.*", + "magento/module-shipping": "100.3.*", + "magento/module-store": "101.0.*", + "magento/module-ui": "101.1.*", + "magento/module-widget": "101.1.*", + "magento/module-captcha": "100.3.*", + "magento/module-checkout": "100.3.*", + "magento/module-authorization": "100.3.*" }, "suggest": { - "magento/module-sales-rule-sample-data": "*" + "magento/module-sales-rule-sample-data": "Sample Data version: 100.3.*" }, "type": "magento2-module", "license": [ @@ -42,5 +42,6 @@ "psr-4": { "Magento\\SalesRule\\": "" } - } + }, + "version": "101.1.2" } diff --git a/app/code/Magento/SalesSequence/composer.json b/app/code/Magento/SalesSequence/composer.json index 3865d9569c529..8f638d063db9c 100644 --- a/app/code/Magento/SalesSequence/composer.json +++ b/app/code/Magento/SalesSequence/composer.json @@ -6,7 +6,7 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*" + "magento/framework": "102.0.*" }, "type": "magento2-module", "license": [ @@ -20,5 +20,6 @@ "psr-4": { "Magento\\SalesSequence\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/SampleData/composer.json b/app/code/Magento/SampleData/composer.json index 17bb4d03dd55e..ead7a869c5c67 100644 --- a/app/code/Magento/SampleData/composer.json +++ b/app/code/Magento/SampleData/composer.json @@ -6,10 +6,10 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*" + "magento/framework": "102.0.*" }, "suggest": { - "magento/sample-data-media": "*" + "magento/sample-data-media": "Sample Data version: 100.3.*" }, "type": "magento2-module", "license": [ @@ -24,5 +24,6 @@ "psr-4": { "Magento\\SampleData\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Search/Model/AdapterFactory.php b/app/code/Magento/Search/Model/AdapterFactory.php index 917603ce57dc3..f6d2013bd4886 100644 --- a/app/code/Magento/Search/Model/AdapterFactory.php +++ b/app/code/Magento/Search/Model/AdapterFactory.php @@ -17,7 +17,7 @@ class AdapterFactory * Scope configuration * * @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; @@ -32,13 +32,13 @@ class AdapterFactory * Config path * * @var string - * @deprecated since it is not used anymore + * @deprecated 101.0.0 since it is not used anymore */ protected $path; /** * Config Scope - * @deprecated since it is not used anymore + * @deprecated 101.0.0 since it is not used anymore */ protected $scope; diff --git a/app/code/Magento/Search/Model/Search/PageSizeProvider.php b/app/code/Magento/Search/Model/Search/PageSizeProvider.php index 5572bac6addc3..ae2a8ca954d63 100644 --- a/app/code/Magento/Search/Model/Search/PageSizeProvider.php +++ b/app/code/Magento/Search/Model/Search/PageSizeProvider.php @@ -10,6 +10,7 @@ /** * Returns max page size by search engine name * @api + * @since 101.0.0 */ class PageSizeProvider { @@ -39,6 +40,7 @@ public function __construct( * Returns max_page_size depends on engine * * @return integer + * @since 101.0.0 */ public function getMaxPageSize() : int { diff --git a/app/code/Magento/Search/Ui/Component/Listing/Column/SynonymActions.php b/app/code/Magento/Search/Ui/Component/Listing/Column/SynonymActions.php index 8cc9b809ff888..757a653614b32 100644 --- a/app/code/Magento/Search/Ui/Component/Listing/Column/SynonymActions.php +++ b/app/code/Magento/Search/Ui/Component/Listing/Column/SynonymActions.php @@ -62,12 +62,15 @@ public function prepareDataSource(array $dataSource) 'label' => __('Delete'), 'confirm' => [ 'title' => __('Delete'), - 'message' => __('Are you sure you want to delete synonym group with id: %1?', $item['group_id']) - ] + 'message' => __('Are you sure you want to delete synonym group with id: %1?', $item['group_id']), + '__disableTmpl' => true, + ], + '__disableTmpl' => true, ]; $item[$name]['edit'] = [ 'href' => $this->urlBuilder->getUrl(self::SYNONYM_URL_PATH_EDIT, ['group_id' => $item['group_id']]), 'label' => __('View/Edit'), + '__disableTmpl' => true, ]; } } diff --git a/app/code/Magento/Search/composer.json b/app/code/Magento/Search/composer.json index 067d1bf2f7dfd..1455997926721 100644 --- a/app/code/Magento/Search/composer.json +++ b/app/code/Magento/Search/composer.json @@ -6,12 +6,12 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-catalog-search": "*", - "magento/module-reports": "*", - "magento/module-store": "*", - "magento/module-ui": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-catalog-search": "101.0.*", + "magento/module-reports": "100.3.*", + "magento/module-store": "101.0.*", + "magento/module-ui": "101.1.*" }, "type": "magento2-module", "license": [ @@ -25,5 +25,6 @@ "psr-4": { "Magento\\Search\\": "" } - } + }, + "version": "101.0.2-p2" } diff --git a/app/code/Magento/Security/Test/Mftf/Data/SecurityConfigData.xml b/app/code/Magento/Security/Test/Mftf/Data/SecurityConfigData.xml new file mode 100644 index 0000000000000..20bf6332d52eb --- /dev/null +++ b/app/code/Magento/Security/Test/Mftf/Data/SecurityConfigData.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<entities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:DataGenerator/etc/dataProfileSchema.xsd"> + <entity name="DefaultCustomerPasswordFrequencyConfigData"> + <data key="path">customer/password/min_time_between_password_reset_requests</data> + <data key="value">10</data> + </entity> + <entity name="CustomerPasswordFrequency1MinuteConfigData"> + <data key="path">customer/password/min_time_between_password_reset_requests</data> + <data key="value">1</data> + </entity> + <entity name="CustomerPasswordFrequencyDisableConfigData"> + <data key="path">customer/password/min_time_between_password_reset_requests</data> + <data key="value">0</data> + </entity> +</entities> diff --git a/app/code/Magento/Security/Test/Mftf/Test/StorefrontCustomerForgotPasswordTest.xml b/app/code/Magento/Security/Test/Mftf/Test/StorefrontCustomerForgotPasswordTest.xml new file mode 100644 index 0000000000000..6c930ef458827 --- /dev/null +++ b/app/code/Magento/Security/Test/Mftf/Test/StorefrontCustomerForgotPasswordTest.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> + <test name="StorefrontCustomerForgotPasswordTest"> + <before> + <magentoCLI command="config:set {{CustomerPasswordFrequencyDisableConfigData.path}} {{CustomerPasswordFrequencyDisableConfigData.value}}" after="disableCaptcha" stepKey="disablePasswordResetFrequency"/> + </before> + <after> + <magentoCLI command="config:set {{DefaultCustomerPasswordFrequencyConfigData.path}} {{DefaultCustomerPasswordFrequencyConfigData.value}}" after="enableCaptcha" stepKey="resetPasswordResetFrequency"/> + </after> + </test> +</tests> diff --git a/app/code/Magento/Security/Test/Mftf/Test/StorefrontResetCustomerPasswordFailedTest.xml b/app/code/Magento/Security/Test/Mftf/Test/StorefrontResetCustomerPasswordFailedTest.xml new file mode 100644 index 0000000000000..70fd13cb6ffcf --- /dev/null +++ b/app/code/Magento/Security/Test/Mftf/Test/StorefrontResetCustomerPasswordFailedTest.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> + <test name="StorefrontResetCustomerPasswordFailedTest"> + <before> + <magentoCLI command="config:set {{CustomerPasswordFrequency1MinuteConfigData.path}} {{CustomerPasswordFrequency1MinuteConfigData.value}}" stepKey="setPasswordResetFrequency"/> + </before> + <after> + <magentoCLI command="config:set {{DefaultCustomerPasswordFrequencyConfigData.path}} {{DefaultCustomerPasswordFrequencyConfigData.value}}" stepKey="resetPasswordResetFrequency"/> + </after> + </test> +</tests> diff --git a/app/code/Magento/Security/composer.json b/app/code/Magento/Security/composer.json index 405b5b518097d..1cbed4ad09c6c 100644 --- a/app/code/Magento/Security/composer.json +++ b/app/code/Magento/Security/composer.json @@ -6,13 +6,13 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-store": "*", - "magento/module-user": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-store": "101.0.*", + "magento/module-user": "101.1.*" }, "suggest": { - "magento/module-customer": "*" + "magento/module-customer": "102.0.*" }, "type": "magento2-module", "license": [ @@ -26,5 +26,6 @@ "psr-4": { "Magento\\Security\\": "" } - } + }, + "version": "100.3.2-p2" } diff --git a/app/code/Magento/SendFriend/Block/Send.php b/app/code/Magento/SendFriend/Block/Send.php index 1c4b550361359..6f2154ba29f47 100644 --- a/app/code/Magento/SendFriend/Block/Send.php +++ b/app/code/Magento/SendFriend/Block/Send.php @@ -228,6 +228,7 @@ public function canSend() /** * @inheritdoc + * @since 100.3.1 */ protected function _prepareLayout() { diff --git a/app/code/Magento/SendFriend/composer.json b/app/code/Magento/SendFriend/composer.json index 932093004cf7a..17492d7a1ba1c 100644 --- a/app/code/Magento/SendFriend/composer.json +++ b/app/code/Magento/SendFriend/composer.json @@ -6,12 +6,12 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-catalog": "*", - "magento/module-customer": "*", - "magento/module-store": "*", - "magento/module-captcha": "*", - "magento/module-authorization": "*" + "magento/framework": "102.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-customer": "102.0.*", + "magento/module-store": "101.0.*", + "magento/module-captcha": "100.3.*", + "magento/module-authorization": "100.3.*" }, "type": "magento2-module", "license": [ @@ -25,5 +25,6 @@ "psr-4": { "Magento\\SendFriend\\": "" } - } + }, + "version": "100.3.2-p2" } diff --git a/app/code/Magento/SendFriend/etc/adminhtml/system.xml b/app/code/Magento/SendFriend/etc/adminhtml/system.xml index 785b7a8bb40c8..5cace4bcf92db 100644 --- a/app/code/Magento/SendFriend/etc/adminhtml/system.xml +++ b/app/code/Magento/SendFriend/etc/adminhtml/system.xml @@ -13,8 +13,11 @@ <resource>Magento_Config::sendfriend</resource> <group id="email" translate="label" type="text" sortOrder="1" showInDefault="1" showInWebsite="1" showInStore="1"> <label>Email Templates</label> - <field id="enabled" translate="label" type="select" sortOrder="1" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1"> + <field id="enabled" translate="label comment" type="select" sortOrder="1" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1"> <label>Enabled</label> + <comment> + <![CDATA[We strongly recommend to enable a <a href="https://devdocs.magento.com/guides/v2.3/security/google-recaptcha.html" target="_blank">CAPTCHA solution</a> alongside enabling "Email to a Friend" to ensure abuse of this feature does not occur.]]> + </comment> <source_model>Magento\Config\Model\Config\Source\Yesno</source_model> </field> <field id="template" translate="label comment" type="select" sortOrder="2" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1"> diff --git a/app/code/Magento/SendFriend/etc/config.xml b/app/code/Magento/SendFriend/etc/config.xml index d65e5a4a073dd..6239a4da591e2 100644 --- a/app/code/Magento/SendFriend/etc/config.xml +++ b/app/code/Magento/SendFriend/etc/config.xml @@ -9,7 +9,7 @@ <default> <sendfriend> <email> - <enabled>1</enabled> + <enabled>0</enabled> <template>sendfriend_email_template</template> <allow_guest>0</allow_guest> <max_recipients>5</max_recipients> diff --git a/app/code/Magento/SendFriend/i18n/en_US.csv b/app/code/Magento/SendFriend/i18n/en_US.csv index eee540c89a7b0..8d5b596fe1ca6 100644 --- a/app/code/Magento/SendFriend/i18n/en_US.csv +++ b/app/code/Magento/SendFriend/i18n/en_US.csv @@ -45,3 +45,4 @@ Enabled,Enabled "Max Recipients","Max Recipients" "Max Products Sent in 1 Hour","Max Products Sent in 1 Hour" "Limit Sending By","Limit Sending By" +"We strongly recommend to enable a <a href=""https://devdocs.magento.com/guides/v2.3/security/google-recaptcha.html"" target="_blank">CAPTCHA solution</a> alongside enabling ""Email to a Friend"" to ensure abuse of this feature does not occur.","We strongly recommend to enable a <a href=""https://devdocs.magento.com/guides/v2.3/security/google-recaptcha.html"" target="_blank">CAPTCHA solution</a> alongside enabling ""Email to a Friend"" to ensure abuse of this feature does not occur." diff --git a/app/code/Magento/SendFriendGraphQl/composer.json b/app/code/Magento/SendFriendGraphQl/composer.json index d401f57b2257a..15e0219053bf6 100644 --- a/app/code/Magento/SendFriendGraphQl/composer.json +++ b/app/code/Magento/SendFriendGraphQl/composer.json @@ -4,12 +4,12 @@ "type": "magento2-module", "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-catalog": "*", - "magento/module-send-friend": "*" + "magento/framework": "102.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-send-friend": "100.3.*" }, "suggest": { - "magento/module-graph-ql": "*" + "magento/module-graph-ql": "100.3.*" }, "license": [ "OSL-3.0", @@ -22,5 +22,6 @@ "psr-4": { "Magento\\SendFriendGraphQl\\": "" } - } + }, + "version": "100.3.1" } diff --git a/app/code/Magento/Shipping/Model/Carrier/AbstractCarrier.php b/app/code/Magento/Shipping/Model/Carrier/AbstractCarrier.php index 76555ce8a6d8c..0965c4a472c25 100644 --- a/app/code/Magento/Shipping/Model/Carrier/AbstractCarrier.php +++ b/app/code/Magento/Shipping/Model/Carrier/AbstractCarrier.php @@ -332,6 +332,7 @@ public function checkAvailableShipCountries(\Magento\Framework\DataObject $reque * @param \Magento\Framework\DataObject $request * @return $this|bool|\Magento\Framework\DataObject * @SuppressWarnings(PHPMD.UnusedFormalParameter) + * @since 100.2.6 */ public function processAdditionalValidation(\Magento\Framework\DataObject $request) { @@ -343,7 +344,7 @@ public function processAdditionalValidation(\Magento\Framework\DataObject $reque * * @param \Magento\Framework\DataObject $request * @return $this|bool|\Magento\Framework\DataObject - * @deprecated + * @deprecated 100.2.6 * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function proccessAdditionalValidation(\Magento\Framework\DataObject $request) diff --git a/app/code/Magento/Shipping/Model/Carrier/AbstractCarrierOnline.php b/app/code/Magento/Shipping/Model/Carrier/AbstractCarrierOnline.php index 27047ae46bf1f..c2238ff1a3809 100644 --- a/app/code/Magento/Shipping/Model/Carrier/AbstractCarrierOnline.php +++ b/app/code/Magento/Shipping/Model/Carrier/AbstractCarrierOnline.php @@ -303,7 +303,7 @@ public function getAllItems(RateRequest $request) * * @param \Magento\Framework\DataObject $request * @return $this|bool|\Magento\Framework\DataObject - * @deprecated + * @deprecated 100.2.6 * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) */ @@ -319,6 +319,7 @@ public function proccessAdditionalValidation(\Magento\Framework\DataObject $requ * @return $this|bool|\Magento\Framework\DataObject * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) + * @since 100.2.6 */ public function processAdditionalValidation(\Magento\Framework\DataObject $request) { diff --git a/app/code/Magento/Shipping/Model/ShipmentProviderInterface.php b/app/code/Magento/Shipping/Model/ShipmentProviderInterface.php index 4ff9ba0008340..546afdca5028b 100644 --- a/app/code/Magento/Shipping/Model/ShipmentProviderInterface.php +++ b/app/code/Magento/Shipping/Model/ShipmentProviderInterface.php @@ -11,6 +11,7 @@ * Provide shipment items data. * * @api + * @since 100.3.0 */ interface ShipmentProviderInterface { @@ -18,6 +19,7 @@ interface ShipmentProviderInterface * Retrieve shipment items. * * @return array + * @since 100.3.0 */ public function getShipmentData(): array; } diff --git a/app/code/Magento/Shipping/composer.json b/app/code/Magento/Shipping/composer.json index b29a2fd537e96..0dd4db51f7895 100644 --- a/app/code/Magento/Shipping/composer.json +++ b/app/code/Magento/Shipping/composer.json @@ -7,25 +7,25 @@ "require": { "php": "~7.1.3||~7.2.0", "ext-gd": "*", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-catalog": "*", - "magento/module-catalog-inventory": "*", - "magento/module-contact": "*", - "magento/module-customer": "*", - "magento/module-directory": "*", - "magento/module-payment": "*", - "magento/module-quote": "*", - "magento/module-sales": "*", - "magento/module-store": "*", - "magento/module-tax": "*", - "magento/module-ui": "*", - "magento/module-user": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-catalog-inventory": "100.3.*", + "magento/module-contact": "100.3.*", + "magento/module-customer": "102.0.*", + "magento/module-directory": "100.3.*", + "magento/module-payment": "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.*", + "magento/module-user": "101.1.*" }, "suggest": { - "magento/module-fedex": "*", - "magento/module-ups": "*", - "magento/module-config": "*" + "magento/module-fedex": "100.3.*", + "magento/module-ups": "100.3.*", + "magento/module-config": "101.1.*" }, "type": "magento2-module", "license": [ @@ -39,5 +39,6 @@ "psr-4": { "Magento\\Shipping\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Signifyd/composer.json b/app/code/Magento/Signifyd/composer.json index 992a74d0dc3ec..eeef6b0072a9c 100644 --- a/app/code/Magento/Signifyd/composer.json +++ b/app/code/Magento/Signifyd/composer.json @@ -5,19 +5,19 @@ "sort-packages": true }, "require": { - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-checkout": "*", - "magento/module-config": "*", - "magento/module-customer": "*", - "magento/module-directory": "*", - "magento/module-payment": "*", - "magento/module-sales": "*", - "magento/module-store": "*", + "magento/framework": "102.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-payment": "100.3.*", + "magento/module-sales": "102.0.*", + "magento/module-store": "101.0.*", "php": "~7.1.3||~7.2.0" }, "suggest": { - "magento/module-config": "*" + "magento/module-config": "101.1.*" }, "type": "magento2-module", "license": [ @@ -31,5 +31,6 @@ "psr-4": { "Magento\\Signifyd\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Sitemap/Block/Robots.php b/app/code/Magento/Sitemap/Block/Robots.php index ac99b2ab1cd4a..2beb31bd06570 100644 --- a/app/code/Magento/Sitemap/Block/Robots.php +++ b/app/code/Magento/Sitemap/Block/Robots.php @@ -18,7 +18,7 @@ * Prepares sitemap links to add to the robots.txt file * * @api - * @since 100.2.0 + * @since 100.1.5 */ class Robots extends AbstractBlock implements IdentityInterface { @@ -70,7 +70,7 @@ public function __construct( * and adds links for this sitemap files into result data. * * @return string - * @since 100.2.0 + * @since 100.1.5 */ protected function _toHtml() { @@ -102,7 +102,7 @@ protected function _toHtml() * * @param int[] $storeIds * @return array - * @since 100.2.0 + * @since 100.1.5 */ protected function getSitemapLinks(array $storeIds) { @@ -128,7 +128,7 @@ protected function getSitemapLinks(array $storeIds) * Get unique page cache identities * * @return array - * @since 100.2.0 + * @since 100.1.5 */ public function getIdentities() { diff --git a/app/code/Magento/Sitemap/Helper/Data.php b/app/code/Magento/Sitemap/Helper/Data.php index 44661bbef888e..118aeff28a14f 100644 --- a/app/code/Magento/Sitemap/Helper/Data.php +++ b/app/code/Magento/Sitemap/Helper/Data.php @@ -12,7 +12,7 @@ use Magento\Store\Model\ScopeInterface; /** - * @deprecated + * @deprecated 100.3.0 */ class Data extends \Magento\Framework\App\Helper\AbstractHelper { @@ -70,7 +70,7 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper * * @param int $storeId * @return int - * @deprecated + * @deprecated 100.3.0 * @see SitemapConfigReader::getMaximumLinesNumber() */ public function getMaximumLinesNumber($storeId) @@ -87,7 +87,7 @@ public function getMaximumLinesNumber($storeId) * * @param int $storeId * @return int - * @deprecated + * @deprecated 100.3.0 * @see SitemapConfigReader::getMaximumFileSize() */ public function getMaximumFileSize($storeId) @@ -104,7 +104,7 @@ public function getMaximumFileSize($storeId) * * @param int $storeId * @return string - * @deprecated + * @deprecated 100.3.0 * @see CategoryConfigReader::getChangeFrequency() */ public function getCategoryChangefreq($storeId) @@ -121,7 +121,7 @@ public function getCategoryChangefreq($storeId) * * @param int $storeId * @return string - * @deprecated + * @deprecated 100.3.0 * @see ProductConfigReader::getChangeFrequency() */ public function getProductChangefreq($storeId) @@ -138,7 +138,7 @@ public function getProductChangefreq($storeId) * * @param int $storeId * @return string - * @deprecated + * @deprecated 100.3.0 * @see CmsPageConfigReader::getChangeFrequency() */ public function getPageChangefreq($storeId) @@ -155,7 +155,7 @@ public function getPageChangefreq($storeId) * * @param int $storeId * @return string - * @deprecated + * @deprecated 100.3.0 * @see CategoryConfigReader::getPriority() */ public function getCategoryPriority($storeId) @@ -172,7 +172,7 @@ public function getCategoryPriority($storeId) * * @param int $storeId * @return string - * @deprecated + * @deprecated 100.3.0 * @see ProductConfigReader::getPriority() */ public function getProductPriority($storeId) @@ -189,7 +189,7 @@ public function getProductPriority($storeId) * * @param int $storeId * @return string - * @deprecated + * @deprecated 100.3.0 * @see CmsPageConfigReader::getPriority() */ public function getPagePriority($storeId) @@ -206,7 +206,7 @@ public function getPagePriority($storeId) * * @param int $storeId * @return int - * @deprecated + * @deprecated 100.3.0 * @see SitemapConfigReader::getEnableSubmissionRobots() */ public function getEnableSubmissionRobots($storeId) @@ -223,7 +223,7 @@ public function getEnableSubmissionRobots($storeId) * * @param int $storeId * @return string - * @deprecated + * @deprecated 100.3.0 * @see SitemapConfigReader::getProductImageIncludePolicy() */ public function getProductImageIncludePolicy($storeId) @@ -239,7 +239,7 @@ public function getProductImageIncludePolicy($storeId) * Get list valid paths for generate a sitemap XML file * * @return string[] - * @deprecated + * @deprecated 100.3.0 * @see SitemapConfigReader::getValidPaths() */ public function getValidPaths() diff --git a/app/code/Magento/Sitemap/Model/ItemProvider/ConfigReaderInterface.php b/app/code/Magento/Sitemap/Model/ItemProvider/ConfigReaderInterface.php index 1e8b545728a04..6c8ff087aeb60 100644 --- a/app/code/Magento/Sitemap/Model/ItemProvider/ConfigReaderInterface.php +++ b/app/code/Magento/Sitemap/Model/ItemProvider/ConfigReaderInterface.php @@ -10,6 +10,7 @@ * Item resolver config reader interface * * @api + * @since 100.3.0 */ interface ConfigReaderInterface { @@ -18,6 +19,7 @@ interface ConfigReaderInterface * * @param int $storeId * @return string + * @since 100.3.0 */ public function getPriority($storeId); @@ -26,6 +28,7 @@ public function getPriority($storeId); * * @param int $storeId * @return string + * @since 100.3.0 */ public function getChangeFrequency($storeId); } diff --git a/app/code/Magento/Sitemap/Model/ItemProvider/ItemProviderInterface.php b/app/code/Magento/Sitemap/Model/ItemProvider/ItemProviderInterface.php index 89ad2afdd01a2..da56f86b7237c 100644 --- a/app/code/Magento/Sitemap/Model/ItemProvider/ItemProviderInterface.php +++ b/app/code/Magento/Sitemap/Model/ItemProvider/ItemProviderInterface.php @@ -11,6 +11,7 @@ * Sitemap item provider interface * * @api + * @since 100.3.0 */ interface ItemProviderInterface { @@ -19,6 +20,7 @@ interface ItemProviderInterface * * @param int $storeId * @return SitemapItemInterface[] + * @since 100.3.0 */ public function getItems($storeId); } diff --git a/app/code/Magento/Sitemap/Model/ResourceModel/Catalog/Product.php b/app/code/Magento/Sitemap/Model/ResourceModel/Catalog/Product.php index 1419fa375a117..cea8c752b11ea 100644 --- a/app/code/Magento/Sitemap/Model/ResourceModel/Catalog/Product.php +++ b/app/code/Magento/Sitemap/Model/ResourceModel/Catalog/Product.php @@ -474,6 +474,7 @@ protected function _getMediaConfig() * * @param \Magento\Framework\DB\Select $select * @return \Magento\Framework\DB\Select + * @since 100.2.1 */ public function prepareSelectStatement(\Magento\Framework\DB\Select $select) { diff --git a/app/code/Magento/Sitemap/Model/ResourceModel/Cms/Page.php b/app/code/Magento/Sitemap/Model/ResourceModel/Cms/Page.php index 01addd0c19666..92cbcbd500e8a 100644 --- a/app/code/Magento/Sitemap/Model/ResourceModel/Cms/Page.php +++ b/app/code/Magento/Sitemap/Model/ResourceModel/Cms/Page.php @@ -38,7 +38,6 @@ class Page extends AbstractDb /** * @var GetUtilityPageIdentifiersInterface - * @since 100.2.0 */ private $getUtilityPageIdentifiers; diff --git a/app/code/Magento/Sitemap/Model/Sitemap.php b/app/code/Magento/Sitemap/Model/Sitemap.php index 2685bf59fcd0b..ee711d2103310 100644 --- a/app/code/Magento/Sitemap/Model/Sitemap.php +++ b/app/code/Magento/Sitemap/Model/Sitemap.php @@ -159,7 +159,7 @@ class Sitemap extends \Magento\Framework\Model\AbstractModel implements \Magento /** * @inheritdoc * - * @since 100.2.0 + * @since 100.1.5 */ protected $_cacheTag = [Value::CACHE_TAG]; @@ -285,8 +285,9 @@ protected function _getStream() * * @param DataObject $sitemapItem * @return $this - * @deprecated 100.2.0 + * @deprecated 100.3.0 * @see ItemProviderInterface + * @since 100.2.0 */ public function addSitemapItem(DataObject $sitemapItem) { @@ -299,8 +300,9 @@ public function addSitemapItem(DataObject $sitemapItem) * Collect all sitemap items * * @return void - * @deprecated 100.2.0 + * @deprecated 100.3.0 * @see ItemProviderInterface + * @since 100.2.0 */ public function collectSitemapItems() { @@ -692,7 +694,7 @@ protected function _getUrl($url, $type = UrlInterface::URL_TYPE_LINK) * * @param string $url * @return string - * @deprecated No longer used, as we're generating product image URLs inside collection instead + * @deprecated 100.2.0 No longer used, as we're generating product image URLs inside collection instead * @see \Magento\Sitemap\Model\ResourceModel\Catalog\Product::_loadProductImages() */ protected function _getMediaUrl($url) @@ -771,7 +773,7 @@ public function getSitemapUrl($sitemapPath, $sitemapFileName) * Check is enabled submission to robots.txt * * @return bool - * @deprecated Because the robots.txt file is not generated anymore, + * @deprecated 100.1.5 Because the robots.txt file is not generated anymore, * this method is not needed and will be removed in major release. */ protected function _isEnabledSubmissionRobots() @@ -785,7 +787,7 @@ protected function _isEnabledSubmissionRobots() * * @param string $sitemapFileName * @return void - * @deprecated Because the robots.txt file is not generated anymore, + * @deprecated 100.1.5 Because the robots.txt file is not generated anymore, * this method is not needed and will be removed in major release. */ protected function _addSitemapToRobotsTxt($sitemapFileName) @@ -853,7 +855,7 @@ private function mapToSitemapItem() * Get unique page cache identities * * @return array - * @since 100.2.0 + * @since 100.1.5 */ public function getIdentities() { diff --git a/app/code/Magento/Sitemap/Model/SitemapConfigReaderInterface.php b/app/code/Magento/Sitemap/Model/SitemapConfigReaderInterface.php index f094b8856ab14..f11b54c5842f8 100644 --- a/app/code/Magento/Sitemap/Model/SitemapConfigReaderInterface.php +++ b/app/code/Magento/Sitemap/Model/SitemapConfigReaderInterface.php @@ -10,6 +10,7 @@ * Sitemap config reader interface * * @api + * @since 100.3.0 */ interface SitemapConfigReaderInterface { @@ -18,6 +19,7 @@ interface SitemapConfigReaderInterface * * @param int $storeId * @return int + * @since 100.3.0 */ public function getEnableSubmissionRobots($storeId); @@ -26,6 +28,7 @@ public function getEnableSubmissionRobots($storeId); * * @param int $storeId * @return int + * @since 100.3.0 */ public function getMaximumFileSize($storeId); @@ -34,6 +37,7 @@ public function getMaximumFileSize($storeId); * * @param int $storeId * @return int + * @since 100.3.0 */ public function getMaximumLinesNumber($storeId); @@ -42,6 +46,7 @@ public function getMaximumLinesNumber($storeId); * * @param int $storeId * @return string + * @since 100.3.0 */ public function getProductImageIncludePolicy($storeId); @@ -49,6 +54,7 @@ public function getProductImageIncludePolicy($storeId); * Get list valid paths for generate a sitemap XML file * * @return string[] + * @since 100.3.0 */ public function getValidPaths(); } diff --git a/app/code/Magento/Sitemap/Model/SitemapItemInterface.php b/app/code/Magento/Sitemap/Model/SitemapItemInterface.php index afd95768a2c84..94f19c5726b13 100644 --- a/app/code/Magento/Sitemap/Model/SitemapItemInterface.php +++ b/app/code/Magento/Sitemap/Model/SitemapItemInterface.php @@ -10,6 +10,7 @@ * Representation of sitemap item * * @api + * @since 100.3.0 */ interface SitemapItemInterface { @@ -18,6 +19,7 @@ interface SitemapItemInterface * Get url * * @return string + * @since 100.3.0 */ public function getUrl(); @@ -25,6 +27,7 @@ public function getUrl(); * Get priority * * @return string + * @since 100.3.0 */ public function getPriority(); @@ -32,6 +35,7 @@ public function getPriority(); * Get change frequency * * @return string + * @since 100.3.0 */ public function getChangeFrequency(); @@ -39,6 +43,7 @@ public function getChangeFrequency(); * Get images * * @return array|null + * @since 100.3.0 */ public function getImages(); @@ -46,6 +51,7 @@ public function getImages(); * Get last update date * * @return string|null + * @since 100.3.0 */ public function getUpdatedAt(); } diff --git a/app/code/Magento/Sitemap/composer.json b/app/code/Magento/Sitemap/composer.json index f537832bdc3de..e7392113aac9e 100644 --- a/app/code/Magento/Sitemap/composer.json +++ b/app/code/Magento/Sitemap/composer.json @@ -6,19 +6,19 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-catalog": "*", - "magento/module-catalog-url-rewrite": "*", - "magento/module-cms": "*", - "magento/module-config": "*", - "magento/module-eav": "*", - "magento/module-media-storage": "*", - "magento/module-robots": "*", - "magento/module-store": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-catalog-url-rewrite": "100.3.*", + "magento/module-cms": "103.0.*", + "magento/module-config": "101.1.*", + "magento/module-eav": "102.0.*", + "magento/module-media-storage": "100.3.*", + "magento/module-robots": "101.0.*", + "magento/module-store": "101.0.*" }, "suggest": { - "magento/module-config": "*" + "magento/module-config": "101.1.*" }, "type": "magento2-module", "license": [ @@ -32,5 +32,6 @@ "psr-4": { "Magento\\Sitemap\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Store/Api/Data/StoreInterface.php b/app/code/Magento/Store/Api/Data/StoreInterface.php index 0f724a23fc096..527a7038e261a 100644 --- a/app/code/Magento/Store/Api/Data/StoreInterface.php +++ b/app/code/Magento/Store/Api/Data/StoreInterface.php @@ -69,11 +69,13 @@ public function getStoreGroupId(); /** * @param int $isActive * @return $this + * @since 101.0.0 */ public function setIsActive($isActive); /** * @return int + * @since 101.0.0 */ public function getIsActive(); diff --git a/app/code/Magento/Store/Api/StoreResolverInterface.php b/app/code/Magento/Store/Api/StoreResolverInterface.php index 7c32e321fa6c4..d03d68d213135 100644 --- a/app/code/Magento/Store/Api/StoreResolverInterface.php +++ b/app/code/Magento/Store/Api/StoreResolverInterface.php @@ -8,7 +8,7 @@ /** * Store resolver interface * - * @deprecated + * @deprecated 101.0.0 * @see \Magento\Store\Model\StoreManagerInterface */ interface StoreResolverInterface diff --git a/app/code/Magento/Store/Controller/Store/SwitchAction.php b/app/code/Magento/Store/Controller/Store/SwitchAction.php index de721869c5aba..c331d06dae373 100644 --- a/app/code/Magento/Store/Controller/Store/SwitchAction.php +++ b/app/code/Magento/Store/Controller/Store/SwitchAction.php @@ -33,7 +33,7 @@ class SwitchAction extends Action /** * @var HttpContext - * @deprecated + * @deprecated 100.2.5 */ protected $httpContext; @@ -44,7 +44,7 @@ class SwitchAction extends Action /** * @var StoreManagerInterface - * @deprecated + * @deprecated 100.2.5 */ protected $storeManager; diff --git a/app/code/Magento/Store/Controller/Store/SwitchRequest.php b/app/code/Magento/Store/Controller/Store/SwitchRequest.php new file mode 100644 index 0000000000000..9ce151bdab094 --- /dev/null +++ b/app/code/Magento/Store/Controller/Store/SwitchRequest.php @@ -0,0 +1,111 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +namespace Magento\Store\Controller\Store; + +use Magento\Framework\App\Action\Context; +use Magento\Framework\App\Action\HttpGetActionInterface; +use Magento\Framework\Exception\NoSuchEntityException; +use Magento\Customer\Model\Session as CustomerSession; +use Magento\Store\Model\StoreSwitcher\HashGenerator; +use Magento\Customer\Api\CustomerRepositoryInterface; +use \Magento\Framework\Exception\LocalizedException; +use Magento\Framework\Url\DecoderInterface; +use \Magento\Framework\App\ActionInterface; +use Magento\Store\Model\StoreSwitcher\HashGenerator\HashData; + +/** + * Builds correct url to target store and performs redirect. + */ +class SwitchRequest extends \Magento\Framework\App\Action\Action implements HttpGetActionInterface +{ + + /** + * @var customerSession + */ + private $customerSession; + + /** + * @var CustomerRepositoryInterface + */ + private $customerRepository; + + /** + * @var HashGenerator + */ + private $hashGenerator; + + /** + * @var DecoderInterface + */ + private $urlDecoder; + + /** + * @param Context $context + * @param CustomerSession $session + * @param CustomerRepositoryInterface $customerRepository + * @param HashGenerator $hashGenerator + * @param DecoderInterface $urlDecoder + */ + public function __construct( + Context $context, + CustomerSession $session, + CustomerRepositoryInterface $customerRepository, + HashGenerator $hashGenerator, + DecoderInterface $urlDecoder + ) { + parent::__construct($context); + $this->customerSession = $session; + $this->customerRepository = $customerRepository; + $this->hashGenerator = $hashGenerator; + $this->urlDecoder = $urlDecoder; + } + + /** + * Execute action + * + * @return void + */ + public function execute() + { + $fromStoreCode = (string)$this->_request->getParam('___from_store'); + $customerId = (int)$this->_request->getParam('customer_id'); + $timeStamp = (string)$this->_request->getParam('time_stamp'); + $signature = (string)$this->_request->getParam('signature'); + $error = null; + $encodedUrl = (string)$this->_request->getParam(ActionInterface::PARAM_NAME_URL_ENCODED); + $targetUrl = $this->urlDecoder->decode($encodedUrl); + + $data = new HashData( + [ + "customer_id" => $customerId, + "time_stamp" => $timeStamp, + "___from_store" => $fromStoreCode + ] + ); + + if ($targetUrl && $this->hashGenerator->validateHash($signature, $data)) { + try { + $customer = $this->customerRepository->getById($customerId); + if (!$this->customerSession->isLoggedIn()) { + $this->customerSession->setCustomerDataAsLoggedIn($customer); + } + $this->getResponse()->setRedirect($targetUrl); + } catch (NoSuchEntityException $e) { + $error = __('The requested customer does not exist.'); + } catch (LocalizedException $e) { + $error = __('There was an error retrieving the customer record.'); + } + } else { + $error = __('The requested store cannot be found. Please check the request and try again.'); + } + + if ($error !== null) { + $this->messageManager->addErrorMessage($error); + } + } +} diff --git a/app/code/Magento/Store/Model/Config/Importer/Processor/Create.php b/app/code/Magento/Store/Model/Config/Importer/Processor/Create.php index 1fb9f1c224d3e..5502a8844138f 100644 --- a/app/code/Magento/Store/Model/Config/Importer/Processor/Create.php +++ b/app/code/Magento/Store/Model/Config/Importer/Processor/Create.php @@ -51,7 +51,7 @@ class Create implements ProcessorInterface /** * The event manager. * - * @deprecated logic moved inside of "afterSave" method + * @deprecated 100.2.5 logic moved inside of "afterSave" method * \Magento\Store\Model\Website::afterSave * \Magento\Store\Model\Group::afterSave * \Magento\Store\Model\Store::afterSave diff --git a/app/code/Magento/Store/Model/Group.php b/app/code/Magento/Store/Model/Group.php index 4cd7bc93d3334..7f1e71c422251 100644 --- a/app/code/Magento/Store/Model/Group.php +++ b/app/code/Magento/Store/Model/Group.php @@ -454,6 +454,7 @@ public function afterDelete() /** * @inheritdoc + * @since 100.2.5 */ public function afterSave() { diff --git a/app/code/Magento/Store/Model/Store.php b/app/code/Magento/Store/Model/Store.php index 6870437ac1c37..4881988e7bd4c 100644 --- a/app/code/Magento/Store/Model/Store.php +++ b/app/code/Magento/Store/Model/Store.php @@ -208,7 +208,7 @@ class Store extends AbstractExtensibleModel implements * Flag that shows that backend URLs are secure * * @var boolean|null - * @deprecated unused protected property + * @deprecated 101.0.0 unused protected property */ protected $_isAdminSecure = null; @@ -1131,6 +1131,7 @@ public function setStoreGroupId($storeGroupId) /** * @inheritdoc + * @since 101.0.0 */ public function getIsActive() { @@ -1139,6 +1140,7 @@ public function getIsActive() /** * @inheritdoc + * @since 101.0.0 */ public function setIsActive($isActive) { @@ -1390,6 +1392,7 @@ public function getStorePath() /** * @inheritdoc + * @since 100.1.0 */ public function getScopeType() { @@ -1398,6 +1401,7 @@ public function getScopeType() /** * @inheritdoc + * @since 100.1.0 */ public function getScopeTypeName() { diff --git a/app/code/Magento/Store/Model/StoreResolver.php b/app/code/Magento/Store/Model/StoreResolver.php index aafdd15138981..2a950b699abe7 100644 --- a/app/code/Magento/Store/Model/StoreResolver.php +++ b/app/code/Magento/Store/Model/StoreResolver.php @@ -28,12 +28,12 @@ class StoreResolver implements \Magento\Store\Api\StoreResolverInterface protected $storeCookieManager; /** - * @deprecated + * @deprecated 101.0.0 */ protected $cache; /** - * @deprecated + * @deprecated 101.0.0 */ protected $readerList; @@ -142,7 +142,7 @@ protected function getStoresData() : array * Read stores data. First element is allowed store ids, second is default store id * * @return array - * @deprecated + * @deprecated 101.0.0 * @see \Magento\Store\Model\StoreResolver::getStoresData */ protected function readStoresData() : array diff --git a/app/code/Magento/Store/Model/StoreSwitcher/HashGenerator.php b/app/code/Magento/Store/Model/StoreSwitcher/HashGenerator.php new file mode 100644 index 0000000000000..456941bd41c25 --- /dev/null +++ b/app/code/Magento/Store/Model/StoreSwitcher/HashGenerator.php @@ -0,0 +1,121 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +namespace Magento\Store\Model\StoreSwitcher; + +use Magento\Store\Api\Data\StoreInterface; +use Magento\Store\Model\StoreSwitcher\HashGenerator\HashData; +use Magento\Store\Model\StoreSwitcherInterface; +use \Magento\Framework\App\DeploymentConfig as DeploymentConfig; +use Magento\Framework\Url\Helper\Data as UrlHelper; +use Magento\Framework\Config\ConfigOptionsListConstants; +use Magento\Authorization\Model\UserContextInterface; +use \Magento\Framework\App\ActionInterface; + +/** + * Generate one time token and build redirect url + */ +class HashGenerator implements StoreSwitcherInterface +{ + /** + * @var \Magento\Framework\App\DeploymentConfig + */ + private $deploymentConfig; + + /** + * @var UrlHelper + */ + private $urlHelper; + + /** + * @var UserContextInterface + */ + private $currentUser; + + /** + * @param DeploymentConfig $deploymentConfig + * @param UrlHelper $urlHelper + * @param UserContextInterface $currentUser + */ + public function __construct( + DeploymentConfig $deploymentConfig, + UrlHelper $urlHelper, + UserContextInterface $currentUser + ) { + $this->deploymentConfig = $deploymentConfig; + $this->urlHelper = $urlHelper; + $this->currentUser = $currentUser; + } + + /** + * Builds redirect url with token + * + * @param StoreInterface $fromStore store where we came from + * @param StoreInterface $targetStore store where to go to + * @param string $redirectUrl original url requested for redirect after switching + * @return string redirect url + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + */ + public function switch(StoreInterface $fromStore, StoreInterface $targetStore, string $redirectUrl): string + { + $targetUrl = $redirectUrl; + $customerId = null; + $encodedUrl = $this->urlHelper->getEncodedUrl($redirectUrl); + + if ($this->currentUser->getUserType() == UserContextInterface::USER_TYPE_CUSTOMER) { + $customerId = $this->currentUser->getUserId(); + } + + if ($customerId) { + // phpcs:ignore + $urlParts = parse_url($targetUrl); + $host = $urlParts['host']; + $scheme = $urlParts['scheme']; + $key = (string)$this->deploymentConfig->get(ConfigOptionsListConstants::CONFIG_PATH_CRYPT_KEY); + $timeStamp = time(); + $fromStoreCode = $fromStore->getCode(); + $data = implode(',', [$customerId, $timeStamp, $fromStoreCode]); + $signature = hash_hmac('sha256', $data, $key); + $targetUrl = $scheme . "://" . $host . '/stores/store/switchrequest'; + $targetUrl = $this->urlHelper->addRequestParam( + $targetUrl, + ['customer_id' => $customerId] + ); + $targetUrl = $this->urlHelper->addRequestParam($targetUrl, ['time_stamp' => $timeStamp]); + $targetUrl = $this->urlHelper->addRequestParam($targetUrl, ['signature' => $signature]); + $targetUrl = $this->urlHelper->addRequestParam($targetUrl, ['___from_store' => $fromStoreCode]); + $targetUrl = $this->urlHelper->addRequestParam( + $targetUrl, + [ActionInterface::PARAM_NAME_URL_ENCODED => $encodedUrl] + ); + } + return $targetUrl; + } + + /** + * Validates one time token + * + * @param string $signature + * @param HashData $hashData + * @return bool + */ + public function validateHash(string $signature, HashData $hashData): bool + { + if (!empty($signature) && !empty($hashData)) { + $timeStamp = $hashData->getTimestamp(); + $fromStoreCode = $hashData->getFromStoreCode(); + $customerId = $hashData->getCustomerId(); + $value = implode(",", [$customerId, $timeStamp, $fromStoreCode]); + $key = (string)$this->deploymentConfig->get(ConfigOptionsListConstants::CONFIG_PATH_CRYPT_KEY); + + if (time() - $timeStamp <= 5 && hash_equals($signature, hash_hmac('sha256', $value, $key))) { + return true; + } + } + return false; + } +} diff --git a/app/code/Magento/Store/Model/StoreSwitcher/HashGenerator/HashData.php b/app/code/Magento/Store/Model/StoreSwitcher/HashGenerator/HashData.php new file mode 100644 index 0000000000000..2d0068efbdd92 --- /dev/null +++ b/app/code/Magento/Store/Model/StoreSwitcher/HashGenerator/HashData.php @@ -0,0 +1,46 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +namespace Magento\Store\Model\StoreSwitcher\HashGenerator; + +use Magento\Framework\DataObject; + +/** + * HashData object for one time token + */ +class HashData extends DataObject +{ + /** + * Get CustomerId + * + * @return int + */ + public function getCustomerId(): int + { + return (int)$this->getData('customer_id'); + } + + /** + * Get Timestamp + * + * @return int + */ + public function getTimestamp(): int + { + return (int)$this->getData('time_stamp'); + } + + /** + * Get Fromstore + * + * @return string + */ + public function getFromStoreCode(): string + { + return (string)$this->getData('___from_store'); + } +} diff --git a/app/code/Magento/Store/Model/System/Store.php b/app/code/Magento/Store/Model/System/Store.php index 86eec555f1d59..53338a8fec5ae 100644 --- a/app/code/Magento/Store/Model/System/Store.php +++ b/app/code/Magento/Store/Model/System/Store.php @@ -118,6 +118,7 @@ public function getStoreValuesForForm($empty = false, $all = false) $options[] = ['label' => __('All Store Views'), 'value' => 0]; } + //phpcs:ignore Magento2.Functions.DiscouragedFunction $nonEscapableNbspChar = html_entity_decode(' ', ENT_NOQUOTES, 'UTF-8'); foreach ($this->_websiteCollection as $website) { @@ -152,6 +153,12 @@ public function getStoreValuesForForm($empty = false, $all = false) } } } + array_walk( + $options, + function (&$item) { + $item['__disableTmpl'] = true; + } + ); return $options; } @@ -398,6 +405,7 @@ public function getStoreCollection() /** * Load/Reload collection(s) by type + * * Allowed types: website, group, store or null for all * * @param string $type diff --git a/app/code/Magento/Store/Setup/Patch/Data/DisableSid.php b/app/code/Magento/Store/Setup/Patch/Data/DisableSid.php new file mode 100644 index 0000000000000..95df83043f15f --- /dev/null +++ b/app/code/Magento/Store/Setup/Patch/Data/DisableSid.php @@ -0,0 +1,76 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Store\Setup\Patch\Data; + +use Magento\Framework\Setup\Patch\DataPatchInterface; +use Magento\Framework\Setup\Patch\PatchVersionInterface; +use \Magento\Framework\App\Config\MutableScopeConfigInterface; + +/** + * Disable default frontend SID + */ +class DisableSid implements DataPatchInterface, PatchVersionInterface +{ + + /** + * Config path for flag whether use SID on frontend + */ + const XML_PATH_USE_FRONTEND_SID = 'web/session/use_frontend_sid'; + + /** + * @var \Magento\Framework\App\Config\MutableScopeConfigInterface + */ + private $mutableScopeConfig; + + /** + * scope type + */ + const SCOPE_STORE = 'store'; + + /** + * Disable Sid constructor. + * + * @param MutableScopeConfigInterface $mutableScopeConfig + */ + public function __construct( + MutableScopeConfigInterface $mutableScopeConfig + ) { + $this->mutableScopeConfig = $mutableScopeConfig; + } + + /** + * @inheritdoc + */ + public function apply() + { + $this->mutableScopeConfig->setValue(self::XML_PATH_USE_FRONTEND_SID, 0, self::SCOPE_STORE); + } + + /** + * @inheritdoc + */ + public static function getDependencies() + { + return []; + } + + /** + * @inheritdoc + */ + public static function getVersion() + { + return '2.0.0'; + } + + /** + * @inheritdoc + */ + public function getAliases() + { + return []; + } +} diff --git a/app/code/Magento/Store/Setup/Patch/Schema/InitializeStoresAndWebsites.php b/app/code/Magento/Store/Setup/Patch/Schema/InitializeStoresAndWebsites.php index 05e46e04b5c96..dc1932bdd8943 100644 --- a/app/code/Magento/Store/Setup/Patch/Schema/InitializeStoresAndWebsites.php +++ b/app/code/Magento/Store/Setup/Patch/Schema/InitializeStoresAndWebsites.php @@ -142,7 +142,7 @@ public function apply() /** * Get default category. * - * @deprecated 100.1.0 + * @deprecated 101.0.0 * @return DefaultCategory */ private function getDefaultCategory() diff --git a/app/code/Magento/Store/Test/Unit/Model/System/StoreTest.php b/app/code/Magento/Store/Test/Unit/Model/System/StoreTest.php index 9cc4bb6ac8e5b..6befb28e35383 100644 --- a/app/code/Magento/Store/Test/Unit/Model/System/StoreTest.php +++ b/app/code/Magento/Store/Test/Unit/Model/System/StoreTest.php @@ -6,6 +6,9 @@ namespace Magento\Store\Test\Unit\Model\System; +/** + * Class StoreTest covers Magento\Store\Model\System\Store. + */ class StoreTest extends \PHPUnit\Framework\TestCase { /** @@ -262,14 +265,15 @@ public function getStoreValuesForFormDataProvider() 'storeGroupId' => $groupId, 'groupWebsiteId' => $websiteId, 'expectedResult' => [ - ['label' => '', 'value' => ''], - ['label' => __('All Store Views'), 'value' => 0], - ['label' => $websiteName, 'value' => []], + ['label' => '', 'value' => '','__disableTmpl' => true], + ['label' => __('All Store Views'), 'value' => 0,'__disableTmpl' => true], + ['label' => $websiteName, 'value' => [],'__disableTmpl' => true], [ 'label' => str_repeat($nonEscapableNbspChar, 4) . $groupName, 'value' => [ ['label' => str_repeat($nonEscapableNbspChar, 4) . $storeName, 'value' => $storeId] - ] + ], + '__disableTmpl' => true ], ] ], diff --git a/app/code/Magento/Store/Ui/Component/Listing/Column/Store/Options.php b/app/code/Magento/Store/Ui/Component/Listing/Column/Store/Options.php index 1fc13390e30b5..cd156ef3029bc 100644 --- a/app/code/Magento/Store/Ui/Component/Listing/Column/Store/Options.php +++ b/app/code/Magento/Store/Ui/Component/Listing/Column/Store/Options.php @@ -67,6 +67,25 @@ public function toOptionArray() return $this->options; } + + /** + * Sanitize website/store option name + * + * @param string $name + * + * @return string + */ + protected function sanitizeName($name) + { + $matches = []; + preg_match('/\$[:]*{(.)*}/', $name, $matches); + if (count($matches) > 0) { + $name = $this->escaper->escapeHtml($this->escaper->escapeJs($name)); + } else { + $name = $this->escaper->escapeHtml($name); + } + return $name; + } /** * Generate current options @@ -88,20 +107,20 @@ protected function generateCurrentOptions() /** @var \Magento\Store\Model\Store $store */ foreach ($storeCollection as $store) { if ($store->getGroupId() == $group->getId()) { - $name = $this->escaper->escapeHtml($store->getName()); + $name = $this->sanitizeName($store->getName()); $stores[$name]['label'] = str_repeat(' ', 8) . $name; $stores[$name]['value'] = $store->getId(); } } if (!empty($stores)) { - $name = $this->escaper->escapeHtml($group->getName()); + $name = $this->sanitizeName($group->getName()); $groups[$name]['label'] = str_repeat(' ', 4) . $name; $groups[$name]['value'] = array_values($stores); } } } if (!empty($groups)) { - $name = $this->escaper->escapeHtml($website->getName()); + $name = $this->sanitizeName($website->getName()); $this->currentOptions[$name]['label'] = $name; $this->currentOptions[$name]['value'] = array_values($groups); } diff --git a/app/code/Magento/Store/composer.json b/app/code/Magento/Store/composer.json index ebaa32b95f48b..d1dab3ad86cda 100644 --- a/app/code/Magento/Store/composer.json +++ b/app/code/Magento/Store/composer.json @@ -6,15 +6,17 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-catalog": "*", - "magento/module-config": "*", - "magento/module-directory": "*", - "magento/module-media-storage": "*", - "magento/module-ui": "*" + "magento/framework": "102.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-config": "101.1.*", + "magento/module-directory": "100.3.*", + "magento/module-media-storage": "100.3.*", + "magento/module-ui": "101.1.*", + "magento/module-customer": "102.0.*", + "magento/module-authorization": "100.3.*" }, "suggest": { - "magento/module-deploy": "*" + "magento/module-deploy": "100.3.*" }, "type": "magento2-module", "license": [ @@ -28,5 +30,6 @@ "psr-4": { "Magento\\Store\\": "" } - } + }, + "version": "101.0.2-p2" } diff --git a/app/code/Magento/Store/etc/config.xml b/app/code/Magento/Store/etc/config.xml index b9e7ac1c6aca0..07e4c8b0b6529 100644 --- a/app/code/Magento/Store/etc/config.xml +++ b/app/code/Magento/Store/etc/config.xml @@ -83,7 +83,7 @@ <use_http_via>0</use_http_via> <use_http_x_forwarded_for>0</use_http_x_forwarded_for> <use_http_user_agent>0</use_http_user_agent> - <use_frontend_sid>1</use_frontend_sid> + <use_frontend_sid>0</use_frontend_sid> </session> <browser_capabilities> <cookies>1</cookies> @@ -135,14 +135,14 @@ </protected_extensions> <public_files_valid_paths> <protected> - <app>/app/*/*</app> - <bin>/bin/*/*</bin> - <dev>/dev/*/*</dev> - <generated>/generated/*/*</generated> - <lib>/lib/*/*</lib> - <setup>/setup/*/*</setup> - <update>/update/*/*</update> - <vendor>/vendor/*/*</vendor> + <app>*/app/*/*</app> + <bin>*/bin/*/*</bin> + <dev>*/dev/*/*</dev> + <generated>*/generated/*/*</generated> + <lib>*/lib/*/*</lib> + <setup>*/setup/*/*</setup> + <update>*/update/*/*</update> + <vendor>*/vendor/*/*</vendor> </protected> </public_files_valid_paths> </file> diff --git a/app/code/Magento/Store/etc/di.xml b/app/code/Magento/Store/etc/di.xml index defe0694d018d..62f6f41424025 100644 --- a/app/code/Magento/Store/etc/di.xml +++ b/app/code/Magento/Store/etc/di.xml @@ -436,6 +436,7 @@ <item name="cleanTargetUrl" xsi:type="object">Magento\Store\Model\StoreSwitcher\CleanTargetUrl</item> <item name="manageStoreCookie" xsi:type="object">Magento\Store\Model\StoreSwitcher\ManageStoreCookie</item> <item name="managePrivateContent" xsi:type="object">Magento\Store\Model\StoreSwitcher\ManagePrivateContent</item> + <item name="hashGenerator" xsi:type="object">Magento\Store\Model\StoreSwitcher\HashGenerator</item> </argument> </arguments> </type> diff --git a/app/code/Magento/Store/etc/frontend/sections.xml b/app/code/Magento/Store/etc/frontend/sections.xml index b1a9fc3cb1d71..b7dbfe405263b 100644 --- a/app/code/Magento/Store/etc/frontend/sections.xml +++ b/app/code/Magento/Store/etc/frontend/sections.xml @@ -8,4 +8,5 @@ <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Customer:etc/sections.xsd"> <action name="stores/store/switch"/> + <action name="stores/store/switchrequest"/> </config> diff --git a/app/code/Magento/StoreGraphQl/composer.json b/app/code/Magento/StoreGraphQl/composer.json index aa36a4891343d..71b0eab0be883 100644 --- a/app/code/Magento/StoreGraphQl/composer.json +++ b/app/code/Magento/StoreGraphQl/composer.json @@ -4,9 +4,9 @@ "type": "magento2-module", "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-store": "*", - "magento/module-graph-ql": "*" + "magento/framework": "102.0.*", + "magento/module-store": "101.0.*", + "magento/module-graph-ql": "100.3.*" }, "license": [ "OSL-3.0", @@ -19,5 +19,6 @@ "psr-4": { "Magento\\StoreGraphQl\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Swagger/Api/Data/SchemaTypeInterface.php b/app/code/Magento/Swagger/Api/Data/SchemaTypeInterface.php index f1bc6fcc105dc..f7167f6494312 100644 --- a/app/code/Magento/Swagger/Api/Data/SchemaTypeInterface.php +++ b/app/code/Magento/Swagger/Api/Data/SchemaTypeInterface.php @@ -14,6 +14,7 @@ * Swagger Schema Type. * * @api + * @since 100.2.4 */ interface SchemaTypeInterface extends ArgumentInterface { @@ -21,6 +22,7 @@ interface SchemaTypeInterface extends ArgumentInterface * Retrieve the available types of Swagger schema. * * @return string + * @since 100.2.4 */ public function getCode(); @@ -29,6 +31,7 @@ public function getCode(); * * @param string|null $store * @return string + * @since 100.2.4 */ public function getSchemaUrlPath($store = null); } diff --git a/app/code/Magento/Swagger/Block/Index.php b/app/code/Magento/Swagger/Block/Index.php index 549495190ef34..8eecfbb24935d 100644 --- a/app/code/Magento/Swagger/Block/Index.php +++ b/app/code/Magento/Swagger/Block/Index.php @@ -17,6 +17,7 @@ * @method SchemaTypeInterface[] getSchemaTypes() * @method bool hasSchemaTypes() * @method string getDefaultSchemaTypeCode() + * @since 100.2.1 */ class Index extends Template { @@ -53,6 +54,7 @@ private function getSchemaType() /** * @return string|null + * @since 100.2.1 */ public function getSchemaUrl() { diff --git a/app/code/Magento/Swagger/composer.json b/app/code/Magento/Swagger/composer.json index 6a45076d3f32d..b75afbda292be 100644 --- a/app/code/Magento/Swagger/composer.json +++ b/app/code/Magento/Swagger/composer.json @@ -6,7 +6,7 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*" + "magento/framework": "102.0.*" }, "type": "magento2-module", "license": [ @@ -20,5 +20,6 @@ "psr-4": { "Magento\\Swagger\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/SwaggerWebapi/composer.json b/app/code/Magento/SwaggerWebapi/composer.json index 5cfd6da7ca410..b83c3c180d5af 100644 --- a/app/code/Magento/SwaggerWebapi/composer.json +++ b/app/code/Magento/SwaggerWebapi/composer.json @@ -6,8 +6,8 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-swagger": "*" + "magento/framework": "102.0.*", + "magento/module-swagger": "100.3.*" }, "type": "magento2-module", "license": [ @@ -21,5 +21,6 @@ "psr-4": { "Magento\\SwaggerWebapi\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/SwaggerWebapiAsync/composer.json b/app/code/Magento/SwaggerWebapiAsync/composer.json index 3735bcd0ee458..716802c376216 100644 --- a/app/code/Magento/SwaggerWebapiAsync/composer.json +++ b/app/code/Magento/SwaggerWebapiAsync/composer.json @@ -6,11 +6,11 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-swagger": "*" + "magento/framework": "102.0.*", + "magento/module-swagger": "100.3.*" }, "suggest": { - "magento/module-config": "*" + "magento/module-config": "101.1.*" }, "type": "magento2-module", "license": [ @@ -24,5 +24,6 @@ "psr-4": { "Magento\\SwaggerWebapiAsync\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Swatches/Block/Product/Renderer/Configurable.php b/app/code/Magento/Swatches/Block/Product/Renderer/Configurable.php index 6143b8e659059..c9829385c17c1 100644 --- a/app/code/Magento/Swatches/Block/Product/Renderer/Configurable.php +++ b/app/code/Magento/Swatches/Block/Product/Renderer/Configurable.php @@ -75,7 +75,7 @@ class Configurable extends \Magento\ConfigurableProduct\Block\Product\View\Type\ /** * Indicate if product has one or more Swatch attributes * - * @deprecated 100.1.5 unused + * @deprecated 100.1.0 unused * * @var boolean */ @@ -236,7 +236,7 @@ protected function getSwatchAttributesData() } /** - * @deprecated 100.1.5 Method isProductHasSwatchAttribute() is used instead of this. + * @deprecated 100.2.0 Method isProductHasSwatchAttribute() is used instead of this. * * @codeCoverageIgnore * @return void @@ -488,6 +488,7 @@ public function getIdentities() * Get Swatch image size config data. * * @return string + * @since 100.2.5 */ public function getJsonSwatchSizeConfig() { diff --git a/app/code/Magento/Swatches/Block/Product/Renderer/Listing/Configurable.php b/app/code/Magento/Swatches/Block/Product/Renderer/Listing/Configurable.php index 2e4980c2fbfd0..d801a040ce665 100644 --- a/app/code/Magento/Swatches/Block/Product/Renderer/Listing/Configurable.php +++ b/app/code/Magento/Swatches/Block/Product/Renderer/Listing/Configurable.php @@ -159,6 +159,7 @@ public function getJsonConfig() * Composes configuration for js price format * * @return string + * @since 100.2.3 */ public function getPriceFormatJson() { @@ -169,6 +170,7 @@ public function getPriceFormatJson() * Composes configuration for js price * * @return string + * @since 100.2.3 */ public function getPricesJson() { @@ -260,6 +262,7 @@ private function getLayeredAttributesIfExists(Product $configurableProduct, arra /** * @inheritdoc + * @since 100.3.1 */ public function getCacheKeyInfo() { diff --git a/app/code/Magento/Swatches/Model/ResourceModel/Swatch.php b/app/code/Magento/Swatches/Model/ResourceModel/Swatch.php index 9ad62265be21f..121d85ecc181d 100644 --- a/app/code/Magento/Swatches/Model/ResourceModel/Swatch.php +++ b/app/code/Magento/Swatches/Model/ResourceModel/Swatch.php @@ -47,6 +47,7 @@ public function saveDefaultSwatchOption($id, $defaultValue) * @param array $optionIDs * @param int $type * @throws \Magento\Framework\Exception\LocalizedException + * @since 100.2.4 */ public function clearSwatchOptionByOptionIdAndType($optionIDs, $type = null) { diff --git a/app/code/Magento/Swatches/composer.json b/app/code/Magento/Swatches/composer.json index 09d3e05008afe..40c1ce8ac1d11 100644 --- a/app/code/Magento/Swatches/composer.json +++ b/app/code/Magento/Swatches/composer.json @@ -6,21 +6,21 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-catalog": "*", - "magento/module-config": "*", - "magento/module-configurable-product": "*", - "magento/module-customer": "*", - "magento/module-eav": "*", - "magento/module-page-cache": "*", - "magento/module-media-storage": "*", - "magento/module-store": "*", - "magento/module-theme": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-config": "101.1.*", + "magento/module-configurable-product": "100.3.*", + "magento/module-customer": "102.0.*", + "magento/module-eav": "102.0.*", + "magento/module-page-cache": "100.3.*", + "magento/module-media-storage": "100.3.*", + "magento/module-store": "101.0.*", + "magento/module-theme": "101.0.*" }, "suggest": { - "magento/module-layered-navigation": "*", - "magento/module-swatches-sample-data": "*" + "magento/module-layered-navigation": "100.3.*", + "magento/module-swatches-sample-data": "Sample Data version: 100.3.*" }, "type": "magento2-module", "license": [ @@ -34,5 +34,6 @@ "psr-4": { "Magento\\Swatches\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/SwatchesGraphQl/composer.json b/app/code/Magento/SwatchesGraphQl/composer.json index 01ef35b1ccb6d..ab63cb1292082 100644 --- a/app/code/Magento/SwatchesGraphQl/composer.json +++ b/app/code/Magento/SwatchesGraphQl/composer.json @@ -4,12 +4,12 @@ "type": "magento2-module", "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-swatches": "*", - "magento/module-catalog": "*" + "magento/framework": "102.0.*", + "magento/module-swatches": "100.3.*", + "magento/module-catalog": "103.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\\SwatchesGraphQl\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/SwatchesLayeredNavigation/composer.json b/app/code/Magento/SwatchesLayeredNavigation/composer.json index e11c3d9c4d423..6e6753654d402 100644 --- a/app/code/Magento/SwatchesLayeredNavigation/composer.json +++ b/app/code/Magento/SwatchesLayeredNavigation/composer.json @@ -6,7 +6,7 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", + "magento/framework": "102.0.*", "magento/magento-composer-installer": "*" }, "type": "magento2-module", @@ -21,5 +21,6 @@ "psr-4": { "Magento\\SwatchesLayeredNavigation\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Tax/Block/Adminhtml/Items/Price/Renderer.php b/app/code/Magento/Tax/Block/Adminhtml/Items/Price/Renderer.php index 376adba63db62..a1f538e0b0c70 100644 --- a/app/code/Magento/Tax/Block/Adminhtml/Items/Price/Renderer.php +++ b/app/code/Magento/Tax/Block/Adminhtml/Items/Price/Renderer.php @@ -22,7 +22,7 @@ class Renderer extends \Magento\Backend\Block\Template { /** * @var \Magento\Tax\Helper\Data - * @deprecated + * @deprecated 100.3.0 * Marked as deprecated as it is unused. */ protected $taxHelper; diff --git a/app/code/Magento/Tax/Model/System/Message/Notifications.php b/app/code/Magento/Tax/Model/System/Message/Notifications.php index b90b8c3af3c58..ea7f743368510 100644 --- a/app/code/Magento/Tax/Model/System/Message/Notifications.php +++ b/app/code/Magento/Tax/Model/System/Message/Notifications.php @@ -16,7 +16,7 @@ class Notifications implements \Magento\Framework\Notification\MessageInterface * Store manager object * * @var \Magento\Store\Model\StoreManagerInterface - * @deprecated 100.1.3 + * @deprecated 100.1.0 */ protected $storeManager; @@ -36,7 +36,7 @@ class Notifications implements \Magento\Framework\Notification\MessageInterface * Stores with invalid display settings * * @var array - * @deprecated 100.1.3 + * @deprecated 100.1.0 * @see \Magento\Tax\Model\System\Message\Notification\RoundingErrors */ protected $storesWithInvalidDisplaySettings; @@ -45,7 +45,7 @@ class Notifications implements \Magento\Framework\Notification\MessageInterface * Websites with invalid discount settings * * @var array - * @deprecated 100.1.3 + * @deprecated 100.1.0 * @see \Magento\Tax\Model\System\Message\Notification\DiscountErrors */ protected $storesWithInvalidDiscountSettings; diff --git a/app/code/Magento/Tax/composer.json b/app/code/Magento/Tax/composer.json index a09ebbd53750f..fed9f42841771 100644 --- a/app/code/Magento/Tax/composer.json +++ b/app/code/Magento/Tax/composer.json @@ -6,23 +6,23 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-catalog": "*", - "magento/module-checkout": "*", - "magento/module-config": "*", - "magento/module-customer": "*", - "magento/module-directory": "*", - "magento/module-eav": "*", - "magento/module-page-cache": "*", - "magento/module-quote": "*", - "magento/module-reports": "*", - "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-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-page-cache": "100.3.*", + "magento/module-quote": "101.1.*", + "magento/module-reports": "100.3.*", + "magento/module-sales": "102.0.*", + "magento/module-shipping": "100.3.*", + "magento/module-store": "101.0.*" }, "suggest": { - "magento/module-tax-sample-data": "*" + "magento/module-tax-sample-data": "Sample Data version: 100.3.*" }, "type": "magento2-module", "license": [ @@ -36,5 +36,6 @@ "psr-4": { "Magento\\Tax\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/TaxGraphQl/composer.json b/app/code/Magento/TaxGraphQl/composer.json index 33f87dd35d40f..949f20489f447 100644 --- a/app/code/Magento/TaxGraphQl/composer.json +++ b/app/code/Magento/TaxGraphQl/composer.json @@ -4,11 +4,11 @@ "type": "magento2-module", "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*" + "magento/framework": "102.0.*" }, "suggest": { - "magento/module-tax": "*", - "magento/module-catalog-graph-ql": "*" + "magento/module-tax": "100.3.*", + "magento/module-catalog-graph-ql": "100.3.*" }, "license": [ "OSL-3.0", @@ -21,5 +21,6 @@ "psr-4": { "Magento\\TaxGraphQl\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/TaxImportExport/composer.json b/app/code/Magento/TaxImportExport/composer.json index f234cc9bc249b..bcf83df2d8f18 100644 --- a/app/code/Magento/TaxImportExport/composer.json +++ b/app/code/Magento/TaxImportExport/composer.json @@ -6,11 +6,11 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-directory": "*", - "magento/module-store": "*", - "magento/module-tax": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-directory": "100.3.*", + "magento/module-store": "101.0.*", + "magento/module-tax": "100.3.*" }, "type": "magento2-module", "license": [ @@ -24,5 +24,6 @@ "psr-4": { "Magento\\TaxImportExport\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Theme/Block/Html/Footer.php b/app/code/Magento/Theme/Block/Html/Footer.php index cdb350336f38f..7f9b9cf86a809 100644 --- a/app/code/Magento/Theme/Block/Html/Footer.php +++ b/app/code/Magento/Theme/Block/Html/Footer.php @@ -127,6 +127,7 @@ public function getIdentities() * Get block cache life time * * @return int + * @since 100.2.4 */ protected function getCacheLifetime() { diff --git a/app/code/Magento/Theme/Block/Html/Header/Logo.php b/app/code/Magento/Theme/Block/Html/Header/Logo.php index b51f624c20339..37a81ca0badd6 100644 --- a/app/code/Magento/Theme/Block/Html/Header/Logo.php +++ b/app/code/Magento/Theme/Block/Html/Header/Logo.php @@ -43,7 +43,7 @@ public function __construct( /** * Check if current url is url for home page * - * @deprecated This function is no longer used. It was previously used by + * @deprecated 101.0.1 This function is no longer used. It was previously used by * Magento/Theme/view/frontend/templates/html/header/logo.phtml * to check if the logo should be clickable on the homepage. * diff --git a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/UploadJs.php b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/UploadJs.php index 89636ad3de50e..9b719cd8567db 100644 --- a/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/UploadJs.php +++ b/app/code/Magento/Theme/Controller/Adminhtml/System/Design/Theme/UploadJs.php @@ -11,7 +11,7 @@ /** * Class UploadJs - * @deprecated + * @deprecated 101.0.0 */ class UploadJs extends \Magento\Theme\Controller\Adminhtml\System\Design\Theme implements HttpGetActionInterface { diff --git a/app/code/Magento/Theme/Model/Design/BackendModelFactory.php b/app/code/Magento/Theme/Model/Design/BackendModelFactory.php index 155afa89c4173..df4ad381ca0d8 100644 --- a/app/code/Magento/Theme/Model/Design/BackendModelFactory.php +++ b/app/code/Magento/Theme/Model/Design/BackendModelFactory.php @@ -3,6 +3,9 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ + +declare(strict_types=1); + namespace Magento\Theme\Model\Design; use Magento\Framework\App\Config\Value; @@ -11,6 +14,9 @@ use Magento\Theme\Model\Design\Config\MetadataProvider; use Magento\Theme\Model\ResourceModel\Design\Config\CollectionFactory; +/** + * Class BackendModelFactory + */ class BackendModelFactory extends ValueFactory { /** @@ -58,13 +64,15 @@ public function __construct( */ public function create(array $data = []) { + $storedData = $this->getStoredData($data['scope'], $data['scopeId'], $data['config']['path']); + $backendModelData = array_replace_recursive( - $this->getStoredData($data['scope'], $data['scopeId'], $data['config']['path']), + $storedData, [ 'path' => $data['config']['path'], 'scope' => $data['scope'], 'scope_id' => $data['scopeId'], - 'field_config' => $data['config'], + 'field_config' => $data['config'] ] ); @@ -76,6 +84,13 @@ public function create(array $data = []) $backendModel = $this->getNewBackendModel($backendType, $backendModelData); $backendModel->setValue($data['value']); + if ($storedData) { + foreach ($storedData as $key => $value) { + $backendModel->setOrigData($key, $value); + } + $backendModel->setOrigData('field_config', $data['config']); + } + return $backendModel; } @@ -166,9 +181,12 @@ protected function getMetadata() { if (!$this->metadata) { $this->metadata = $this->metadataProvider->get(); - array_walk($this->metadata, function (&$value) { - $value = $value['path']; - }); + array_walk( + $this->metadata, + function (&$value) { + $value = $value['path']; + } + ); } return $this->metadata; } diff --git a/app/code/Magento/Theme/Model/Design/Config/ValueChecker.php b/app/code/Magento/Theme/Model/Design/Config/ValueChecker.php index 42801f57c8822..11d45616e387d 100644 --- a/app/code/Magento/Theme/Model/Design/Config/ValueChecker.php +++ b/app/code/Magento/Theme/Model/Design/Config/ValueChecker.php @@ -8,6 +8,9 @@ use Magento\Framework\App\Config as AppConfig; use Magento\Framework\App\ScopeFallbackResolverInterface; +/** + * Class ValueChecker + */ class ValueChecker { /** @@ -61,7 +64,7 @@ public function isDifferentFromDefault($value, $scope, $scopeId, array $fieldCon $fieldConfig ), $this->valueProcessor->process( - $this->appConfig->getValue($fieldConfig['path'], $scope, $scopeId), + ($this->appConfig->getValue($fieldConfig['path'], $scope, $scopeId) ?? ""), $scope, $scopeId, $fieldConfig @@ -80,12 +83,11 @@ public function isDifferentFromDefault($value, $scope, $scopeId, array $fieldCon */ protected function isEqual($value, $defaultValue) { - switch (gettype($value)) { - case 'array': - return $this->isEqualArrays($value, $defaultValue); - default: - return $value === $defaultValue; + if (is_array($value)) { + return $this->isEqualArrays($value, $defaultValue); } + + return $value === $defaultValue; } /** diff --git a/app/code/Magento/Theme/Model/ResourceModel/Theme/Grid/Collection.php b/app/code/Magento/Theme/Model/ResourceModel/Theme/Grid/Collection.php index c4a7bb11a78f7..4ee6880c8190d 100644 --- a/app/code/Magento/Theme/Model/ResourceModel/Theme/Grid/Collection.php +++ b/app/code/Magento/Theme/Model/ResourceModel/Theme/Grid/Collection.php @@ -7,7 +7,7 @@ /** * Theme grid collection - * @deprecated + * @deprecated 101.0.0 * @see \Magento\Theme\Ui\Component\Theme\DataProvider\SearchResult */ class Collection extends \Magento\Theme\Model\ResourceModel\Theme\Collection diff --git a/app/code/Magento/Theme/Test/Unit/Ui/Component/Listing/Column/EditActionTest.php b/app/code/Magento/Theme/Test/Unit/Ui/Component/Listing/Column/EditActionTest.php index 2ac959d0a9881..b1b1a9f26b7d5 100644 --- a/app/code/Magento/Theme/Test/Unit/Ui/Component/Listing/Column/EditActionTest.php +++ b/app/code/Magento/Theme/Test/Unit/Ui/Component/Listing/Column/EditActionTest.php @@ -9,6 +9,9 @@ use Magento\Store\Model\ScopeInterface; use Magento\Theme\Ui\Component\Listing\Column\EditAction; +/** + * Unit tests for \Magento\Theme\Ui\Component\Listing\Column\EditAction. + */ class EditActionTest extends \PHPUnit\Framework\TestCase { /** @var EditAction */ @@ -64,6 +67,7 @@ public function testPrepareDataSource($dataSourceItem, $scope, $scopeId) 'edit' => [ 'href' => 'http://magento.com/theme/design_config/edit', 'label' => new \Magento\Framework\Phrase('Edit'), + '__disableTmpl' => true, ] ], ]; diff --git a/app/code/Magento/Theme/Test/Unit/Ui/Component/Listing/Column/ViewActionTest.php b/app/code/Magento/Theme/Test/Unit/Ui/Component/Listing/Column/ViewActionTest.php index 03d1fe70f2f07..9c6577e61bcd9 100644 --- a/app/code/Magento/Theme/Test/Unit/Ui/Component/Listing/Column/ViewActionTest.php +++ b/app/code/Magento/Theme/Test/Unit/Ui/Component/Listing/Column/ViewActionTest.php @@ -99,23 +99,61 @@ public function getPrepareDataSourceDataProvider() { return [ [ - ['name' => 'itemName', 'config' => []], - [['itemName' => '', 'entity_id' => 1]], - [['itemName' => ['view' => ['href' => 'url', 'label' => __('View')]], 'entity_id' => 1]], + [ + 'name' => 'itemName', + 'config' => [] + ], + [ + [ + 'entity_id' => 1, + 'itemName' => '', + ], + ], + [ + [ + 'entity_id' => 1, + 'itemName' => [ + 'view' => [ + 'href' => 'url', + 'label' => __('View'), + '__disableTmpl' => true, + ] + ], + ], + ], '#', - ['id' => 1] + ['id' => 1], ], [ - ['name' => 'itemName', 'config' => [ - 'viewUrlPath' => 'url_path', - 'urlEntityParamName' => 'theme_id', - 'indexField' => 'theme_id'] + [ + 'name' => 'itemName', + 'config' => [ + 'viewUrlPath' => 'url_path', + 'urlEntityParamName' => 'theme_id', + 'indexField' => 'theme_id', + ], + ], + [ + [ + 'theme_id' => 2, + 'itemName' => '', + ], + ], + [ + [ + 'theme_id' => 2, + 'itemName' => [ + 'view' => [ + 'href' => 'url', + 'label' => __('View'), + '__disableTmpl' => true, + ], + ], + ], ], - [['itemName' => '', 'theme_id' => 2]], - [['itemName' => ['view' => ['href' => 'url', 'label' => __('View')]], 'theme_id' => 2]], 'url_path', - ['theme_id' => 2] - ] + ['theme_id' => 2], + ], ]; } } diff --git a/app/code/Magento/Theme/Ui/Component/Design/Config/SearchRobots/ResetButton.php b/app/code/Magento/Theme/Ui/Component/Design/Config/SearchRobots/ResetButton.php index 5a8829851e8cf..25a9e46a3ace9 100644 --- a/app/code/Magento/Theme/Ui/Component/Design/Config/SearchRobots/ResetButton.php +++ b/app/code/Magento/Theme/Ui/Component/Design/Config/SearchRobots/ResetButton.php @@ -14,7 +14,7 @@ * ResetButton field instance * * @api - * @since 100.2.0 + * @since 100.1.9 */ class ResetButton extends Field { @@ -66,7 +66,7 @@ private function getRobotsDefaultCustomInstructions() * * @return void * @throws \Magento\Framework\Exception\LocalizedException - * @since 100.2.0 + * @since 100.1.9 */ public function prepare() { diff --git a/app/code/Magento/Theme/Ui/Component/Listing/Column/EditAction.php b/app/code/Magento/Theme/Ui/Component/Listing/Column/EditAction.php index 801f30ce30b0a..1eeeaccff88ce 100644 --- a/app/code/Magento/Theme/Ui/Component/Listing/Column/EditAction.php +++ b/app/code/Magento/Theme/Ui/Component/Listing/Column/EditAction.php @@ -73,7 +73,8 @@ public function prepareDataSource(array $dataSource) 'scope_id' => $scopeId, ] ), - 'label' => __('Edit') + 'label' => __('Edit'), + '__disableTmpl' => true, ] ]; } diff --git a/app/code/Magento/Theme/Ui/Component/Listing/Column/ViewAction.php b/app/code/Magento/Theme/Ui/Component/Listing/Column/ViewAction.php index 774d5bab660af..9e47e2c52bddf 100644 --- a/app/code/Magento/Theme/Ui/Component/Listing/Column/ViewAction.php +++ b/app/code/Magento/Theme/Ui/Component/Listing/Column/ViewAction.php @@ -65,7 +65,8 @@ public function prepareDataSource(array $dataSource) : array $urlEntityParamName => $item[$indexField] ] ), - 'label' => __('View') + 'label' => __('View'), + '__disableTmpl' => true, ] ]; } diff --git a/app/code/Magento/Theme/composer.json b/app/code/Magento/Theme/composer.json index 0c2b092b8d7d0..1f739cb87fad9 100644 --- a/app/code/Magento/Theme/composer.json +++ b/app/code/Magento/Theme/composer.json @@ -6,23 +6,23 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-cms": "*", - "magento/module-config": "*", - "magento/module-customer": "*", - "magento/module-eav": "*", - "magento/module-media-storage": "*", - "magento/module-require-js": "*", - "magento/module-store": "*", - "magento/module-ui": "*", - "magento/module-widget": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-cms": "103.0.*", + "magento/module-config": "101.1.*", + "magento/module-customer": "102.0.*", + "magento/module-eav": "102.0.*", + "magento/module-media-storage": "100.3.*", + "magento/module-require-js": "100.3.*", + "magento/module-store": "101.0.*", + "magento/module-ui": "101.1.*", + "magento/module-widget": "101.1.*" }, "suggest": { - "magento/module-translation": "*", - "magento/module-theme-sample-data": "*", - "magento/module-deploy": "*", - "magento/module-directory": "*" + "magento/module-translation": "100.3.*", + "magento/module-theme-sample-data": "Sample Data version: 100.3.*", + "magento/module-deploy": "100.3.*", + "magento/module-directory": "100.3.*" }, "type": "magento2-module", "license": [ @@ -36,5 +36,6 @@ "psr-4": { "Magento\\Theme\\": "" } - } + }, + "version": "101.0.2-p2" } diff --git a/app/code/Magento/Theme/view/frontend/templates/js/calendar.phtml b/app/code/Magento/Theme/view/frontend/templates/js/calendar.phtml index 7d18ed17303b9..5393475627bbe 100644 --- a/app/code/Magento/Theme/view/frontend/templates/js/calendar.phtml +++ b/app/code/Magento/Theme/view/frontend/templates/js/calendar.phtml @@ -21,20 +21,20 @@ require([ //<![CDATA[ $.extend(true, $, { calendarConfig: { - dayNames: <?= /* @escapeNotVerified */ $days['wide'] ?>, - dayNamesMin: <?= /* @escapeNotVerified */ $days['abbreviated'] ?>, - monthNames: <?= /* @escapeNotVerified */ $months['wide'] ?>, - monthNamesShort: <?= /* @escapeNotVerified */ $months['abbreviated'] ?>, - infoTitle: "<?= /* @escapeNotVerified */ __('About the calendar') ?>", - firstDay: <?= /* @escapeNotVerified */ $firstDay ?>, - closeText: "<?= /* @escapeNotVerified */ __('Close') ?>", - currentText: "<?= /* @escapeNotVerified */ __('Go Today') ?>", - prevText: "<?= /* @escapeNotVerified */ __('Previous') ?>", - nextText: "<?= /* @escapeNotVerified */ __('Next') ?>", - weekHeader: "<?= /* @escapeNotVerified */ __('WK') ?>", - timeText: "<?= /* @escapeNotVerified */ __('Time') ?>", - hourText: "<?= /* @escapeNotVerified */ __('Hour') ?>", - minuteText: "<?= /* @escapeNotVerified */ __('Minute') ?>", + dayNames: <?= /* @noEscape */ $days['wide'] ?>, + dayNamesMin: <?= /* @noEscape */ $days['abbreviated'] ?>, + monthNames: <?= /* @noEscape */ $months['wide'] ?>, + monthNamesShort: <?= /* @noEscape */ $months['abbreviated'] ?>, + infoTitle: "<?= $block->escapeJs(__('About the calendar')) ?>", + firstDay: <?= (int)$firstDay ?>, + closeText: "<?= $block->escapeJs(__('Close')) ?>", + currentText: "<?= $block->escapeJs(__('Go Today')) ?>", + prevText: "<?= $block->escapeJs(__('Previous')) ?>", + nextText: "<?= $block->escapeJs(__('Next')) ?>", + weekHeader: "<?= $block->escapeJs(__('WK')) ?>", + timeText: "<?= $block->escapeJs(__('Time')) ?>", + hourText: "<?= $block->escapeJs(__('Hour')) ?>", + minuteText: "<?= $block->escapeJs(__('Minute')) ?>", dateFormat: $.datepicker.RFC_2822, showOn: "button", showAnim: "", @@ -51,7 +51,7 @@ require([ } }); - enUS = <?= /* @escapeNotVerified */ $enUS ?>; // en_US locale reference + enUS = <?= /* @noEscape */ $enUS ?>; // en_US locale reference //]]> }); diff --git a/app/code/Magento/ThemeGraphQl/composer.json b/app/code/Magento/ThemeGraphQl/composer.json index e3aac55aea37e..dbf39ab94f708 100644 --- a/app/code/Magento/ThemeGraphQl/composer.json +++ b/app/code/Magento/ThemeGraphQl/composer.json @@ -4,10 +4,10 @@ "type": "magento2-module", "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*" + "magento/framework": "102.0.*" }, "suggest": { - "magento/module-store-graph-ql": "*" + "magento/module-store-graph-ql": "100.3.*" }, "license": [ "OSL-3.0", @@ -20,5 +20,6 @@ "psr-4": { "Magento\\ThemeGraphQl\\": "" } - } + }, + "version": "100.3.1" } diff --git a/app/code/Magento/Tinymce3/Model/Config/Gallery/Config.php b/app/code/Magento/Tinymce3/Model/Config/Gallery/Config.php index d11a3fa6e8a0c..d037dac3ae218 100644 --- a/app/code/Magento/Tinymce3/Model/Config/Gallery/Config.php +++ b/app/code/Magento/Tinymce3/Model/Config/Gallery/Config.php @@ -10,7 +10,7 @@ /** * Class Config adds information about required configurations to display media gallery of tinymce3 editor * - * @deprecated use \Magento\Cms\Model\Wysiwyg\DefaultConfigProvider instead + * @deprecated 100.3.0 use \Magento\Cms\Model\Wysiwyg\DefaultConfigProvider instead */ class Config implements \Magento\Framework\Data\Wysiwyg\ConfigProviderInterface { diff --git a/app/code/Magento/Tinymce3/Model/Config/Source/Wysiwyg/Editor.php b/app/code/Magento/Tinymce3/Model/Config/Source/Wysiwyg/Editor.php index 00f1a82698381..96a3d42d15f36 100644 --- a/app/code/Magento/Tinymce3/Model/Config/Source/Wysiwyg/Editor.php +++ b/app/code/Magento/Tinymce3/Model/Config/Source/Wysiwyg/Editor.php @@ -9,7 +9,7 @@ /** * Class Editor provides configuration value for TinyMCE3 editor - * @deprecated use as configuration value tinymce4 path: mage/adminhtml/wysiwyg/tiny_mce/tinymce4Adapter + * @deprecated 100.3.0 use as configuration value tinymce4 path: mage/adminhtml/wysiwyg/tiny_mce/tinymce4Adapter */ class Editor { diff --git a/app/code/Magento/Tinymce3/Model/Config/Variable/Config.php b/app/code/Magento/Tinymce3/Model/Config/Variable/Config.php index 2d016a5101abe..97aab0f38c4ee 100644 --- a/app/code/Magento/Tinymce3/Model/Config/Variable/Config.php +++ b/app/code/Magento/Tinymce3/Model/Config/Variable/Config.php @@ -9,7 +9,7 @@ /** * Class Config adds variable plugin information required for tinymce3 editor - * @deprecated use \Magento\Variable\Model\Variable\ConfigProvider instead + * @deprecated 100.3.0 use \Magento\Variable\Model\Variable\ConfigProvider instead */ class Config implements \Magento\Framework\Data\Wysiwyg\ConfigProviderInterface { diff --git a/app/code/Magento/Tinymce3/Model/Config/Widget/Config.php b/app/code/Magento/Tinymce3/Model/Config/Widget/Config.php index de548df4bc9f3..fcb8235495d47 100644 --- a/app/code/Magento/Tinymce3/Model/Config/Widget/Config.php +++ b/app/code/Magento/Tinymce3/Model/Config/Widget/Config.php @@ -9,7 +9,7 @@ /** * Class Config adds widget plugin information required for tinymce3 editor - * @deprecated use \Magento\Widget\Model\Widget\Config instead + * @deprecated 100.3.0 use \Magento\Widget\Model\Widget\Config instead */ class Config implements \Magento\Framework\Data\Wysiwyg\ConfigProviderInterface { diff --git a/app/code/Magento/Tinymce3/Model/Config/Widget/PlaceholderImagesPool.php b/app/code/Magento/Tinymce3/Model/Config/Widget/PlaceholderImagesPool.php index 1ab3de708dd26..7004beea70f1c 100644 --- a/app/code/Magento/Tinymce3/Model/Config/Widget/PlaceholderImagesPool.php +++ b/app/code/Magento/Tinymce3/Model/Config/Widget/PlaceholderImagesPool.php @@ -8,7 +8,7 @@ /** * Class PlaceholderImages provide ability to override placeholder images for Widgets - * @deprecated + * @deprecated 100.3.0 */ class PlaceholderImagesPool { diff --git a/app/code/Magento/Tinymce3/Model/Config/Wysiwyg/Config.php b/app/code/Magento/Tinymce3/Model/Config/Wysiwyg/Config.php index f3dc4c8591cbd..c70ad28a114df 100644 --- a/app/code/Magento/Tinymce3/Model/Config/Wysiwyg/Config.php +++ b/app/code/Magento/Tinymce3/Model/Config/Wysiwyg/Config.php @@ -9,7 +9,7 @@ /** * Class Config adds information about required css files for tinymce3 editor - * @deprecated use \Magento\Cms\Model\Wysiwyg\DefaultConfigProvider instead + * @deprecated 100.3.0 use \Magento\Cms\Model\Wysiwyg\DefaultConfigProvider instead */ class Config implements \Magento\Framework\Data\Wysiwyg\ConfigProviderInterface { diff --git a/app/code/Magento/Tinymce3/composer.json b/app/code/Magento/Tinymce3/composer.json index 52e980052a87f..5bfd8e04315c8 100644 --- a/app/code/Magento/Tinymce3/composer.json +++ b/app/code/Magento/Tinymce3/composer.json @@ -3,15 +3,14 @@ "description": "N/A", "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-ui": "*", - "magento/module-variable": "*", - "magento/module-widget": "*" - + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-ui": "101.1.*", + "magento/module-variable": "100.3.*", + "magento/module-widget": "101.1.*" }, "suggest": { - "magento/module-cms": "*" + "magento/module-cms": "103.0.*" }, "type": "magento2-module", "license": [ @@ -25,5 +24,6 @@ "psr-4": { "Magento\\Tinymce3\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Translation/Block/Js.php b/app/code/Magento/Translation/Block/Js.php index db26feb8067ff..e193e675885c2 100644 --- a/app/code/Magento/Translation/Block/Js.php +++ b/app/code/Magento/Translation/Block/Js.php @@ -78,6 +78,7 @@ public function getTranslationFilePath() * Gets current version of the translation file. * * @return string + * @since 100.3.0 */ public function getTranslationFileVersion() { diff --git a/app/code/Magento/Translation/Model/Inline/Parser.php b/app/code/Magento/Translation/Model/Inline/Parser.php index e0b2ce40405d1..1b190048f7b3f 100644 --- a/app/code/Magento/Translation/Model/Inline/Parser.php +++ b/app/code/Magento/Translation/Model/Inline/Parser.php @@ -7,8 +7,7 @@ namespace Magento\Translation\Model\Inline; /** - * This class is responsible for parsing content and applying necessary html element - * wrapping and client scripts for inline translation. + * Parses content and applies necessary html element wrapping and client scripts for inline translation. * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ @@ -132,6 +131,8 @@ class Parser implements \Magento\Framework\Translate\Inline\ParserInterface private $relatedCacheTypes; /** + * Return cache manager. + * * @return \Magento\Translation\Model\Inline\CacheManager * * @deprecated 100.1.0 @@ -149,8 +150,8 @@ private function getCacheManger() /** * Initialize base inline translation model * - * @param \Magento\Store\Model\StoreManagerInterface $storeManager * @param \Magento\Translation\Model\ResourceModel\StringUtilsFactory $resource + * @param \Magento\Store\Model\StoreManagerInterface $storeManager * @param \Zend_Filter_Interface $inputFilter * @param \Magento\Framework\App\State $appState * @param \Magento\Framework\App\Cache\TypeListInterface $appCache @@ -209,7 +210,12 @@ public function processAjaxPost(array $translateParams) $storeId = $validStoreId; } } - $resource->saveTranslate($param['original'], $param['custom'], null, $storeId); + $resource->saveTranslate( + $param['original'], + $param['custom'], + null, + $storeId + ); } return $this->getCacheManger()->updateAndGetTranslations(); @@ -236,7 +242,7 @@ protected function _validateTranslationParams(array $translateParams) /** * Apply input filter to values of translation parameters * - * @param array &$translateParams + * @param array $translateParams * @param array $fieldNames Names of fields values of which are to be filtered * @return void */ @@ -360,7 +366,7 @@ protected function _applySpecialTagsFormat($tagHtml, $tagName, $trArr) * Format translation for simple tags. Added translate mode attribute for vde requests. * * @param string $tagHtml - * @param string $tagName + * @param string $tagName * @param array $trArr * @return string */ @@ -386,7 +392,7 @@ protected function _applySimpleTagsFormat($tagHtml, $tagName, $trArr) * Get translate data by regexp * * @param string $regexp - * @param string &$text + * @param string $text * @param string|array $locationCallback * @param array $options * @return array @@ -401,7 +407,7 @@ private function _getTranslateData($regexp, &$text, $locationCallback, $options 'shown' => htmlspecialchars_decode($matches[1][0]), 'translated' => htmlspecialchars_decode($matches[2][0]), 'original' => htmlspecialchars_decode($matches[3][0]), - 'location' => htmlspecialchars_decode(call_user_func($locationCallback, $matches, $options)), + 'location' => htmlspecialchars_decode($locationCallback($matches, $options)), ] ); $text = substr_replace($text, $matches[1][0], $matches[0][1], strlen($matches[0][0])); @@ -512,16 +518,28 @@ private function _getHtmlQuote() */ private function _specialTags() { - $this->_translateTags($this->_content, $this->_allowedTagsGlobal, '_applySpecialTagsFormat'); - $this->_translateTags($this->_content, $this->_allowedTagsSimple, '_applySimpleTagsFormat'); + $this->_translateTags( + $this->_content, + $this->_allowedTagsGlobal, + function ($tagHtml, $tagName, $trArr) { + return $this->_applySpecialTagsFormat($tagHtml, $tagName, $trArr); + } + ); + $this->_translateTags( + $this->_content, + $this->_allowedTagsSimple, + function ($tagHtml, $tagName, $trArr) { + return $this->_applySimpleTagsFormat($tagHtml, $tagName, $trArr); + } + ); } /** - * Prepare simple tags + * Prepare simple tags. * - * @param string &$content + * @param string $content * @param array $tagsList - * @param string|array $formatCallback + * @param callable $formatCallback * @return void */ private function _translateTags(&$content, $tagsList, $formatCallback) @@ -575,10 +593,10 @@ private function _translateTags(&$content, $tagsList, $formatCallback) if (array_key_exists($tagName, $this->_allowedTagsGlobal) && $tagBodyOpenStartPosition > $tagMatch[0][1] ) { - $tagHtmlHead = call_user_func([$this, $formatCallback], $tagHtml, $tagName, $trArr); + $tagHtmlHead = $formatCallback($tagHtml, $tagName, $trArr); $headTranslateTags .= substr($tagHtmlHead, strlen($tagHtml)); } else { - $tagHtml = call_user_func([$this, $formatCallback], $tagHtml, $tagName, $trArr); + $tagHtml = $formatCallback($tagHtml, $tagName, $trArr); } } diff --git a/app/code/Magento/Translation/composer.json b/app/code/Magento/Translation/composer.json index ac2ddfc4a663c..8c84c796cd92d 100644 --- a/app/code/Magento/Translation/composer.json +++ b/app/code/Magento/Translation/composer.json @@ -6,13 +6,13 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-developer": "*", - "magento/module-store": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-developer": "100.3.*", + "magento/module-store": "101.0.*" }, "suggest": { - "magento/module-deploy": "*" + "magento/module-deploy": "100.3.*" }, "type": "magento2-module", "license": [ @@ -26,5 +26,6 @@ "psr-4": { "Magento\\Translation\\": "" } - } + }, + "version": "100.3.2-p2" } diff --git a/app/code/Magento/Ui/Block/Wysiwyg/ActiveEditor.php b/app/code/Magento/Ui/Block/Wysiwyg/ActiveEditor.php index b6077b7b1625d..462e4a4695ef0 100644 --- a/app/code/Magento/Ui/Block/Wysiwyg/ActiveEditor.php +++ b/app/code/Magento/Ui/Block/Wysiwyg/ActiveEditor.php @@ -13,6 +13,7 @@ * ActiveEditor block * * @api + * @since 101.1.0 */ class ActiveEditor extends \Magento\Framework\View\Element\Template { @@ -50,6 +51,7 @@ public function __construct( * Get active wysiwyg adapter path * * @return string + * @since 101.1.0 */ public function getWysiwygAdapterPath() { diff --git a/app/code/Magento/Ui/Component/Form/Element/AbstractOptionsField.php b/app/code/Magento/Ui/Component/Form/Element/AbstractOptionsField.php index 09583f65bf157..e0894f49c4ea4 100644 --- a/app/code/Magento/Ui/Component/Form/Element/AbstractOptionsField.php +++ b/app/code/Magento/Ui/Component/Form/Element/AbstractOptionsField.php @@ -9,6 +9,9 @@ use Magento\Framework\View\Element\UiComponent\ContextInterface; /** + * Prepare component configuration. + * + * phpcs:disable Magento2.Classes.AbstractApi * @api * @since 100.1.0 */ @@ -59,6 +62,13 @@ public function prepare() if (empty($config['rawOptions'])) { $options = $this->convertOptionsValueToString($options); } + array_walk( + $options, + function (&$item) { + $item['__disableTmpl'] = true; + } + ); + $config['options'] = array_values(array_merge_recursive($config['options'], $options)); } $this->setData('config', (array)$config); @@ -84,11 +94,14 @@ abstract public function getIsSelected($optionValue); */ protected function convertOptionsValueToString(array $options) { - array_walk($options, function (&$value) { - if (isset($value['value']) && is_scalar($value['value'])) { - $value['value'] = (string)$value['value']; + array_walk( + $options, + function (&$value) { + if (isset($value['value']) && is_scalar($value['value'])) { + $value['value'] = (string)$value['value']; + } } - }); + ); return $options; } } diff --git a/app/code/Magento/Ui/Component/Form/Element/ColorPicker.php b/app/code/Magento/Ui/Component/Form/Element/ColorPicker.php index b1925b4641d0b..23188363cc1d1 100644 --- a/app/code/Magento/Ui/Component/Form/Element/ColorPicker.php +++ b/app/code/Magento/Ui/Component/Form/Element/ColorPicker.php @@ -17,6 +17,7 @@ * Prepares Color Picker UI component with mode and format * * @api + * @since 101.1.0 */ class ColorPicker extends AbstractElement { @@ -54,6 +55,7 @@ public function __construct( * Get component name * * @return string + * @since 101.1.0 */ public function getComponentName(): string { @@ -64,6 +66,7 @@ public function getComponentName(): string * Prepare component configuration * * @return void + * @since 101.1.0 */ public function prepare() : void { diff --git a/app/code/Magento/Ui/Component/Listing/Columns/Date.php b/app/code/Magento/Ui/Component/Listing/Columns/Date.php index ad876b66b6038..5b4283553c823 100644 --- a/app/code/Magento/Ui/Component/Listing/Columns/Date.php +++ b/app/code/Magento/Ui/Component/Listing/Columns/Date.php @@ -51,6 +51,7 @@ public function __construct( /** * @inheritdoc + * @since 101.1.1 */ public function prepare() { diff --git a/app/code/Magento/Ui/Component/MassAction.php b/app/code/Magento/Ui/Component/MassAction.php index 4cca8d4c012bb..5af263dd861ce 100644 --- a/app/code/Magento/Ui/Component/MassAction.php +++ b/app/code/Magento/Ui/Component/MassAction.php @@ -28,7 +28,7 @@ public function prepare() if ($disabledAction) { continue; } - $config['actions'][] = $componentConfig; + $config['actions'][] = array_merge($componentConfig, ['__disableTmpl' => true]); } $origConfig = $this->getConfiguration(); diff --git a/app/code/Magento/Ui/Component/Wrapper/Block.php b/app/code/Magento/Ui/Component/Wrapper/Block.php index a4e5bbf213062..0380a447e0cb9 100644 --- a/app/code/Magento/Ui/Component/Wrapper/Block.php +++ b/app/code/Magento/Ui/Component/Wrapper/Block.php @@ -11,7 +11,7 @@ use Magento\Framework\View\Element\UiComponent\BlockWrapperInterface; /** - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ class Block extends AbstractComponent implements BlockWrapperInterface { diff --git a/app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Save.php b/app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Save.php index b45880c1ce726..803495439d65e 100644 --- a/app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Save.php +++ b/app/code/Magento/Ui/Controller/Adminhtml/Bookmark/Save.php @@ -54,7 +54,7 @@ class Save extends AbstractAction implements HttpPostActionInterface /** * @var DecoderInterface - * @deprecated + * @deprecated 101.1.0 */ protected $jsonDecoder; diff --git a/app/code/Magento/Ui/DataProvider/AbstractDataProvider.php b/app/code/Magento/Ui/DataProvider/AbstractDataProvider.php index 578ebe4d441d9..0fa2b128115d3 100644 --- a/app/code/Magento/Ui/DataProvider/AbstractDataProvider.php +++ b/app/code/Magento/Ui/DataProvider/AbstractDataProvider.php @@ -288,7 +288,7 @@ public function setConfigData($config) * Retrieve all ids from collection * * @return int[] - * @since 100.2.0 + * @since 101.0.0 */ public function getAllIds() { diff --git a/app/code/Magento/Ui/DataProvider/Modifier/WysiwygModifierInterface.php b/app/code/Magento/Ui/DataProvider/Modifier/WysiwygModifierInterface.php index 6336d8f8fb828..c2926a64a7a13 100644 --- a/app/code/Magento/Ui/DataProvider/Modifier/WysiwygModifierInterface.php +++ b/app/code/Magento/Ui/DataProvider/Modifier/WysiwygModifierInterface.php @@ -7,6 +7,7 @@ /** * @api + * @since 101.1.0 */ interface WysiwygModifierInterface { @@ -15,12 +16,14 @@ interface WysiwygModifierInterface * For example tmce3 or tmce4 * * @return array + * @since 101.1.0 */ public function getEditorName(); /** * @param array $meta * @return array + * @since 101.1.0 */ public function modifyMeta(array $meta); } diff --git a/app/code/Magento/Ui/DataProvider/SearchResultFactory.php b/app/code/Magento/Ui/DataProvider/SearchResultFactory.php index f2ed0677d4cd9..83d06c7cf5fc1 100644 --- a/app/code/Magento/Ui/DataProvider/SearchResultFactory.php +++ b/app/code/Magento/Ui/DataProvider/SearchResultFactory.php @@ -17,6 +17,7 @@ * Allows to use Repositories (instead of Collections) in UI Components Data providers * * @api + * @since 101.1.0 */ class SearchResultFactory { @@ -64,6 +65,7 @@ public function __construct( * @param SearchCriteriaInterface SearchCriteriaInterface $searchCriteria * @param string $idFieldName * @return SearchResultInterface + * @since 101.1.0 */ public function create( array $items, diff --git a/app/code/Magento/Ui/Model/Bookmark.php b/app/code/Magento/Ui/Model/Bookmark.php index b404e8d3b475f..2cb5666063067 100644 --- a/app/code/Magento/Ui/Model/Bookmark.php +++ b/app/code/Magento/Ui/Model/Bookmark.php @@ -23,7 +23,7 @@ class Bookmark extends AbstractExtensibleModel implements BookmarkInterface { /** * @var DecoderInterface - * @deprecated + * @deprecated 101.1.0 */ protected $jsonDecoder; diff --git a/app/code/Magento/Ui/Model/Manager.php b/app/code/Magento/Ui/Model/Manager.php index e3c56418c8425..cc7574acb3151 100644 --- a/app/code/Magento/Ui/Model/Manager.php +++ b/app/code/Magento/Ui/Model/Manager.php @@ -23,7 +23,7 @@ /** * Class Manager - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class Manager implements ManagerInterface diff --git a/app/code/Magento/Ui/Model/ResourceModel/BookmarkRepository.php b/app/code/Magento/Ui/Model/ResourceModel/BookmarkRepository.php index 3e738baa404c8..f773daaaf50c4 100644 --- a/app/code/Magento/Ui/Model/ResourceModel/BookmarkRepository.php +++ b/app/code/Magento/Ui/Model/ResourceModel/BookmarkRepository.php @@ -162,7 +162,7 @@ public function deleteById($bookmarkId) * @param FilterGroup $filterGroup * @param Collection $collection * @return void - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @throws \Magento\Framework\Exception\InputException */ protected function addFilterGroupToCollection(FilterGroup $filterGroup, Collection $collection) @@ -176,7 +176,7 @@ protected function addFilterGroupToCollection(FilterGroup $filterGroup, Collecti /** * Retrieve collection processor * - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @return CollectionProcessorInterface */ private function getCollectionProcessor() diff --git a/app/code/Magento/Ui/Test/Unit/Component/MassActionTest.php b/app/code/Magento/Ui/Test/Unit/Component/MassActionTest.php index b2f494351597f..1affc4221cf68 100644 --- a/app/code/Magento/Ui/Test/Unit/Component/MassActionTest.php +++ b/app/code/Magento/Ui/Test/Unit/Component/MassActionTest.php @@ -104,7 +104,8 @@ public function getPrepareDataProvider() [ 'type' => 'first_action', 'label' => 'First Action', - 'url' => '/module/controller/firstAction' + 'url' => '/module/controller/firstAction', + '__disableTmpl' => true, ], ], [ @@ -123,7 +124,8 @@ public function getPrepareDataProvider() 'label' => 'Second Sub Action 2', 'url' => '/module/controller/secondSubAction2' ], - ] + ], + '__disableTmpl' => true, ], ], ]; diff --git a/app/code/Magento/Ui/composer.json b/app/code/Magento/Ui/composer.json index 296332e383509..0cd61f54f357b 100644 --- a/app/code/Magento/Ui/composer.json +++ b/app/code/Magento/Ui/composer.json @@ -6,15 +6,15 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-authorization": "*", - "magento/module-backend": "*", - "magento/module-eav": "*", - "magento/module-store": "*", - "magento/module-user": "*" + "magento/framework": "102.0.*", + "magento/module-authorization": "100.3.*", + "magento/module-backend": "101.0.*", + "magento/module-eav": "102.0.*", + "magento/module-store": "101.0.*", + "magento/module-user": "101.1.*" }, "suggest": { - "magento/module-config": "*" + "magento/module-config": "101.1.*" }, "type": "magento2-module", "license": [ @@ -28,5 +28,6 @@ "psr-4": { "Magento\\Ui\\": "" } - } + }, + "version": "101.1.2-p2" } diff --git a/app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js b/app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js index f28569caa0053..73bef62910644 100644 --- a/app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js +++ b/app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js @@ -435,9 +435,10 @@ define([ * @param {String} constructedMessage */ insertMethod: function (constructedMessage) { - var errorMsgBodyHtml = '<strong>%s</strong> %s.<br>' - .replace('%s', error.filename) - .replace('%s', $t('was not uploaded')); + var escapedFileName = $('<div>').text(error.filename).html(), + errorMsgBodyHtml = '<strong>%s</strong> %s.<br>' + .replace('%s', escapedFileName) + .replace('%s', $t('was not uploaded')); // html is escaped in message body for notification widget; prepend unescaped html here constructedMessage = constructedMessage.replace('%s', errorMsgBodyHtml); diff --git a/app/code/Magento/Ui/view/base/web/js/grid/filters/filters.js b/app/code/Magento/Ui/view/base/web/js/grid/filters/filters.js index 98c3eb1c6f882..78016ee489a11 100644 --- a/app/code/Magento/Ui/view/base/web/js/grid/filters/filters.js +++ b/app/code/Magento/Ui/view/base/web/js/grid/filters/filters.js @@ -272,11 +272,22 @@ define([ } filter = utils.extend({}, filters.base, filter); + //Accepting labels as is. + filter.__disableTmpl = { + label: 1, + options: 1 + }; - return utils.template(filter, { + filter = utils.template(filter, { filters: this, column: column }, true, true); + + filter.__disableTmpl = { + label: true + }; + + return filter; }, /** diff --git a/app/code/Magento/Ui/view/base/web/js/lib/core/storage/local.js b/app/code/Magento/Ui/view/base/web/js/lib/core/storage/local.js index adeb510ab3e40..a7407362cff9e 100644 --- a/app/code/Magento/Ui/view/base/web/js/lib/core/storage/local.js +++ b/app/code/Magento/Ui/view/base/web/js/lib/core/storage/local.js @@ -11,7 +11,7 @@ define([ 'use strict'; var root = 'appData', - localStorage = window.localStorage, + localStorage, hasSupport, storage; @@ -22,6 +22,7 @@ define([ var key = '_storageSupported'; try { + localStorage = window.localStorage; localStorage.setItem(key, 'true'); if (localStorage.getItem(key) === 'true') { diff --git a/app/code/Magento/Ui/view/base/web/js/lib/knockout/bindings/optgroup.js b/app/code/Magento/Ui/view/base/web/js/lib/knockout/bindings/optgroup.js index 2925c5859eddd..6ff7c1f673213 100644 --- a/app/code/Magento/Ui/view/base/web/js/lib/knockout/bindings/optgroup.js +++ b/app/code/Magento/Ui/view/base/web/js/lib/knockout/bindings/optgroup.js @@ -222,10 +222,14 @@ define([ ko.utils.setTextContent(option, allBindings.get('optionsCaption')); ko.selectExtensions.writeValue(option, undefined); } else if (typeof arrayEntry[optionsValue] === 'undefined') { // empty value === optgroup - option = utils.template(optgroupTmpl, { - label: arrayEntry[optionsText], - title: arrayEntry[optionsText + 'title'] - }); + if (arrayEntry.__disableTmpl) { + option = '<optgroup label="' + arrayEntry[optionsText] + '"></optgroup>'; + } else { + option = utils.template(optgroupTmpl, { + label: arrayEntry[optionsText], + title: arrayEntry[optionsText + 'title'] + }); + } option = ko.utils.parseHtmlFragment(option)[0]; } else { @@ -307,6 +311,10 @@ define([ obj.disabled = disabled; } + if (option.hasOwnProperty('__disableTmpl')) { + obj.__disableTmpl = option.__disableTmpl; + } + label = label.replace(nbspRe, '').trim(); if (Array.isArray(value)) { diff --git a/app/code/Magento/Ups/Model/Config/Backend/UpsUrl.php b/app/code/Magento/Ups/Model/Config/Backend/UpsUrl.php new file mode 100644 index 0000000000000..1edd61dfcc604 --- /dev/null +++ b/app/code/Magento/Ups/Model/Config/Backend/UpsUrl.php @@ -0,0 +1,33 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +namespace Magento\Ups\Model\Config\Backend; + +use Magento\Framework\App\Config\Value; +use Magento\Framework\Exception\ValidatorException; + +/** + * Represents a config URL that may point to a UPS endpoint + */ +class UpsUrl extends Value +{ + /** + * @inheritdoc + */ + public function beforeSave() + { + // phpcs:ignore Magento2.Functions.DiscouragedFunction + $host = parse_url((string)$this->getValue(), \PHP_URL_HOST); + + if (!empty($host) && !preg_match('/(?:.+\.|^)ups\.com$/i', $host)) { + // Can't add new translations in Patch releases + throw new ValidatorException(__('Invalid request')); + } + + return parent::beforeSave(); + } +} diff --git a/app/code/Magento/Ups/Test/Unit/Model/Config/Backend/UpsUrlTest.php b/app/code/Magento/Ups/Test/Unit/Model/Config/Backend/UpsUrlTest.php new file mode 100644 index 0000000000000..1ccaef9024dc2 --- /dev/null +++ b/app/code/Magento/Ups/Test/Unit/Model/Config/Backend/UpsUrlTest.php @@ -0,0 +1,78 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +declare(strict_types=1); + +namespace Magento\Ups\Test\Unit\Model\Config\Backend; + +use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; +use Magento\Ups\Model\Config\Backend\UpsUrl; +use PHPUnit\Framework\TestCase; + +/** + * Verify behavior of UpsUrl backend type + */ +class UpsUrlTest extends TestCase +{ + + /** + * @var UpsUrl + */ + private $config; + + protected function setUp() + { + $objectManager = new ObjectManager($this); + /** @var UpsUrl $upsUrl */ + $this->config = $objectManager->getObject(UpsUrl::class); + } + + /** + * @dataProvider validDataProvider + * @param string $data The valid data + */ + public function testBeforeSave($data = null) + { + $this->config->setValue($data); + $this->assertInstanceOf(UpsUrl::class, $this->config->beforeSave()); + } + + /** + * @dataProvider invalidDataProvider + * @param string $data The invalid data + * @expectedException \Magento\Framework\Exception\ValidatorException + * @expectedExceptionMessage Invalid request + */ + public function testBeforeSaveErrors($data) + { + $this->config->setValue($data); + $this->config->beforeSave(); + } + + public function validDataProvider() + { + return [ + [], + [null], + [''], + ['http://ups.com'], + ['https://foo.ups.com'], + ['http://foo.ups.com/foo/bar?baz=bash&fizz=buzz'], + ]; + } + + public function invalidDataProvider() + { + return [ + ['http://upsfoo.com'], + ['https://fooups.com'], + ['https://ups.com.fake.com'], + ['https://ups.info'], + ['http://ups.com.foo.com/foo/bar?baz=bash&fizz=buzz'], + ['http://fooups.com/foo/bar?baz=bash&fizz=buzz'], + ]; + } +} diff --git a/app/code/Magento/Ups/composer.json b/app/code/Magento/Ups/composer.json index 902ee4311867e..8ec4a5ea2f8ff 100644 --- a/app/code/Magento/Ups/composer.json +++ b/app/code/Magento/Ups/composer.json @@ -6,17 +6,17 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-catalog-inventory": "*", - "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-inventory": "100.3.*", + "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-config": "*" + "magento/module-config": "101.1.*" }, "type": "magento2-module", "license": [ @@ -30,5 +30,6 @@ "psr-4": { "Magento\\Ups\\": "" } - } + }, + "version": "100.3.2-p2" } diff --git a/app/code/Magento/Ups/etc/adminhtml/system.xml b/app/code/Magento/Ups/etc/adminhtml/system.xml index f427c5960123f..cf983417328e5 100644 --- a/app/code/Magento/Ups/etc/adminhtml/system.xml +++ b/app/code/Magento/Ups/etc/adminhtml/system.xml @@ -53,9 +53,11 @@ </field> <field id="gateway_url" translate="label" type="text" sortOrder="40" showInDefault="1" showInWebsite="1" showInStore="0" canRestore="1"> <label>Gateway URL</label> + <backend_model>Magento\Ups\Model\Config\Backend\UpsUrl</backend_model> </field> <field id="gateway_xml_url" translate="label" type="text" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="0" canRestore="1"> <label>Gateway XML URL</label> + <backend_model>Magento\Ups\Model\Config\Backend\UpsUrl</backend_model> </field> <field id="handling_type" translate="label" type="select" sortOrder="110" showInDefault="1" showInWebsite="1" showInStore="0" canRestore="1"> <label>Calculate Handling Fee</label> @@ -97,6 +99,7 @@ </field> <field id="tracking_xml_url" translate="label" type="text" sortOrder="60" showInDefault="1" showInWebsite="1" showInStore="0" canRestore="1"> <label>Tracking XML URL</label> + <backend_model>Magento\Ups\Model\Config\Backend\UpsUrl</backend_model> </field> <field id="type" translate="label" type="select" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="0" canRestore="1"> <label>UPS Type</label> diff --git a/app/code/Magento/UrlRewrite/Model/Exception/UrlAlreadyExistsException.php b/app/code/Magento/UrlRewrite/Model/Exception/UrlAlreadyExistsException.php index 906ba1f625477..12620edf460d2 100644 --- a/app/code/Magento/UrlRewrite/Model/Exception/UrlAlreadyExistsException.php +++ b/app/code/Magento/UrlRewrite/Model/Exception/UrlAlreadyExistsException.php @@ -11,7 +11,7 @@ * Exception for already created url. * * @api - * @since 100.2.0 + * @since 101.0.0 */ class UrlAlreadyExistsException extends \Magento\Framework\Exception\AlreadyExistsException { @@ -39,7 +39,7 @@ public function __construct(Phrase $phrase = null, \Exception $cause = null, $co * Get URLs * * @return array - * @since 100.2.0 + * @since 101.0.0 */ public function getUrls() { diff --git a/app/code/Magento/UrlRewrite/Model/Storage/DbStorage.php b/app/code/Magento/UrlRewrite/Model/Storage/DbStorage.php index 2ac1bdd712114..4968cf58b8dc1 100644 --- a/app/code/Magento/UrlRewrite/Model/Storage/DbStorage.php +++ b/app/code/Magento/UrlRewrite/Model/Storage/DbStorage.php @@ -333,7 +333,7 @@ protected function insertMultiple($data) * * @param UrlRewrite[] $urls * @return array - * @deprecated Not used anymore. + * @deprecated 101.0.3 Not used anymore. */ protected function createFilterDataBasedOnUrls($urls) { diff --git a/app/code/Magento/UrlRewrite/composer.json b/app/code/Magento/UrlRewrite/composer.json index b12d0820ae3b9..34878aa551a69 100644 --- a/app/code/Magento/UrlRewrite/composer.json +++ b/app/code/Magento/UrlRewrite/composer.json @@ -6,13 +6,13 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-catalog": "*", - "magento/module-catalog-url-rewrite": "*", - "magento/module-cms": "*", - "magento/module-cms-url-rewrite": "*", - "magento/module-store": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-catalog-url-rewrite": "100.3.*", + "magento/module-cms": "103.0.*", + "magento/module-cms-url-rewrite": "100.3.*", + "magento/module-store": "101.0.*" }, "type": "magento2-module", "license": [ @@ -26,5 +26,6 @@ "psr-4": { "Magento\\UrlRewrite\\": "" } - } + }, + "version": "101.1.2" } diff --git a/app/code/Magento/UrlRewriteGraphQl/composer.json b/app/code/Magento/UrlRewriteGraphQl/composer.json index 1c99276269aa7..2b45ecdc2bff3 100644 --- a/app/code/Magento/UrlRewriteGraphQl/composer.json +++ b/app/code/Magento/UrlRewriteGraphQl/composer.json @@ -4,12 +4,12 @@ "type": "magento2-module", "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-url-rewrite": "*", - "magento/module-store": "*" + "magento/framework": "102.0.*", + "magento/module-url-rewrite": "101.1.*", + "magento/module-store": "101.0.*" }, "suggest": { - "magento/module-graph-ql": "*" + "magento/module-graph-ql": "100.3.*" }, "license": [ "OSL-3.0", @@ -22,5 +22,6 @@ "psr-4": { "Magento\\UrlRewriteGraphQl\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/User/Block/User/Edit.php b/app/code/Magento/User/Block/User/Edit.php index 6e036cf20fa25..233fe1e0cfee5 100644 --- a/app/code/Magento/User/Block/User/Edit.php +++ b/app/code/Magento/User/Block/User/Edit.php @@ -87,7 +87,7 @@ protected function _construct() * - click "Delete User" at top left part of the page; * * @return \Magento\Framework\Phrase - * @since 100.2.0 + * @since 101.0.0 */ public function getDeleteMessage() { @@ -100,7 +100,7 @@ public function getDeleteMessage() * Magento\User\Controller\Adminhtml\User\Delete * * @return string - * @since 100.2.0 + * @since 101.0.0 */ public function getDeleteUrl() { @@ -113,7 +113,7 @@ public function getDeleteUrl() * to create a new user account OR to edit the previously created user account * * @return int - * @since 100.2.0 + * @since 101.0.0 */ public function getObjectId() { diff --git a/app/code/Magento/User/Model/ResourceModel/User/Collection.php b/app/code/Magento/User/Model/ResourceModel/User/Collection.php index 7683adae84365..422afb47f0a0e 100644 --- a/app/code/Magento/User/Model/ResourceModel/User/Collection.php +++ b/app/code/Magento/User/Model/ResourceModel/User/Collection.php @@ -27,6 +27,7 @@ protected function _construct() * Collection Init Select * * @return $this + * @since 101.1.0 */ protected function _initSelect() { diff --git a/app/code/Magento/User/Model/User.php b/app/code/Magento/User/Model/User.php index dc0aa0cd38343..eec5480c7c917 100644 --- a/app/code/Magento/User/Model/User.php +++ b/app/code/Magento/User/Model/User.php @@ -115,12 +115,12 @@ class User extends AbstractModel implements StorageInterface, UserInterface protected $_encryptor; /** - * @deprecated + * @deprecated 101.1.0 */ protected $_transportBuilder; /** - * @deprecated + * @deprecated 101.1.0 */ protected $_storeManager; @@ -140,7 +140,7 @@ class User extends AbstractModel implements StorageInterface, UserInterface private $notificator; /** - * @deprecated + * @deprecated 101.1.0 */ private $deploymentConfig; @@ -446,7 +446,7 @@ public function roleUserExists() * * @return $this * @throws NotificationExceptionInterface - * @deprecated + * @deprecated 101.1.0 * @see NotificatorInterface::sendForgotPassword() */ public function sendPasswordResetConfirmationEmail() @@ -524,7 +524,7 @@ protected function createChangesDescriptionString() * @throws NotificationExceptionInterface * @return $this * @since 100.1.0 - * @deprecated + * @deprecated 101.1.0 * @see NotificatorInterface::sendUpdated() * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ diff --git a/app/code/Magento/User/composer.json b/app/code/Magento/User/composer.json index 7195582f09610..d67b4a33d1ac3 100644 --- a/app/code/Magento/User/composer.json +++ b/app/code/Magento/User/composer.json @@ -6,13 +6,13 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-authorization": "*", - "magento/module-backend": "*", - "magento/module-email": "*", - "magento/module-integration": "*", - "magento/module-security": "*", - "magento/module-store": "*" + "magento/framework": "102.0.*", + "magento/module-authorization": "100.3.*", + "magento/module-backend": "101.0.*", + "magento/module-email": "101.0.*", + "magento/module-integration": "100.3.*", + "magento/module-security": "100.3.*", + "magento/module-store": "101.0.*" }, "type": "magento2-module", "license": [ @@ -26,5 +26,6 @@ "psr-4": { "Magento\\User\\": "" } - } + }, + "version": "101.1.2" } diff --git a/app/code/Magento/Usps/Model/Carrier.php b/app/code/Magento/Usps/Model/Carrier.php index 6e69b9c317946..a16c50d3553bd 100644 --- a/app/code/Magento/Usps/Model/Carrier.php +++ b/app/code/Magento/Usps/Model/Carrier.php @@ -1434,7 +1434,7 @@ protected function _filterServiceName($name) * * @param \Magento\Framework\DataObject $request * @return string - * @deprecated This method should not be used anymore. + * @deprecated 100.2.1 This method should not be used anymore. * @see \Magento\Usps\Model\Carrier::_doShipmentRequest method doc block. */ protected function _formUsExpressShipmentRequest(\Magento\Framework\DataObject $request) @@ -1611,7 +1611,7 @@ protected function _convertPoundOunces($weightInPounds) * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @deprecated Should not be used anymore. + * @deprecated 100.2.1 Should not be used anymore. * @see \Magento\Usps\Model\Carrier::_doShipmentRequest doc block. */ protected function _formIntlShipmentRequest(\Magento\Framework\DataObject $request) @@ -1866,7 +1866,7 @@ protected function _formIntlShipmentRequest(\Magento\Framework\DataObject $reque * @param \Magento\Framework\DataObject $request * @return \Magento\Framework\DataObject * @SuppressWarnings(PHPMD.CyclomaticComplexity) - * @deprecated This method must not be used anymore. Starting from 23.02.2018 USPS elimates API usage for + * @deprecated 100.2.1 This method must not be used anymore. Starting from 23.02.2018 USPS elimates API usage for * free shipping labels generating. */ protected function _doShipmentRequest(\Magento\Framework\DataObject $request) diff --git a/app/code/Magento/Usps/composer.json b/app/code/Magento/Usps/composer.json index f0ee0cd5cda93..4cc621f086cfe 100644 --- a/app/code/Magento/Usps/composer.json +++ b/app/code/Magento/Usps/composer.json @@ -7,15 +7,15 @@ "require": { "php": "~7.1.3||~7.2.0", "lib-libxml": "*", - "magento/framework": "*", - "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-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.*" }, "type": "magento2-module", "license": [ @@ -29,5 +29,6 @@ "psr-4": { "Magento\\Usps\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Variable/composer.json b/app/code/Magento/Variable/composer.json index 017fd312bbdf8..b594fb2479a53 100644 --- a/app/code/Magento/Variable/composer.json +++ b/app/code/Magento/Variable/composer.json @@ -6,10 +6,10 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-store": "*", - "magento/module-config": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-store": "101.0.*", + "magento/module-config": "101.1.*" }, "type": "magento2-module", "license": [ @@ -23,5 +23,6 @@ "psr-4": { "Magento\\Variable\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Vault/Api/Data/PaymentTokenFactoryInterface.php b/app/code/Magento/Vault/Api/Data/PaymentTokenFactoryInterface.php index bb6343691f726..94d14dc14228c 100644 --- a/app/code/Magento/Vault/Api/Data/PaymentTokenFactoryInterface.php +++ b/app/code/Magento/Vault/Api/Data/PaymentTokenFactoryInterface.php @@ -9,7 +9,7 @@ /** * Interface PaymentTokenFactoryInterface * @api - * @since 100.3.0 + * @since 101.0.0 */ interface PaymentTokenFactoryInterface { @@ -24,7 +24,7 @@ interface PaymentTokenFactoryInterface * Create payment token entity * @param $type string|null * @return PaymentTokenInterface - * @since 100.3.0 + * @since 101.0.0 */ public function create($type = null); } diff --git a/app/code/Magento/Vault/Api/Data/PaymentTokenInterfaceFactory.php b/app/code/Magento/Vault/Api/Data/PaymentTokenInterfaceFactory.php index 1a854ec814844..501e516841b6e 100644 --- a/app/code/Magento/Vault/Api/Data/PaymentTokenInterfaceFactory.php +++ b/app/code/Magento/Vault/Api/Data/PaymentTokenInterfaceFactory.php @@ -8,7 +8,7 @@ /** * Interface PaymentTokenInterfaceFactory - * @deprecated 100.3.0 + * @deprecated 101.0.0 * @see PaymentTokenFactoryInterface * @codingStandardsIgnoreStart */ diff --git a/app/code/Magento/Vault/Model/AbstractPaymentTokenFactory.php b/app/code/Magento/Vault/Model/AbstractPaymentTokenFactory.php index d568a91c0421b..ab1e2ccd783d5 100644 --- a/app/code/Magento/Vault/Model/AbstractPaymentTokenFactory.php +++ b/app/code/Magento/Vault/Model/AbstractPaymentTokenFactory.php @@ -12,7 +12,7 @@ /** * Class AbstractPaymentTokenFactory - * @deprecated 100.3.0 + * @deprecated 101.0.0 * @see PaymentTokenFactoryInterface */ abstract class AbstractPaymentTokenFactory implements PaymentTokenInterfaceFactory diff --git a/app/code/Magento/Vault/Model/AccountPaymentTokenFactory.php b/app/code/Magento/Vault/Model/AccountPaymentTokenFactory.php index 8fb060b41a24f..e9178ccaf50a8 100644 --- a/app/code/Magento/Vault/Model/AccountPaymentTokenFactory.php +++ b/app/code/Magento/Vault/Model/AccountPaymentTokenFactory.php @@ -7,7 +7,7 @@ /** * Class AccountPaymentTokenFactory - * @deprecated 100.3.0 + * @deprecated 101.0.0 * @see PaymentTokenFactoryInterface */ class AccountPaymentTokenFactory extends AbstractPaymentTokenFactory diff --git a/app/code/Magento/Vault/Model/CreditCardTokenFactory.php b/app/code/Magento/Vault/Model/CreditCardTokenFactory.php index 735dc7c706f62..b0015e3f78316 100644 --- a/app/code/Magento/Vault/Model/CreditCardTokenFactory.php +++ b/app/code/Magento/Vault/Model/CreditCardTokenFactory.php @@ -7,7 +7,7 @@ /** * Class CreditCardTokenFactory - * @deprecated 100.3.0 + * @deprecated 101.0.0 * @see PaymentTokenFactoryInterface */ class CreditCardTokenFactory extends AbstractPaymentTokenFactory diff --git a/app/code/Magento/Vault/Model/PaymentTokenFactory.php b/app/code/Magento/Vault/Model/PaymentTokenFactory.php index 6249fa4944a2c..cee838d622749 100644 --- a/app/code/Magento/Vault/Model/PaymentTokenFactory.php +++ b/app/code/Magento/Vault/Model/PaymentTokenFactory.php @@ -13,7 +13,7 @@ /** * PaymentTokenFactory class * @api - * @since 100.3.0 + * @since 101.0.0 */ class PaymentTokenFactory implements PaymentTokenFactoryInterface { @@ -42,7 +42,7 @@ public function __construct(ObjectManagerInterface $objectManager, array $tokenT * Create payment token entity * @param $type string * @return PaymentTokenInterface - * @since 100.3.0 + * @since 101.0.0 */ public function create($type = null) { diff --git a/app/code/Magento/Vault/Model/PaymentTokenRepository.php b/app/code/Magento/Vault/Model/PaymentTokenRepository.php index 2ccd6181b9b81..46d7b6d2e80fe 100644 --- a/app/code/Magento/Vault/Model/PaymentTokenRepository.php +++ b/app/code/Magento/Vault/Model/PaymentTokenRepository.php @@ -158,7 +158,7 @@ public function save(Data\PaymentTokenInterface $paymentToken) * @param FilterGroup $filterGroup * @param Collection $collection * @return void - * @deprecated 100.3.0 + * @deprecated 101.0.0 * @throws \Magento\Framework\Exception\InputException */ protected function addFilterGroupToCollection(FilterGroup $filterGroup, Collection $collection) @@ -172,7 +172,7 @@ protected function addFilterGroupToCollection(FilterGroup $filterGroup, Collecti /** * Retrieve collection processor * - * @deprecated 100.3.0 + * @deprecated 101.0.0 * @return CollectionProcessorInterface */ private function getCollectionProcessor() diff --git a/app/code/Magento/Vault/composer.json b/app/code/Magento/Vault/composer.json index f888a98692288..3810ddbdca83c 100644 --- a/app/code/Magento/Vault/composer.json +++ b/app/code/Magento/Vault/composer.json @@ -6,13 +6,13 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-checkout": "*", - "magento/module-customer": "*", - "magento/module-payment": "*", - "magento/module-quote": "*", - "magento/module-sales": "*", - "magento/module-store": "*" + "magento/framework": "102.0.*", + "magento/module-checkout": "100.3.*", + "magento/module-customer": "102.0.*", + "magento/module-payment": "100.3.*", + "magento/module-quote": "101.1.*", + "magento/module-sales": "102.0.*", + "magento/module-store": "101.0.*" }, "type": "magento2-module", "license": [ @@ -26,5 +26,6 @@ "psr-4": { "Magento\\Vault\\": "" } - } + }, + "version": "101.1.2" } diff --git a/app/code/Magento/VaultGraphQl/composer.json b/app/code/Magento/VaultGraphQl/composer.json index 455d24bfc11f8..0527fc8bf222b 100644 --- a/app/code/Magento/VaultGraphQl/composer.json +++ b/app/code/Magento/VaultGraphQl/composer.json @@ -4,9 +4,9 @@ "type": "magento2-module", "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-vault": "*", - "magento/module-customer-graph-ql": "*" + "magento/framework": "102.0.*", + "magento/module-vault": "101.1.*", + "magento/module-customer-graph-ql": "100.3.*" }, "license": [ "OSL-3.0", @@ -19,5 +19,6 @@ "psr-4": { "Magento\\VaultGraphQl\\": "" } - } + }, + "version": "100.3.0" } diff --git a/app/code/Magento/Version/composer.json b/app/code/Magento/Version/composer.json index 81da36715ae82..4a9fb22afb438 100644 --- a/app/code/Magento/Version/composer.json +++ b/app/code/Magento/Version/composer.json @@ -6,7 +6,7 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*" + "magento/framework": "102.0.*" }, "type": "magento2-module", "license": [ @@ -20,5 +20,6 @@ "psr-4": { "Magento\\Version\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Webapi/Controller/Soap/Request/Handler.php b/app/code/Magento/Webapi/Controller/Soap/Request/Handler.php index 5e50cdee794ce..a01c5054f9b5f 100644 --- a/app/code/Magento/Webapi/Controller/Soap/Request/Handler.php +++ b/app/code/Magento/Webapi/Controller/Soap/Request/Handler.php @@ -179,7 +179,7 @@ private function prepareOperationInput(string $serviceClass, array $methodMetada * @param string $serviceMethod * @param array $arguments * @return array - * @deprecated + * @deprecated 100.3.2 * @see Handler::prepareOperationInput() */ protected function _prepareRequestData($serviceClass, $serviceMethod, $arguments) diff --git a/app/code/Magento/Webapi/Model/ConfigInterface.php b/app/code/Magento/Webapi/Model/ConfigInterface.php index 338c18795595f..a0467fb840ccb 100644 --- a/app/code/Magento/Webapi/Model/ConfigInterface.php +++ b/app/code/Magento/Webapi/Model/ConfigInterface.php @@ -12,6 +12,7 @@ * This class gives access to consolidated web API configuration from <Module_Name>/etc/webapi.xml files. * * @api + * @since 100.2.4 */ interface ConfigInterface { @@ -19,6 +20,7 @@ interface ConfigInterface * Return services loaded from cache if enabled or from files merged previously * * @return array + * @since 100.2.4 */ public function getServices(); } diff --git a/app/code/Magento/Webapi/composer.json b/app/code/Magento/Webapi/composer.json index c6cbdd8b3283a..2c2ea5abec07d 100644 --- a/app/code/Magento/Webapi/composer.json +++ b/app/code/Magento/Webapi/composer.json @@ -6,15 +6,15 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-authorization": "*", - "magento/module-backend": "*", - "magento/module-integration": "*", - "magento/module-store": "*" + "magento/framework": "102.0.*", + "magento/module-authorization": "100.3.*", + "magento/module-backend": "101.0.*", + "magento/module-integration": "100.3.*", + "magento/module-store": "101.0.*" }, "suggest": { - "magento/module-user": "*", - "magento/module-customer": "*" + "magento/module-user": "101.1.*", + "magento/module-customer": "102.0.*" }, "type": "magento2-module", "license": [ @@ -28,5 +28,6 @@ "psr-4": { "Magento\\Webapi\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/WebapiAsync/Model/BulkServiceConfig.php b/app/code/Magento/WebapiAsync/Model/BulkServiceConfig.php index a0499087c35b9..febe7cba0b7fc 100644 --- a/app/code/Magento/WebapiAsync/Model/BulkServiceConfig.php +++ b/app/code/Magento/WebapiAsync/Model/BulkServiceConfig.php @@ -15,6 +15,7 @@ /** * @api + * @since 100.2.0 */ class BulkServiceConfig implements \Magento\Webapi\Model\ConfigInterface { @@ -58,6 +59,7 @@ public function __construct( * Return services loaded from cache if enabled or from files merged previously * * @return array + * @since 100.2.0 */ public function getServices() { diff --git a/app/code/Magento/WebapiAsync/Model/ServiceConfig.php b/app/code/Magento/WebapiAsync/Model/ServiceConfig.php index 4c085935090bd..8387b2dc53118 100644 --- a/app/code/Magento/WebapiAsync/Model/ServiceConfig.php +++ b/app/code/Magento/WebapiAsync/Model/ServiceConfig.php @@ -17,6 +17,7 @@ * This class gives access to consolidated web API configuration from <Module_Name>/etc/webapi_async.xml files. * * @api + * @since 100.2.0 */ class ServiceConfig { @@ -63,6 +64,7 @@ public function __construct( * Return services loaded from cache if enabled or from files merged previously * * @return array + * @since 100.2.0 */ public function getServices() { diff --git a/app/code/Magento/WebapiAsync/composer.json b/app/code/Magento/WebapiAsync/composer.json index 815e4574abf55..54a235a41fb6d 100644 --- a/app/code/Magento/WebapiAsync/composer.json +++ b/app/code/Magento/WebapiAsync/composer.json @@ -6,13 +6,13 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-webapi": "*", - "magento/module-asynchronous-operations": "*" + "magento/framework": "102.0.*", + "magento/module-webapi": "100.3.*", + "magento/module-asynchronous-operations": "100.3.*" }, "suggest": { - "magento/module-user": "*", - "magento/module-customer": "*" + "magento/module-user": "101.1.*", + "magento/module-customer": "102.0.*" }, "type": "magento2-module", "license": [ @@ -26,5 +26,6 @@ "psr-4": { "Magento\\WebapiAsync\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/WebapiSecurity/composer.json b/app/code/Magento/WebapiSecurity/composer.json index bdb1487cac023..54c264b49c4b7 100644 --- a/app/code/Magento/WebapiSecurity/composer.json +++ b/app/code/Magento/WebapiSecurity/composer.json @@ -6,8 +6,8 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-webapi": "*" + "magento/framework": "102.0.*", + "magento/module-webapi": "100.3.*" }, "type": "magento2-module", "license": [ @@ -21,5 +21,6 @@ "psr-4": { "Magento\\WebapiSecurity\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Weee/composer.json b/app/code/Magento/Weee/composer.json index 3f832ce51ee83..fac35769393d4 100644 --- a/app/code/Magento/Weee/composer.json +++ b/app/code/Magento/Weee/composer.json @@ -6,22 +6,22 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-catalog": "*", - "magento/module-checkout": "*", - "magento/module-customer": "*", - "magento/module-directory": "*", - "magento/module-eav": "*", - "magento/module-page-cache": "*", - "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-checkout": "100.3.*", + "magento/module-customer": "102.0.*", + "magento/module-directory": "100.3.*", + "magento/module-eav": "102.0.*", + "magento/module-page-cache": "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-bundle": "*" + "magento/module-bundle": "100.3.*" }, "type": "magento2-module", "license": [ @@ -35,5 +35,6 @@ "psr-4": { "Magento\\Weee\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/WeeeGraphQl/composer.json b/app/code/Magento/WeeeGraphQl/composer.json index eb7835cf0d889..81629350e01f1 100644 --- a/app/code/Magento/WeeeGraphQl/composer.json +++ b/app/code/Magento/WeeeGraphQl/composer.json @@ -4,11 +4,11 @@ "type": "magento2-module", "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*" + "magento/framework": "102.0.*" }, "suggest": { - "magento/module-weee": "*", - "magento/module-catalog-graph-ql": "*" + "magento/module-weee": "100.3.*", + "magento/module-catalog-graph-ql": "100.3.*" }, "license": [ "OSL-3.0", @@ -21,5 +21,6 @@ "psr-4": { "Magento\\WeeeGraphQl\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/Widget/Controller/Adminhtml/Widget/LoadOptions.php b/app/code/Magento/Widget/Controller/Adminhtml/Widget/LoadOptions.php index 03d9d10311382..fe96cbecb425a 100644 --- a/app/code/Magento/Widget/Controller/Adminhtml/Widget/LoadOptions.php +++ b/app/code/Magento/Widget/Controller/Adminhtml/Widget/LoadOptions.php @@ -60,7 +60,7 @@ public function execute() /** * @return \Magento\Widget\Helper\Conditions - * @deprecated 100.1.4 + * @deprecated 101.0.0 */ private function getConditionsHelper() { diff --git a/app/code/Magento/Widget/Model/ResourceModel/Widget.php b/app/code/Magento/Widget/Model/ResourceModel/Widget.php index 8d78bb5a56800..4ed77b48f297d 100644 --- a/app/code/Magento/Widget/Model/ResourceModel/Widget.php +++ b/app/code/Magento/Widget/Model/ResourceModel/Widget.php @@ -9,7 +9,7 @@ /** * Resource model for widget. * - * @deprecated 100.2.0 Data from this table was moved to xml(widget.xml). + * @deprecated 101.0.0 Data from this table was moved to xml(widget.xml). */ class Widget extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb { diff --git a/app/code/Magento/Widget/Model/ResourceModel/Widget/Instance/Options/ThemeId.php b/app/code/Magento/Widget/Model/ResourceModel/Widget/Instance/Options/ThemeId.php index 8e5d8d63840fb..0532c57f0306d 100644 --- a/app/code/Magento/Widget/Model/ResourceModel/Widget/Instance/Options/ThemeId.php +++ b/app/code/Magento/Widget/Model/ResourceModel/Widget/Instance/Options/ThemeId.php @@ -9,7 +9,7 @@ /** * Widget Instance Theme Id Options * - * @deprecated 100.2.0 created new class that correctly loads theme options and whose name follows naming convention + * @deprecated 100.1.7 created new class that correctly loads theme options and whose name follows naming convention * @see \Magento\Widget\Model\ResourceModel\Widget\Instance\Options\Themes */ class ThemeId implements \Magento\Framework\Option\ArrayInterface diff --git a/app/code/Magento/Widget/Model/Widget.php b/app/code/Magento/Widget/Model/Widget.php index d07e84186b2c9..195c3f397ff18 100644 --- a/app/code/Magento/Widget/Model/Widget.php +++ b/app/code/Magento/Widget/Model/Widget.php @@ -88,7 +88,7 @@ public function __construct( * * @return \Magento\Framework\Math\Random * - * @deprecated 100.1.0 + * @deprecated 100.0.10 */ private function getMathRandom() { @@ -127,7 +127,7 @@ public function getWidgetByClassType($type) * @param string $type Widget type * @return null|\Magento\Framework\Simplexml\Element * - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ public function getConfigAsXml($type) { diff --git a/app/code/Magento/Widget/Model/Widget/Instance.php b/app/code/Magento/Widget/Model/Widget/Instance.php index 4ca126e659e09..7f4e3ae8610ba 100644 --- a/app/code/Magento/Widget/Model/Widget/Instance.php +++ b/app/code/Magento/Widget/Model/Widget/Instance.php @@ -99,11 +99,13 @@ class Instance extends \Magento\Framework\Model\AbstractModel /** * @var \Magento\Catalog\Model\Product\Type + * @since 101.0.4 */ protected $_productType; /** * @var \Magento\Widget\Model\Config\Reader + * @since 101.0.4 */ protected $_reader; diff --git a/app/code/Magento/Widget/composer.json b/app/code/Magento/Widget/composer.json index f0b0121ac60cd..57937f8d15a45 100644 --- a/app/code/Magento/Widget/composer.json +++ b/app/code/Magento/Widget/composer.json @@ -6,16 +6,16 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-backend": "*", - "magento/module-catalog": "*", - "magento/module-cms": "*", - "magento/module-store": "*", - "magento/module-theme": "*", - "magento/module-variable": "*" + "magento/framework": "102.0.*", + "magento/module-backend": "101.0.*", + "magento/module-catalog": "103.0.*", + "magento/module-cms": "103.0.*", + "magento/module-store": "101.0.*", + "magento/module-theme": "101.0.*", + "magento/module-variable": "100.3.*" }, "suggest": { - "magento/module-widget-sample-data": "*" + "magento/module-widget-sample-data": "Sample Data version: 100.3.*" }, "type": "magento2-module", "license": [ @@ -29,5 +29,6 @@ "psr-4": { "Magento\\Widget\\": "" } - } + }, + "version": "101.1.2" } diff --git a/app/code/Magento/Wishlist/Block/AbstractBlock.php b/app/code/Magento/Wishlist/Block/AbstractBlock.php index 981a0da1d241f..5f4a7c8f3814b 100644 --- a/app/code/Magento/Wishlist/Block/AbstractBlock.php +++ b/app/code/Magento/Wishlist/Block/AbstractBlock.php @@ -231,7 +231,7 @@ public function hasDescription($item) * Retrieve formatted Date * * @param string $date - * @deprecated + * @deprecated 101.1.1 * @return string */ public function getFormatedDate($date) diff --git a/app/code/Magento/Wishlist/Block/Customer/Wishlist.php b/app/code/Magento/Wishlist/Block/Customer/Wishlist.php index d02f2229401c1..bc94f53a7625a 100644 --- a/app/code/Magento/Wishlist/Block/Customer/Wishlist.php +++ b/app/code/Magento/Wishlist/Block/Customer/Wishlist.php @@ -31,6 +31,7 @@ class Wishlist extends \Magento\Wishlist\Block\AbstractBlock /** * @var \Magento\Wishlist\Model\ResourceModel\Item\Collection + * @since 101.1.1 */ protected $_collection; @@ -101,6 +102,7 @@ private function paginateCollection() * Retrieve Wishlist Product Items collection * * @return \Magento\Wishlist\Model\ResourceModel\Item\Collection + * @since 101.1.1 */ public function getWishlistItems() { diff --git a/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Actions.php b/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Actions.php index 40882ae00dae1..db92a10907d39 100644 --- a/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Actions.php +++ b/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Actions.php @@ -13,7 +13,7 @@ * Model for item column in customer wishlist. * * @api - * @deprecated + * @deprecated 101.1.2 * @since 100.0.2 */ class Actions extends \Magento\Wishlist\Block\Customer\Wishlist\Item\Column diff --git a/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Comment.php b/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Comment.php index 53f67626e956d..57d182dee4e1c 100644 --- a/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Comment.php +++ b/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Comment.php @@ -13,7 +13,7 @@ * Wishlist block customer item cart column. * * @api - * @deprecated + * @deprecated 101.1.2 * @since 100.0.2 */ class Comment extends \Magento\Wishlist\Block\Customer\Wishlist\Item\Column diff --git a/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Edit.php b/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Edit.php index c4c786961694b..f41146051ae96 100644 --- a/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Edit.php +++ b/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Edit.php @@ -13,7 +13,7 @@ * Edit item in customer wishlist table. * * @api - * @deprecated + * @deprecated 101.1.2 * @since 100.0.2 */ class Edit extends \Magento\Wishlist\Block\Customer\Wishlist\Item\Column diff --git a/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Image.php b/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Image.php index 5595d189b15eb..c578e9d1c5d22 100644 --- a/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Image.php +++ b/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Image.php @@ -53,6 +53,7 @@ public function __construct( * Identify the product from which thumbnail should be taken. * * @return \Magento\Catalog\Model\Product + * @since 101.0.5 */ public function getProductForThumbnail(\Magento\Wishlist\Model\Item $item) : \Magento\Catalog\Model\Product { diff --git a/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Info.php b/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Info.php index b7eaf53fc23b5..092ede9ceb016 100644 --- a/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Info.php +++ b/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Info.php @@ -13,7 +13,7 @@ * Wishlist block customer item cart column. * * @api - * @deprecated + * @deprecated 101.1.2 * @since 100.0.2 */ class Info extends \Magento\Wishlist\Block\Customer\Wishlist\Item\Column diff --git a/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Remove.php b/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Remove.php index 09f5014edead6..472cd3cc70f09 100644 --- a/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Remove.php +++ b/app/code/Magento/Wishlist/Block/Customer/Wishlist/Item/Column/Remove.php @@ -13,7 +13,7 @@ * Delete item column in customer wishlist table * * @api - * @deprecated + * @deprecated 101.1.2 * @since 100.0.2 */ class Remove extends \Magento\Wishlist\Block\Customer\Wishlist\Item\Column diff --git a/app/code/Magento/Wishlist/Block/Link.php b/app/code/Magento/Wishlist/Block/Link.php index 2d78852f0fd32..c410a1254edee 100644 --- a/app/code/Magento/Wishlist/Block/Link.php +++ b/app/code/Magento/Wishlist/Block/Link.php @@ -75,7 +75,7 @@ public function getLabel() /** * {@inheritdoc} - * @since 100.2.0 + * @since 101.0.0 */ public function getSortOrder() { diff --git a/app/code/Magento/Wishlist/Controller/Index/Add.php b/app/code/Magento/Wishlist/Controller/Index/Add.php index 5cb60905aea48..3ed152cb84125 100644 --- a/app/code/Magento/Wishlist/Controller/Index/Add.php +++ b/app/code/Magento/Wishlist/Controller/Index/Add.php @@ -7,15 +7,18 @@ use Magento\Catalog\Api\ProductRepositoryInterface; use Magento\Framework\App\Action; +use Magento\Framework\App\Action\HttpPostActionInterface; use Magento\Framework\Data\Form\FormKey\Validator; use Magento\Framework\Exception\NotFoundException; use Magento\Framework\Exception\NoSuchEntityException; use Magento\Framework\Controller\ResultFactory; /** + * Wish list Add controller + * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ -class Add extends \Magento\Wishlist\Controller\AbstractIndex +class Add extends \Magento\Wishlist\Controller\AbstractIndex implements HttpPostActionInterface { /** * @var \Magento\Wishlist\Controller\WishlistProviderInterface @@ -138,6 +141,7 @@ public function execute() 'referer' => $referer ] ); + // phpcs:disable Magento2.Exceptions.ThrowCatch } catch (\Magento\Framework\Exception\LocalizedException $e) { $this->messageManager->addErrorMessage( __('We can\'t add the item to Wish List right now: %1.', $e->getMessage()) diff --git a/app/code/Magento/Wishlist/Observer/AddToCart.php b/app/code/Magento/Wishlist/Observer/AddToCart.php index 1ab24d87efbf7..e31a8993670c6 100644 --- a/app/code/Magento/Wishlist/Observer/AddToCart.php +++ b/app/code/Magento/Wishlist/Observer/AddToCart.php @@ -15,7 +15,7 @@ /** * Class AddToCart - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @package Magento\Wishlist\Observer */ class AddToCart implements ObserverInterface diff --git a/app/code/Magento/Wishlist/composer.json b/app/code/Magento/Wishlist/composer.json index c9c74c8859e42..14c43f1062c58 100644 --- a/app/code/Magento/Wishlist/composer.json +++ b/app/code/Magento/Wishlist/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-customer": "*", - "magento/module-rss": "*", - "magento/module-sales": "*", - "magento/module-store": "*", - "magento/module-theme": "*", - "magento/module-ui": "*", - "magento/module-captcha": "*" + "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-rss": "100.3.*", + "magento/module-sales": "102.0.*", + "magento/module-store": "101.0.*", + "magento/module-theme": "101.0.*", + "magento/module-ui": "101.1.*", + "magento/module-captcha": "100.3.*" }, "suggest": { - "magento/module-configurable-product": "*", - "magento/module-downloadable": "*", - "magento/module-bundle": "*", - "magento/module-cookie": "*", - "magento/module-grouped-product": "*", - "magento/module-wishlist-sample-data": "*" + "magento/module-configurable-product": "100.3.*", + "magento/module-downloadable": "100.3.*", + "magento/module-bundle": "100.3.*", + "magento/module-cookie": "100.3.*", + "magento/module-grouped-product": "100.3.*", + "magento/module-wishlist-sample-data": "Sample Data version: 100.3.*" }, "type": "magento2-module", "license": [ @@ -39,5 +39,6 @@ "psr-4": { "Magento\\Wishlist\\": "" } - } + }, + "version": "101.1.2-p2" } diff --git a/app/code/Magento/WishlistAnalytics/composer.json b/app/code/Magento/WishlistAnalytics/composer.json index 747f2a4baaaa9..0726feba6fe59 100644 --- a/app/code/Magento/WishlistAnalytics/composer.json +++ b/app/code/Magento/WishlistAnalytics/composer.json @@ -3,9 +3,9 @@ "description": "N/A", "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-wishlist": "*", - "magento/module-analytics": "*" + "magento/framework": "102.0.*", + "magento/module-wishlist": "101.1.*", + "magento/module-analytics": "100.3.*" }, "type": "magento2-module", "license": [ @@ -19,5 +19,6 @@ "psr-4": { "Magento\\WishlistAnalytics\\": "" } - } + }, + "version": "100.3.2" } diff --git a/app/code/Magento/WishlistGraphQl/composer.json b/app/code/Magento/WishlistGraphQl/composer.json index 630ee97acc2eb..941f9ae1285c2 100644 --- a/app/code/Magento/WishlistGraphQl/composer.json +++ b/app/code/Magento/WishlistGraphQl/composer.json @@ -4,10 +4,10 @@ "type": "magento2-module", "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/module-catalog-graph-ql": "*", - "magento/module-wishlist": "*", - "magento/module-store": "*" + "magento/framework": "102.0.*", + "magento/module-catalog-graph-ql": "100.3.*", + "magento/module-wishlist": "101.1.*", + "magento/module-store": "101.0.*" }, "license": [ "OSL-3.0", @@ -20,5 +20,6 @@ "psr-4": { "Magento\\WishlistGraphQl\\": "" } - } + }, + "version": "100.3.1" } diff --git a/app/design/adminhtml/Magento/backend/composer.json b/app/design/adminhtml/Magento/backend/composer.json index d03a4c1950c5f..7cac4335815dd 100644 --- a/app/design/adminhtml/Magento/backend/composer.json +++ b/app/design/adminhtml/Magento/backend/composer.json @@ -6,7 +6,7 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*" + "magento/framework": "102.0.*" }, "type": "magento2-theme", "license": [ @@ -17,5 +17,6 @@ "files": [ "registration.php" ] - } + }, + "version": "100.3.2" } diff --git a/app/design/frontend/Magento/blank/composer.json b/app/design/frontend/Magento/blank/composer.json index b9f0b5e66ab5e..a4963db5fc54c 100644 --- a/app/design/frontend/Magento/blank/composer.json +++ b/app/design/frontend/Magento/blank/composer.json @@ -6,7 +6,7 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*" + "magento/framework": "102.0.*" }, "type": "magento2-theme", "license": [ @@ -17,5 +17,6 @@ "files": [ "registration.php" ] - } + }, + "version": "100.3.2" } diff --git a/app/design/frontend/Magento/luma/composer.json b/app/design/frontend/Magento/luma/composer.json index 6b632b06c66dc..77a0a52b2bc07 100644 --- a/app/design/frontend/Magento/luma/composer.json +++ b/app/design/frontend/Magento/luma/composer.json @@ -6,8 +6,8 @@ }, "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*", - "magento/theme-frontend-blank": "*" + "magento/framework": "102.0.*", + "magento/theme-frontend-blank": "100.3.*" }, "type": "magento2-theme", "license": [ @@ -18,5 +18,6 @@ "files": [ "registration.php" ] - } + }, + "version": "100.3.2" } diff --git a/app/etc/di.xml b/app/etc/di.xml index 200a56201239d..5f3f90ce90455 100755 --- a/app/etc/di.xml +++ b/app/etc/di.xml @@ -662,6 +662,14 @@ <argument name="argumentInterpreter" xsi:type="object">layoutArgumentGeneratorInterpreter</argument> </arguments> </type> + <type name="Magento\Framework\View\Element\UiComponent\Argument\Interpreter\ConfigurableObject"> + <arguments> + <argument name="classWhitelist" xsi:type="array"> + <item name="0" xsi:type="string">Magento\Framework\Data\OptionSourceInterface</item> + <item name="1" xsi:type="string">Magento\Framework\View\Element\UiComponent\DataProvider\DataProviderInterface</item> + </argument> + </arguments> + </type> <type name="Magento\Framework\Mview\View"> <arguments> <argument name="state" xsi:type="object" shared="false">Magento\Indexer\Model\Mview\View\State</argument> @@ -1101,6 +1109,16 @@ <argument name="schemaLocator" xsi:type="object">Magento\Framework\DataObject\Copy\Config\SchemaLocator</argument> </arguments> </type> + <virtualType name="Magento\Framework\Config\ValidationState\Required" type="Magento\Framework\Config\ValidationState\Configurable"> + <arguments> + <argument name="required" xsi:type="boolean">true</argument> + </arguments> + </virtualType> + <virtualType name="Magento\Framework\Config\ValidationState\NotRequired" type="Magento\Framework\Config\ValidationState\Configurable"> + <arguments> + <argument name="required" xsi:type="boolean">false</argument> + </arguments> + </virtualType> <type name="Magento\Framework\DataObject\Copy\Config\SchemaLocator"> <arguments> <argument name="schema" xsi:type="string">urn:magento:framework:DataObject/etc/fieldset.xsd</argument> diff --git a/app/i18n/Magento/de_DE/composer.json b/app/i18n/Magento/de_DE/composer.json index 5a488a3e32c2b..87e0e57a1c5d5 100644 --- a/app/i18n/Magento/de_DE/composer.json +++ b/app/i18n/Magento/de_DE/composer.json @@ -9,12 +9,13 @@ "sort-packages": true }, "require": { - "magento/framework": "*" + "magento/framework": "102.0.*" }, "type": "magento2-language", "autoload": { "files": [ "registration.php" ] - } + }, + "version": "100.3.2" } diff --git a/app/i18n/Magento/en_US/composer.json b/app/i18n/Magento/en_US/composer.json index 1108c70de28a6..2745cc174a648 100644 --- a/app/i18n/Magento/en_US/composer.json +++ b/app/i18n/Magento/en_US/composer.json @@ -9,12 +9,13 @@ "sort-packages": true }, "require": { - "magento/framework": "*" + "magento/framework": "102.0.*" }, "type": "magento2-language", "autoload": { "files": [ "registration.php" ] - } + }, + "version": "100.3.2" } diff --git a/app/i18n/Magento/es_ES/composer.json b/app/i18n/Magento/es_ES/composer.json index 5bc3cb5730adf..13a98d5bf33f2 100644 --- a/app/i18n/Magento/es_ES/composer.json +++ b/app/i18n/Magento/es_ES/composer.json @@ -9,12 +9,13 @@ "sort-packages": true }, "require": { - "magento/framework": "*" + "magento/framework": "102.0.*" }, "type": "magento2-language", "autoload": { "files": [ "registration.php" ] - } + }, + "version": "100.3.2" } diff --git a/app/i18n/Magento/fr_FR/composer.json b/app/i18n/Magento/fr_FR/composer.json index 50c541308673b..6a44884fbda75 100644 --- a/app/i18n/Magento/fr_FR/composer.json +++ b/app/i18n/Magento/fr_FR/composer.json @@ -9,12 +9,13 @@ "sort-packages": true }, "require": { - "magento/framework": "*" + "magento/framework": "102.0.*" }, "type": "magento2-language", "autoload": { "files": [ "registration.php" ] - } + }, + "version": "100.3.2" } diff --git a/app/i18n/Magento/nl_NL/composer.json b/app/i18n/Magento/nl_NL/composer.json index a182e179d4103..44c49a11ad3eb 100644 --- a/app/i18n/Magento/nl_NL/composer.json +++ b/app/i18n/Magento/nl_NL/composer.json @@ -9,12 +9,13 @@ "sort-packages": true }, "require": { - "magento/framework": "*" + "magento/framework": "102.0.*" }, "type": "magento2-language", "autoload": { "files": [ "registration.php" ] - } + }, + "version": "100.3.2" } diff --git a/app/i18n/Magento/pt_BR/composer.json b/app/i18n/Magento/pt_BR/composer.json index 46734cc09b363..243964cb9a683 100644 --- a/app/i18n/Magento/pt_BR/composer.json +++ b/app/i18n/Magento/pt_BR/composer.json @@ -9,12 +9,13 @@ "sort-packages": true }, "require": { - "magento/framework": "*" + "magento/framework": "102.0.*" }, "type": "magento2-language", "autoload": { "files": [ "registration.php" ] - } + }, + "version": "100.3.2" } diff --git a/app/i18n/Magento/zh_Hans_CN/composer.json b/app/i18n/Magento/zh_Hans_CN/composer.json index ce214ce649f56..35243d834cc27 100644 --- a/app/i18n/Magento/zh_Hans_CN/composer.json +++ b/app/i18n/Magento/zh_Hans_CN/composer.json @@ -9,12 +9,13 @@ "sort-packages": true }, "require": { - "magento/framework": "*" + "magento/framework": "102.0.*" }, "type": "magento2-language", "autoload": { "files": [ "registration.php" ] - } + }, + "version": "100.3.2" } diff --git a/composer.json b/composer.json index cff2d676038d7..1878c289fc16c 100644 --- a/composer.json +++ b/composer.json @@ -97,182 +97,182 @@ "ext-pcntl": "Need for run processes in parallel mode" }, "replace": { - "magento/module-marketplace": "*", - "magento/module-admin-notification": "*", - "magento/module-advanced-pricing-import-export": "*", - "magento/module-amqp": "*", - "magento/module-analytics": "*", - "magento/module-asynchronous-operations": "*", - "magento/module-authorization": "*", - "magento/module-authorizenet": "*", - "magento/module-authorizenet-acceptjs": "*", - "magento/module-advanced-search": "*", - "magento/module-backend": "*", - "magento/module-backup": "*", - "magento/module-braintree": "*", - "magento/module-bundle": "*", - "magento/module-bundle-graph-ql": "*", - "magento/module-bundle-import-export": "*", - "magento/module-cache-invalidate": "*", - "magento/module-captcha": "*", - "magento/module-catalog": "*", - "magento/module-catalog-analytics": "*", - "magento/module-catalog-import-export": "*", - "magento/module-catalog-inventory": "*", - "magento/module-catalog-inventory-graph-ql": "*", - "magento/module-catalog-rule": "*", - "magento/module-catalog-rule-configurable": "*", - "magento/module-catalog-search": "*", - "magento/module-catalog-url-rewrite": "*", - "magento/module-catalog-widget": "*", - "magento/module-checkout": "*", - "magento/module-checkout-agreements": "*", - "magento/module-cms": "*", - "magento/module-cms-url-rewrite": "*", - "magento/module-config": "*", - "magento/module-configurable-import-export": "*", - "magento/module-configurable-product": "*", - "magento/module-configurable-product-sales": "*", - "magento/module-contact": "*", - "magento/module-cookie": "*", - "magento/module-cron": "*", - "magento/module-currency-symbol": "*", - "magento/module-customer": "*", - "magento/module-customer-analytics": "*", - "magento/module-customer-import-export": "*", - "magento/module-deploy": "*", - "magento/module-developer": "*", - "magento/module-dhl": "*", - "magento/module-directory": "*", - "magento/module-directory-graph-ql": "*", - "magento/module-downloadable": "*", - "magento/module-downloadable-graph-ql": "*", - "magento/module-downloadable-import-export": "*", - "magento/module-eav": "*", - "magento/module-elasticsearch": "*", - "magento/module-elasticsearch-6": "*", - "magento/module-email": "*", - "magento/module-encryption-key": "*", - "magento/module-fedex": "*", - "magento/module-gift-message": "*", - "magento/module-google-adwords": "*", - "magento/module-google-analytics": "*", - "magento/module-google-optimizer": "*", - "magento/module-graph-ql": "*", - "magento/module-graph-ql-cache": "*", - "magento/module-catalog-graph-ql": "*", - "magento/module-catalog-url-rewrite-graph-ql": "*", - "magento/module-configurable-product-graph-ql": "*", - "magento/module-customer-graph-ql": "*", - "magento/module-eav-graph-ql": "*", - "magento/module-swatches-graph-ql": "*", - "magento/module-tax-graph-ql": "*", - "magento/module-url-rewrite-graph-ql": "*", - "magento/module-cms-url-rewrite-graph-ql": "*", - "magento/module-weee-graph-ql": "*", - "magento/module-cms-graph-ql": "*", - "magento/module-grouped-import-export": "*", - "magento/module-grouped-product": "*", - "magento/module-grouped-catalog-inventory": "*", - "magento/module-grouped-product-graph-ql": "*", - "magento/module-import-export": "*", - "magento/module-indexer": "*", - "magento/module-instant-purchase": "*", - "magento/module-integration": "*", - "magento/module-layered-navigation": "*", - "magento/module-media-storage": "*", - "magento/module-message-queue": "*", - "magento/module-msrp": "*", - "magento/module-msrp-configurable-product": "*", - "magento/module-msrp-grouped-product": "*", - "magento/module-multishipping": "*", - "magento/module-mysql-mq": "*", - "magento/module-new-relic-reporting": "*", - "magento/module-newsletter": "*", - "magento/module-offline-payments": "*", - "magento/module-offline-shipping": "*", - "magento/module-page-cache": "*", - "magento/module-payment": "*", - "magento/module-paypal": "*", - "magento/module-paypal-captcha": "*", - "magento/module-persistent": "*", - "magento/module-product-alert": "*", - "magento/module-product-video": "*", - "magento/module-quote": "*", - "magento/module-quote-analytics": "*", - "magento/module-quote-graph-ql": "*", - "magento/module-release-notification": "*", - "magento/module-reports": "*", - "magento/module-require-js": "*", - "magento/module-review": "*", - "magento/module-review-analytics": "*", - "magento/module-robots": "*", - "magento/module-rss": "*", - "magento/module-rule": "*", - "magento/module-sales": "*", - "magento/module-sales-analytics": "*", - "magento/module-sales-graph-ql": "*", - "magento/module-sales-inventory": "*", - "magento/module-sales-rule": "*", - "magento/module-sales-sequence": "*", - "magento/module-sample-data": "*", - "magento/module-search": "*", - "magento/module-security": "*", - "magento/module-send-friend": "*", - "magento/module-send-friend-graph-ql": "*", - "magento/module-shipping": "*", - "magento/module-signifyd": "*", - "magento/module-sitemap": "*", - "magento/module-store": "*", - "magento/module-store-graph-ql": "*", - "magento/module-swagger": "*", - "magento/module-swagger-webapi": "*", - "magento/module-swagger-webapi-async": "*", - "magento/module-swatches": "*", - "magento/module-swatches-layered-navigation": "*", - "magento/module-tax": "*", - "magento/module-tax-import-export": "*", - "magento/module-theme": "*", - "magento/module-theme-graph-ql": "*", - "magento/module-translation": "*", - "magento/module-ui": "*", - "magento/module-ups": "*", - "magento/module-url-rewrite": "*", - "magento/module-user": "*", - "magento/module-usps": "*", - "magento/module-variable": "*", - "magento/module-vault": "*", - "magento/module-vault-graph-ql": "*", - "magento/module-version": "*", - "magento/module-webapi": "*", - "magento/module-webapi-async": "*", - "magento/module-webapi-security": "*", - "magento/module-weee": "*", - "magento/module-widget": "*", - "magento/module-wishlist": "*", - "magento/module-wishlist-graph-ql": "*", - "magento/module-wishlist-analytics": "*", - "magento/theme-adminhtml-backend": "*", - "magento/theme-frontend-blank": "*", - "magento/theme-frontend-luma": "*", - "magento/language-de_de": "*", - "magento/language-en_us": "*", - "magento/language-es_es": "*", - "magento/language-fr_fr": "*", - "magento/language-nl_nl": "*", - "magento/language-pt_br": "*", - "magento/language-zh_hans_cn": "*", - "magento/framework": "*", - "magento/framework-amqp": "*", - "magento/framework-bulk": "*", - "magento/framework-message-queue": "*", + "magento/module-marketplace": "100.3.2", + "magento/module-admin-notification": "100.3.2", + "magento/module-advanced-pricing-import-export": "100.3.2", + "magento/module-amqp": "100.3.2", + "magento/module-analytics": "100.3.2", + "magento/module-asynchronous-operations": "100.3.2", + "magento/module-authorization": "100.3.2", + "magento/module-authorizenet": "100.3.2", + "magento/module-authorizenet-acceptjs": "100.3.1", + "magento/module-advanced-search": "100.3.2", + "magento/module-backend": "101.0.2-p2", + "magento/module-backup": "100.3.2", + "magento/module-braintree": "100.3.2", + "magento/module-bundle": "100.3.2", + "magento/module-bundle-graph-ql": "100.3.2", + "magento/module-bundle-import-export": "100.3.2", + "magento/module-cache-invalidate": "100.3.2", + "magento/module-captcha": "100.3.2", + "magento/module-catalog": "103.0.2-p2", + "magento/module-catalog-analytics": "100.3.2", + "magento/module-catalog-import-export": "101.0.2-p2", + "magento/module-catalog-inventory": "100.3.2-p2", + "magento/module-catalog-inventory-graph-ql": "100.3.2", + "magento/module-catalog-rule": "101.1.2", + "magento/module-catalog-rule-configurable": "100.3.2", + "magento/module-catalog-search": "101.0.2-p2", + "magento/module-catalog-url-rewrite": "100.3.2", + "magento/module-catalog-widget": "100.3.2", + "magento/module-checkout": "100.3.2", + "magento/module-checkout-agreements": "100.3.2", + "magento/module-cms": "103.0.2-p2", + "magento/module-cms-url-rewrite": "100.3.2", + "magento/module-config": "101.1.2-p2", + "magento/module-configurable-import-export": "100.3.2", + "magento/module-configurable-product": "100.3.2-p2", + "magento/module-configurable-product-sales": "100.3.2", + "magento/module-contact": "100.3.2", + "magento/module-cookie": "100.3.2", + "magento/module-cron": "100.3.2", + "magento/module-currency-symbol": "100.3.2-p2", + "magento/module-customer": "102.0.2-p2", + "magento/module-customer-analytics": "100.3.2", + "magento/module-customer-import-export": "100.3.2", + "magento/module-deploy": "100.3.2", + "magento/module-developer": "100.3.2", + "magento/module-dhl": "100.3.2", + "magento/module-directory": "100.3.2", + "magento/module-directory-graph-ql": "100.3.1", + "magento/module-downloadable": "100.3.2-p2", + "magento/module-downloadable-graph-ql": "100.3.2", + "magento/module-downloadable-import-export": "100.3.2-p2", + "magento/module-eav": "102.0.2-p2", + "magento/module-elasticsearch": "100.3.2", + "magento/module-elasticsearch-6": "100.3.1", + "magento/module-email": "101.0.2-p2", + "magento/module-encryption-key": "100.3.2", + "magento/module-fedex": "100.3.2", + "magento/module-gift-message": "100.3.2", + "magento/module-google-adwords": "100.3.2", + "magento/module-google-analytics": "100.3.2", + "magento/module-google-optimizer": "100.3.2", + "magento/module-graph-ql": "100.3.2", + "magento/module-graph-ql-cache": "100.3.0", + "magento/module-catalog-graph-ql": "100.3.2", + "magento/module-catalog-url-rewrite-graph-ql": "100.3.2", + "magento/module-configurable-product-graph-ql": "100.3.2", + "magento/module-customer-graph-ql": "100.3.2", + "magento/module-eav-graph-ql": "100.3.2", + "magento/module-swatches-graph-ql": "100.3.2", + "magento/module-tax-graph-ql": "100.3.2", + "magento/module-url-rewrite-graph-ql": "100.3.2", + "magento/module-cms-url-rewrite-graph-ql": "100.3.2", + "magento/module-weee-graph-ql": "100.3.2", + "magento/module-cms-graph-ql": "100.3.2", + "magento/module-grouped-import-export": "100.3.2", + "magento/module-grouped-product": "100.3.2", + "magento/module-grouped-catalog-inventory": "100.3.1", + "magento/module-grouped-product-graph-ql": "100.3.2", + "magento/module-import-export": "100.3.2-p2", + "magento/module-indexer": "100.3.2", + "magento/module-instant-purchase": "100.3.2", + "magento/module-integration": "100.3.2", + "magento/module-layered-navigation": "100.3.2", + "magento/module-media-storage": "100.3.2-p2", + "magento/module-message-queue": "100.3.2", + "magento/module-msrp": "100.3.2", + "magento/module-msrp-configurable-product": "100.3.1", + "magento/module-msrp-grouped-product": "100.3.1", + "magento/module-multishipping": "100.3.2", + "magento/module-mysql-mq": "100.3.2", + "magento/module-new-relic-reporting": "100.3.2", + "magento/module-newsletter": "100.3.2", + "magento/module-offline-payments": "100.3.2", + "magento/module-offline-shipping": "100.3.2", + "magento/module-page-cache": "100.3.2", + "magento/module-payment": "100.3.2-p2", + "magento/module-paypal": "100.3.2", + "magento/module-paypal-captcha": "100.3.0", + "magento/module-persistent": "100.3.2", + "magento/module-product-alert": "100.3.2", + "magento/module-product-video": "100.3.2", + "magento/module-quote": "101.1.2", + "magento/module-quote-analytics": "100.3.2", + "magento/module-quote-graph-ql": "100.3.2", + "magento/module-release-notification": "100.3.2", + "magento/module-reports": "100.3.2", + "magento/module-require-js": "100.3.2", + "magento/module-review": "100.3.2", + "magento/module-review-analytics": "100.3.2", + "magento/module-robots": "101.0.2", + "magento/module-rss": "100.3.2-p2", + "magento/module-rule": "100.3.2-p2", + "magento/module-sales": "102.0.2", + "magento/module-sales-analytics": "100.3.2", + "magento/module-sales-graph-ql": "100.3.1", + "magento/module-sales-inventory": "100.3.2", + "magento/module-sales-rule": "101.1.2", + "magento/module-sales-sequence": "100.3.2", + "magento/module-sample-data": "100.3.2", + "magento/module-search": "101.0.2-p2", + "magento/module-security": "100.3.2-p2", + "magento/module-send-friend": "100.3.2-p2", + "magento/module-send-friend-graph-ql": "100.3.1", + "magento/module-shipping": "100.3.2", + "magento/module-signifyd": "100.3.2", + "magento/module-sitemap": "100.3.2", + "magento/module-store": "101.0.2-p2", + "magento/module-store-graph-ql": "100.3.2", + "magento/module-swagger": "100.3.2", + "magento/module-swagger-webapi": "100.3.2", + "magento/module-swagger-webapi-async": "100.3.2", + "magento/module-swatches": "100.3.2", + "magento/module-swatches-layered-navigation": "100.3.2", + "magento/module-tax": "100.3.2", + "magento/module-tax-import-export": "100.3.2", + "magento/module-theme": "101.0.2-p2", + "magento/module-theme-graph-ql": "100.3.1", + "magento/module-translation": "100.3.2-p2", + "magento/module-ui": "101.1.2-p2", + "magento/module-ups": "100.3.2-p2", + "magento/module-url-rewrite": "101.1.2", + "magento/module-user": "101.1.2", + "magento/module-usps": "100.3.2", + "magento/module-variable": "100.3.2", + "magento/module-vault": "101.1.2", + "magento/module-vault-graph-ql": "100.3.0", + "magento/module-version": "100.3.2", + "magento/module-webapi": "100.3.2", + "magento/module-webapi-async": "100.3.2", + "magento/module-webapi-security": "100.3.2", + "magento/module-weee": "100.3.2", + "magento/module-widget": "101.1.2", + "magento/module-wishlist": "101.1.2-p2", + "magento/module-wishlist-graph-ql": "100.3.1", + "magento/module-wishlist-analytics": "100.3.2", + "magento/theme-adminhtml-backend": "100.3.2", + "magento/theme-frontend-blank": "100.3.2", + "magento/theme-frontend-luma": "100.3.2", + "magento/language-de_de": "100.3.2", + "magento/language-en_us": "100.3.2", + "magento/language-es_es": "100.3.2", + "magento/language-fr_fr": "100.3.2", + "magento/language-nl_nl": "100.3.2", + "magento/language-pt_br": "100.3.2", + "magento/language-zh_hans_cn": "100.3.2", + "magento/framework": "102.0.2-p2", + "magento/framework-amqp": "100.3.2", + "magento/framework-bulk": "100.3.2", + "magento/framework-message-queue": "100.3.2", "trentrichardson/jquery-timepicker-addon": "1.4.3", "components/jquery": "1.11.0", "blueimp/jquery-file-upload": "5.6.14", "components/jqueryui": "1.10.4", "twbs/bootstrap": "3.1.0", "tinymce/tinymce": "3.4.7", - "magento/module-tinymce-3": "*" + "magento/module-tinymce-3": "100.3.2" }, "conflict": { "gene/bluefoot": "*" @@ -326,5 +326,6 @@ "Magento\\TestFramework\\Utility\\": "dev/tests/static/framework/Magento/TestFramework/Utility/" } }, - "prefer-stable": true + "version": "2.3.2-p2", + "minimum-stability": "stable" } diff --git a/composer.lock b/composer.lock index 5d9f7fbdf695c..72ed3023665d7 100644 --- a/composer.lock +++ b/composer.lock @@ -1,10 +1,10 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "597fe6a47b695221292482fead498d83", + "content-hash": "5055a42b251e5f483b0a5a6b5a07e8d2", "packages": [ { "name": "braintree/braintree_php", @@ -55,16 +55,16 @@ }, { "name": "colinmollenhour/cache-backend-file", - "version": "v1.4.4", + "version": "v1.4.5", "source": { "type": "git", "url": "https://github.com/colinmollenhour/Cm_Cache_Backend_File.git", - "reference": "184171cc79933a828c3f9b1a1054724cea22a216" + "reference": "03c7d4c0f43b2de1b559a3527d18ff697d306544" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/Cm_Cache_Backend_File/zipball/184171cc79933a828c3f9b1a1054724cea22a216", - "reference": "184171cc79933a828c3f9b1a1054724cea22a216", + "url": "https://api.github.com/repos/colinmollenhour/Cm_Cache_Backend_File/zipball/03c7d4c0f43b2de1b559a3527d18ff697d306544", + "reference": "03c7d4c0f43b2de1b559a3527d18ff697d306544", "shasum": "" }, "type": "magento-module", @@ -84,7 +84,7 @@ ], "description": "The stock Zend_Cache_Backend_File backend has extremely poor performance for cleaning by tags making it become unusable as the number of cached items increases. This backend makes many changes resulting in a huge performance boost, especially for tag cleaning.", "homepage": "https://github.com/colinmollenhour/Cm_Cache_Backend_File", - "time": "2018-04-05T15:28:43+00:00" + "time": "2019-04-18T21:54:31+00:00" }, { "name": "colinmollenhour/cache-backend-redis", @@ -201,25 +201,25 @@ }, { "name": "composer/ca-bundle", - "version": "1.1.4", + "version": "1.2.4", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d" + "reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/558f321c52faeb4828c03e7dc0cfe39a09e09a2d", - "reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/10bb96592168a0f8e8f6dcde3532d9fa50b0b527", + "reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527", "shasum": "" }, "require": { "ext-openssl": "*", "ext-pcre": "*", - "php": "^5.3.2 || ^7.0" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", "psr/log": "^1.0", "symfony/process": "^2.5 || ^3.0 || ^4.0" }, @@ -253,20 +253,20 @@ "ssl", "tls" ], - "time": "2019-01-28T09:30:10+00:00" + "time": "2019-08-30T08:44:50+00:00" }, { "name": "composer/composer", - "version": "1.8.4", + "version": "1.9.0", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "bc364c2480c17941e2135cfc568fa41794392534" + "reference": "314aa57fdcfc942065996f59fb73a8b3f74f3fa5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/bc364c2480c17941e2135cfc568fa41794392534", - "reference": "bc364c2480c17941e2135cfc568fa41794392534", + "url": "https://api.github.com/repos/composer/composer/zipball/314aa57fdcfc942065996f59fb73a8b3f74f3fa5", + "reference": "314aa57fdcfc942065996f59fb73a8b3f74f3fa5", "shasum": "" }, "require": { @@ -302,7 +302,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -326,14 +326,14 @@ "homepage": "http://seld.be" } ], - "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.", + "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", "homepage": "https://getcomposer.org/", "keywords": [ "autoload", "dependency", "package" ], - "time": "2019-02-11T09:52:10+00:00" + "time": "2019-08-02T18:55:33+00:00" }, { "name": "composer/semver", @@ -399,16 +399,16 @@ }, { "name": "composer/spdx-licenses", - "version": "1.5.1", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d" + "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d", - "reference": "a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/7ac1e6aec371357df067f8a688c3d6974df68fa5", + "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5", "shasum": "" }, "require": { @@ -455,20 +455,20 @@ "spdx", "validator" ], - "time": "2019-03-26T10:23:26+00:00" + "time": "2019-07-29T10:31:59+00:00" }, { "name": "composer/xdebug-handler", - "version": "1.3.2", + "version": "1.3.3", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "d17708133b6c276d6e42ef887a877866b909d892" + "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/d17708133b6c276d6e42ef887a877866b909d892", - "reference": "d17708133b6c276d6e42ef887a877866b909d892", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/46867cbf8ca9fb8d60c506895449eb799db1184f", + "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f", "shasum": "" }, "require": { @@ -499,7 +499,7 @@ "Xdebug", "performance" ], - "time": "2019-01-28T20:25:53+00:00" + "time": "2019-05-27T17:52:04+00:00" }, { "name": "container-interop/container-interop", @@ -534,16 +534,16 @@ }, { "name": "elasticsearch/elasticsearch", - "version": "v6.1.0", + "version": "v6.7.2", "source": { "type": "git", "url": "https://github.com/elastic/elasticsearch-php.git", - "reference": "b237a37b2cdf23a5a17fd3576cdea771394ad00d" + "reference": "9ba89f905ebf699e72dacffa410331c7fecc8255" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/b237a37b2cdf23a5a17fd3576cdea771394ad00d", - "reference": "b237a37b2cdf23a5a17fd3576cdea771394ad00d", + "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/9ba89f905ebf699e72dacffa410331c7fecc8255", + "reference": "9ba89f905ebf699e72dacffa410331c7fecc8255", "shasum": "" }, "require": { @@ -553,12 +553,12 @@ "psr/log": "~1.0" }, "require-dev": { - "cpliakas/git-wrapper": "~1.0", + "cpliakas/git-wrapper": "^1.7 || ^2.1", "doctrine/inflector": "^1.1", - "mockery/mockery": "0.9.4", - "phpstan/phpstan-shim": "0.8.3", - "phpunit/phpunit": "6.3.0", - "squizlabs/php_codesniffer": "3.0.2", + "mockery/mockery": "^1.2", + "phpstan/phpstan-shim": "^0.9 || ^0.11", + "phpunit/phpunit": "^5.7 || ^6.5", + "squizlabs/php_codesniffer": "^3.4", "symfony/finder": "^2.8", "symfony/yaml": "^2.8" }, @@ -579,6 +579,9 @@ "authors": [ { "name": "Zachary Tong" + }, + { + "name": "Enrico Zimuel" } ], "description": "PHP Client for Elasticsearch", @@ -587,7 +590,7 @@ "elasticsearch", "search" ], - "time": "2019-01-08T18:53:46+00:00" + "time": "2019-07-19T14:48:24+00:00" }, { "name": "guzzlehttp/ringphp", @@ -873,16 +876,16 @@ }, { "name": "magento/zendframework1", - "version": "1.14.1", + "version": "1.14.2", "source": { "type": "git", "url": "https://github.com/magento/zf1.git", - "reference": "4df018254c70b5b998b00a8cb1a30760f831ff0d" + "reference": "8221062d42a198e431d183bbe672e5e1a2f98c5f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/zf1/zipball/4df018254c70b5b998b00a8cb1a30760f831ff0d", - "reference": "4df018254c70b5b998b00a8cb1a30760f831ff0d", + "url": "https://api.github.com/repos/magento/zf1/zipball/8221062d42a198e431d183bbe672e5e1a2f98c5f", + "reference": "8221062d42a198e431d183bbe672e5e1a2f98c5f", "shasum": "" }, "require": { @@ -916,20 +919,20 @@ "ZF1", "framework" ], - "time": "2018-08-09T15:03:40+00:00" + "time": "2019-07-26T16:43:11+00:00" }, { "name": "monolog/monolog", - "version": "1.24.0", + "version": "1.25.1", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266" + "reference": "70e65a5470a42cfec1a7da00d30edb6e617e8dcf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", - "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/70e65a5470a42cfec1a7da00d30edb6e617e8dcf", + "reference": "70e65a5470a42cfec1a7da00d30edb6e617e8dcf", "shasum": "" }, "require": { @@ -994,7 +997,7 @@ "logging", "psr-3" ], - "time": "2018-11-05T09:00:11+00:00" + "time": "2019-09-06T13:49:17+00:00" }, { "name": "oyejorge/less.php", @@ -1105,16 +1108,16 @@ }, { "name": "paragonie/sodium_compat", - "version": "v1.9.1", + "version": "v1.11.1", "source": { "type": "git", "url": "https://github.com/paragonie/sodium_compat.git", - "reference": "87125d5b265f98c4d1b8d83a1f0726607c229421" + "reference": "a9f968bc99485f85f9303a8524c3485a7e87bc15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/87125d5b265f98c4d1b8d83a1f0726607c229421", - "reference": "87125d5b265f98c4d1b8d83a1f0726607c229421", + "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/a9f968bc99485f85f9303a8524c3485a7e87bc15", + "reference": "a9f968bc99485f85f9303a8524c3485a7e87bc15", "shasum": "" }, "require": { @@ -1183,20 +1186,20 @@ "secret-key cryptography", "side-channel resistant" ], - "time": "2019-03-20T17:19:05+00:00" + "time": "2019-09-12T12:05:58+00:00" }, { "name": "pelago/emogrifier", - "version": "v2.1.1", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/MyIntervals/emogrifier.git", - "reference": "8ee7fb5ad772915451ed3415c1992bd3697d4983" + "reference": "2472bc1c3a2dee8915ecc2256139c6100024332f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MyIntervals/emogrifier/zipball/8ee7fb5ad772915451ed3415c1992bd3697d4983", - "reference": "8ee7fb5ad772915451ed3415c1992bd3697d4983", + "url": "https://api.github.com/repos/MyIntervals/emogrifier/zipball/2472bc1c3a2dee8915ecc2256139c6100024332f", + "reference": "2472bc1c3a2dee8915ecc2256139c6100024332f", "shasum": "" }, "require": { @@ -1214,7 +1217,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -1227,16 +1230,6 @@ "MIT" ], "authors": [ - { - "name": "John Reeve", - "email": "jreeve@pelagodesign.com" - }, - { - "name": "Cameron Brooks" - }, - { - "name": "Jaime Prado" - }, { "name": "Oliver Klee", "email": "github@oliverklee.de" @@ -1245,9 +1238,19 @@ "name": "Zoli Szabó", "email": "zoli.szabo+github@gmail.com" }, + { + "name": "John Reeve", + "email": "jreeve@pelagodesign.com" + }, { "name": "Jake Hotson", "email": "jake@qzdesign.co.uk" + }, + { + "name": "Cameron Brooks" + }, + { + "name": "Jaime Prado" } ], "description": "Converts CSS styles into inline style attributes in your HTML code", @@ -1257,7 +1260,7 @@ "email", "pre-processing" ], - "time": "2018-12-10T10:36:30+00:00" + "time": "2019-09-04T16:07:59+00:00" }, { "name": "php-amqplib/php-amqplib", @@ -1381,16 +1384,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "2.0.15", + "version": "2.0.23", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "11cf67cf78dc4acb18dc9149a57be4aee5036ce0" + "reference": "c78eb5058d5bb1a183133c36d4ba5b6675dfa099" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/11cf67cf78dc4acb18dc9149a57be4aee5036ce0", - "reference": "11cf67cf78dc4acb18dc9149a57be4aee5036ce0", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/c78eb5058d5bb1a183133c36d4ba5b6675dfa099", + "reference": "c78eb5058d5bb1a183133c36d4ba5b6675dfa099", "shasum": "" }, "require": { @@ -1469,7 +1472,7 @@ "x.509", "x509" ], - "time": "2019-03-10T16:53:45+00:00" + "time": "2019-09-17T03:41:22+00:00" }, { "name": "psr/container", @@ -1840,7 +1843,7 @@ }, { "name": "symfony/console", - "version": "v4.1.11", + "version": "v4.1.12", "source": { "type": "git", "url": "https://github.com/symfony/console.git", @@ -1911,16 +1914,16 @@ }, { "name": "symfony/css-selector", - "version": "v4.2.4", + "version": "v4.3.5", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "48eddf66950fa57996e1be4a55916d65c10c604a" + "reference": "f4b3ff6a549d9ed28b2b0ecd1781bf67cf220ee9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/48eddf66950fa57996e1be4a55916d65c10c604a", - "reference": "48eddf66950fa57996e1be4a55916d65c10c604a", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/f4b3ff6a549d9ed28b2b0ecd1781bf67cf220ee9", + "reference": "f4b3ff6a549d9ed28b2b0ecd1781bf67cf220ee9", "shasum": "" }, "require": { @@ -1929,7 +1932,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -1945,14 +1948,14 @@ "MIT" ], "authors": [ - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" @@ -1960,11 +1963,11 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2019-01-16T20:31:39+00:00" + "time": "2019-10-02T08:36:26+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.1.11", + "version": "v4.1.12", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", @@ -2027,16 +2030,16 @@ }, { "name": "symfony/filesystem", - "version": "v4.2.4", + "version": "v4.3.5", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "e16b9e471703b2c60b95f14d31c1239f68f11601" + "reference": "9abbb7ef96a51f4d7e69627bc6f63307994e4263" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/e16b9e471703b2c60b95f14d31c1239f68f11601", - "reference": "e16b9e471703b2c60b95f14d31c1239f68f11601", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/9abbb7ef96a51f4d7e69627bc6f63307994e4263", + "reference": "9abbb7ef96a51f4d7e69627bc6f63307994e4263", "shasum": "" }, "require": { @@ -2046,7 +2049,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -2073,20 +2076,20 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2019-02-07T11:40:08+00:00" + "time": "2019-08-20T14:07:54+00:00" }, { "name": "symfony/finder", - "version": "v4.2.4", + "version": "v4.3.5", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "267b7002c1b70ea80db0833c3afe05f0fbde580a" + "reference": "5e575faa95548d0586f6bedaeabec259714e44d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/267b7002c1b70ea80db0833c3afe05f0fbde580a", - "reference": "267b7002c1b70ea80db0833c3afe05f0fbde580a", + "url": "https://api.github.com/repos/symfony/finder/zipball/5e575faa95548d0586f6bedaeabec259714e44d1", + "reference": "5e575faa95548d0586f6bedaeabec259714e44d1", "shasum": "" }, "require": { @@ -2095,7 +2098,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -2122,20 +2125,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2019-02-23T15:42:05+00:00" + "time": "2019-09-16T11:29:48+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.11.0", + "version": "v1.12.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "82ebae02209c21113908c229e9883c419720738a" + "reference": "550ebaac289296ce228a706d0867afc34687e3f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", - "reference": "82ebae02209c21113908c229e9883c419720738a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4", + "reference": "550ebaac289296ce228a706d0867afc34687e3f4", "shasum": "" }, "require": { @@ -2147,7 +2150,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11-dev" + "dev-master": "1.12-dev" } }, "autoload": { @@ -2164,12 +2167,12 @@ ], "authors": [ { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" }, { - "name": "Gert de Pagter", - "email": "backendtea@gmail.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill for ctype functions", @@ -2180,20 +2183,20 @@ "polyfill", "portable" ], - "time": "2019-02-06T07:57:58+00:00" + "time": "2019-08-06T08:03:45+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.11.0", + "version": "v1.12.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "fe5e94c604826c35a32fa832f35bd036b6799609" + "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609", - "reference": "fe5e94c604826c35a32fa832f35bd036b6799609", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17", + "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17", "shasum": "" }, "require": { @@ -2205,7 +2208,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11-dev" + "dev-master": "1.12-dev" } }, "autoload": { @@ -2239,11 +2242,11 @@ "portable", "shim" ], - "time": "2019-02-06T07:57:58+00:00" + "time": "2019-08-06T08:03:45+00:00" }, { "name": "symfony/process", - "version": "v4.1.11", + "version": "v4.1.12", "source": { "type": "git", "url": "https://github.com/symfony/process.git", @@ -2292,16 +2295,16 @@ }, { "name": "tedivm/jshrink", - "version": "v1.3.1", + "version": "v1.3.3", "source": { "type": "git", "url": "https://github.com/tedious/JShrink.git", - "reference": "21254058dc3ce6aba6bef458cff4bfa25cf8b198" + "reference": "566e0c731ba4e372be2de429ef7d54f4faf4477a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tedious/JShrink/zipball/21254058dc3ce6aba6bef458cff4bfa25cf8b198", - "reference": "21254058dc3ce6aba6bef458cff4bfa25cf8b198", + "url": "https://api.github.com/repos/tedious/JShrink/zipball/566e0c731ba4e372be2de429ef7d54f4faf4477a", + "reference": "566e0c731ba4e372be2de429ef7d54f4faf4477a", "shasum": "" }, "require": { @@ -2334,7 +2337,7 @@ "javascript", "minifier" ], - "time": "2018-09-16T00:02:51+00:00" + "time": "2019-06-28T18:11:46+00:00" }, { "name": "true/punycode", @@ -2540,16 +2543,16 @@ }, { "name": "zendframework/zend-code", - "version": "3.3.1", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/zendframework/zend-code.git", - "reference": "c21db169075c6ec4b342149f446e7b7b724f95eb" + "reference": "936fa7ad4d53897ea3e3eb41b5b760828246a20b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-code/zipball/c21db169075c6ec4b342149f446e7b7b724f95eb", - "reference": "c21db169075c6ec4b342149f446e7b7b724f95eb", + "url": "https://api.github.com/repos/zendframework/zend-code/zipball/936fa7ad4d53897ea3e3eb41b5b760828246a20b", + "reference": "936fa7ad4d53897ea3e3eb41b5b760828246a20b", "shasum": "" }, "require": { @@ -2557,10 +2560,10 @@ "zendframework/zend-eventmanager": "^2.6 || ^3.0" }, "require-dev": { - "doctrine/annotations": "~1.0", + "doctrine/annotations": "^1.0", "ext-phar": "*", - "phpunit/phpunit": "^6.2.3", - "zendframework/zend-coding-standard": "^1.0.0", + "phpunit/phpunit": "^7.5.15", + "zendframework/zend-coding-standard": "^1.0", "zendframework/zend-stdlib": "^2.7 || ^3.0" }, "suggest": { @@ -2583,13 +2586,13 @@ "license": [ "BSD-3-Clause" ], - "description": "provides facilities to generate arbitrary code using an object oriented interface", - "homepage": "https://github.com/zendframework/zend-code", + "description": "Extensions to the PHP Reflection API, static code scanning, and code generation", "keywords": [ + "ZendFramework", "code", - "zf2" + "zf" ], - "time": "2018-08-13T20:36:59+00:00" + "time": "2019-08-31T14:14:34+00:00" }, { "name": "zendframework/zend-config", @@ -2857,16 +2860,16 @@ }, { "name": "zendframework/zend-diactoros", - "version": "1.8.6", + "version": "1.8.7", "source": { "type": "git", "url": "https://github.com/zendframework/zend-diactoros.git", - "reference": "20da13beba0dde8fb648be3cc19765732790f46e" + "reference": "a85e67b86e9b8520d07e6415fcbcb8391b44a75b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/20da13beba0dde8fb648be3cc19765732790f46e", - "reference": "20da13beba0dde8fb648be3cc19765732790f46e", + "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/a85e67b86e9b8520d07e6415fcbcb8391b44a75b", + "reference": "a85e67b86e9b8520d07e6415fcbcb8391b44a75b", "shasum": "" }, "require": { @@ -2886,9 +2889,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8.x-dev", - "dev-develop": "1.9.x-dev", - "dev-release-2.0": "2.0.x-dev" + "dev-release-1.8": "1.8.x-dev" } }, "autoload": { @@ -2917,20 +2918,20 @@ "psr", "psr-7" ], - "time": "2018-09-05T19:29:37+00:00" + "time": "2019-08-06T17:53:53+00:00" }, { "name": "zendframework/zend-escaper", - "version": "2.6.0", + "version": "2.6.1", "source": { "type": "git", "url": "https://github.com/zendframework/zend-escaper.git", - "reference": "31d8aafae982f9568287cb4dce987e6aff8fd074" + "reference": "3801caa21b0ca6aca57fa1c42b08d35c395ebd5f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/31d8aafae982f9568287cb4dce987e6aff8fd074", - "reference": "31d8aafae982f9568287cb4dce987e6aff8fd074", + "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/3801caa21b0ca6aca57fa1c42b08d35c395ebd5f", + "reference": "3801caa21b0ca6aca57fa1c42b08d35c395ebd5f", "shasum": "" }, "require": { @@ -2962,7 +2963,7 @@ "escaper", "zf" ], - "time": "2018-04-25T15:48:53+00:00" + "time": "2019-09-05T20:03:20+00:00" }, { "name": "zendframework/zend-eventmanager", @@ -3074,16 +3075,16 @@ }, { "name": "zendframework/zend-filter", - "version": "2.9.1", + "version": "2.9.2", "source": { "type": "git", "url": "https://github.com/zendframework/zend-filter.git", - "reference": "1c3e6d02f9cd5f6c929c9859498f5efbe216e86f" + "reference": "d78f2cdde1c31975e18b2a0753381ed7b61118ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/1c3e6d02f9cd5f6c929c9859498f5efbe216e86f", - "reference": "1c3e6d02f9cd5f6c929c9859498f5efbe216e86f", + "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/d78f2cdde1c31975e18b2a0753381ed7b61118ef", + "reference": "d78f2cdde1c31975e18b2a0753381ed7b61118ef", "shasum": "" }, "require": { @@ -3129,13 +3130,13 @@ "license": [ "BSD-3-Clause" ], - "description": "provides a set of commonly needed data filters", + "description": "Programmatically filter and normalize data and files", "keywords": [ "ZendFramework", "filter", "zf" ], - "time": "2018-12-17T16:00:04+00:00" + "time": "2019-08-19T07:08:04+00:00" }, { "name": "zendframework/zend-form", @@ -3330,16 +3331,16 @@ }, { "name": "zendframework/zend-i18n", - "version": "2.9.0", + "version": "2.9.2", "source": { "type": "git", "url": "https://github.com/zendframework/zend-i18n.git", - "reference": "6d69af5a04e1a4de7250043cb1322f077a0cdb7f" + "reference": "e17a54b3aee333ab156958f570cde630acee8b07" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-i18n/zipball/6d69af5a04e1a4de7250043cb1322f077a0cdb7f", - "reference": "6d69af5a04e1a4de7250043cb1322f077a0cdb7f", + "url": "https://api.github.com/repos/zendframework/zend-i18n/zipball/e17a54b3aee333ab156958f570cde630acee8b07", + "reference": "e17a54b3aee333ab156958f570cde630acee8b07", "shasum": "" }, "require": { @@ -3347,7 +3348,7 @@ "zendframework/zend-stdlib": "^2.7 || ^3.0" }, "require-dev": { - "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", + "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.16", "zendframework/zend-cache": "^2.6.1", "zendframework/zend-coding-standard": "~1.0.0", "zendframework/zend-config": "^2.6", @@ -3394,20 +3395,20 @@ "i18n", "zf" ], - "time": "2018-05-16T16:39:13+00:00" + "time": "2019-09-30T12:04:37+00:00" }, { "name": "zendframework/zend-inputfilter", - "version": "2.10.0", + "version": "2.10.1", "source": { "type": "git", "url": "https://github.com/zendframework/zend-inputfilter.git", - "reference": "4f52b71ec9cef3a06e3bba8f5c2124e94055ec0c" + "reference": "1f44a2e9bc394a71638b43bc7024b572fa65410e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-inputfilter/zipball/4f52b71ec9cef3a06e3bba8f5c2124e94055ec0c", - "reference": "4f52b71ec9cef3a06e3bba8f5c2124e94055ec0c", + "url": "https://api.github.com/repos/zendframework/zend-inputfilter/zipball/1f44a2e9bc394a71638b43bc7024b572fa65410e", + "reference": "1f44a2e9bc394a71638b43bc7024b572fa65410e", "shasum": "" }, "require": { @@ -3418,7 +3419,7 @@ "zendframework/zend-validator": "^2.11" }, "require-dev": { - "phpunit/phpunit": "^5.7.23 || ^6.4.3", + "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.15", "psr/http-message": "^1.0", "zendframework/zend-coding-standard": "~1.0.0" }, @@ -3451,7 +3452,7 @@ "inputfilter", "zf" ], - "time": "2019-01-30T16:58:51+00:00" + "time": "2019-08-28T19:45:32+00:00" }, { "name": "zendframework/zend-json", @@ -3510,16 +3511,16 @@ }, { "name": "zendframework/zend-loader", - "version": "2.6.0", + "version": "2.6.1", "source": { "type": "git", "url": "https://github.com/zendframework/zend-loader.git", - "reference": "78f11749ea340f6ca316bca5958eef80b38f9b6c" + "reference": "91da574d29b58547385b2298c020b257310898c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-loader/zipball/78f11749ea340f6ca316bca5958eef80b38f9b6c", - "reference": "78f11749ea340f6ca316bca5958eef80b38f9b6c", + "url": "https://api.github.com/repos/zendframework/zend-loader/zipball/91da574d29b58547385b2298c020b257310898c6", + "reference": "91da574d29b58547385b2298c020b257310898c6", "shasum": "" }, "require": { @@ -3551,20 +3552,20 @@ "loader", "zf" ], - "time": "2018-04-30T15:20:54+00:00" + "time": "2019-09-04T19:38:14+00:00" }, { "name": "zendframework/zend-log", - "version": "2.10.0", + "version": "2.11.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-log.git", - "reference": "9cec3b092acb39963659c2f32441cccc56b3f430" + "reference": "cb278772afdacb1924342248a069330977625ae6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-log/zipball/9cec3b092acb39963659c2f32441cccc56b3f430", - "reference": "9cec3b092acb39963659c2f32441cccc56b3f430", + "url": "https://api.github.com/repos/zendframework/zend-log/zipball/cb278772afdacb1924342248a069330977625ae6", + "reference": "cb278772afdacb1924342248a069330977625ae6", "shasum": "" }, "require": { @@ -3577,8 +3578,8 @@ "psr/log-implementation": "1.0.0" }, "require-dev": { - "mikey179/vfsstream": "^1.6", - "phpunit/phpunit": "^5.7.15 || ^6.0.8", + "mikey179/vfsstream": "^1.6.7", + "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.15", "zendframework/zend-coding-standard": "~1.0.0", "zendframework/zend-db": "^2.6", "zendframework/zend-escaper": "^2.5", @@ -3589,7 +3590,6 @@ "suggest": { "ext-mongo": "mongo extension to use Mongo writer", "ext-mongodb": "mongodb extension to use MongoDB writer", - "zendframework/zend-console": "Zend\\Console component to use the RequestID log processor", "zendframework/zend-db": "Zend\\Db component to use the database log writer", "zendframework/zend-escaper": "Zend\\Escaper component, for use in the XML log formatter", "zendframework/zend-mail": "Zend\\Mail component to use the email log writer", @@ -3598,8 +3598,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.10.x-dev", - "dev-develop": "2.11.x-dev" + "dev-master": "2.11.x-dev", + "dev-develop": "2.12.x-dev" }, "zf": { "component": "Zend\\Log", @@ -3615,14 +3615,14 @@ "license": [ "BSD-3-Clause" ], - "description": "component for general purpose logging", - "homepage": "https://github.com/zendframework/zend-log", + "description": "Robust, composite logger with filtering, formatting, and PSR-3 support", "keywords": [ + "ZendFramework", "log", "logging", - "zf2" + "zf" ], - "time": "2018-04-09T21:59:51+00:00" + "time": "2019-08-23T21:28:18+00:00" }, { "name": "zendframework/zend-mail", @@ -4149,16 +4149,16 @@ }, { "name": "zendframework/zend-session", - "version": "2.8.5", + "version": "2.8.7", "source": { "type": "git", "url": "https://github.com/zendframework/zend-session.git", - "reference": "2cfd90e1a2f6b066b9f908599251d8f64f07021b" + "reference": "8fd50220888167d08cf0113ced5b023f6da06923" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-session/zipball/2cfd90e1a2f6b066b9f908599251d8f64f07021b", - "reference": "2cfd90e1a2f6b066b9f908599251d8f64f07021b", + "url": "https://api.github.com/repos/zendframework/zend-session/zipball/8fd50220888167d08cf0113ced5b023f6da06923", + "reference": "8fd50220888167d08cf0113ced5b023f6da06923", "shasum": "" }, "require": { @@ -4189,8 +4189,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev", - "dev-develop": "2.9-dev" + "dev-master": "2.8.x-dev", + "dev-develop": "2.9.x-dev" }, "zf": { "component": "Zend\\Session", @@ -4212,20 +4212,20 @@ "session", "zf" ], - "time": "2018-02-22T16:33:54+00:00" + "time": "2019-09-19T19:50:12+00:00" }, { "name": "zendframework/zend-soap", - "version": "2.7.0", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-soap.git", - "reference": "af03c32f0db2b899b3df8cfe29aeb2b49857d284" + "reference": "8762d79efa220d82529c43ce08d70554146be645" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-soap/zipball/af03c32f0db2b899b3df8cfe29aeb2b49857d284", - "reference": "af03c32f0db2b899b3df8cfe29aeb2b49857d284", + "url": "https://api.github.com/repos/zendframework/zend-soap/zipball/8762d79efa220d82529c43ce08d70554146be645", + "reference": "8762d79efa220d82529c43ce08d70554146be645", "shasum": "" }, "require": { @@ -4265,7 +4265,7 @@ "soap", "zf2" ], - "time": "2018-01-29T17:51:26+00:00" + "time": "2019-04-30T16:45:35+00:00" }, { "name": "zendframework/zend-stdlib", @@ -4376,16 +4376,16 @@ }, { "name": "zendframework/zend-uri", - "version": "2.7.0", + "version": "2.7.1", "source": { "type": "git", "url": "https://github.com/zendframework/zend-uri.git", - "reference": "b2785cd38fe379a784645449db86f21b7739b1ee" + "reference": "bfc4a5b9a309711e968d7c72afae4ac50c650083" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-uri/zipball/b2785cd38fe379a784645449db86f21b7739b1ee", - "reference": "b2785cd38fe379a784645449db86f21b7739b1ee", + "url": "https://api.github.com/repos/zendframework/zend-uri/zipball/bfc4a5b9a309711e968d7c72afae4ac50c650083", + "reference": "bfc4a5b9a309711e968d7c72afae4ac50c650083", "shasum": "" }, "require": { @@ -4419,7 +4419,7 @@ "uri", "zf" ], - "time": "2019-02-27T21:39:04+00:00" + "time": "2019-10-07T13:35:33+00:00" }, { "name": "zendframework/zend-validator", @@ -4888,16 +4888,16 @@ }, { "name": "codeception/phpunit-wrapper", - "version": "6.6.1", + "version": "6.7.0", "source": { "type": "git", "url": "https://github.com/Codeception/phpunit-wrapper.git", - "reference": "d0da25a98bcebeb15d97c2ad3b2de6166b6e7a0c" + "reference": "93f59e028826464eac086052fa226e58967f6907" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/d0da25a98bcebeb15d97c2ad3b2de6166b6e7a0c", - "reference": "d0da25a98bcebeb15d97c2ad3b2de6166b6e7a0c", + "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/93f59e028826464eac086052fa226e58967f6907", + "reference": "93f59e028826464eac086052fa226e58967f6907", "shasum": "" }, "require": { @@ -4930,7 +4930,7 @@ } ], "description": "PHPUnit classes used by Codeception", - "time": "2019-02-26T20:47:39+00:00" + "time": "2019-08-18T15:43:35+00:00" }, { "name": "codeception/stub", @@ -5231,16 +5231,16 @@ }, { "name": "consolidation/output-formatters", - "version": "3.4.1", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/consolidation/output-formatters.git", - "reference": "0881112642ad9059071f13f397f571035b527cb9" + "reference": "99ec998ffb697e0eada5aacf81feebfb13023605" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/0881112642ad9059071f13f397f571035b527cb9", - "reference": "0881112642ad9059071f13f397f571035b527cb9", + "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/99ec998ffb697e0eada5aacf81feebfb13023605", + "reference": "99ec998ffb697e0eada5aacf81feebfb13023605", "shasum": "" }, "require": { @@ -5328,20 +5328,20 @@ } ], "description": "Format text by applying transformations provided by plug-in formatters.", - "time": "2019-03-14T03:45:44+00:00" + "time": "2019-05-30T23:16:01+00:00" }, { "name": "consolidation/robo", - "version": "1.4.9", + "version": "1.4.10", "source": { "type": "git", "url": "https://github.com/consolidation/Robo.git", - "reference": "5c6b3840a45afda1cbffbb3bb1f94dd5f9f83345" + "reference": "e5a6ca64cf1324151873672e484aceb21f365681" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/Robo/zipball/5c6b3840a45afda1cbffbb3bb1f94dd5f9f83345", - "reference": "5c6b3840a45afda1cbffbb3bb1f94dd5f9f83345", + "url": "https://api.github.com/repos/consolidation/Robo/zipball/e5a6ca64cf1324151873672e484aceb21f365681", + "reference": "e5a6ca64cf1324151873672e484aceb21f365681", "shasum": "" }, "require": { @@ -5436,7 +5436,7 @@ } ], "description": "Modern task runner", - "time": "2019-03-19T18:07:19+00:00" + "time": "2019-07-29T15:40:50+00:00" }, { "name": "consolidation/self-update", @@ -5549,16 +5549,16 @@ }, { "name": "doctrine/annotations", - "version": "v1.6.1", + "version": "v1.8.0", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "53120e0eb10355388d6ccbe462f1fea34ddadb24" + "reference": "904dca4eb10715b92569fbcd79e201d5c349b6bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/53120e0eb10355388d6ccbe462f1fea34ddadb24", - "reference": "53120e0eb10355388d6ccbe462f1fea34ddadb24", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/904dca4eb10715b92569fbcd79e201d5c349b6bc", + "reference": "904dca4eb10715b92569fbcd79e201d5c349b6bc", "shasum": "" }, "require": { @@ -5567,12 +5567,12 @@ }, "require-dev": { "doctrine/cache": "1.*", - "phpunit/phpunit": "^6.4" + "phpunit/phpunit": "^7.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "1.7.x-dev" } }, "autoload": { @@ -5585,6 +5585,10 @@ "MIT" ], "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -5593,10 +5597,6 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, { "name": "Jonathan Wage", "email": "jonwage@gmail.com" @@ -5613,20 +5613,20 @@ "docblock", "parser" ], - "time": "2019-03-25T19:12:02+00:00" + "time": "2019-10-01T18:55:10+00:00" }, { "name": "doctrine/collections", - "version": "v1.6.1", + "version": "v1.6.2", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "d2ae4ef05e25197343b6a39bae1d3c427a2f6956" + "reference": "c5e0bc17b1620e97c968ac409acbff28b8b850be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/d2ae4ef05e25197343b6a39bae1d3c427a2f6956", - "reference": "d2ae4ef05e25197343b6a39bae1d3c427a2f6956", + "url": "https://api.github.com/repos/doctrine/collections/zipball/c5e0bc17b1620e97c968ac409acbff28b8b850be", + "reference": "c5e0bc17b1620e97c968ac409acbff28b8b850be", "shasum": "" }, "require": { @@ -5683,7 +5683,7 @@ "iterators", "php" ], - "time": "2019-03-25T19:03:48+00:00" + "time": "2019-06-09T13:48:14+00:00" }, { "name": "doctrine/instantiator", @@ -5743,21 +5743,24 @@ }, { "name": "doctrine/lexer", - "version": "v1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/1febd6c3ef84253d7c815bed85fc622ad207a9f8", + "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8", "shasum": "" }, "require": { "php": ">=5.3.2" }, + "require-dev": { + "phpunit/phpunit": "^4.5" + }, "type": "library", "extra": { "branch-alias": { @@ -5765,8 +5768,8 @@ } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" } }, "notification-url": "https://packagist.org/downloads/", @@ -5787,13 +5790,16 @@ "email": "schmittjoh@gmail.com" } ], - "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "http://www.doctrine-project.org", + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", "keywords": [ + "annotations", + "docblock", "lexer", - "parser" + "parser", + "php" ], - "time": "2014-09-09T13:34:57+00:00" + "time": "2019-06-08T11:03:04+00:00" }, { "name": "epfremme/swagger-php", @@ -5843,16 +5849,16 @@ }, { "name": "facebook/webdriver", - "version": "1.6.0", + "version": "1.7.1", "source": { "type": "git", "url": "https://github.com/facebook/php-webdriver.git", - "reference": "bd8c740097eb9f2fc3735250fc1912bc811a954e" + "reference": "e43de70f3c7166169d0f14a374505392734160e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/bd8c740097eb9f2fc3735250fc1912bc811a954e", - "reference": "bd8c740097eb9f2fc3735250fc1912bc811a954e", + "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/e43de70f3c7166169d0f14a374505392734160e5", + "reference": "e43de70f3c7166169d0f14a374505392734160e5", "shasum": "" }, "require": { @@ -5899,7 +5905,7 @@ "selenium", "webdriver" ], - "time": "2018-05-16T17:37:13+00:00" + "time": "2019-06-13T08:02:18+00:00" }, { "name": "flow/jsonpath", @@ -6296,33 +6302,37 @@ }, { "name": "guzzlehttp/psr7", - "version": "1.5.2", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "9f83dded91781a01c63574e387eaa769be769115" + "reference": "239400de7a173fe9901b9ac7c06497751f00727a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/9f83dded91781a01c63574e387eaa769be769115", - "reference": "9f83dded91781a01c63574e387eaa769be769115", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", + "reference": "239400de7a173fe9901b9ac7c06497751f00727a", "shasum": "" }, "require": { "php": ">=5.4.0", "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5" + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" }, "provide": { "psr/http-message-implementation": "1.0" }, "require-dev": { + "ext-zlib": "*", "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" }, + "suggest": { + "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.5-dev" + "dev-master": "1.6-dev" } }, "autoload": { @@ -6359,7 +6369,7 @@ "uri", "url" ], - "time": "2018-12-04T20:46:45+00:00" + "time": "2019-07-01T23:21:34+00:00" }, { "name": "jms/metadata", @@ -6453,16 +6463,16 @@ }, { "name": "jms/serializer", - "version": "1.13.0", + "version": "1.14.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/serializer.git", - "reference": "00863e1d55b411cc33ad3e1de09a4c8d3aae793c" + "reference": "ee96d57024af9a7716d56fcbe3aa94b3d030f3ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/00863e1d55b411cc33ad3e1de09a4c8d3aae793c", - "reference": "00863e1d55b411cc33ad3e1de09a4c8d3aae793c", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/ee96d57024af9a7716d56fcbe3aa94b3d030f3ca", + "reference": "ee96d57024af9a7716d56fcbe3aa94b3d030f3ca", "shasum": "" }, "require": { @@ -6502,7 +6512,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-1.x": "1.13-dev" + "dev-1.x": "1.14-dev" } }, "autoload": { @@ -6533,7 +6543,7 @@ "serialization", "xml" ], - "time": "2018-07-25T13:58:54+00:00" + "time": "2019-04-17T08:12:16+00:00" }, { "name": "league/container", @@ -6669,16 +6679,16 @@ }, { "name": "magento/magento-coding-standard", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/magento/magento-coding-standard.git", - "reference": "489029a285c637825294e272d31c3f4ac00a454e" + "reference": "f7de26fb6add389d1b42286f67ee87424588a868" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento-coding-standard/zipball/489029a285c637825294e272d31c3f4ac00a454e", - "reference": "489029a285c637825294e272d31c3f4ac00a454e", + "url": "https://api.github.com/repos/magento/magento-coding-standard/zipball/f7de26fb6add389d1b42286f67ee87424588a868", + "reference": "f7de26fb6add389d1b42286f67ee87424588a868", "shasum": "" }, "require": { @@ -6695,7 +6705,7 @@ "AFL-3.0" ], "description": "A set of Magento specific PHP CodeSniffer rules.", - "time": "2019-04-01T17:03:33+00:00" + "time": "2019-04-05T19:05:17+00:00" }, { "name": "magento/magento2-functional-testing-framework", @@ -6771,24 +6781,24 @@ "time": "2019-02-19T16:03:22+00:00" }, { - "name": "mikey179/vfsStream", - "version": "v1.6.5", + "name": "mikey179/vfsstream", + "version": "v1.6.7", "source": { "type": "git", - "url": "https://github.com/mikey179/vfsStream.git", - "reference": "d5fec95f541d4d71c4823bb5e30cf9b9e5b96145" + "url": "https://github.com/bovigo/vfsStream.git", + "reference": "2b544ac3a21bcc4dde5d90c4ae8d06f4319055fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mikey179/vfsStream/zipball/d5fec95f541d4d71c4823bb5e30cf9b9e5b96145", - "reference": "d5fec95f541d4d71c4823bb5e30cf9b9e5b96145", + "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/2b544ac3a21bcc4dde5d90c4ae8d06f4319055fb", + "reference": "2b544ac3a21bcc4dde5d90c4ae8d06f4319055fb", "shasum": "" }, "require": { "php": ">=5.3.0" }, "require-dev": { - "phpunit/phpunit": "~4.5" + "phpunit/phpunit": "^4.5|^5.0" }, "type": "library", "extra": { @@ -6814,7 +6824,7 @@ ], "description": "Virtual file system to mock the real file system in unit tests.", "homepage": "http://vfs.bovigo.org/", - "time": "2017-08-01T08:02:14+00:00" + "time": "2019-08-01T01:38:37+00:00" }, { "name": "moontoast/math", @@ -6913,16 +6923,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.8.1", + "version": "1.9.3", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" + "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/007c053ae6f31bba39dfa19a7726f56e9763bbea", + "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea", "shasum": "" }, "require": { @@ -6957,7 +6967,7 @@ "object", "object graph" ], - "time": "2018-06-11T23:09:50+00:00" + "time": "2019-08-09T12:45:53+00:00" }, { "name": "pdepend/pdepend", @@ -7202,35 +7212,33 @@ }, { "name": "phpdocumentor/reflection-common", - "version": "1.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", "shasum": "" }, "require": { - "php": ">=5.5" + "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "^4.6" + "phpunit/phpunit": "~6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] + "phpDocumentor\\Reflection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -7252,30 +7260,30 @@ "reflection", "static analysis" ], - "time": "2017-09-11T18:02:19+00:00" + "time": "2018-08-07T13:53:10+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.0", + "version": "4.3.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/b83ff7cfcfee7827e1e78b637a5904fe6a96698e", + "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e", "shasum": "" }, "require": { "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0", - "phpdocumentor/type-resolver": "^0.4.0", + "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", + "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", "webmozart/assert": "^1.0" }, "require-dev": { - "doctrine/instantiator": "~1.0.5", + "doctrine/instantiator": "^1.0.5", "mockery/mockery": "^1.0", "phpunit/phpunit": "^6.4" }, @@ -7303,41 +7311,40 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-30T07:14:17+00:00" + "time": "2019-09-12T14:27:41+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "0.4.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", + "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" + "php": "^7.1", + "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" + "ext-tokenizer": "^7.1", + "mockery/mockery": "~1", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -7350,20 +7357,21 @@ "email": "me@mikevanriel.com" } ], - "time": "2017-07-14T14:27:02+00:00" + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "time": "2019-08-22T18:11:29+00:00" }, { "name": "phpmd/phpmd", - "version": "2.6.0", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/phpmd/phpmd.git", - "reference": "4e9924b2c157a3eb64395460fcf56b31badc8374" + "reference": "a05a999c644f4bc9a204846017db7bb7809fbe4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmd/phpmd/zipball/4e9924b2c157a3eb64395460fcf56b31badc8374", - "reference": "4e9924b2c157a3eb64395460fcf56b31badc8374", + "url": "https://api.github.com/repos/phpmd/phpmd/zipball/a05a999c644f4bc9a204846017db7bb7809fbe4c", + "reference": "a05a999c644f4bc9a204846017db7bb7809fbe4c", "shasum": "" }, "require": { @@ -7372,13 +7380,15 @@ "php": ">=5.3.9" }, "require-dev": { - "phpunit/phpunit": "^4.0", + "gregwar/rst": "^1.0", + "mikey179/vfsstream": "^1.6.4", + "phpunit/phpunit": "^4.8.36 || ^5.7.27", "squizlabs/php_codesniffer": "^2.0" }, "bin": [ "src/bin/phpmd" ], - "type": "project", + "type": "library", "autoload": { "psr-0": { "PHPMD\\": "src/main/php" @@ -7395,20 +7405,20 @@ "homepage": "https://github.com/manuelpichler", "role": "Project Founder" }, - { - "name": "Other contributors", - "homepage": "https://github.com/phpmd/phpmd/graphs/contributors", - "role": "Contributors" - }, { "name": "Marc Würth", "email": "ravage@bluewin.ch", "homepage": "https://github.com/ravage84", "role": "Project Maintainer" + }, + { + "name": "Other contributors", + "homepage": "https://github.com/phpmd/phpmd/graphs/contributors", + "role": "Contributors" } ], "description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.", - "homepage": "http://phpmd.org/", + "homepage": "https://phpmd.org/", "keywords": [ "mess detection", "mess detector", @@ -7416,7 +7426,7 @@ "phpmd", "pmd" ], - "time": "2017-01-20T14:41:10+00:00" + "time": "2019-07-30T21:13:32+00:00" }, { "name": "phpoption/phpoption", @@ -7470,22 +7480,22 @@ }, { "name": "phpspec/prophecy", - "version": "1.8.0", + "version": "1.9.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/f6811d96d97bdf400077a0cc100ae56aa32b9203", + "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", "sebastian/comparator": "^1.1|^2.0|^3.0", "sebastian/recursion-context": "^1.0|^2.0|^3.0" }, @@ -7500,8 +7510,8 @@ } }, "autoload": { - "psr-0": { - "Prophecy\\": "src/" + "psr-4": { + "Prophecy\\": "src/Prophecy" } }, "notification-url": "https://packagist.org/downloads/", @@ -7529,7 +7539,7 @@ "spy", "stub" ], - "time": "2018-08-05T17:53:17+00:00" + "time": "2019-10-03T11:07:50+00:00" }, { "name": "phpunit/php-code-coverage", @@ -7926,24 +7936,24 @@ }, { "name": "ralouphie/getallheaders", - "version": "2.0.5", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa" + "reference": "120b605dfeb996808c31b6477290a714d356e822" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/5601c8a83fbba7ef674a7369456d12f1e0d0eafa", - "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", "shasum": "" }, "require": { - "php": ">=5.3" + "php": ">=5.6" }, "require-dev": { - "phpunit/phpunit": "~3.7.0", - "satooshi/php-coveralls": ">=1.0" + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" }, "type": "library", "autoload": { @@ -7962,7 +7972,7 @@ } ], "description": "A polyfill for getallheaders.", - "time": "2016-02-11T07:05:27+00:00" + "time": "2019-03-08T08:55:37+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -8177,16 +8187,16 @@ }, { "name": "sebastian/exporter", - "version": "3.1.0", + "version": "3.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", "shasum": "" }, "require": { @@ -8213,6 +8223,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -8221,17 +8235,13 @@ "name": "Volker Dusch", "email": "github@wallbash.com" }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, { "name": "Adam Harvey", "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], "description": "Provides the functionality to export PHP variables for visualization", @@ -8240,7 +8250,7 @@ "export", "exporter" ], - "time": "2017-04-03T13:19:02+00:00" + "time": "2019-09-14T09:02:43+00:00" }, { "name": "sebastian/finder-facade", @@ -8665,16 +8675,16 @@ }, { "name": "symfony/browser-kit", - "version": "v4.2.4", + "version": "v4.3.5", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "61d85c5af2fc058014c7c89504c3944e73a086f0" + "reference": "78b7611c45039e8ce81698be319851529bf040b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/61d85c5af2fc058014c7c89504c3944e73a086f0", - "reference": "61d85c5af2fc058014c7c89504c3944e73a086f0", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/78b7611c45039e8ce81698be319851529bf040b1", + "reference": "78b7611c45039e8ce81698be319851529bf040b1", "shasum": "" }, "require": { @@ -8683,6 +8693,8 @@ }, "require-dev": { "symfony/css-selector": "~3.4|~4.0", + "symfony/http-client": "^4.3", + "symfony/mime": "^4.3", "symfony/process": "~3.4|~4.0" }, "suggest": { @@ -8691,7 +8703,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -8718,20 +8730,20 @@ ], "description": "Symfony BrowserKit Component", "homepage": "https://symfony.com", - "time": "2019-02-23T15:17:42+00:00" + "time": "2019-09-10T11:25:17+00:00" }, { "name": "symfony/config", - "version": "v4.2.4", + "version": "v4.3.5", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "7f70d79c7a24a94f8e98abb988049403a53d7b31" + "reference": "0acb26407a9e1a64a275142f0ae5e36436342720" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/7f70d79c7a24a94f8e98abb988049403a53d7b31", - "reference": "7f70d79c7a24a94f8e98abb988049403a53d7b31", + "url": "https://api.github.com/repos/symfony/config/zipball/0acb26407a9e1a64a275142f0ae5e36436342720", + "reference": "0acb26407a9e1a64a275142f0ae5e36436342720", "shasum": "" }, "require": { @@ -8746,6 +8758,7 @@ "symfony/dependency-injection": "~3.4|~4.0", "symfony/event-dispatcher": "~3.4|~4.0", "symfony/finder": "~3.4|~4.0", + "symfony/messenger": "~4.1", "symfony/yaml": "~3.4|~4.0" }, "suggest": { @@ -8754,7 +8767,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -8781,48 +8794,61 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2019-02-23T15:17:42+00:00" + "time": "2019-09-19T15:51:53+00:00" }, { - "name": "symfony/contracts", - "version": "v1.0.2", + "name": "symfony/dependency-injection", + "version": "v4.3.5", "source": { "type": "git", - "url": "https://github.com/symfony/contracts.git", - "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf" + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "e1e0762a814b957a1092bff75a550db49724d05b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/contracts/zipball/1aa7ab2429c3d594dd70689604b5cf7421254cdf", - "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e1e0762a814b957a1092bff75a550db49724d05b", + "reference": "e1e0762a814b957a1092bff75a550db49724d05b", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^7.1.3", + "psr/container": "^1.0", + "symfony/service-contracts": "^1.1.6" + }, + "conflict": { + "symfony/config": "<4.3", + "symfony/finder": "<3.4", + "symfony/proxy-manager-bridge": "<3.4", + "symfony/yaml": "<3.4" + }, + "provide": { + "psr/container-implementation": "1.0", + "symfony/service-implementation": "1.0" }, "require-dev": { - "psr/cache": "^1.0", - "psr/container": "^1.0" + "symfony/config": "^4.3", + "symfony/expression-language": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" }, "suggest": { - "psr/cache": "When using the Cache contracts", - "psr/container": "When using the Service contracts", - "symfony/cache-contracts-implementation": "", - "symfony/service-contracts-implementation": "", - "symfony/translation-contracts-implementation": "" + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "4.3-dev" } }, "autoload": { "psr-4": { - "Symfony\\Contracts\\": "" + "Symfony\\Component\\DependencyInjection\\": "" }, "exclude-from-classmap": [ - "**/Tests/" + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -8831,76 +8857,56 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "A set of abstractions extracted out of the Symfony components", + "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2018-12-05T08:06:11+00:00" + "time": "2019-10-02T12:58:58+00:00" }, { - "name": "symfony/dependency-injection", - "version": "v4.2.4", + "name": "symfony/dom-crawler", + "version": "v4.3.5", "source": { "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "cdadb3765df7c89ac93628743913b92bb91f1704" + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "e9f7b4d19d69b133bd638eeddcdc757723b4211f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/cdadb3765df7c89ac93628743913b92bb91f1704", - "reference": "cdadb3765df7c89ac93628743913b92bb91f1704", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/e9f7b4d19d69b133bd638eeddcdc757723b4211f", + "reference": "e9f7b4d19d69b133bd638eeddcdc757723b4211f", "shasum": "" }, "require": { "php": "^7.1.3", - "psr/container": "^1.0", - "symfony/contracts": "^1.0" + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/config": "<4.2", - "symfony/finder": "<3.4", - "symfony/proxy-manager-bridge": "<3.4", - "symfony/yaml": "<3.4" - }, - "provide": { - "psr/container-implementation": "1.0", - "symfony/service-contracts-implementation": "1.0" + "masterminds/html5": "<2.6" }, "require-dev": { - "symfony/config": "~4.2", - "symfony/expression-language": "~3.4|~4.0", - "symfony/yaml": "~3.4|~4.0" + "masterminds/html5": "^2.6", + "symfony/css-selector": "~3.4|~4.0" }, "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" + "symfony/css-selector": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" + "Symfony\\Component\\DomCrawler\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -8920,44 +8926,42 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony DependencyInjection Component", + "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2019-02-23T15:17:42+00:00" + "time": "2019-09-28T21:25:05+00:00" }, { - "name": "symfony/dom-crawler", - "version": "v4.2.4", + "name": "symfony/http-foundation", + "version": "v4.3.5", "source": { "type": "git", - "url": "https://github.com/symfony/dom-crawler.git", - "reference": "53c97769814c80a84a8403efcf3ae7ae966d53bb" + "url": "https://github.com/symfony/http-foundation.git", + "reference": "76590ced16d4674780863471bae10452b79210a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/53c97769814c80a84a8403efcf3ae7ae966d53bb", - "reference": "53c97769814c80a84a8403efcf3ae7ae966d53bb", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/76590ced16d4674780863471bae10452b79210a5", + "reference": "76590ced16d4674780863471bae10452b79210a5", "shasum": "" }, "require": { "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0" + "symfony/mime": "^4.3", + "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { - "symfony/css-selector": "~3.4|~4.0" - }, - "suggest": { - "symfony/css-selector": "" + "predis/predis": "~1.0", + "symfony/expression-language": "~3.4|~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\DomCrawler\\": "" + "Symfony\\Component\\HttpFoundation\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -8977,41 +8981,42 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony DomCrawler Component", + "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2019-02-23T15:17:42+00:00" + "time": "2019-10-04T19:48:13+00:00" }, { - "name": "symfony/http-foundation", - "version": "v4.2.4", + "name": "symfony/mime", + "version": "v4.3.5", "source": { "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "850a667d6254ccf6c61d853407b16f21c4579c77" + "url": "https://github.com/symfony/mime.git", + "reference": "32f71570547b91879fdbd9cf50317d556ae86916" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/850a667d6254ccf6c61d853407b16f21c4579c77", - "reference": "850a667d6254ccf6c61d853407b16f21c4579c77", + "url": "https://api.github.com/repos/symfony/mime/zipball/32f71570547b91879fdbd9cf50317d556ae86916", + "reference": "32f71570547b91879fdbd9cf50317d556ae86916", "shasum": "" }, "require": { "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.1" + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" }, "require-dev": { - "predis/predis": "~1.0", - "symfony/expression-language": "~3.4|~4.0" + "egulias/email-validator": "^2.1.10", + "symfony/dependency-injection": "~3.4|^4.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" + "Symfony\\Component\\Mime\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9031,22 +9036,26 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony HttpFoundation Component", + "description": "A library to manipulate MIME messages", "homepage": "https://symfony.com", - "time": "2019-02-26T08:03:39+00:00" + "keywords": [ + "mime", + "mime-type" + ], + "time": "2019-09-19T17:00:15+00:00" }, { "name": "symfony/options-resolver", - "version": "v4.2.4", + "version": "v4.3.5", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "3896e5a7d06fd15fa4947694c8dcdd371ff147d1" + "reference": "81c2e120522a42f623233968244baebd6b36cb6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/3896e5a7d06fd15fa4947694c8dcdd371ff147d1", - "reference": "3896e5a7d06fd15fa4947694c8dcdd371ff147d1", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/81c2e120522a42f623233968244baebd6b36cb6a", + "reference": "81c2e120522a42f623233968244baebd6b36cb6a", "shasum": "" }, "require": { @@ -9055,7 +9064,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -9087,20 +9096,82 @@ "configuration", "options" ], - "time": "2019-02-23T15:17:42+00:00" + "time": "2019-08-08T09:29:19+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.12.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6af626ae6fa37d396dc90a399c0ff08e5cfc45b2", + "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php72": "^1.9" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.12-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "time": "2019-08-06T08:03:45+00:00" }, { "name": "symfony/polyfill-php70", - "version": "v1.11.0", + "version": "v1.12.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "bc4858fb611bda58719124ca079baff854149c89" + "reference": "54b4c428a0054e254223797d2713c31e08610831" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/bc4858fb611bda58719124ca079baff854149c89", - "reference": "bc4858fb611bda58719124ca079baff854149c89", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/54b4c428a0054e254223797d2713c31e08610831", + "reference": "54b4c428a0054e254223797d2713c31e08610831", "shasum": "" }, "require": { @@ -9110,7 +9181,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11-dev" + "dev-master": "1.12-dev" } }, "autoload": { @@ -9146,20 +9217,20 @@ "portable", "shim" ], - "time": "2019-02-06T07:57:58+00:00" + "time": "2019-08-06T08:03:45+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.11.0", + "version": "v1.12.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c" + "reference": "04ce3335667451138df4307d6a9b61565560199e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/ab50dcf166d5f577978419edd37aa2bb8eabce0c", - "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/04ce3335667451138df4307d6a9b61565560199e", + "reference": "04ce3335667451138df4307d6a9b61565560199e", "shasum": "" }, "require": { @@ -9168,7 +9239,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11-dev" + "dev-master": "1.12-dev" } }, "autoload": { @@ -9201,30 +9272,88 @@ "portable", "shim" ], - "time": "2019-02-06T07:57:58+00:00" + "time": "2019-08-06T08:03:45+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v1.1.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "ffcde9615dc5bb4825b9f6aed07716f1f57faae0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ffcde9615dc5bb4825b9f6aed07716f1f57faae0", + "reference": "ffcde9615dc5bb4825b9f6aed07716f1f57faae0", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "psr/container": "^1.0" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-09-17T11:12:18+00:00" }, { "name": "symfony/stopwatch", - "version": "v4.2.4", + "version": "v4.3.5", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "b1a5f646d56a3290230dbc8edf2a0d62cda23f67" + "reference": "1e4ff456bd625be5032fac9be4294e60442e9b71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/b1a5f646d56a3290230dbc8edf2a0d62cda23f67", - "reference": "b1a5f646d56a3290230dbc8edf2a0d62cda23f67", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/1e4ff456bd625be5032fac9be4294e60442e9b71", + "reference": "1e4ff456bd625be5032fac9be4294e60442e9b71", "shasum": "" }, "require": { "php": "^7.1.3", - "symfony/contracts": "^1.0" + "symfony/service-contracts": "^1.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -9251,20 +9380,20 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2019-01-16T20:31:39+00:00" + "time": "2019-08-07T11:52:19+00:00" }, { "name": "symfony/yaml", - "version": "v3.4.23", + "version": "v3.4.32", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "57f1ce82c997f5a8701b89ef970e36bb657fd09c" + "reference": "768f817446da74a776a31eea335540f9dcb53942" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/57f1ce82c997f5a8701b89ef970e36bb657fd09c", - "reference": "57f1ce82c997f5a8701b89ef970e36bb657fd09c", + "url": "https://api.github.com/repos/symfony/yaml/zipball/768f817446da74a776a31eea335540f9dcb53942", + "reference": "768f817446da74a776a31eea335540f9dcb53942", "shasum": "" }, "require": { @@ -9310,7 +9439,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2019-02-23T15:06:07+00:00" + "time": "2019-09-10T10:38:46+00:00" }, { "name": "theseer/fdomdocument", @@ -9354,16 +9483,16 @@ }, { "name": "theseer/tokenizer", - "version": "1.1.0", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", "shasum": "" }, "require": { @@ -9390,7 +9519,7 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2017-04-07T12:08:54+00:00" + "time": "2019-06-13T22:48:21+00:00" }, { "name": "vlucas/phpdotenv", @@ -9445,16 +9574,16 @@ }, { "name": "webmozart/assert", - "version": "1.4.0", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" + "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", + "url": "https://api.github.com/repos/webmozart/assert/zipball/88e6d84706d09a236046d686bbea96f07b3a34f4", + "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4", "shasum": "" }, "require": { @@ -9462,8 +9591,7 @@ "symfony/polyfill-ctype": "^1.8" }, "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" + "phpunit/phpunit": "^4.8.36 || ^7.5.13" }, "type": "library", "extra": { @@ -9492,7 +9620,7 @@ "check", "validate" ], - "time": "2018-12-25T11:19:39+00:00" + "time": "2019-08-24T08:43:50+00:00" } ], "aliases": [], @@ -9500,7 +9628,7 @@ "stability-flags": { "phpmd/phpmd": 0 }, - "prefer-stable": true, + "prefer-stable": false, "prefer-lowest": false, "platform": { "php": "~7.1.3||~7.2.0", diff --git a/dev/tests/api-functional/testsuite/Magento/Catalog/Api/ProductAttributeRepositoryTest.php b/dev/tests/api-functional/testsuite/Magento/Catalog/Api/ProductAttributeRepositoryTest.php index 386bd9fc9aeeb..42aa92652a5f1 100644 --- a/dev/tests/api-functional/testsuite/Magento/Catalog/Api/ProductAttributeRepositoryTest.php +++ b/dev/tests/api-functional/testsuite/Magento/Catalog/Api/ProductAttributeRepositoryTest.php @@ -4,12 +4,13 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ - namespace Magento\Catalog\Api; use Magento\Framework\Webapi\Exception as HTTPExceptionCodes; -use Magento\TestFramework\Helper\Bootstrap; +/** + * API tests for \Magento\Catalog\Model\Product\Attribute\Repository. + */ class ProductAttributeRepositoryTest extends \Magento\TestFramework\TestCase\WebapiAbstract { const SERVICE_NAME = 'catalogProductAttributeRepositoryV1'; @@ -130,6 +131,7 @@ public function testCreateWithExceptionIfAttributeAlreadyExists() try { $this->createAttribute($attributeCode); $this->fail("Expected exception"); + // phpcs:ignore Magento2.CodeAnalysis.EmptyBlock.DetectedCatch } catch (\SoapFault $e) { //Expects soap exception } catch (\Exception $e) { @@ -320,6 +322,20 @@ public function testDeleteById() $this->assertTrue($this->deleteAttribute($attributeCode)); } + /** + * Trying to delete system attribute. + * + * @magentoApiDataFixture Magento/Catalog/_files/product_system_attribute.php + * @expectedException \Exception + * @expectedExceptionMessage The system attribute can't be deleted. + * @return void + */ + public function testDeleteSystemAttributeById(): void + { + $attributeCode = 'test_attribute_code_333'; + $this->deleteAttribute($attributeCode); + } + /** * @return void */ diff --git a/dev/tests/api-functional/testsuite/Magento/Catalog/Api/ProductRepositoryInterfaceTest.php b/dev/tests/api-functional/testsuite/Magento/Catalog/Api/ProductRepositoryInterfaceTest.php index 3e935e1d7ae9b..a90dbf001c56a 100644 --- a/dev/tests/api-functional/testsuite/Magento/Catalog/Api/ProductRepositoryInterfaceTest.php +++ b/dev/tests/api-functional/testsuite/Magento/Catalog/Api/ProductRepositoryInterfaceTest.php @@ -9,7 +9,9 @@ use Magento\Catalog\Api\Data\ProductInterface; use Magento\CatalogInventory\Api\Data\StockItemInterface; +use Magento\Downloadable\Api\DomainManagerInterface; use Magento\Downloadable\Model\Link; +use Magento\Framework\ObjectManagerInterface; use Magento\Store\Model\Store; use Magento\Store\Model\Website; use Magento\Store\Model\WebsiteRepository; @@ -55,6 +57,36 @@ class ProductRepositoryInterfaceTest extends WebapiAbstract ], ]; + /** + * @var ObjectManagerInterface + */ + private $objectManager; + + /** + * @var DomainManagerInterface + */ + private $domainManager; + + /** + * @inheritdoc + */ + protected function setUp() + { + parent::setUp(); + $this->objectManager = Bootstrap::getObjectManager(); + $this->domainManager = $this->objectManager->get(DomainManagerInterface::class); + $this->domainManager->addDomains(['example.com']); + } + + /** + * @inheritdoc + */ + protected function tearDown() + { + parent::tearDown(); + $this->domainManager->removeDomains(['example.com']); + } + /** * @magentoApiDataFixture Magento/Catalog/_files/products_related.php */ @@ -183,7 +215,8 @@ public function testUpdateWithDeleteWebsites() } /** - * Test removing all website associations + * Test removing all website associations. + * * @magentoApiDataFixture Magento/Catalog/_files/product_with_two_websites.php */ public function testDeleteAllWebsiteAssociations() @@ -215,7 +248,7 @@ public function testCreateWithMultipleWebsites() $websitesData = [ 'website_ids' => [ 1, - (int) $website->getId(), + (int)$website->getId(), ] ]; $productBuilder[ProductInterface::EXTENSION_ATTRIBUTES_KEY] = $websitesData; @@ -418,7 +451,6 @@ public function testProductLinks() ProductInterface::TYPE_ID => 'simple', ProductInterface::PRICE => 100, ProductInterface::STATUS => 1, - ProductInterface::TYPE_ID => 'simple', ProductInterface::ATTRIBUTE_SET_ID => 4, ProductInterface::EXTENSION_ATTRIBUTES_KEY => [ 'stock_item' => $this->getStockItemData() @@ -441,7 +473,6 @@ public function testProductLinks() ProductInterface::TYPE_ID => 'simple', ProductInterface::PRICE => 100, ProductInterface::STATUS => 1, - ProductInterface::TYPE_ID => 'simple', ProductInterface::ATTRIBUTE_SET_ID => 4, "product_links" => [$productLinkData] ]; @@ -607,6 +638,7 @@ public function testProductOptions() public function testProductWithMediaGallery() { $testImagePath = __DIR__ . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'test_image.jpg'; + // phpcs:ignore Magento2.Functions.DiscouragedFunction $encodedImage = base64_encode(file_get_contents($testImagePath)); //create a product with media gallery $filename1 = 'tiny1' . time() . '.jpg'; @@ -726,16 +758,16 @@ public function testUpdateWithExtensionAttributes(): void /** * @param array $product - * @return array|bool|float|int|string + * @return mixed */ protected function updateProduct($product) { if (isset($product['custom_attributes'])) { - for ($i=0; $i<sizeof($product['custom_attributes']); $i++) { - if ($product['custom_attributes'][$i]['attribute_code'] == 'category_ids' - && !is_array($product['custom_attributes'][$i]['value']) + foreach ($product['custom_attributes'] as &$customAttribute) { + if ($customAttribute['attribute_code'] === 'category_ids' + && !is_array($customAttribute['value']) ) { - $product['custom_attributes'][$i]['value'] = [""]; + $customAttribute['value'] = [""]; } } } @@ -820,7 +852,7 @@ public function testGetList() $index = null; foreach ($response['items'][0]['custom_attributes'] as $key => $customAttribute) { - if ($customAttribute['attribute_code'] == 'category_ids') { + if ($customAttribute['attribute_code'] === 'category_ids') { $index = $key; break; } @@ -860,7 +892,7 @@ public function testGetListWithAdditionalParams() $indexDescription = null; foreach ($response['items'][0]['custom_attributes'] as $key => $customAttribute) { - if ($customAttribute['attribute_code'] == 'description') { + if ($customAttribute['attribute_code'] === 'description') { $indexDescription = $key; } } @@ -1031,7 +1063,7 @@ public function testGetListWithMultipleFilterGroupsAndSortingAndPagination() $sortOrder = $sortOrderBuilder->setField('meta_title')->setDirection(SortOrder::SORT_DESC)->create(); /** @var SearchCriteriaBuilder $searchCriteriaBuilder */ - $searchCriteriaBuilder = Bootstrap::getObjectManager()->create(SearchCriteriaBuilder::class); + $searchCriteriaBuilder = Bootstrap::getObjectManager()->create(SearchCriteriaBuilder::class); $searchCriteriaBuilder->addFilters([$filter1, $filter2, $filter3, $filter4]); $searchCriteriaBuilder->addFilters([$filter5]); @@ -1152,11 +1184,11 @@ protected function getSimpleProductData($productData = []) protected function saveProduct($product, $storeCode = null) { if (isset($product['custom_attributes'])) { - for ($i=0; $i<sizeof($product['custom_attributes']); $i++) { - if ($product['custom_attributes'][$i]['attribute_code'] == 'category_ids' - && !is_array($product['custom_attributes'][$i]['value']) + foreach ($product['custom_attributes'] as &$customAttribute) { + if ($customAttribute['attribute_code'] === 'category_ids' + && !is_array($customAttribute['value']) ) { - $product['custom_attributes'][$i]['value'] = [""]; + $customAttribute['value'] = [""]; } } } @@ -1481,7 +1513,6 @@ public function testUpdateStatus() ProductInterface::TYPE_ID => 'simple', ProductInterface::PRICE => 100, ProductInterface::STATUS => 0, - ProductInterface::TYPE_ID => 'simple', ProductInterface::ATTRIBUTE_SET_ID => 4, ]; @@ -1575,7 +1606,7 @@ private function assertMultiselectValue($productSku, $multiselectAttributeCode, $this->assertNotEmpty($customAttributes); $multiselectValue = null; foreach ($customAttributes as $customAttribute) { - if ($customAttribute['attribute_code'] == $multiselectAttributeCode) { + if ($customAttribute['attribute_code'] === $multiselectAttributeCode) { $multiselectValue = $customAttribute['value']; break; } diff --git a/dev/tests/api-functional/testsuite/Magento/Customer/Api/AccountManagementMeTest.php b/dev/tests/api-functional/testsuite/Magento/Customer/Api/AccountManagementMeTest.php index 31894c1332ad5..88bb3a8d59afd 100644 --- a/dev/tests/api-functional/testsuite/Magento/Customer/Api/AccountManagementMeTest.php +++ b/dev/tests/api-functional/testsuite/Magento/Customer/Api/AccountManagementMeTest.php @@ -228,14 +228,21 @@ public function testGetCustomerActivateCustomer() 'token' => $this->token ] ]; - $requestData = ['confirmationKey' => $this->customerData[CustomerInterface::CONFIRMATION]]; + + $requestData = ['confirmationKey' => CustomerHelper::CONFIRMATION]; if (TESTS_WEB_API_ADAPTER === 'soap') { $requestData['customerId'] = 0; } - $customerResponseData = $this->_webApiCall($serviceInfo, $requestData); - $this->assertEquals($this->customerData[CustomerInterface::ID], $customerResponseData[CustomerInterface::ID]); - // Confirmation key is removed after confirmation - $this->assertFalse(isset($customerResponseData[CustomerInterface::CONFIRMATION])); + + try { + $customerResponseData = $this->_webApiCall($serviceInfo, $requestData); + $this->assertEquals( + $this->customerData[CustomerInterface::ID], + $customerResponseData[CustomerInterface::ID] + ); + } catch (\Exception $e) { + $this->fail('Customer is not activated.'); + } } /** diff --git a/dev/tests/api-functional/testsuite/Magento/Customer/Api/AccountManagementTest.php b/dev/tests/api-functional/testsuite/Magento/Customer/Api/AccountManagementTest.php index b2276d79f5ecf..a93bbcbdf04b2 100644 --- a/dev/tests/api-functional/testsuite/Magento/Customer/Api/AccountManagementTest.php +++ b/dev/tests/api-functional/testsuite/Magento/Customer/Api/AccountManagementTest.php @@ -249,7 +249,15 @@ public function testCreateCustomerWithoutOptionalFields() public function testActivateCustomer() { $customerData = $this->_createCustomer(); - $this->assertNotNull($customerData[Customer::CONFIRMATION], 'Customer activation is not required'); + + // Update the customer's confirmation key to a known value + $customerData = $this->customerHelper->updateSampleCustomer( + $customerData[Customer::ID], + [ + 'id' => $customerData[Customer::ID], + 'confirmation' => CustomerHelper::CONFIRMATION + ] + ); $serviceInfo = [ 'rest' => [ @@ -265,16 +273,15 @@ public function testActivateCustomer() $requestData = [ 'email' => $customerData[Customer::EMAIL], - 'confirmationKey' => $customerData[Customer::CONFIRMATION], + 'confirmationKey' => CustomerHelper::CONFIRMATION ]; - $result = $this->_webApiCall($serviceInfo, $requestData); - - $this->assertEquals($customerData[Customer::ID], $result[Customer::ID], 'Wrong customer!'); - $this->assertTrue( - !isset($result[Customer::CONFIRMATION]) || $result[Customer::CONFIRMATION] === null, - 'Customer is not activated!' - ); + try { + $result = $this->_webApiCall($serviceInfo, $requestData); + $this->assertEquals($customerData[Customer::ID], $result[Customer::ID], 'Wrong customer!'); + } catch (\Exception $e) { + $this->fail('Customer is not activated.'); + } } public function testGetCustomerActivateCustomer() @@ -294,14 +301,15 @@ public function testGetCustomerActivateCustomer() ]; $requestData = [ 'email' => $customerData[Customer::EMAIL], - 'confirmationKey' => $customerData[Customer::CONFIRMATION], + 'confirmationKey' => CustomerHelper::CONFIRMATION ]; - $customerResponseData = $this->_webApiCall($serviceInfo, $requestData); - - $this->assertEquals($customerData[Customer::ID], $customerResponseData[Customer::ID]); - // Confirmation key is removed after confirmation - $this->assertFalse(isset($customerResponseData[Customer::CONFIRMATION])); + try { + $customerResponseData = $this->_webApiCall($serviceInfo, $requestData); + $this->assertEquals($customerData[Customer::ID], $customerResponseData[Customer::ID]); + } catch (\Exception $e) { + $this->fail('Customer is not activated.'); + } } public function testValidateResetPasswordLinkToken() diff --git a/dev/tests/api-functional/testsuite/Magento/Downloadable/Api/LinkRepositoryTest.php b/dev/tests/api-functional/testsuite/Magento/Downloadable/Api/LinkRepositoryTest.php index c881969a3b679..3a24aab30cb65 100644 --- a/dev/tests/api-functional/testsuite/Magento/Downloadable/Api/LinkRepositoryTest.php +++ b/dev/tests/api-functional/testsuite/Magento/Downloadable/Api/LinkRepositoryTest.php @@ -12,6 +12,9 @@ use Magento\TestFramework\Helper\Bootstrap; use Magento\TestFramework\TestCase\WebapiAbstract; +/** + * API tests for Magento\Downloadable\Model\LinkRepository. + */ class LinkRepositoryTest extends WebapiAbstract { /** @@ -135,10 +138,12 @@ public function testCreateUploadsProvidedFileContent() 'number_of_downloads' => 100, 'link_type' => 'file', 'link_file_content' => [ + //phpcs:ignore Magento2.Functions.DiscouragedFunction 'file_data' => base64_encode(file_get_contents($this->testImagePath)), 'name' => 'image.jpg', ], 'sample_file_content' => [ + //phpcs:ignore Magento2.Functions.DiscouragedFunction 'file_data' => base64_encode(file_get_contents($this->testImagePath)), 'name' => 'image.jpg', ], @@ -292,6 +297,64 @@ public function testCreateThrowsExceptionIfLinkFileContentIsNotAValidBase64Encod $this->_webApiCall($this->createServiceInfo, $requestData); } + /** + * Check that error appears when link file not existing in filesystem. + * + * @magentoApiDataFixture Magento/Downloadable/_files/product_downloadable.php + * @expectedException \Exception + * @expectedExceptionMessage Link file not found. Please try again. + * @return void + */ + public function testCreateLinkWithMissingLinkFileThrowsException(): void + { + $requestData = [ + 'isGlobalScopeContent' => false, + 'sku' => 'downloadable-product', + 'link' => [ + 'title' => 'Link Title', + 'sort_order' => 1, + 'price' => 10, + 'is_shareable' => 1, + 'number_of_downloads' => 100, + 'link_type' => 'file', + 'link_file' => '/n/o/nexistfile.png', + 'sample_type' => 'url', + 'sample_file' => 'http://google.com', + ], + ]; + + $this->_webApiCall($this->createServiceInfo, $requestData); + } + + /** + * Check that error appears when link sample file not existing in filesystem. + * + * @magentoApiDataFixture Magento/Downloadable/_files/product_downloadable.php + * @expectedException \Exception + * @expectedExceptionMessage Link sample file not found. Please try again. + * @return void + */ + public function testCreateLinkWithMissingSampleFileThrowsException(): void + { + $requestData = [ + 'isGlobalScopeContent' => false, + 'sku' => 'downloadable-product', + 'link' => [ + 'title' => 'Link Title', + 'sort_order' => 1, + 'price' => 10, + 'is_shareable' => 1, + 'number_of_downloads' => 100, + 'link_type' => 'url', + 'link_url' => 'http://www.example.com/', + 'sample_type' => 'file', + 'sample_file' => '/n/o/nexistfile.png', + ], + ]; + + $this->_webApiCall($this->createServiceInfo, $requestData); + } + /** * @magentoApiDataFixture Magento/Downloadable/_files/product_downloadable.php * @expectedException \Exception @@ -339,6 +402,7 @@ public function testCreateThrowsExceptionIfLinkFileNameContainsForbiddenCharacte 'number_of_downloads' => 100, 'link_type' => 'file', 'link_file_content' => [ + //phpcs:ignore Magento2.Functions.DiscouragedFunction 'file_data' => base64_encode(file_get_contents($this->testImagePath)), 'name' => 'name/with|forbidden{characters', ], @@ -370,6 +434,7 @@ public function testCreateThrowsExceptionIfSampleFileNameContainsForbiddenCharac 'link_url' => 'http://www.example.com/', 'sample_type' => 'file', 'sample_file_content' => [ + //phpcs:ignore Magento2.Functions.DiscouragedFunction 'file_data' => base64_encode(file_get_contents($this->testImagePath)), 'name' => 'name/with|forbidden{characters', ], @@ -405,6 +470,58 @@ public function testCreateThrowsExceptionIfLinkUrlHasWrongFormat() $this->_webApiCall($this->createServiceInfo, $requestData); } + /** + * @magentoApiDataFixture Magento/Downloadable/_files/product_downloadable.php + * @expectedException \Exception + * @expectedExceptionMessage Link URL's domain is not in list of downloadable_domains in env.php. + */ + public function testCreateThrowsExceptionIfLinkUrlUsesDomainNotInWhitelist() + { + $requestData = [ + 'isGlobalScopeContent' => false, + 'sku' => 'downloadable-product', + 'link' => [ + 'title' => 'Link Title', + 'sort_order' => 1, + 'price' => 10, + 'is_shareable' => 1, + 'number_of_downloads' => 100, + 'link_type' => 'url', + 'link_url' => 'http://notAnywhereInEnv.com/', + 'sample_type' => 'url', + 'sample_url' => 'http://www.example.com/', + ], + ]; + + $this->_webApiCall($this->createServiceInfo, $requestData); + } + + /** + * @magentoApiDataFixture Magento/Downloadable/_files/product_downloadable.php + * @expectedException \Exception + * @expectedExceptionMessage Sample URL's domain is not in list of downloadable_domains in env.php. + */ + public function testCreateThrowsExceptionIfSampleUrlUsesDomainNotInWhitelist() + { + $requestData = [ + 'isGlobalScopeContent' => false, + 'sku' => 'downloadable-product', + 'link' => [ + 'title' => 'Link Title', + 'sort_order' => 1, + 'price' => 10, + 'is_shareable' => 1, + 'number_of_downloads' => 100, + 'link_type' => 'url', + 'link_url' => 'http://example.com/', + 'sample_type' => 'url', + 'sample_url' => 'http://www.notAnywhereInEnv.com/', + ], + ]; + + $this->_webApiCall($this->createServiceInfo, $requestData); + } + /** * @magentoApiDataFixture Magento/Downloadable/_files/product_downloadable.php * @expectedException \Exception @@ -610,7 +727,9 @@ public function testUpdate() 'is_shareable' => 0, 'number_of_downloads' => 50, 'link_type' => 'url', + 'link_url' => 'http://google.com', 'sample_type' => 'url', + 'sample_url' => 'http://google.com', ], ]; $this->assertEquals($linkId, $this->_webApiCall($this->updateServiceInfo, $requestData)); @@ -643,7 +762,9 @@ public function testUpdateSavesDataInGlobalScopeAndDoesNotAffectValuesStoredInSt 'is_shareable' => 0, 'number_of_downloads' => 50, 'link_type' => 'url', + 'link_url' => 'http://google.com', 'sample_type' => 'url', + 'sample_url' => 'http://google.com', ], ]; diff --git a/dev/tests/api-functional/testsuite/Magento/Downloadable/Api/ProductRepositoryTest.php b/dev/tests/api-functional/testsuite/Magento/Downloadable/Api/ProductRepositoryTest.php index 769abadf20585..b43c000511a4b 100644 --- a/dev/tests/api-functional/testsuite/Magento/Downloadable/Api/ProductRepositoryTest.php +++ b/dev/tests/api-functional/testsuite/Magento/Downloadable/Api/ProductRepositoryTest.php @@ -8,6 +8,8 @@ use Magento\Catalog\Api\Data\ProductInterface; use Magento\Framework\Api\ExtensibleDataInterface; +use Magento\Framework\ObjectManagerInterface; +use Magento\TestFramework\Helper\Bootstrap; use Magento\TestFramework\TestCase\WebapiAbstract; /** @@ -25,9 +27,26 @@ class ProductRepositoryTest extends WebapiAbstract */ protected $testImagePath; + /** + * @var ObjectManagerInterface + */ + private $objectManager; + + /** + * @var DomainManagerInterface + */ + private $domainManager; + + /** + * @inheritdoc + */ protected function setUp() { + parent::setUp(); $this->testImagePath = __DIR__ . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'test_image.jpg'; + $this->objectManager = Bootstrap::getObjectManager(); + $this->domainManager = $this->objectManager->get(DomainManagerInterface::class); + $this->domainManager->addDomains(['www.example.com']); } /** @@ -37,6 +56,7 @@ public function tearDown() { $this->deleteProductBySku(self::PRODUCT_SKU); parent::tearDown(); + $this->domainManager->removeDomains(['www.example.com']); } protected function getLinkData() @@ -227,7 +247,9 @@ public function testUpdateDownloadableProductLinks() 'price' => 5.0, 'number_of_downloads' => 999, 'link_type' => 'file', - 'sample_type' => 'file' + 'link_file' => $linkFile, + 'sample_type' => 'file', + 'sample_file' => $sampleFile, ]; $linkData = $this->getLinkData(); diff --git a/dev/tests/api-functional/testsuite/Magento/Downloadable/Api/SampleRepositoryTest.php b/dev/tests/api-functional/testsuite/Magento/Downloadable/Api/SampleRepositoryTest.php index b537947d5e4db..a97e4c5d9e119 100644 --- a/dev/tests/api-functional/testsuite/Magento/Downloadable/Api/SampleRepositoryTest.php +++ b/dev/tests/api-functional/testsuite/Magento/Downloadable/Api/SampleRepositoryTest.php @@ -11,6 +11,9 @@ use Magento\TestFramework\Helper\Bootstrap; use Magento\TestFramework\TestCase\WebapiAbstract; +/** + * API tests for Magento\Downloadable\Model\SampleRepository. + */ class SampleRepositoryTest extends WebapiAbstract { /** @@ -131,6 +134,7 @@ public function testCreateUploadsProvidedFileContent() 'title' => 'Title', 'sort_order' => 1, 'sample_file_content' => [ + //phpcs:ignore Magento2.Functions.DiscouragedFunction 'file_data' => base64_encode(file_get_contents($this->testImagePath)), 'name' => 'image.jpg', ], @@ -223,6 +227,30 @@ public function testCreateThrowsExceptionIfSampleTypeIsInvalid() $this->_webApiCall($this->createServiceInfo, $requestData); } + /** + * Check that error appears when sample file not existing in filesystem. + * + * @magentoApiDataFixture Magento/Downloadable/_files/product_downloadable.php + * @expectedException \Exception + * @expectedExceptionMessage Sample file not found. Please try again. + * @return void + */ + public function testCreateSampleWithMissingFileThrowsException(): void + { + $requestData = [ + 'isGlobalScopeContent' => false, + 'sku' => 'downloadable-product', + 'sample' => [ + 'title' => 'Link Title', + 'sort_order' => 1, + 'sample_type' => 'file', + 'sample_file' => '/n/o/nexistfile.png', + ], + ]; + + $this->_webApiCall($this->createServiceInfo, $requestData); + } + /** * @magentoApiDataFixture Magento/Downloadable/_files/product_downloadable.php * @expectedException \Exception @@ -262,6 +290,7 @@ public function testCreateThrowsExceptionIfSampleFileNameContainsForbiddenCharac 'sort_order' => 15, 'sample_type' => 'file', 'sample_file_content' => [ + //phpcs:ignore Magento2.Functions.DiscouragedFunction 'file_data' => base64_encode(file_get_contents($this->testImagePath)), 'name' => 'name/with|forbidden{characters', ], @@ -380,6 +409,7 @@ public function testUpdate() 'title' => 'Updated Title', 'sort_order' => 2, 'sample_type' => 'url', + 'sample_url' => 'http://google.com', ], ]; @@ -408,6 +438,7 @@ public function testUpdateSavesDataInGlobalScopeAndDoesNotAffectValuesStoredInSt 'title' => 'Updated Title', 'sort_order' => 2, 'sample_type' => 'url', + 'sample_url' => 'http://google.com', ], ]; diff --git a/dev/tests/functional/.htaccess.sample b/dev/tests/functional/.htaccess.sample deleted file mode 100644 index 67c2f3fe2d027..0000000000000 --- a/dev/tests/functional/.htaccess.sample +++ /dev/null @@ -1,11 +0,0 @@ -############################################## -## Allow access to command.php, website.php, export.php, pathChecker.php, locales.php, deleteMagentoGeneratedCode.php and log.php - <FilesMatch "command.php|website.php|export.php|pathChecker.php|deleteMagentoGeneratedCode.php|log.php|locales.php"> - <IfVersion < 2.4> - order allow,deny - allow from all - </IfVersion> - <IfVersion >= 2.4> - Require all granted - </IfVersion> - </FilesMatch> diff --git a/dev/tests/functional/lib/Magento/Mtf/Util/Command/Cli/EnvWhitelist.php b/dev/tests/functional/lib/Magento/Mtf/Util/Command/Cli/EnvWhitelist.php new file mode 100644 index 0000000000000..be50167989261 --- /dev/null +++ b/dev/tests/functional/lib/Magento/Mtf/Util/Command/Cli/EnvWhitelist.php @@ -0,0 +1,43 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +namespace Magento\Mtf\Util\Command\Cli; + +use Magento\Mtf\Util\Command\Cli; + +/** + * Adding and removing domain to whitelist for test execution. + */ +class EnvWhitelist extends Cli +{ + /** + * Parameter domain add command. + */ + const PARAM_DOMAINS = 'downloadable:domains'; + + /** + * Add host to the whitelist. + * + * @param string $host + * @return void + */ + public function addHost(string $host): void + { + parent::execute(EnvWhitelist::PARAM_DOMAINS . ':add ' . $host); + } + + /** + * Remove host from the whitelist. + * + * @param string $host + * @return void + */ + public function removeHost(string $host): void + { + parent::execute(EnvWhitelist::PARAM_DOMAINS . ':remove ' . $host); + } +} diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Handler/Category/Curl.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Handler/Category/Curl.php index 5c54b366b7ab4..fb9d6e9772c74 100644 --- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Handler/Category/Curl.php +++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Handler/Category/Curl.php @@ -251,8 +251,13 @@ protected function getBlockId($landingName) $curl->write($url, [], CurlInterface::GET); $response = $curl->read(); $curl->close(); - preg_match('~\{"value":"(\d+)","label":"' . preg_quote($landingName) . '"\}~', $response, $matches); - $id = isset($matches[1]) ? (int)$matches[1] : null; + $id = null; + //Finding block option in 'Add block' options UI data. + preg_match('~\{[^\{\}]*?"label":"' . preg_quote($landingName) . '"[^\{\}]*?\}~', $response, $matches); + if (!empty($matches)) { + $blockOption = json_decode($matches[0], true); + $id = (int)$blockOption['value']; + } return $id; } diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ClearAllCompareProductsTest.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ClearAllCompareProductsTest.php index ebd455fa1ed93..276525a58d9cc 100644 --- a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ClearAllCompareProductsTest.php +++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ClearAllCompareProductsTest.php @@ -6,8 +6,12 @@ namespace Magento\Catalog\Test\TestCase\Product; +use Magento\Catalog\Test\Page\Product\CatalogProductView; +use Magento\Cms\Test\Page\CmsIndex; use Magento\Config\Test\Fixture\ConfigData; use Magento\Customer\Test\Page\CustomerAccountIndex; +use Magento\Mtf\Client\BrowserInterface; +use Magento\Mtf\Util\Command\Cli\EnvWhitelist; /** * Preconditions: @@ -31,6 +35,13 @@ class ClearAllCompareProductsTest extends AbstractCompareProductsTest const TEST_TYPE = 'extended_acceptance_test'; /* end tags */ + /** + * DomainWhitelist CLI + * + * @var EnvWhitelist + */ + private $envWhitelist; + /** * Test creation for clear all compare products. * @@ -42,6 +53,7 @@ class ClearAllCompareProductsTest extends AbstractCompareProductsTest public function test($products, ConfigData $config, CustomerAccountIndex $customerAccountIndex) { // Preconditions + $this->getEnvironmentWhitelist()->addHost('example.com'); $config->persist(); $products = $this->createProducts($products); @@ -52,4 +64,26 @@ public function test($products, ConfigData $config, CustomerAccountIndex $custom $this->cmsIndex->getLinksBlock()->openLink("My Account"); $customerAccountIndex->getCompareProductsBlock()->clickClearAll(); } + + /** + * @return EnvWhitelist + */ + private function getEnvironmentWhitelist() + { + if ($this->envWhitelist === null) { + $this->envWhitelist = $this->objectManager->get(EnvWhitelist::class); + } + + return $this->envWhitelist; + } + + /** + * Clean data after running test. + * + * @return void + */ + protected function tearDown() + { + $this->getEnvironmentWhitelist()->removeHost('example.com'); + } } diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnUpdateTest.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnUpdateTest.php index 90cd6bdb76328..d3078df6cc470 100644 --- a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnUpdateTest.php +++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnUpdateTest.php @@ -12,6 +12,7 @@ use Magento\Downloadable\Test\Block\Adminhtml\Catalog\Product\Edit\Section\Downloadable; use Magento\Mtf\Fixture\FixtureFactory; use Magento\Mtf\TestCase\Injectable; +use Magento\Mtf\Util\Command\Cli\EnvWhitelist; /** * Test Creation for ProductTypeSwitchingOnUpdating @@ -60,22 +61,32 @@ class ProductTypeSwitchingOnUpdateTest extends Injectable */ protected $fixtureFactory; + /** + * DomainWhitelist CLI + * + * @var EnvWhitelist + */ + private $envWhitelist; + /** * Injection data. * * @param CatalogProductIndex $catalogProductIndex * @param CatalogProductEdit $catalogProductEdit * @param FixtureFactory $fixtureFactory + * @param EnvWhitelist $envWhitelist * @return void */ public function __inject( CatalogProductIndex $catalogProductIndex, CatalogProductEdit $catalogProductEdit, - FixtureFactory $fixtureFactory + FixtureFactory $fixtureFactory, + EnvWhitelist $envWhitelist ) { $this->catalogProductIndex = $catalogProductIndex; $this->catalogProductEdit = $catalogProductEdit; $this->fixtureFactory = $fixtureFactory; + $this->envWhitelist = $envWhitelist; } /** @@ -89,6 +100,7 @@ public function __inject( public function test($productOrigin, $product, $actionName) { // Preconditions + $this->envWhitelist->addHost('example.com'); list($fixtureClass, $dataset) = explode('::', $productOrigin); $productOrigin = $this->fixtureFactory->createByCode(trim($fixtureClass), ['dataset' => trim($dataset)]); $productOrigin->persist(); @@ -145,4 +157,14 @@ protected function clearDownloadableData() $downloadableInfoTab->getDownloadableBlock('Links')->clearDownloadableData(); $downloadableInfoTab->setIsDownloadable('No'); } + + /** + * Clean data after running test. + * + * @return void + */ + protected function tearDown() + { + $this->envWhitelist->removeHost('example.com'); + } } diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Cart/Sidebar.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Cart/Sidebar.php index 562bc3a261287..ad335520feaa8 100644 --- a/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Cart/Sidebar.php +++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Cart/Sidebar.php @@ -115,6 +115,9 @@ public function openMiniCart() if (!$this->browser->find($this->cartContent)->isVisible()) { $this->browser->find($this->cartLink)->click(); } + // Need this because there are a lot of JS processes that update shopping cart items + // and we cant control them all + sleep(5); } /** diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/AddProductsToShoppingCartEntityTest.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/AddProductsToShoppingCartEntityTest.php index 7d6bd93180230..ef4afbe90edeb 100644 --- a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/AddProductsToShoppingCartEntityTest.php +++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/AddProductsToShoppingCartEntityTest.php @@ -14,6 +14,7 @@ use Magento\Mtf\TestCase\Injectable; use Magento\Mtf\TestStep\TestStepFactory; use Magento\Mtf\Util\Command\Cli\Cache; +use Magento\Mtf\Util\Command\Cli\EnvWhitelist; /** * Preconditions: @@ -99,6 +100,13 @@ class AddProductsToShoppingCartEntityTest extends Injectable */ private $cache; + /** + * DomainWhitelist CLI + * + * @var EnvWhitelist + */ + private $envWhitelist; + /** * Prepare test data. * @@ -108,6 +116,7 @@ class AddProductsToShoppingCartEntityTest extends Injectable * @param CheckoutCart $cartPage * @param TestStepFactory $testStepFactory * @param Cache $cache + * @param EnvWhitelist $envWhitelist * @return void */ public function __prepare( @@ -116,7 +125,8 @@ public function __prepare( CatalogProductView $catalogProductView, CheckoutCart $cartPage, TestStepFactory $testStepFactory, - Cache $cache + Cache $cache, + EnvWhitelist $envWhitelist ) { $this->browser = $browser; $this->fixtureFactory = $fixtureFactory; @@ -124,6 +134,7 @@ public function __prepare( $this->cartPage = $cartPage; $this->testStepFactory = $testStepFactory; $this->cache = $cache; + $this->envWhitelist = $envWhitelist; } /** @@ -146,6 +157,7 @@ public function test( // Preconditions $this->configData = $configData; $this->flushCache = $flushCache; + $this->envWhitelist->addHost('example.com'); $this->testStepFactory->create( \Magento\Config\Test\TestStep\SetupConfigurationStep::class, @@ -206,7 +218,7 @@ protected function addToCart(array $products, $isValidationFailed) * * @return void */ - public function tearDown() + protected function tearDown() { // Workaround until MTA-3879 is delivered. if ($this->configData == 'enable_https_frontend_admin_with_url') { @@ -224,7 +236,7 @@ public function tearDown() $_ENV['app_frontend_url'] = preg_replace('/(http[s]?)/', 'http', $_ENV['app_frontend_url']); $this->cache->flush(); } - + $this->envWhitelist->removeHost('example.com'); $this->testStepFactory->create( \Magento\Config\Test\TestStep\SetupConfigurationStep::class, ['configData' => $this->configData, 'rollback' => true, 'flushCache' => $this->flushCache] diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/DeleteProductFromMiniShoppingCartTest.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/DeleteProductFromMiniShoppingCartTest.php index 674ec3e50b725..77a7061454f48 100644 --- a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/DeleteProductFromMiniShoppingCartTest.php +++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/DeleteProductFromMiniShoppingCartTest.php @@ -12,6 +12,7 @@ use Magento\Mtf\Fixture\InjectableFixture; use Magento\Mtf\ObjectManager; use Magento\Mtf\TestCase\Injectable; +use Magento\Mtf\Util\Command\Cli\EnvWhitelist; /** * Preconditions: @@ -49,17 +50,29 @@ class DeleteProductFromMiniShoppingCartTest extends Injectable */ protected $cartPage; + /** + * DomainWhitelist CLI + * + * @var EnvWhitelist + */ + private $envWhitelist; + /** * Prepare test data * * @param CmsIndex $cmsIndex * @param CheckoutCart $cartPage + * @param EnvWhitelist $envWhitelist * @return void */ - public function __prepare(CmsIndex $cmsIndex, CheckoutCart $cartPage) - { + public function __prepare( + CmsIndex $cmsIndex, + CheckoutCart $cartPage, + EnvWhitelist $envWhitelist + ) { $this->cmsIndex = $cmsIndex; $this->cartPage = $cartPage; + $this->envWhitelist = $envWhitelist; } /** @@ -72,6 +85,7 @@ public function __prepare(CmsIndex $cmsIndex, CheckoutCart $cartPage) public function test(array $products, $deletedProductIndex) { // Preconditions + $this->envWhitelist->addHost('example.com'); $products = $this->prepareProducts($products); $this->cartPage->open(); $this->cartPage->getCartBlock()->clearShoppingCart(); @@ -130,4 +144,14 @@ protected function removeProduct(FixtureInterface $product) $this->cmsIndex->getCartSidebarBlock()->openMiniCart(); $this->cmsIndex->getCartSidebarBlock()->getCartItem($product)->removeItemFromMiniCart(); } + + /** + * Clean data after running test. + * + * @return void + */ + protected function tearDown() + { + $this->envWhitelist->removeHost('example.com'); + } } diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/DeleteProductsFromShoppingCartTest.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/DeleteProductsFromShoppingCartTest.php index a45ae1e48e058..0239fc2811cdb 100644 --- a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/DeleteProductsFromShoppingCartTest.php +++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/DeleteProductsFromShoppingCartTest.php @@ -13,6 +13,7 @@ use Magento\Mtf\Fixture\InjectableFixture; use Magento\Mtf\ObjectManager; use Magento\Mtf\TestCase\Injectable; +use Magento\Mtf\Util\Command\Cli\EnvWhitelist; /** * Preconditions @@ -61,6 +62,13 @@ class DeleteProductsFromShoppingCartTest extends Injectable */ protected $cartPage; + /** + * DomainWhitelist CLI + * + * @var EnvWhitelist + */ + private $envWhitelist; + /** * Prepare test data * @@ -68,18 +76,21 @@ class DeleteProductsFromShoppingCartTest extends Injectable * @param FixtureFactory $fixtureFactory * @param CatalogProductView $catalogProductView * @param CheckoutCart $cartPage + * @param EnvWhitelist $envWhitelist * @return void */ public function __prepare( BrowserInterface $browser, FixtureFactory $fixtureFactory, CatalogProductView $catalogProductView, - CheckoutCart $cartPage + CheckoutCart $cartPage, + EnvWhitelist $envWhitelist ) { $this->browser = $browser; $this->fixtureFactory = $fixtureFactory; $this->catalogProductView = $catalogProductView; $this->cartPage = $cartPage; + $this->envWhitelist = $envWhitelist; } /** @@ -91,6 +102,7 @@ public function __prepare( public function test($productsData) { // Preconditions + $this->envWhitelist->addHost('example.com'); $products = $this->prepareProducts($productsData); // Steps @@ -143,4 +155,14 @@ protected function removeProducts(array $products) $this->cartPage->getCartBlock()->getCartItem($product)->removeItem(); } } + + /** + * Clean data after running test. + * + * @return void + */ + protected function tearDown() + { + $this->envWhitelist->removeHost('example.com'); + } } diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/OnePageCheckoutOfflinePaymentMethodsTest.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/OnePageCheckoutOfflinePaymentMethodsTest.php index 54f59b03ef81d..5dc8754d2dcef 100644 --- a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/OnePageCheckoutOfflinePaymentMethodsTest.php +++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/OnePageCheckoutOfflinePaymentMethodsTest.php @@ -7,6 +7,7 @@ namespace Magento\Checkout\Test\TestCase; use Magento\Mtf\TestCase\Scenario; +use Magento\Mtf\Util\Command\Cli\EnvWhitelist; /** * Preconditions: @@ -43,6 +44,23 @@ class OnePageCheckoutOfflinePaymentMethodsTest extends Scenario const SEVERITY = 'S0'; /* end tags */ + /** + * DomainWhitelist CLI + * + * @var EnvWhitelist + */ + private $envWhitelist; + + /** + * Perform needed injections + * + * @param EnvWhitelist $envWhitelist + */ + public function __inject(EnvWhitelist $envWhitelist) + { + $this->envWhitelist = $envWhitelist; + } + /** * Runs one page checkout test. * @@ -50,6 +68,17 @@ class OnePageCheckoutOfflinePaymentMethodsTest extends Scenario */ public function test() { + $this->envWhitelist->addHost('example.com'); $this->executeScenario(); } + + /** + * Clean data after running test. + * + * @return void + */ + protected function tearDown() + { + $this->envWhitelist->removeHost('example.com'); + } } diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/OnePageCheckoutTest.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/OnePageCheckoutTest.php index 9ca3f439ed573..2cf4948804349 100644 --- a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/OnePageCheckoutTest.php +++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/OnePageCheckoutTest.php @@ -7,6 +7,7 @@ namespace Magento\Checkout\Test\TestCase; use Magento\Mtf\TestCase\Scenario; +use Magento\Mtf\Util\Command\Cli\EnvWhitelist; /** * Preconditions: @@ -44,6 +45,23 @@ class OnePageCheckoutTest extends Scenario const SEVERITY = 'S0'; /* end tags */ + /** + * DomainWhitelist CLI + * + * @var EnvWhitelist + */ + private $envWhitelist; + + /** + * Injection data. + * + * @param EnvWhitelist $envWhitelist + */ + public function __inject(EnvWhitelist $envWhitelist) + { + $this->envWhitelist = $envWhitelist; + } + /** * Runs one page checkout test. * @@ -51,6 +69,17 @@ class OnePageCheckoutTest extends Scenario */ public function test() { + $this->envWhitelist->addHost('example.com'); $this->executeScenario(); } + + /** + * Clean data after running test. + * + * @return void + */ + protected function tearDown() + { + $this->envWhitelist->removeHost('example.com'); + } } diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/UpdateProductFromMiniShoppingCartEntityTest.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/UpdateProductFromMiniShoppingCartEntityTest.php index af267cfa30ec1..e88c917039195 100644 --- a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/UpdateProductFromMiniShoppingCartEntityTest.php +++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestCase/UpdateProductFromMiniShoppingCartEntityTest.php @@ -12,6 +12,7 @@ use Magento\Mtf\Fixture\FixtureInterface; use Magento\Mtf\TestCase\Injectable; use Magento\Customer\Test\Fixture\Customer; +use Magento\Mtf\Util\Command\Cli\EnvWhitelist; /** * Preconditions: @@ -58,22 +59,32 @@ class UpdateProductFromMiniShoppingCartEntityTest extends Injectable */ protected $fixtureFactory; + /** + * DomainWhitelist CLI + * + * @var EnvWhitelist + */ + private $envWhitelist; + /** * Inject data. * * @param CmsIndex $cmsIndex * @param CatalogProductView $catalogProductView * @param FixtureFactory $fixtureFactory + * @param EnvWhitelist $envWhitelist * @return void */ public function __inject( CmsIndex $cmsIndex, CatalogProductView $catalogProductView, - FixtureFactory $fixtureFactory + FixtureFactory $fixtureFactory, + EnvWhitelist $envWhitelist ) { $this->cmsIndex = $cmsIndex; $this->catalogProductView = $catalogProductView; $this->fixtureFactory = $fixtureFactory; + $this->envWhitelist = $envWhitelist; } /** @@ -97,6 +108,7 @@ public function test( Customer $customer = null ) { // Preconditions: + $this->envWhitelist->addHost('example.com'); if ($customer !== null) { $customer->persist(); } @@ -162,4 +174,14 @@ protected function addToCart(FixtureInterface $product) ); $addToCartStep->run(); } + + /** + * Clean data after running test. + * + * @return void + */ + protected function tearDown() + { + $this->envWhitelist->removeHost('example.com'); + } } diff --git a/dev/tests/functional/tests/app/Magento/Downloadable/Test/TestCase/CreateDownloadableProductEntityTest.php b/dev/tests/functional/tests/app/Magento/Downloadable/Test/TestCase/CreateDownloadableProductEntityTest.php index 496b7a280ca18..de71cdff7ae4c 100644 --- a/dev/tests/functional/tests/app/Magento/Downloadable/Test/TestCase/CreateDownloadableProductEntityTest.php +++ b/dev/tests/functional/tests/app/Magento/Downloadable/Test/TestCase/CreateDownloadableProductEntityTest.php @@ -11,6 +11,7 @@ use Magento\Catalog\Test\Page\Adminhtml\CatalogProductNew; use Magento\Downloadable\Test\Fixture\DownloadableProduct; use Magento\Mtf\TestCase\Injectable; +use Magento\Mtf\Util\Command\Cli\EnvWhitelist; /** * Steps: @@ -53,6 +54,13 @@ class CreateDownloadableProductEntityTest extends Injectable */ protected $catalogProductNew; + /** + * DomainWhitelist CLI + * + * @var EnvWhitelist + */ + private $envWhitelist; + /** * Persist category * @@ -73,16 +81,19 @@ public function __prepare(Category $category) * @param Category $category * @param CatalogProductIndex $catalogProductIndexNewPage * @param CatalogProductNew $catalogProductNewPage + * @param EnvWhitelist $envWhitelist * @return void */ public function __inject( Category $category, CatalogProductIndex $catalogProductIndexNewPage, - CatalogProductNew $catalogProductNewPage + CatalogProductNew $catalogProductNewPage, + EnvWhitelist $envWhitelist ) { $this->category = $category; $this->catalogProductIndex = $catalogProductIndexNewPage; $this->catalogProductNew = $catalogProductNewPage; + $this->envWhitelist = $envWhitelist; } /** @@ -95,10 +106,21 @@ public function __inject( public function test(DownloadableProduct $product, Category $category) { // Steps + $this->envWhitelist->addHost('example.com'); $this->catalogProductIndex->open(); $this->catalogProductIndex->getGridPageActionBlock()->addProduct('downloadable'); $productBlockForm = $this->catalogProductNew->getProductForm(); $productBlockForm->fill($product, null, $category); $this->catalogProductNew->getFormPageActions()->save(); } + + /** + * Clean data after running test. + * + * @return void + */ + protected function tearDown() + { + $this->envWhitelist->removeHost('example.com'); + } } diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/PrintOrderFrontendGuestTest.php b/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/PrintOrderFrontendGuestTest.php index 01e43defde814..717dc1b220195 100644 --- a/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/PrintOrderFrontendGuestTest.php +++ b/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/PrintOrderFrontendGuestTest.php @@ -8,6 +8,7 @@ use Magento\Mtf\Client\BrowserInterface; use Magento\Mtf\TestCase\Scenario; +use Magento\Mtf\Util\Command\Cli\EnvWhitelist; /** * Preconditions: @@ -41,14 +42,25 @@ class PrintOrderFrontendGuestTest extends Scenario */ protected $browser; + /** + * DomainWhitelist CLI + * + * @var EnvWhitelist + */ + private $envWhitelist; + /** * Prepare data. * * @param BrowserInterface $browser + * @param EnvWhitelist $envWhitelist */ - public function __prepare(BrowserInterface $browser) - { + public function __prepare( + BrowserInterface $browser, + EnvWhitelist $envWhitelist + ) { $this->browser = $browser; + $this->envWhitelist = $envWhitelist; } /** @@ -58,6 +70,7 @@ public function __prepare(BrowserInterface $browser) */ public function test() { + $this->envWhitelist->addHost('example.com'); $this->executeScenario(); } @@ -66,8 +79,9 @@ public function test() * * @return void */ - public function tearDown() + protected function tearDown() { + $this->envWhitelist->removeHost('example.com'); $this->browser->closeWindow(); } } diff --git a/dev/tests/functional/tests/app/Magento/Wishlist/Test/TestCase/AddProductToWishlistEntityTest.php b/dev/tests/functional/tests/app/Magento/Wishlist/Test/TestCase/AddProductToWishlistEntityTest.php index 9c5ffb9dd8013..bf4c9fc58e83b 100644 --- a/dev/tests/functional/tests/app/Magento/Wishlist/Test/TestCase/AddProductToWishlistEntityTest.php +++ b/dev/tests/functional/tests/app/Magento/Wishlist/Test/TestCase/AddProductToWishlistEntityTest.php @@ -7,6 +7,7 @@ namespace Magento\Wishlist\Test\TestCase; use Magento\Customer\Test\Fixture\Customer; +use Magento\Mtf\Util\Command\Cli\EnvWhitelist; /** * Test Flow: @@ -30,15 +31,26 @@ class AddProductToWishlistEntityTest extends AbstractWishlistTest const MVP = 'no'; /* end tags */ + /** + * DomainWhitelist CLI + * + * @var EnvWhitelist + */ + private $envWhitelist; + /** * Prepare data for test * * @param Customer $customer + * @param EnvWhitelist $envWhitelist * @return array */ - public function __prepare(Customer $customer) - { + public function __prepare( + Customer $customer, + EnvWhitelist $envWhitelist + ) { $customer->persist(); + $this->envWhitelist = $envWhitelist; return ['customer' => $customer]; } @@ -53,6 +65,7 @@ public function __prepare(Customer $customer) */ public function test(Customer $customer, $product, $configure = true) { + $this->envWhitelist->addHost('example.com'); $product = $this->createProducts($product)[0]; // Steps: @@ -61,4 +74,14 @@ public function test(Customer $customer, $product, $configure = true) return ['product' => $product]; } + + /** + * Clean data after running test. + * + * @return void + */ + protected function tearDown() + { + $this->envWhitelist->removeHost('example.com'); + } } diff --git a/dev/tests/functional/tests/app/Magento/Wishlist/Test/TestCase/ConfigureProductInCustomerWishlistOnBackendTest.php b/dev/tests/functional/tests/app/Magento/Wishlist/Test/TestCase/ConfigureProductInCustomerWishlistOnBackendTest.php index ee3bf77a1aa0d..9b0a3751889d1 100644 --- a/dev/tests/functional/tests/app/Magento/Wishlist/Test/TestCase/ConfigureProductInCustomerWishlistOnBackendTest.php +++ b/dev/tests/functional/tests/app/Magento/Wishlist/Test/TestCase/ConfigureProductInCustomerWishlistOnBackendTest.php @@ -9,6 +9,7 @@ use Magento\Customer\Test\Fixture\Customer; use Magento\Customer\Test\Page\Adminhtml\CustomerIndex; use Magento\Customer\Test\Page\Adminhtml\CustomerIndexEdit; +use Magento\Mtf\Util\Command\Cli\EnvWhitelist; /** * Preconditions: @@ -35,15 +36,26 @@ class ConfigureProductInCustomerWishlistOnBackendTest extends AbstractWishlistTe const MVP = 'no'; /* end tags */ + /** + * DomainWhitelist CLI + * + * @var EnvWhitelist + */ + private $envWhitelist; + /** * Create customer. * * @param Customer $customer + * @param EnvWhitelist $envWhitelist * @return array */ - public function __prepare(Customer $customer) - { + public function __prepare( + Customer $customer, + EnvWhitelist $envWhitelist + ) { $customer->persist(); + $this->envWhitelist = $envWhitelist; return ['customer' => $customer]; } @@ -64,6 +76,7 @@ public function test( CustomerIndexEdit $customerIndexEdit ) { // Preconditions + $this->envWhitelist->addHost('example.com'); $product = $this->createProducts($product)[0]; $this->loginCustomer($customer); $this->addToWishlist([$product]); @@ -80,4 +93,14 @@ public function test( return['product' => $product]; } + + /** + * Clean data after running test. + * + * @return void + */ + protected function tearDown() + { + $this->envWhitelist->removeHost('example.com'); + } } diff --git a/dev/tests/functional/tests/app/Magento/Wishlist/Test/TestCase/ViewProductInCustomerWishlistOnBackendTest.php b/dev/tests/functional/tests/app/Magento/Wishlist/Test/TestCase/ViewProductInCustomerWishlistOnBackendTest.php index f81f87d5b6227..9eff647900b29 100644 --- a/dev/tests/functional/tests/app/Magento/Wishlist/Test/TestCase/ViewProductInCustomerWishlistOnBackendTest.php +++ b/dev/tests/functional/tests/app/Magento/Wishlist/Test/TestCase/ViewProductInCustomerWishlistOnBackendTest.php @@ -9,6 +9,7 @@ use Magento\Customer\Test\Fixture\Customer; use Magento\Customer\Test\Page\Adminhtml\CustomerIndex; use Magento\Customer\Test\Page\Adminhtml\CustomerIndexEdit; +use Magento\Mtf\Util\Command\Cli\EnvWhitelist; /** * Test Flow: @@ -34,15 +35,26 @@ class ViewProductInCustomerWishlistOnBackendTest extends AbstractWishlistTest const MVP = 'no'; /* end tags */ + /** + * DomainWhitelist CLI + * + * @var EnvWhitelist + */ + private $envWhitelist; + /** * Prepare customer for test. * * @param Customer $customer + * @param EnvWhitelist $envWhitelist * @return array */ - public function __prepare(Customer $customer) - { + public function __prepare( + Customer $customer, + EnvWhitelist $envWhitelist + ) { $customer->persist(); + $this->envWhitelist = $envWhitelist; return ['customer' => $customer]; } @@ -63,6 +75,7 @@ public function test( CustomerIndexEdit $customerIndexEdit ) { // Preconditions + $this->envWhitelist->addHost('example.com'); $product = $this->createProducts($product)[0]; $this->loginCustomer($customer); $this->addToWishlist([$product], true); @@ -74,4 +87,14 @@ public function test( return['product' => $product]; } + + /** + * Clean data after running test. + * + * @return void + */ + protected function tearDown() + { + $this->envWhitelist->removeHost('example.com'); + } } diff --git a/dev/tests/functional/testsuites/Magento/Mtf/TestSuite/InjectableTests/acceptance.xml b/dev/tests/functional/testsuites/Magento/Mtf/TestSuite/InjectableTests/acceptance.xml index 6a8e2c615f847..2eae769416c29 100644 --- a/dev/tests/functional/testsuites/Magento/Mtf/TestSuite/InjectableTests/acceptance.xml +++ b/dev/tests/functional/testsuites/Magento/Mtf/TestSuite/InjectableTests/acceptance.xml @@ -13,6 +13,7 @@ </allow> <deny> <tag group="stable" value="no" /> + <tag group="mftf_migrated" value="yes" /> </deny> </rule> <rule scope="variation"> @@ -21,6 +22,7 @@ </allow> <deny> <tag group="stable" value="no" /> + <tag group="mftf_migrated" value="yes" /> </deny> </rule> </config> diff --git a/dev/tests/functional/utils/command.php b/dev/tests/functional/utils/command.php deleted file mode 100644 index 99025dd1cffcc..0000000000000 --- a/dev/tests/functional/utils/command.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - -// phpcs:ignore Magento2.Security.IncludeFile -require_once __DIR__ . '/../../../../app/bootstrap.php'; - -use Symfony\Component\Console\Input\StringInput; -use Symfony\Component\Console\Output\NullOutput; - -// phpcs:ignore Magento2.Security.Superglobal -if (isset($_GET['command'])) { - // phpcs:ignore Magento2.Security.Superglobal - $command = urldecode($_GET['command']); - // phpcs:ignore Magento2.Security.Superglobal - $magentoObjectManagerFactory = \Magento\Framework\App\Bootstrap::createObjectManagerFactory(BP, $_SERVER); - // phpcs:ignore Magento2.Security.Superglobal - $magentoObjectManager = $magentoObjectManagerFactory->create($_SERVER); - $cli = $magentoObjectManager->create(\Magento\Framework\Console\Cli::class); - $input = new StringInput($command); - $input->setInteractive(false); - $output = new NullOutput(); - $cli->doRun($input, $output); -} else { - throw new \InvalidArgumentException("Command GET parameter is not set."); -} diff --git a/dev/tests/functional/utils/deleteMagentoGeneratedCode.php b/dev/tests/functional/utils/deleteMagentoGeneratedCode.php deleted file mode 100644 index 17260bd1da635..0000000000000 --- a/dev/tests/functional/utils/deleteMagentoGeneratedCode.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - -// phpcs:ignore Magento2.Security.InsecureFunction -exec('rm -rf ../../../../generated/*'); diff --git a/dev/tests/functional/utils/export.php b/dev/tests/functional/utils/export.php deleted file mode 100644 index fa50bc729d0f6..0000000000000 --- a/dev/tests/functional/utils/export.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - -// phpcs:ignore Magento2.Security.Superglobal -if (!isset($_GET['template'])) { - // phpcs:ignore Magento2.Exceptions.DirectThrow - throw new \InvalidArgumentException('Argument "template" must be set.'); -} - -$varDir = '../../../../var/export/'; -// phpcs:ignore Magento2.Security.Superglobal -$template = urldecode($_GET['template']); -// phpcs:ignore Magento2.Functions.DiscouragedFunction -$fileList = scandir($varDir, SCANDIR_SORT_NONE); -$files = []; - -foreach ($fileList as $fileName) { - if (preg_match("`$template`", $fileName) === 1) { - $filePath = $varDir . $fileName; - $files[] = [ - // phpcs:ignore Magento2.Functions.DiscouragedFunction - 'content' => file_get_contents($filePath), - 'name' => $fileName, - // phpcs:ignore Magento2.Functions.DiscouragedFunction - 'date' => filectime($filePath), - ]; - } -} - -// phpcs:ignore Magento2.Security.LanguageConstruct, Magento2.Security.InsecureFunction -echo serialize($files); diff --git a/dev/tests/functional/utils/locales.php b/dev/tests/functional/utils/locales.php deleted file mode 100644 index 11e1e2b70fa50..0000000000000 --- a/dev/tests/functional/utils/locales.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - -// phpcs:ignore Magento2.Security.Superglobal -if (isset($_GET['type']) && $_GET['type'] == 'deployed') { - // phpcs:ignore Magento2.Security.Superglobal - $themePath = isset($_GET['theme_path']) ? $_GET['theme_path'] : 'adminhtml/Magento/backend'; - $directory = __DIR__ . '/../../../../pub/static/' . $themePath; - // phpcs:ignore Magento2.Functions.DiscouragedFunction - $locales = array_diff(scandir($directory), ['..', '.']); -} else { - // phpcs:ignore Magento2.Security.IncludeFile - require_once __DIR__ . DIRECTORY_SEPARATOR . 'bootstrap.php'; - $localeConfig = $magentoObjectManager->create(\Magento\Framework\Locale\Config::class); - $locales = $localeConfig->getAllowedLocales(); -} - -// phpcs:ignore Magento2.Security.LanguageConstruct -echo implode('|', $locales); diff --git a/dev/tests/functional/utils/log.php b/dev/tests/functional/utils/log.php deleted file mode 100644 index 30783ae8e1d28..0000000000000 --- a/dev/tests/functional/utils/log.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - -declare(strict_types=1); -// phpcs:ignore Magento2.Security.Superglobal -if (!isset($_GET['name'])) { - // phpcs:ignore Magento2.Exceptions.DirectThrow - throw new \InvalidArgumentException( - 'The name of log file is required for getting logs.' - ); -} - -// phpcs:ignore Magento2.Security.Superglobal -$name = urldecode($_GET['name']); -if (preg_match('/\.\.(\\\|\/)/', $name)) { - throw new \InvalidArgumentException('Invalid log file name'); -} - -// phpcs:ignore Magento2.Security.InsecureFunction, Magento2.Functions.DiscouragedFunction, Magento2.Security.LanguageConstruct -echo serialize(file_get_contents('../../../../var/log' .'/' .$name)); diff --git a/dev/tests/functional/utils/pathChecker.php b/dev/tests/functional/utils/pathChecker.php deleted file mode 100644 index 217cf90af0a56..0000000000000 --- a/dev/tests/functional/utils/pathChecker.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - -// phpcs:ignore Magento2.Security.Superglobal -if (isset($_GET['path'])) { - // phpcs:ignore Magento2.Security.Superglobal - $path = urldecode($_GET['path']); - // phpcs:ignore Magento2.Functions.DiscouragedFunction - if (file_exists('../../../../' . $path)) { - // phpcs:ignore Magento2.Security.LanguageConstruct - echo 'path exists: true'; - } else { - // phpcs:ignore Magento2.Security.LanguageConstruct - echo 'path exists: false'; - } -} else { - // phpcs:ignore Magento2.Exceptions.DirectThrow - throw new \InvalidArgumentException("GET parameter 'path' is not set."); -} diff --git a/dev/tests/functional/utils/website.php b/dev/tests/functional/utils/website.php deleted file mode 100644 index 720b4962aedd4..0000000000000 --- a/dev/tests/functional/utils/website.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - -// phpcs:ignore Magento2.Security.Superglobal -if (!isset($_GET['website_code'])) { - // phpcs:ignore Magento2.Exceptions.DirectThrow - throw new \Exception("website_code GET parameter is not set."); -} - -// phpcs:ignore Magento2.Security.Superglobal -$websiteCode = urldecode($_GET['website_code']); -$rootDir = '../../../../'; -$websiteDir = $rootDir . 'websites/' . $websiteCode . '/'; -// phpcs:ignore Magento2.Functions.DiscouragedFunction -$contents = file_get_contents($rootDir . 'index.php'); - -$websiteParam = <<<EOD -\$params = \$_SERVER; -\$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = '$websiteCode'; -\$params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website'; -EOD; - -$pattern = '`(try {.*?)(\/app\/bootstrap.*?}\n)(.*?)\$_SERVER`mis'; -$replacement = "$1/../..$2\n$websiteParam$3\$params"; - -$contents = preg_replace($pattern, $replacement, $contents); - -$old = umask(0); -// phpcs:ignore Magento2.Functions.DiscouragedFunction -mkdir($websiteDir, 0760, true); -umask($old); -// phpcs:ignore Magento2.Functions.DiscouragedFunction -copy($rootDir . '.htaccess', $websiteDir . '.htaccess'); -// phpcs:ignore Magento2.Functions.DiscouragedFunction -file_put_contents($websiteDir . 'index.php', $contents); diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Model/Indexer/Product/Flat/ProcessorTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Model/Indexer/Product/Flat/ProcessorTest.php index bbaf453938705..9ae9cc6b6629f 100644 --- a/dev/tests/integration/testsuite/Magento/Catalog/Model/Indexer/Product/Flat/ProcessorTest.php +++ b/dev/tests/integration/testsuite/Magento/Catalog/Model/Indexer/Product/Flat/ProcessorTest.php @@ -5,8 +5,10 @@ */ namespace Magento\Catalog\Model\Indexer\Product\Flat; +use Magento\Catalog\Model\Product\Attribute\Repository; + /** - * Class FullTest + * Integration tests for \Magento\Catalog\Model\Indexer\Product\Flat\Processor. */ class ProcessorTest extends \Magento\TestFramework\Indexer\TestCase { @@ -64,22 +66,23 @@ public function testSaveAttribute() } /** - * @magentoDbIsolation enabled + * @magentoDbIsolation disabled * @magentoAppIsolation enabled * @magentoAppArea adminhtml - * @magentoDataFixture Magento/Catalog/_files/multiple_products.php + * @magentoDataFixture Magento/Catalog/_files/product_simple_with_custom_attribute_in_flat.php * @magentoConfigFixture current_store catalog/frontend/flat_catalog_product 1 */ public function testDeleteAttribute() { - /** @var $product \Magento\Catalog\Model\Product */ - $product = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create( - \Magento\Catalog\Model\Product::class - ); - - /** @var \Magento\Catalog\Model\ResourceModel\Product $productResource */ - $productResource = $product->getResource(); - $productResource->getAttribute('media_gallery')->delete(); + /** @var \Magento\Catalog\Model\ResourceModel\Eav\Attribute $model */ + $model = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->get(\Magento\Catalog\Model\ResourceModel\Eav\Attribute::class); + /** @var Repository $productAttributeRepository */ + $productAttributeRepository = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->get(Repository::class); + $productAttrubute = $productAttributeRepository->get('flat_attribute'); + $productAttributeId = $productAttrubute->getAttributeId(); + $model->load($productAttributeId)->delete(); $this->assertTrue($this->_processor->getIndexer()->isInvalid()); } diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Model/Layer/Filter/_files/attribute_with_option.php b/dev/tests/integration/testsuite/Magento/Catalog/Model/Layer/Filter/_files/attribute_with_option.php index 833d1b114a0b5..b4431678b2016 100644 --- a/dev/tests/integration/testsuite/Magento/Catalog/Model/Layer/Filter/_files/attribute_with_option.php +++ b/dev/tests/integration/testsuite/Magento/Catalog/Model/Layer/Filter/_files/attribute_with_option.php @@ -20,6 +20,7 @@ 'is_global' => 1, 'frontend_input' => 'select', 'is_filterable' => 1, + 'is_user_defined' => 1, 'option' => ['value' => ['option_0' => [0 => 'Option Label']]], 'backend_type' => 'int', ] diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Model/Product/Compare/ListCompareTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Model/Product/Compare/ListCompareTest.php index 3fa02aebe9170..98b264a8991bc 100644 --- a/dev/tests/integration/testsuite/Magento/Catalog/Model/Product/Compare/ListCompareTest.php +++ b/dev/tests/integration/testsuite/Magento/Catalog/Model/Product/Compare/ListCompareTest.php @@ -6,10 +6,6 @@ namespace Magento\Catalog\Model\Product\Compare; -/** - * @magentoDataFixture Magento/Catalog/_files/product_simple.php - * @magentoDataFixture Magento/Customer/_files/customer.php - */ class ListCompareTest extends \PHPUnit\Framework\TestCase { /** @@ -44,6 +40,10 @@ protected function tearDown() $this->_session->setCustomerId(null); } + /** + * @magentoDataFixture Magento/Catalog/_files/product_simple.php + * @magentoDataFixture Magento/Customer/_files/customer.php + */ public function testAddProductWithSession() { $this->_session->setCustomerId(1); @@ -51,10 +51,33 @@ public function testAddProductWithSession() $product = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() ->create(\Magento\Catalog\Model\Product::class) ->load(1); - $this->_model->addProduct($product); + /** @var $product2 \Magento\Catalog\Model\Product */ + $product2 = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->create(\Magento\Catalog\Model\Product::class) + ->load(6); + $products = [$product->getId(), $product2->getId()]; + $this->_model->addProducts($products); + $this->assertTrue($this->_model->hasItems(1, $this->_visitor->getId())); } + /** + * @magentoDataFixture Magento/Catalog/_files/product_simple.php + * @magentoDataFixture Magento/Customer/_files/customer.php + */ + public function testAddProductWithSessionNeg() + { + $this->_session->setCustomerId(1); + $products = ['none', 99]; + $this->_model->addProducts($products); + + $this->assertFalse($this->_model->hasItems(1, $this->_visitor->getId())); + } + + /** + * @magentoDataFixture Magento/Catalog/_files/product_simple.php + * @magentoDataFixture Magento/Customer/_files/customer.php + */ public function testAddProductWithoutSession() { /** @var $product \Magento\Catalog\Model\Product */ diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Model/ResourceModel/Eav/AttributeTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Model/ResourceModel/Eav/AttributeTest.php index 349853c8a3935..498c3167ed734 100644 --- a/dev/tests/integration/testsuite/Magento/Catalog/Model/ResourceModel/Eav/AttributeTest.php +++ b/dev/tests/integration/testsuite/Magento/Catalog/Model/ResourceModel/Eav/AttributeTest.php @@ -5,6 +5,9 @@ */ namespace Magento\Catalog\Model\ResourceModel\Eav; +/** + * Test for \Magento\Catalog\Model\ResourceModel\Eav\Attribute. + */ class AttributeTest extends \PHPUnit\Framework\TestCase { /** @@ -19,6 +22,11 @@ protected function setUp() ); } + /** + * Test Create -> Read -> Update -> Delete attribute operations. + * + * @return void + */ public function testCRUD() { $this->_model->setAttributeCode( @@ -31,7 +39,7 @@ public function testCRUD() )->getId() )->setFrontendLabel( 'test' - ); + )->setIsUserDefined(1); $crud = new \Magento\TestFramework\Entity($this->_model, ['frontend_label' => uniqid()]); $crud->testCrud(); } diff --git a/dev/tests/integration/testsuite/Magento/Catalog/_files/category_attribute.php b/dev/tests/integration/testsuite/Magento/Catalog/_files/category_attribute.php index 37398abdb8f7d..29b4a05c4dcbe 100644 --- a/dev/tests/integration/testsuite/Magento/Catalog/_files/category_attribute.php +++ b/dev/tests/integration/testsuite/Magento/Catalog/_files/category_attribute.php @@ -9,5 +9,6 @@ ->create(\Magento\Catalog\Model\ResourceModel\Eav\Attribute::class); $attribute->setAttributeCode('test_attribute_code_666') ->setEntityTypeId(3) - ->setIsGlobal(1); + ->setIsGlobal(1) + ->setIsUserDefined(1); $attribute->save(); diff --git a/dev/tests/integration/testsuite/Magento/Catalog/_files/product_attribute.php b/dev/tests/integration/testsuite/Magento/Catalog/_files/product_attribute.php index b5187d5d80768..b59675c5a28ae 100644 --- a/dev/tests/integration/testsuite/Magento/Catalog/_files/product_attribute.php +++ b/dev/tests/integration/testsuite/Magento/Catalog/_files/product_attribute.php @@ -10,5 +10,6 @@ $attribute->setAttributeCode('test_attribute_code_333') ->setEntityTypeId(4) ->setIsGlobal(1) - ->setPrice(95); + ->setPrice(95) + ->setIsUserDefined(1); $attribute->save(); diff --git a/dev/tests/integration/testsuite/Magento/Catalog/_files/product_system_attribute.php b/dev/tests/integration/testsuite/Magento/Catalog/_files/product_system_attribute.php new file mode 100644 index 0000000000000..1e7429cc831f5 --- /dev/null +++ b/dev/tests/integration/testsuite/Magento/Catalog/_files/product_system_attribute.php @@ -0,0 +1,16 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +// phpcs:ignore Magento2.Security.IncludeFile +require __DIR__ . '/product_attribute.php'; +/** @var $attributeRepository \Magento\Catalog\Model\Product\Attribute\Repository */ +$attributeRepository = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->get(\Magento\Catalog\Model\Product\Attribute\Repository::class); +/** @var $attribute \Magento\Eav\Api\Data\AttributeInterface */ +$attribute = $attributeRepository->get('test_attribute_code_333'); + +$attributeRepository->save($attribute->setIsUserDefined(0)); diff --git a/dev/tests/integration/testsuite/Magento/Catalog/_files/product_system_attribute_rollback.php b/dev/tests/integration/testsuite/Magento/Catalog/_files/product_system_attribute_rollback.php new file mode 100644 index 0000000000000..0f997ff4b4941 --- /dev/null +++ b/dev/tests/integration/testsuite/Magento/Catalog/_files/product_system_attribute_rollback.php @@ -0,0 +1,37 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +use Magento\Framework\Exception\NoSuchEntityException; + +/** @var $attributeRepository \Magento\Catalog\Model\Product\Attribute\Repository */ +$attributeRepository = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() + ->get(\Magento\Catalog\Model\Product\Attribute\Repository::class); + +try { + /** @var $attribute \Magento\Eav\Api\Data\AttributeInterface */ + $attribute = $attributeRepository->get('test_attribute_code_333'); + $attributeRepository->save($attribute->setIsUserDefined(1)); + // phpcs:ignore Magento2.CodeAnalysis.EmptyBlock.DetectedCatch +} catch (NoSuchEntityException $e) { +} +/** @var \Magento\Framework\Registry $registry */ +$registry = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(\Magento\Framework\Registry::class); + +$registry->unregister('isSecureArea'); +$registry->register('isSecureArea', true); + +try { + $attribute = $attributeRepository->get('test_attribute_code_333'); + if ($attribute->getId()) { + $attribute->delete(); + } + // phpcs:ignore Magento2.CodeAnalysis.EmptyBlock.DetectedCatch +} catch (\Exception $e) { +} + +$registry->unregister('isSecureArea'); +$registry->register('isSecureArea', false); diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ProductTest.php b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ProductTest.php index 67446960e15dc..594705639ab63 100644 --- a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ProductTest.php +++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ProductTest.php @@ -28,6 +28,8 @@ /** * Class ProductTest + * + * @magentoAppArea adminhtml * @magentoAppIsolation enabled * @magentoDbIsolation enabled * @magentoDataFixtureBeforeTransaction Magento/Catalog/_files/enable_reindex_schedule.php @@ -2260,6 +2262,8 @@ public function testImportImageForNonDefaultStore() */ public function testProductsWithMultipleStoresWhenMediaIsDisabled(): void { + $this->loginAdminUserWithUsername(\Magento\TestFramework\Bootstrap::ADMIN_NAME); + $filesystem = $this->objectManager->create(\Magento\Framework\Filesystem::class); $directory = $filesystem->getDirectoryWrite(DirectoryList::ROOT); $source = $this->objectManager->create( @@ -2342,4 +2346,21 @@ private function importFile(string $fileName): void $this->_model->importData(); } + + /** + * Set the current admin session user based on a username + * + * @param string $username + */ + private function loginAdminUserWithUsername(string $username) + { + $user = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create( + \Magento\User\Model\User::class + )->loadByUsername($username); + /** @var $session \Magento\Backend\Model\Auth\Session */ + $session = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get( + \Magento\Backend\Model\Auth\Session::class + ); + $session->setUser($user); + } } diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/UploaderTest.php b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/UploaderTest.php index f61aa7578d4a3..69824e908c241 100644 --- a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/UploaderTest.php +++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/UploaderTest.php @@ -68,11 +68,33 @@ public function testMoveWithValidFile(): void { $fileName = 'magento_additional_image_one.jpg'; $filePath = $this->directory->getAbsolutePath($this->uploader->getTmpDir() . '/' . $fileName); - copy(__DIR__ . '/_files/' . $fileName, $filePath); + $this->directory->copyFile(__DIR__ . '/_files/' . $fileName, $filePath); $this->uploader->move($fileName); $this->assertTrue($this->directory->isExist($this->uploader->getTmpDir() . '/' . $fileName)); } + /** + * Check validation against temporary directory. + * + * @magentoAppIsolation enabled + * @return void + * @expectedException \Magento\Framework\Exception\LocalizedException + */ + public function testMoveWithFileOutsideTemp(): void + { + $tmpDir = $this->uploader->getTmpDir(); + if (!$this->directory->create($newTmpDir = $tmpDir .'/test1')) { + throw new \RuntimeException('Failed to create temp dir'); + } + $this->uploader->setTmpDir($newTmpDir); + $fileName = 'magento_additional_image_one.jpg'; + $filePath = $this->directory->getAbsolutePath($tmpDir . '/' . $fileName); + + $this->directory->copyFile(__DIR__ . '/_files/' . $fileName, $filePath . '_1'); + $this->uploader->move('../' .$fileName); + $this->assertTrue($this->directory->isExist($tmpDir . '/' . $fileName)); + } + /** * @magentoAppIsolation enabled * @return void @@ -83,7 +105,7 @@ public function testMoveWithInvalidFile(): void { $fileName = 'media_import_image.php'; $filePath = $this->directory->getAbsolutePath($this->uploader->getTmpDir() . '/' . $fileName); - copy(__DIR__ . '/_files/' . $fileName, $filePath); + $this->directory->copyFile(__DIR__ . '/_files/' . $fileName, $filePath); $this->uploader->move($fileName); $this->assertFalse($this->directory->isExist($this->uploader->getTmpDir() . '/' . $fileName)); } diff --git a/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_downloadable_product_rollback.php b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_downloadable_product_rollback.php new file mode 100644 index 0000000000000..3f8c016a3f266 --- /dev/null +++ b/dev/tests/integration/testsuite/Magento/Checkout/_files/quote_with_downloadable_product_rollback.php @@ -0,0 +1,9 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +// phpcs:ignore Magento2.Security.IncludeFile +require __DIR__ . '/../../../Magento/Downloadable/_files/product_downloadable_rollback.php'; diff --git a/dev/tests/integration/testsuite/Magento/Downloadable/Model/Url/DomainValidatorTest.php b/dev/tests/integration/testsuite/Magento/Downloadable/Model/Url/DomainValidatorTest.php new file mode 100644 index 0000000000000..5e6a6ac8e5671 --- /dev/null +++ b/dev/tests/integration/testsuite/Magento/Downloadable/Model/Url/DomainValidatorTest.php @@ -0,0 +1,106 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +namespace Magento\Downloadable\Model\Url; + +use Magento\Downloadable\Model\DomainManager; +use Magento\TestFramework\Helper\Bootstrap; +use Magento\Framework\App\DeploymentConfig; + +/** + * Test for Magento\Downloadable\Model\Url\DomainValidator. + */ +class DomainValidatorTest extends \PHPUnit\Framework\TestCase +{ + /** + * @var DomainValidator + */ + private $model; + + /** + * @var DeploymentConfig|\PHPUnit_Framework_MockObject_MockObject + */ + private $deploymentConfig; + + /** + * @inheritdoc + */ + protected function setUp() + { + $objectManager = Bootstrap::getObjectManager(); + + $this->deploymentConfig = $this->createPartialMock( + DeploymentConfig::class, + ['get'] + ); + + $domainManager = $objectManager->create( + DomainManager::class, + ['deploymentConfig' => $this->deploymentConfig] + ); + + $this->model = $objectManager->create( + DomainValidator::class, + ['domainManager' => $domainManager] + ); + } + + /** + * @param string $urlInput + * @param array $envDomainWhitelist + * @param bool $isValid + * + * @magentoDataFixture Magento/Store/_files/second_store.php + * @magentoConfigFixture current_store web/unsecure/base_url http://example.com/ + * @magentoConfigFixture current_store web/secure/base_url https://secure.example.com/ + * @magentoConfigFixture fixture_second_store_store web/unsecure/base_url http://example2.com/ + * @magentoConfigFixture fixture_second_store_store web/secure/base_url https://secure.example2.com/ + * @dataProvider isValidDataProvider + */ + public function testIsValid(string $urlInput, array $envDomainWhitelist, bool $isValid) + { + $this->deploymentConfig + ->method('get') + ->with(DomainValidator::PARAM_DOWNLOADABLE_DOMAINS) + ->willReturn($envDomainWhitelist); + + $this->assertEquals( + $isValid, + $this->model->isValid($urlInput), + 'Failed asserting is ' . ($isValid ? 'valid' : 'not valid') . ': ' . $urlInput . + PHP_EOL . + 'Domain whitelist: ' . implode(', ', $envDomainWhitelist) + ); + } + + /** + * @return array + */ + public function isValidDataProvider() + { + return [ + ['http://example.com', ['example.co'], false], + [' http://example.com ', ['example.com'], false], + ['http://example.com', ['example.com'], true], + ['https://example.com', ['example.com'], true], + ['https://example.com/downloadable.pdf', ['example.com'], true], + ['https://example.com:8080/downloadable.pdf', ['example.com'], true], + ['http://secure.example.com', ['secure.example.com'], true], + ['https://secure.example.com', ['secure.example.com'], true], + ['https://ultra.secure.example.com', ['secure.example.com'], false], + ['http://example2.com', ['example2.com'], true], + ['https://example2.com', ['example2.com'], true], + ['http://subdomain.example2.com', ['example2.com'], false], + ['https://adobe.com', ['adobe.com'], true], + ['https://subdomain.adobe.com', ['adobe.com'], false], + ['https://ADOBE.COm', ['adobe.com'], true], + ['https://adobe.com', ['ADOBE.COm'], true], + ['http://127.0.0.1', ['127.0.0.1'], false], + ['http://[::1]', ['::1'], false], + ]; + } +} diff --git a/dev/tests/integration/testsuite/Magento/Downloadable/_files/downloadable_product_with_files_and_sample_url.php b/dev/tests/integration/testsuite/Magento/Downloadable/_files/downloadable_product_with_files_and_sample_url.php index 9c0b328fc1664..be1e186b7e01b 100644 --- a/dev/tests/integration/testsuite/Magento/Downloadable/_files/downloadable_product_with_files_and_sample_url.php +++ b/dev/tests/integration/testsuite/Magento/Downloadable/_files/downloadable_product_with_files_and_sample_url.php @@ -5,7 +5,12 @@ */ declare(strict_types=1); +use Magento\Downloadable\Api\DomainManagerInterface; + $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); +/** @var DomainManagerInterface $domainManager */ +$domainManager = $objectManager->get(DomainManagerInterface::class); +$domainManager->addDomains(['example.com', 'sampleurl.com']); /** * @var \Magento\Catalog\Model\Product $product @@ -74,6 +79,7 @@ */ $sampleContent = $objectManager->create(\Magento\Downloadable\Api\Data\File\ContentInterfaceFactory::class)->create(); $sampleContent->setFileData( + // phpcs:ignore Magento2.Functions.DiscouragedFunction base64_encode(file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR . 'test_image.jpg')) ); $sampleContent->setName('jellyfish_1_3.jpg'); @@ -92,10 +98,10 @@ */ $content = $objectManager->create(\Magento\Downloadable\Api\Data\File\ContentInterfaceFactory::class)->create(); $content->setFileData( + // phpcs:ignore Magento2.Functions.DiscouragedFunction base64_encode(file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR . 'test_image.jpg')) ); $content->setName('jellyfish_2_4.jpg'); -//$content->setName(''); $sampleLink->setLinkFileContent($content); $links[] = $sampleLink; @@ -146,6 +152,7 @@ \Magento\Downloadable\Api\Data\File\ContentInterfaceFactory::class )->create(); $content->setFileData( + // phpcs:ignore Magento2.Functions.DiscouragedFunction base64_encode(file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR . 'test_image.jpg')) ); $content->setName('jellyfish_1_4.jpg'); diff --git a/dev/tests/integration/testsuite/Magento/Downloadable/_files/downloadable_product_with_files_and_sample_url_rollback.php b/dev/tests/integration/testsuite/Magento/Downloadable/_files/downloadable_product_with_files_and_sample_url_rollback.php index 9ad910eed8739..a198730016d26 100644 --- a/dev/tests/integration/testsuite/Magento/Downloadable/_files/downloadable_product_with_files_and_sample_url_rollback.php +++ b/dev/tests/integration/testsuite/Magento/Downloadable/_files/downloadable_product_with_files_and_sample_url_rollback.php @@ -3,4 +3,13 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ + +use Magento\Downloadable\Api\DomainManagerInterface; + +$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); +/** @var DomainManagerInterface $domainManager */ +$domainManager = $objectManager->get(DomainManagerInterface::class); +$domainManager->removeDomains(['sampleurl.com']); + +// phpcs:ignore Magento2.Security.IncludeFile require __DIR__ . '/product_downloadable_rollback.php'; diff --git a/dev/tests/integration/testsuite/Magento/Downloadable/_files/product_downloadable.php b/dev/tests/integration/testsuite/Magento/Downloadable/_files/product_downloadable.php index 19cf449912b66..9484305344e75 100644 --- a/dev/tests/integration/testsuite/Magento/Downloadable/_files/product_downloadable.php +++ b/dev/tests/integration/testsuite/Magento/Downloadable/_files/product_downloadable.php @@ -3,10 +3,23 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ -/** - * @var \Magento\Catalog\Model\Product $product - */ -$product = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(\Magento\Catalog\Model\Product::class); + +use Magento\Downloadable\Api\DomainManagerInterface; + +$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); +/** @var DomainManagerInterface $domainManager */ +$domainManager = $objectManager->get(DomainManagerInterface::class); +$domainManager->addDomains( + [ + 'example.com', + 'www.example.com', + 'www.sample.example.com', + 'google.com', + ] +); + +/** @var \Magento\Catalog\Model\Product $product */ +$product = $objectManager->create(\Magento\Catalog\Model\Product::class); $product ->setTypeId(\Magento\Downloadable\Model\Product\Type::TYPE_DOWNLOADABLE) ->setId(1) diff --git a/dev/tests/integration/testsuite/Magento/Downloadable/_files/product_downloadable_rollback.php b/dev/tests/integration/testsuite/Magento/Downloadable/_files/product_downloadable_rollback.php index 996fbb01d72c4..df04af020bde5 100644 --- a/dev/tests/integration/testsuite/Magento/Downloadable/_files/product_downloadable_rollback.php +++ b/dev/tests/integration/testsuite/Magento/Downloadable/_files/product_downloadable_rollback.php @@ -3,22 +3,37 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ + +use Magento\Downloadable\Api\DomainManagerInterface; use Magento\Framework\Exception\NoSuchEntityException; +use Magento\TestFramework\Helper\Bootstrap; -\Magento\TestFramework\Helper\Bootstrap::getInstance()->getInstance()->reinitialize(); +Bootstrap::getInstance()->reinitialize(); +$objectManager = Bootstrap::getObjectManager(); +/** @var DomainManagerInterface $domainManager */ +$domainManager = $objectManager->get(DomainManagerInterface::class); +$domainManager->removeDomains( + [ + 'example.com', + 'www.example.com', + 'www.sample.example.com', + 'google.com', + ] +); /** @var \Magento\Framework\Registry $registry */ -$registry = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(\Magento\Framework\Registry::class); +$registry = $objectManager->get(\Magento\Framework\Registry::class); $registry->unregister('isSecureArea'); $registry->register('isSecureArea', true); /** @var \Magento\Catalog\Api\ProductRepositoryInterface $productRepository */ -$productRepository = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() +$productRepository = $objectManager ->get(\Magento\Catalog\Api\ProductRepositoryInterface::class); try { $product = $productRepository->get('downloadable-product', false, null, true); $productRepository->delete($product); + // phpcs:ignore Magento2.CodeAnalysis.EmptyBlock.DetectedCatch } catch (NoSuchEntityException $e) { } $registry->unregister('isSecureArea'); diff --git a/dev/tests/integration/testsuite/Magento/Downloadable/_files/product_downloadable_with_files.php b/dev/tests/integration/testsuite/Magento/Downloadable/_files/product_downloadable_with_files.php index 86aa61a99e1e8..1a8fb802a788f 100644 --- a/dev/tests/integration/testsuite/Magento/Downloadable/_files/product_downloadable_with_files.php +++ b/dev/tests/integration/testsuite/Magento/Downloadable/_files/product_downloadable_with_files.php @@ -4,8 +4,22 @@ * See COPYING.txt for license details. */ -\Magento\TestFramework\Helper\Bootstrap::getInstance()->getInstance()->reinitialize(); -$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); +use Magento\Downloadable\Api\DomainManagerInterface; +use Magento\TestFramework\Helper\Bootstrap; + +Bootstrap::getInstance()->reinitialize(); +$objectManager = Bootstrap::getObjectManager(); +/** @var DomainManagerInterface $domainManager */ +$domainManager = $objectManager->get(DomainManagerInterface::class); +$domainManager->addDomains( + [ + 'example.com', + 'www.example.com', + 'www.sample.example.com', + 'google.com', + ] +); + /** * @var \Magento\Catalog\Model\Product $product */ @@ -81,10 +95,10 @@ */ $content = $objectManager->create(\Magento\Downloadable\Api\Data\File\ContentInterfaceFactory::class)->create(); $content->setFileData( + // phpcs:ignore Magento2.Functions.DiscouragedFunction base64_encode(file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR . 'test_image.jpg')) ); $content->setName('jellyfish_2_4.jpg'); -//$content->setName(''); $link->setLinkFileContent($content); /** @@ -92,6 +106,7 @@ */ $sampleContent = $objectManager->create(\Magento\Downloadable\Api\Data\File\ContentInterfaceFactory::class)->create(); $sampleContent->setFileData( + // phpcs:ignore Magento2.Functions.DiscouragedFunction base64_encode(file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR . 'test_image.jpg')) ); $sampleContent->setName('jellyfish_1_3.jpg'); @@ -136,6 +151,7 @@ \Magento\Downloadable\Api\Data\File\ContentInterfaceFactory::class )->create(); $content->setFileData( + // phpcs:ignore Magento2.Functions.DiscouragedFunction base64_encode(file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR . 'test_image.jpg')) ); $content->setName('jellyfish_1_4.jpg'); diff --git a/dev/tests/integration/testsuite/Magento/DownloadableImportExport/Model/Import/Product/Type/DownloadableTest.php b/dev/tests/integration/testsuite/Magento/DownloadableImportExport/Model/Import/Product/Type/DownloadableTest.php index 776ec9f990f5e..d4b32fc5b52e6 100644 --- a/dev/tests/integration/testsuite/Magento/DownloadableImportExport/Model/Import/Product/Type/DownloadableTest.php +++ b/dev/tests/integration/testsuite/Magento/DownloadableImportExport/Model/Import/Product/Type/DownloadableTest.php @@ -3,12 +3,15 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ + namespace Magento\DownloadableImportExport\Model\Import\Product\Type; +use Magento\Downloadable\Api\DomainManagerInterface; use Magento\Framework\App\Filesystem\DirectoryList; /** * @magentoAppArea adminhtml + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class DownloadableTest extends \PHPUnit\Framework\TestCase { @@ -47,6 +50,14 @@ class DownloadableTest extends \PHPUnit\Framework\TestCase */ protected $productMetadata; + /** + * @var DomainManagerInterface + */ + private $domainManager; + + /** + * @inheritdoc + */ protected function setUp() { $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); @@ -56,6 +67,16 @@ protected function setUp() /** @var \Magento\Framework\EntityManager\MetadataPool $metadataPool */ $metadataPool = $this->objectManager->get(\Magento\Framework\EntityManager\MetadataPool::class); $this->productMetadata = $metadataPool->getMetadata(\Magento\Catalog\Api\Data\ProductInterface::class); + $this->domainManager = $this->objectManager->get(DomainManagerInterface::class); + $this->domainManager->addDomains(['www.bing.com', 'www.google.com', 'www.yahoo.com']); + } + + /** + * @inheritDoc + */ + protected function tearDown() + { + $this->domainManager->removeDomains(['www.bing.com', 'www.google.com', 'www.yahoo.com']); } /** @@ -112,7 +133,7 @@ public function testDownloadableImport() $downloadableSamples = $product->getDownloadableSamples(); //TODO: Track Fields: id, link_id, link_file and sample_file) - $expectedLinks= [ + $expectedLinks = [ 'file' => [ 'title' => 'TEST Import Link Title File', 'sort_order' => '78', @@ -120,9 +141,9 @@ public function testDownloadableImport() 'price' => '123.0000', 'number_of_downloads' => '123', 'is_shareable' => '0', - 'link_type' => 'file' + 'link_type' => 'file', ], - 'url' => [ + 'url' => [ 'title' => 'TEST Import Link Title URL', 'sort_order' => '42', 'sample_type' => 'url', @@ -131,8 +152,8 @@ public function testDownloadableImport() 'number_of_downloads' => '0', 'is_shareable' => '1', 'link_type' => 'url', - 'link_url' => 'http://www.google.com' - ] + 'link_url' => 'http://www.google.com', + ], ]; foreach ($downloadableProductLinks as $link) { $actualLink = $link->getData(); @@ -154,18 +175,18 @@ public function testDownloadableImport() } //TODO: Track Fields: id, sample_id and sample_file) - $expectedSamples= [ + $expectedSamples = [ 'file' => [ 'title' => 'TEST Import Sample File', 'sort_order' => '178', - 'sample_type' => 'file' + 'sample_type' => 'file', ], - 'url' => [ + 'url' => [ 'title' => 'TEST Import Sample URL', - 'sort_order' => '178', - 'sample_type' => 'url', - 'sample_url' => 'http://www.yahoo.com' - ] + 'sort_order' => '178', + 'sample_type' => 'url', + 'sample_url' => 'http://www.yahoo.com', + ], ]; foreach ($downloadableProductSamples as $sample) { $actualSample = $sample->getData(); diff --git a/dev/tests/integration/testsuite/Magento/Framework/Image/Adapter/InterfaceTest.php b/dev/tests/integration/testsuite/Magento/Framework/Image/Adapter/InterfaceTest.php index bc8281d55ac4f..59ad82334a958 100644 --- a/dev/tests/integration/testsuite/Magento/Framework/Image/Adapter/InterfaceTest.php +++ b/dev/tests/integration/testsuite/Magento/Framework/Image/Adapter/InterfaceTest.php @@ -703,12 +703,47 @@ public function testValidateUploadFile() } /** + * @dataProvider testValidateUploadFileExceptionDataProvider * @expectedException \InvalidArgumentException + * @param string $fileName + * @param string $expectedErrorMsg + * @param bool $useFixture */ - public function testValidateUploadFileException() + public function testValidateUploadFileException($fileName, $expectedErrorMsg, $useFixture) { $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); $imageAdapter = $objectManager->get(\Magento\Framework\Image\AdapterFactory::class)->create(); - $imageAdapter->validateUploadFile(__FILE__); + $filePath = $useFixture ? $this->_getFixture($fileName) : $fileName; + + try { + $imageAdapter->validateUploadFile($filePath); + } catch (\InvalidArgumentException $e) { + $this->assertEquals($expectedErrorMsg, $e->getMessage()); + throw $e; + } + } + + /** + * @return array + */ + public function testValidateUploadFileExceptionDataProvider() + { + return [ + 'image_notfound' => [ + 'fileName' => 'notfound.png', + 'expectedErrorMsg' => 'Upload file does not exist.', + 'useFixture' => false + ], + 'image_empty' => [ + 'fileName' => 'empty.png', + 'expectedErrorMsg' => 'Disallowed file type.', + 'useFixture' => true + ], + 'notanimage' => [ + 'fileName' => 'notanimage.txt', + 'expectedErrorMsg' => 'Disallowed file type.', + 'useFixture' => true + ] + ]; } } diff --git a/dev/tests/integration/testsuite/Magento/Framework/Image/_files/empty.png b/dev/tests/integration/testsuite/Magento/Framework/Image/_files/empty.png new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/dev/tests/integration/testsuite/Magento/Framework/Image/_files/notanimage.txt b/dev/tests/integration/testsuite/Magento/Framework/Image/_files/notanimage.txt new file mode 100644 index 0000000000000..81bc3abd37125 --- /dev/null +++ b/dev/tests/integration/testsuite/Magento/Framework/Image/_files/notanimage.txt @@ -0,0 +1 @@ +Not an image. diff --git a/dev/tests/integration/testsuite/Magento/Framework/Search/_files/date_attribute.php b/dev/tests/integration/testsuite/Magento/Framework/Search/_files/date_attribute.php index c7e118f4a4e2b..d11248a47a0cc 100644 --- a/dev/tests/integration/testsuite/Magento/Framework/Search/_files/date_attribute.php +++ b/dev/tests/integration/testsuite/Magento/Framework/Search/_files/date_attribute.php @@ -25,6 +25,7 @@ 'entity_type_id' => $installer->getEntityTypeId('catalog_product'), 'is_global' => 1, 'is_filterable' => 1, + 'is_user_defined' => 1, 'backend_type' => 'datetime', 'frontend_input' => 'date', 'frontend_label' => 'Test Date', diff --git a/dev/tests/integration/testsuite/Magento/Framework/Search/_files/filterable_attribute.php b/dev/tests/integration/testsuite/Magento/Framework/Search/_files/filterable_attribute.php index 9188bb9657633..a74669e9890af 100644 --- a/dev/tests/integration/testsuite/Magento/Framework/Search/_files/filterable_attribute.php +++ b/dev/tests/integration/testsuite/Magento/Framework/Search/_files/filterable_attribute.php @@ -21,6 +21,7 @@ 'is_global' => 1, 'frontend_input' => 'select', 'is_filterable' => 1, + 'is_user_defined' => 1, 'option' => [ 'value' => ['option_0' => ['Option 1'], 'option_1' => ['Option 2']], 'order' => ['option_0' => 1, 'option_1' => 2], @@ -48,6 +49,7 @@ 'is_global' => 1, 'frontend_input' => 'multiselect', 'is_filterable' => 1, + 'is_user_defined' => 1, 'option' => [ 'value' => ['option_0' => ['Option 1'], 'option_1' => ['Option 2']], 'order' => ['option_0' => 1, 'option_1' => 2], diff --git a/dev/tests/integration/testsuite/Magento/Framework/Search/_files/filterable_attributes.php b/dev/tests/integration/testsuite/Magento/Framework/Search/_files/filterable_attributes.php index f4f3337a253c0..03269b88ee2a1 100644 --- a/dev/tests/integration/testsuite/Magento/Framework/Search/_files/filterable_attributes.php +++ b/dev/tests/integration/testsuite/Magento/Framework/Search/_files/filterable_attributes.php @@ -78,6 +78,7 @@ 'entity_type_id' => $productEntityTypeId, 'is_global' => 1, 'is_filterable' => 1, + 'is_user_defined' => 1, 'backend_type' => 'datetime', 'frontend_input' => 'date', 'frontend_label' => 'Test Date', diff --git a/dev/tests/integration/testsuite/Magento/Framework/UrlTest.php b/dev/tests/integration/testsuite/Magento/Framework/UrlTest.php index 9d1d8761a16a7..db830d228201c 100644 --- a/dev/tests/integration/testsuite/Magento/Framework/UrlTest.php +++ b/dev/tests/integration/testsuite/Magento/Framework/UrlTest.php @@ -8,6 +8,9 @@ use Zend\Stdlib\Parameters; use Magento\TestFramework\Helper\Bootstrap; +/** + * Test class for \Magento\Framework\Url + */ class UrlTest extends \PHPUnit\Framework\TestCase { /** @@ -22,7 +25,7 @@ protected function setUp() public function testSetGetUseSession() { - $this->assertTrue((bool)$this->model->getUseSession()); + $this->assertFalse((bool)$this->model->getUseSession()); $this->model->setUseSession(false); $this->assertFalse($this->model->getUseSession()); } @@ -491,6 +494,7 @@ public function testSessionUrlVar() public function testUseSessionIdForUrl() { + // phpcs:ignore $_SERVER['HTTP_HOST'] = 'localhost'; $this->assertFalse($this->model->useSessionIdForUrl(true)); $this->assertFalse($this->model->useSessionIdForUrl(false)); diff --git a/dev/tests/integration/testsuite/Magento/ImportExport/Controller/Adminhtml/Import/ValidateTest.php b/dev/tests/integration/testsuite/Magento/ImportExport/Controller/Adminhtml/Import/ValidateTest.php index a3cf42b48489f..d9a758b549667 100644 --- a/dev/tests/integration/testsuite/Magento/ImportExport/Controller/Adminhtml/Import/ValidateTest.php +++ b/dev/tests/integration/testsuite/Magento/ImportExport/Controller/Adminhtml/Import/ValidateTest.php @@ -93,7 +93,7 @@ public function validationDataProvider(): array [ 'file_name' => 'test.txt', 'mime-type' => 'text/csv', - 'message' => '\'txt\' file extension is not supported', + 'message' => 'The file cannot be uploaded.', 'delimiter' => ',', ], [ diff --git a/dev/tests/integration/testsuite/Magento/ImportExport/Model/ImportTest.php b/dev/tests/integration/testsuite/Magento/ImportExport/Model/ImportTest.php index 0c1f2d2fcc8d7..fbf8c80858ab6 100644 --- a/dev/tests/integration/testsuite/Magento/ImportExport/Model/ImportTest.php +++ b/dev/tests/integration/testsuite/Magento/ImportExport/Model/ImportTest.php @@ -7,6 +7,8 @@ use Magento\Framework\Phrase; use Magento\ImportExport\Model\Import\ErrorProcessing\ProcessingErrorAggregatorInterface; +use Magento\ImportExport\Model\Import\ImageDirectoryBaseProvider; +use Magento\TestFramework\Helper\Bootstrap; /** * @magentoDataFixture Magento/ImportExport/_files/import_data.php @@ -21,7 +23,7 @@ class ImportTest extends \PHPUnit\Framework\TestCase protected $_model; /** - * @var \Magento\ImportExport\Model\Import\Config + * @var Import\Config */ protected $_importConfig; @@ -65,13 +67,35 @@ class ImportTest extends \PHPUnit\Framework\TestCase protected function setUp() { - $this->_importConfig = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create( - \Magento\ImportExport\Model\Import\Config::class + $this->_importConfig = Bootstrap::getObjectManager()->create( + Import\Config::class ); - $this->_model = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create( + /** @var ImageDirectoryBaseProvider $provider */ + $provider = Bootstrap::getObjectManager()->get(ImageDirectoryBaseProvider::class); + $this->_model = Bootstrap::getObjectManager()->create( Import::class, - ['importConfig' => $this->_importConfig] + [ + 'importConfig' => $this->_importConfig, + ] + ); + $this->_model->setData('images_base_directory', $provider->getDirectory()); + } + + /** + * Test validation of images directory against provided base directory. + * + * @expectedException \Magento\Framework\Exception\LocalizedException + * @expectedExceptionMessage Images file directory is outside required directory + * @return void + */ + public function testImagesDirBase(): void + { + $this->_model->setData( + Import::FIELD_NAME_VALIDATION_STRATEGY, + ProcessingErrorAggregatorInterface::VALIDATION_STRATEGY_SKIP_ERRORS ); + $this->_model->setData(Import::FIELD_NAME_IMG_FILE_DIR, '../_files'); + $this->_model->importSource(); } /** @@ -80,7 +104,7 @@ protected function setUp() public function testImportSource() { /** @var $customersCollection \Magento\Customer\Model\ResourceModel\Customer\Collection */ - $customersCollection = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create( + $customersCollection = Bootstrap::getObjectManager()->create( \Magento\Customer\Model\ResourceModel\Customer\Collection::class ); diff --git a/dev/tests/integration/testsuite/Magento/SendFriend/Controller/Product/CustomerSendmailTest.php b/dev/tests/integration/testsuite/Magento/SendFriend/Controller/Product/CustomerSendmailTest.php index 8794dfdff8fd7..3578f222f7102 100644 --- a/dev/tests/integration/testsuite/Magento/SendFriend/Controller/Product/CustomerSendmailTest.php +++ b/dev/tests/integration/testsuite/Magento/SendFriend/Controller/Product/CustomerSendmailTest.php @@ -17,6 +17,9 @@ use Magento\Framework\Message\MessageInterface; use Magento\Captcha\Helper\Data as CaptchaHelper; +/** + * Class CustomerSendmailTest. + */ class CustomerSendmailTest extends AbstractController { /** @@ -58,6 +61,7 @@ protected function setUp() } /** + * @magentoConfigFixture default_store sendfriend/email/enabled 1 * @magentoDataFixture Magento/Customer/_files/customer.php * @magentoDataFixture Magento/Catalog/_files/product_simple.php */ @@ -95,6 +99,7 @@ public function testExecute() * @magentoDataFixture Magento/Customer/_files/customer.php * @magentoDataFixture Magento/Catalog/_files/product_simple.php * @magentoConfigFixture default_store customer/captcha/forms product_sendtofriend_form + * @magentoConfigFixture default_store sendfriend/email/enabled 1 */ public function testWithCaptchaFailed() { @@ -133,7 +138,7 @@ public function testWithCaptchaFailed() * @magentoDataFixture Magento/Customer/_files/customer.php * @magentoDataFixture Magento/Catalog/_files/product_simple.php * @magentoConfigFixture default_store customer/captcha/forms product_sendtofriend_form - * + * @magentoConfigFixture default_store sendfriend/email/enabled 1 */ public function testWithCaptchaSuccess() { diff --git a/dev/tests/integration/testsuite/Magento/SendFriend/Controller/SendmailTest.php b/dev/tests/integration/testsuite/Magento/SendFriend/Controller/SendmailTest.php index a075398e9cdb7..5c2ddf86d6f96 100644 --- a/dev/tests/integration/testsuite/Magento/SendFriend/Controller/SendmailTest.php +++ b/dev/tests/integration/testsuite/Magento/SendFriend/Controller/SendmailTest.php @@ -26,6 +26,7 @@ class SendmailTest extends AbstractController * * @magentoDbIsolation enabled * @magentoAppIsolation enabled + * @magentoConfigFixture default_store sendfriend/email/enabled 1 * @magentoDataFixture Magento/SendFriend/_files/disable_allow_guest_config.php * @magentoDataFixture Magento/Customer/_files/customer.php * @magentoDataFixture Magento/Catalog/_files/products.php diff --git a/dev/tests/integration/testsuite/Magento/Store/Model/HashGeneratorTest.php b/dev/tests/integration/testsuite/Magento/Store/Model/HashGeneratorTest.php new file mode 100644 index 0000000000000..1bacd79b74f49 --- /dev/null +++ b/dev/tests/integration/testsuite/Magento/Store/Model/HashGeneratorTest.php @@ -0,0 +1,180 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +namespace Magento\Store\Model; + +use Magento\Framework\ObjectManagerInterface as ObjectManager; +use Magento\TestFramework\Helper\Bootstrap; +use Magento\Store\Model\StoreSwitcher\HashGenerator; +use Magento\Customer\Api\AccountManagementInterface; +use Magento\Customer\Model\Session as CustomerSession; +use \Magento\Framework\App\DeploymentConfig as DeploymentConfig; +use Magento\Framework\Config\ConfigOptionsListConstants; +use Magento\Framework\Url\Helper\Data as UrlHelper; +use Magento\Store\Model\StoreSwitcher\HashGenerator\HashData; + +/** + * Test class for \Magento\Store\Model\StoreSwitcher\HashGenerator + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + */ +class HashGeneratorTest extends \PHPUnit\Framework\TestCase +{ + /** + * @var HashGenerator + */ + private $hashGenerator; + + /** + * @var ObjectManager + */ + private $objectManager; + + /** + * @var int + */ + private $customerId; + + /** @var AccountManagementInterface */ + private $accountManagement; + + /** + * @var \Magento\Customer\Model\Authorization\CustomerSessionUserContext + */ + private $customerSessionUserContext; + + /** + * @var \Magento\Framework\App\DeploymentConfig + */ + private $deploymentConfig; + + /** + * @var string + */ + private $key; + + /** + * @var UrlHelper + */ + private $urlHelper; + + /** + * @var HashData + */ + private $hashData; + + /** + * @var CustomerSession + */ + private $customerSession; + + /** + * Class dependencies initialization + * @return void + * @throws \Magento\Framework\Exception\LocalizedException + */ + protected function setUp() + { + $this->objectManager = Bootstrap::getObjectManager(); + $this->customerSession = $this->objectManager->create( + CustomerSession::class + ); + $this->accountManagement = $this->objectManager->create(AccountManagementInterface::class); + $customer = $this->accountManagement->authenticate('customer@example.com', 'password'); + $this->customerSession->setCustomerDataAsLoggedIn($customer); + $this->customerSessionUserContext = $this->objectManager->create( + \Magento\Customer\Model\Authorization\CustomerSessionUserContext::class, + ['customerSession' => $this->customerSession] + ); + $this->hashGenerator = $this->objectManager->create( + StoreSwitcher\HashGenerator::class, + ['currentUser' => $this->customerSessionUserContext] + ); + $this->customerId = $customer->getId(); + $this->deploymentConfig = $this->objectManager->get(DeploymentConfig::class); + $this->key = (string)$this->deploymentConfig->get(ConfigOptionsListConstants::CONFIG_PATH_CRYPT_KEY); + $this->urlHelper=$this->objectManager->create(UrlHelper::class); + $this->hashData=$this->objectManager->create(HashData::class); + } + + /** + * @inheritdoc + */ + protected function tearDown() + { + $this->customerSession->logout(); + parent::tearDown(); + } + + /** + * @magentoAppIsolation enabled + * @magentoDataFixture Magento/Customer/_files/customer.php + * @return void + */ + public function testSwitch(): void + { + $redirectUrl = "http://domain.com/"; + $fromStoreCode = 'test'; + $fromStore = $this->createPartialMock(Store::class, ['getCode']); + $toStore = $this->createPartialMock(Store::class, ['getCode']); + $fromStore->expects($this->once())->method('getCode')->willReturn($fromStoreCode); + $targetUrl=$this->hashGenerator->switch($fromStore, $toStore, $redirectUrl); + // phpcs:ignore + $urlParts=parse_url($targetUrl, PHP_URL_QUERY); + $signature=''; + // phpcs:ignore + parse_str($urlParts, $params); + + if (isset($params['signature'])) { + $signature=$params['signature']; + } + $this->assertEquals($params['customer_id'], $this->customerId); + $this->assertEquals($params['___from_store'], $fromStoreCode); + + $data = new HashData( + [ + "customer_id" => $this->customerId, + "time_stamp" => $params['time_stamp'], + "___from_store" => $fromStoreCode + ] + ); + $this->assertTrue($this->hashGenerator->validateHash($signature, $data)); + } + + /** + * @magentoAppIsolation enabled + * @magentoDataFixture Magento/Customer/_files/customer.php + * @return void + */ + public function testValidateHashWithInCorrectData(): void + { + $timeStamp = 0; + $customerId = 8; + $fromStoreCode = 'store1'; + $data = new HashData( + [ + "customer_id" => $customerId, + "time_stamp" => $timeStamp, + "___from_store" => $fromStoreCode + ] + ); + $redirectUrl = "http://domain.com/"; + $fromStore = $this->createPartialMock(Store::class, ['getCode']); + $toStore = $this->createPartialMock(Store::class, ['getCode']); + $fromStore->expects($this->once())->method('getCode')->willReturn($fromStoreCode); + $targetUrl = $this->hashGenerator->switch($fromStore, $toStore, $redirectUrl); + // phpcs:ignore + $urlParts = parse_url($targetUrl,PHP_URL_QUERY); + $signature = ''; + // phpcs:ignore + parse_str($urlParts, $params); + + if (isset($params['signature'])) { + $signature = $params['signature']; + } + $this->assertFalse($this->hashGenerator->validateHash($signature, $data)); + } +} diff --git a/dev/tests/integration/testsuite/Magento/Swatches/_files/swatch_attribute.php b/dev/tests/integration/testsuite/Magento/Swatches/_files/swatch_attribute.php index 182f4781a9632..202fd0a8c73d5 100644 --- a/dev/tests/integration/testsuite/Magento/Swatches/_files/swatch_attribute.php +++ b/dev/tests/integration/testsuite/Magento/Swatches/_files/swatch_attribute.php @@ -16,6 +16,7 @@ 'backend_type' => '', 'is_searchable' => 0, 'is_filterable' => 0, + 'is_user_defined' => 1, 'is_filterable_in_search' => 0, 'frontend_label' => 'Attribute ', 'entity_type_id' => 4 diff --git a/dev/tests/integration/testsuite/Magento/UrlRewrite/Block/Catalog/Edit/FormTest.php b/dev/tests/integration/testsuite/Magento/UrlRewrite/Block/Catalog/Edit/FormTest.php index 8dcc309514733..f7c5db9537f85 100644 --- a/dev/tests/integration/testsuite/Magento/UrlRewrite/Block/Catalog/Edit/FormTest.php +++ b/dev/tests/integration/testsuite/Magento/UrlRewrite/Block/Catalog/Edit/FormTest.php @@ -190,6 +190,7 @@ public function testGetEntityStoresCategoryStoresException() * * @static * @return array + * phpcs:disable Magento2.Functions.StaticFunction */ public static function formPostInitDataProvider() { @@ -226,6 +227,7 @@ public static function formPostInitDataProvider() * * @static * @return array + * phpcs:disable Magento2.Functions.StaticFunction */ public static function getEntityStoresDataProvider() { @@ -234,10 +236,11 @@ public static function getEntityStoresDataProvider() null, ['entity_id' => 3, 'store_ids' => [1]], [ - ['label' => 'Main Website', 'value' => []], + ['label' => 'Main Website', 'value' => [], '__disableTmpl' => true], [ 'label' => '    Main Website Store', - 'value' => [['label' => '    Default Store View', 'value' => 1]] + 'value' => [['label' => '    Default Store View', 'value' => '1']], + '__disableTmpl' => true ] ], ], @@ -245,10 +248,11 @@ public static function getEntityStoresDataProvider() ['entity_id' => 2, 'name' => 'product2', 'url_key' => 'product2', 'store_ids' => [1]], null, [ - ['label' => 'Main Website', 'value' => []], + ['label' => 'Main Website', 'value' => [], '__disableTmpl' => true], [ 'label' => '    Main Website Store', - 'value' => [['label' => '    Default Store View', 'value' => 1]] + 'value' => [['label' => '    Default Store View', 'value' => '1']], + '__disableTmpl' => true ] ] ], @@ -256,10 +260,11 @@ public static function getEntityStoresDataProvider() ['entity_id' => 2, 'name' => 'product2', 'url_key' => 'product2', 'store_ids' => [1]], ['entity_id' => 3, 'name' => 'product3', 'url_key' => 'product3', 'store_ids' => [1]], [ - ['label' => 'Main Website', 'value' => []], + ['label' => 'Main Website', 'value' => [], '__disableTmpl' => true], [ 'label' => '    Main Website Store', - 'value' => [['label' => '    Default Store View', 'value' => 1]] + 'value' => [['label' => '    Default Store View', 'value' => '1']], + '__disableTmpl' => true ] ] ] diff --git a/dev/tests/integration/testsuite/Magento/UrlRewrite/Block/Cms/Page/Edit/FormTest.php b/dev/tests/integration/testsuite/Magento/UrlRewrite/Block/Cms/Page/Edit/FormTest.php index c3b93efece456..041a2c268a55a 100644 --- a/dev/tests/integration/testsuite/Magento/UrlRewrite/Block/Cms/Page/Edit/FormTest.php +++ b/dev/tests/integration/testsuite/Magento/UrlRewrite/Block/Cms/Page/Edit/FormTest.php @@ -78,10 +78,11 @@ public function testGetEntityStores() $form = $this->_getFormInstance($args); $expectedStores = [ - ['label' => 'Main Website', 'value' => []], + ['label' => 'Main Website', 'value' => [], '__disableTmpl' => true], [ 'label' => '    Main Website Store', - 'value' => [['label' => '    Default Store View', 'value' => 1]] + 'value' => [['label' => '    Default Store View', 'value' => 1]], + '__disableTmpl' => true ], ]; $this->assertEquals($expectedStores, $form->getElement('store_id')->getValues()); @@ -110,6 +111,7 @@ public function testGetEntityStoresProductStoresException() * * @static * @return array + * phpcs:disable Magento2.Functions.StaticFunction */ public static function formPostInitDataProvider() { diff --git a/dev/tests/integration/testsuite/Magento/Wishlist/Controller/IndexTest.php b/dev/tests/integration/testsuite/Magento/Wishlist/Controller/IndexTest.php index e020d31838f06..f43133c92fc3d 100644 --- a/dev/tests/integration/testsuite/Magento/Wishlist/Controller/IndexTest.php +++ b/dev/tests/integration/testsuite/Magento/Wishlist/Controller/IndexTest.php @@ -98,9 +98,12 @@ public function testAddActionProductNameXss() { /** @var \Magento\Framework\Data\Form\FormKey $formKey */ $formKey = $this->_objectManager->get(\Magento\Framework\Data\Form\FormKey::class); - $this->getRequest()->setPostValue([ - 'form_key' => $formKey->getFormKey(), - ]); + $this->getRequest()->setMethod('POST'); + $this->getRequest()->setPostValue( + [ + 'form_key' => $formKey->getFormKey(), + ] + ); /** @var \Magento\Catalog\Api\ProductRepositoryInterface $productRepository */ $productRepository = \Magento\TestFramework\Helper\Bootstrap::getObjectManager() diff --git a/lib/internal/Magento/Framework/Acl.php b/lib/internal/Magento/Framework/Acl.php index 86b28f7e2ceb4..8c80bf94e3f2a 100644 --- a/lib/internal/Magento/Framework/Acl.php +++ b/lib/internal/Magento/Framework/Acl.php @@ -9,6 +9,7 @@ * ACL. Can be queried for relations between roles and resources. * * @api + * @since 100.0.2 */ class Acl extends \Zend_Acl { diff --git a/lib/internal/Magento/Framework/Acl/AclResource.php b/lib/internal/Magento/Framework/Acl/AclResource.php index 585b4b5d8514b..47a85a069329e 100644 --- a/lib/internal/Magento/Framework/Acl/AclResource.php +++ b/lib/internal/Magento/Framework/Acl/AclResource.php @@ -11,6 +11,7 @@ /** * @api + * @since 100.0.2 */ class AclResource extends \Zend_Acl_Resource { diff --git a/lib/internal/Magento/Framework/Acl/AclResource/ProviderInterface.php b/lib/internal/Magento/Framework/Acl/AclResource/ProviderInterface.php index 34f85f3641ccd..c11fb7fcd56ed 100644 --- a/lib/internal/Magento/Framework/Acl/AclResource/ProviderInterface.php +++ b/lib/internal/Magento/Framework/Acl/AclResource/ProviderInterface.php @@ -9,6 +9,7 @@ * Acl resources provider interface * * @api + * @since 100.0.2 */ interface ProviderInterface { diff --git a/lib/internal/Magento/Framework/Acl/Builder.php b/lib/internal/Magento/Framework/Acl/Builder.php index 50e4f0b7b5ca9..03adaca0589ce 100644 --- a/lib/internal/Magento/Framework/Acl/Builder.php +++ b/lib/internal/Magento/Framework/Acl/Builder.php @@ -11,6 +11,7 @@ * On consequent requests, ACL object is deserialized from cache. * * @api + * @since 100.0.2 */ class Builder { @@ -77,7 +78,7 @@ public function getAcl() * Remove cached ACL instance. * * @return $this - * @since 100.2.0 + * @since 101.0.0 */ public function resetRuntimeAcl() { diff --git a/lib/internal/Magento/Framework/Acl/Data/CacheInterface.php b/lib/internal/Magento/Framework/Acl/Data/CacheInterface.php index bd6ce6d2c2095..e0a1617fd226d 100644 --- a/lib/internal/Magento/Framework/Acl/Data/CacheInterface.php +++ b/lib/internal/Magento/Framework/Acl/Data/CacheInterface.php @@ -10,7 +10,7 @@ * Interface for caching ACL data * * @api - * @since 100.2.0 + * @since 101.0.0 */ interface CacheInterface extends \Magento\Framework\Cache\FrontendInterface { diff --git a/lib/internal/Magento/Framework/Acl/LoaderInterface.php b/lib/internal/Magento/Framework/Acl/LoaderInterface.php index 920186fc2121a..a61fcbdc24255 100644 --- a/lib/internal/Magento/Framework/Acl/LoaderInterface.php +++ b/lib/internal/Magento/Framework/Acl/LoaderInterface.php @@ -12,6 +12,7 @@ * with data (roles/rules/resources) persisted in external storage. * * @api + * @since 100.0.2 */ interface LoaderInterface { diff --git a/lib/internal/Magento/Framework/Acl/RootResource.php b/lib/internal/Magento/Framework/Acl/RootResource.php index 326416c346563..9247784e94414 100644 --- a/lib/internal/Magento/Framework/Acl/RootResource.php +++ b/lib/internal/Magento/Framework/Acl/RootResource.php @@ -9,6 +9,7 @@ /** * @api + * @since 100.0.2 */ class RootResource { diff --git a/lib/internal/Magento/Framework/Amqp/Config.php b/lib/internal/Magento/Framework/Amqp/Config.php index 684c5cd38b1e4..1dcb921296b14 100644 --- a/lib/internal/Magento/Framework/Amqp/Config.php +++ b/lib/internal/Magento/Framework/Amqp/Config.php @@ -16,7 +16,7 @@ * Reads the Amqp config in the deployed environment configuration * * @api - * @since 100.0.0 + * @since 102.0.2 */ class Config { @@ -96,7 +96,6 @@ class Config * @param DeploymentConfig $config * @param string $connectionName * @param ConnectionFactory|null $connectionFactory - * @since 100.0.0 */ public function __construct( DeploymentConfig $config, @@ -113,7 +112,7 @@ public function __construct( * Destructor * * @return void - * @since 100.0.0 + * @since 102.0.2 */ public function __destruct() { @@ -126,7 +125,7 @@ public function __destruct() * @param string $key * @return string * @throws \LogicException - * @since 100.0.0 + * @since 102.0.2 */ public function getValue($key) { @@ -162,7 +161,7 @@ private function createConnection(): AbstractConnection * * @return AMQPChannel * @throws \LogicException - * @since 100.0.0 + * @since 102.0.2 */ public function getChannel() { diff --git a/lib/internal/Magento/Framework/Amqp/ConnectionTypeResolver.php b/lib/internal/Magento/Framework/Amqp/ConnectionTypeResolver.php index 9b600278144f0..d7173237504fc 100644 --- a/lib/internal/Magento/Framework/Amqp/ConnectionTypeResolver.php +++ b/lib/internal/Magento/Framework/Amqp/ConnectionTypeResolver.php @@ -12,7 +12,7 @@ * Amqp connection type resolver. * * @api - * @since 100.0.0 + * @since 102.0.2 */ class ConnectionTypeResolver implements ConnectionTypeResolverInterface { @@ -27,7 +27,6 @@ class ConnectionTypeResolver implements ConnectionTypeResolverInterface * Initialize dependencies. * * @param DeploymentConfig $deploymentConfig - * @since 100.0.0 */ public function __construct(DeploymentConfig $deploymentConfig) { @@ -42,7 +41,7 @@ public function __construct(DeploymentConfig $deploymentConfig) /** * {@inheritdoc} - * @since 100.0.0 + * @since 102.0.2 */ public function getConnectionType($connectionName) { diff --git a/lib/internal/Magento/Framework/Amqp/Exchange.php b/lib/internal/Magento/Framework/Amqp/Exchange.php index e57fa09b83d1b..bc33419e992dd 100644 --- a/lib/internal/Magento/Framework/Amqp/Exchange.php +++ b/lib/internal/Magento/Framework/Amqp/Exchange.php @@ -18,7 +18,7 @@ * Class message exchange. * * @api - * @since 100.0.0 + * @since 102.0.2 */ class Exchange implements ExchangeInterface { @@ -57,7 +57,6 @@ class Exchange implements ExchangeInterface * @param ResponseQueueNameBuilder $responseQueueNameBuilder * @param CommunicationConfigInterface $communicationConfig * @param int $rpcConnectionTimeout - * @since 100.0.0 */ public function __construct( Config $amqpConfig, @@ -75,7 +74,7 @@ public function __construct( /** * {@inheritdoc} - * @since 100.0.0 + * @since 102.0.2 */ public function enqueue($topic, EnvelopeInterface $envelope) { diff --git a/lib/internal/Magento/Framework/Amqp/ExchangeFactory.php b/lib/internal/Magento/Framework/Amqp/ExchangeFactory.php index 5291b3ab59794..391981908ded7 100644 --- a/lib/internal/Magento/Framework/Amqp/ExchangeFactory.php +++ b/lib/internal/Magento/Framework/Amqp/ExchangeFactory.php @@ -9,7 +9,7 @@ * Factory class for @see \Magento\Framework\Amqp\Exchange * * @api - * @since 100.0.0 + * @since 102.0.2 */ class ExchangeFactory implements \Magento\Framework\MessageQueue\ExchangeFactoryInterface { @@ -38,7 +38,6 @@ class ExchangeFactory implements \Magento\Framework\MessageQueue\ExchangeFactory * @param \Magento\Framework\ObjectManagerInterface $objectManager * @param ConfigPool $configPool * @param string $instanceName - * @since 100.0.0 */ public function __construct( \Magento\Framework\ObjectManagerInterface $objectManager, @@ -52,7 +51,7 @@ public function __construct( /** * {@inheritdoc} - * @since 100.0.0 + * @since 102.0.2 */ public function create($connectionName, array $data = []) { diff --git a/lib/internal/Magento/Framework/Amqp/Queue.php b/lib/internal/Magento/Framework/Amqp/Queue.php index ff5bae5017fb9..941f0537627ab 100644 --- a/lib/internal/Magento/Framework/Amqp/Queue.php +++ b/lib/internal/Magento/Framework/Amqp/Queue.php @@ -17,7 +17,7 @@ * Class Queue * * @api - * @since 100.0.0 + * @since 102.0.2 */ class Queue implements QueueInterface { @@ -48,7 +48,6 @@ class Queue implements QueueInterface * @param EnvelopeFactory $envelopeFactory * @param string $queueName * @param LoggerInterface $logger - * @since 100.0.0 */ public function __construct( Config $amqpConfig, @@ -64,7 +63,7 @@ public function __construct( /** * @inheritdoc - * @since 100.0.0 + * @since 102.0.2 */ public function dequeue() { @@ -99,7 +98,7 @@ public function dequeue() /** * @inheritdoc - * @since 100.0.0 + * @since 102.0.2 */ public function acknowledge(EnvelopeInterface $envelope) { @@ -120,7 +119,7 @@ public function acknowledge(EnvelopeInterface $envelope) /** * @inheritdoc - * @since 100.0.0 + * @since 102.0.2 */ public function subscribe($callback) { @@ -154,7 +153,7 @@ public function subscribe($callback) /** * @inheritdoc - * @since 100.0.0 + * @since 102.0.2 */ public function reject(EnvelopeInterface $envelope, $requeue = true, $rejectionMessage = null) { @@ -173,7 +172,7 @@ public function reject(EnvelopeInterface $envelope, $requeue = true, $rejectionM /** * @inheritdoc - * @since 100.0.0 + * @since 102.0.2 */ public function push(EnvelopeInterface $envelope) { diff --git a/lib/internal/Magento/Framework/Amqp/QueueFactory.php b/lib/internal/Magento/Framework/Amqp/QueueFactory.php index 9f1635a87977b..a034e0f5f69ac 100644 --- a/lib/internal/Magento/Framework/Amqp/QueueFactory.php +++ b/lib/internal/Magento/Framework/Amqp/QueueFactory.php @@ -9,7 +9,7 @@ * Factory class for @see \Magento\Framework\Amqp\Queue * * @api - * @since 100.0.0 + * @since 102.0.2 */ class QueueFactory implements \Magento\Framework\MessageQueue\QueueFactoryInterface { @@ -38,7 +38,6 @@ class QueueFactory implements \Magento\Framework\MessageQueue\QueueFactoryInterf * @param \Magento\Framework\ObjectManagerInterface $objectManager * @param ConfigPool $configPool * @param string $instanceName - * @since 100.0.0 */ public function __construct( \Magento\Framework\ObjectManagerInterface $objectManager, @@ -52,7 +51,7 @@ public function __construct( /** * {@inheritdoc} - * @since 100.0.0 + * @since 102.0.2 */ public function create($queueName, $connectionName) { diff --git a/lib/internal/Magento/Framework/Amqp/Topology/ArgumentProcessor.php b/lib/internal/Magento/Framework/Amqp/Topology/ArgumentProcessor.php index caa5db4e7ef5c..989fcc22a35a9 100644 --- a/lib/internal/Magento/Framework/Amqp/Topology/ArgumentProcessor.php +++ b/lib/internal/Magento/Framework/Amqp/Topology/ArgumentProcessor.php @@ -6,7 +6,7 @@ namespace Magento\Framework\Amqp\Topology; /** - * @deprecated 100.0.0 + * @deprecated 102.0.2 * see: https://github.com/php-amqplib/php-amqplib/issues/405 */ trait ArgumentProcessor diff --git a/lib/internal/Magento/Framework/Amqp/composer.json b/lib/internal/Magento/Framework/Amqp/composer.json index b3d1b3e9d8eea..5762251905d6f 100644 --- a/lib/internal/Magento/Framework/Amqp/composer.json +++ b/lib/internal/Magento/Framework/Amqp/composer.json @@ -10,7 +10,7 @@ "AFL-3.0" ], "require": { - "magento/framework": "*", + "magento/framework": "102.0.*", "php": "~7.1.3||~7.2.0", "php-amqplib/php-amqplib": "~2.7.0" }, @@ -21,5 +21,6 @@ "files": [ "registration.php" ] - } + }, + "version": "100.3.2" } diff --git a/lib/internal/Magento/Framework/Api/AbstractExtensibleObject.php b/lib/internal/Magento/Framework/Api/AbstractExtensibleObject.php index 97c24167d47e1..02e7ee18c3d47 100644 --- a/lib/internal/Magento/Framework/Api/AbstractExtensibleObject.php +++ b/lib/internal/Magento/Framework/Api/AbstractExtensibleObject.php @@ -12,6 +12,7 @@ * * @SuppressWarnings(PHPMD.NumberOfChildren) * @api + * @since 100.0.2 */ abstract class AbstractExtensibleObject extends AbstractSimpleObject implements CustomAttributesDataInterface { diff --git a/lib/internal/Magento/Framework/Api/AttributeInterface.php b/lib/internal/Magento/Framework/Api/AttributeInterface.php index d208d861d4d2e..5324ddb499fd5 100644 --- a/lib/internal/Magento/Framework/Api/AttributeInterface.php +++ b/lib/internal/Magento/Framework/Api/AttributeInterface.php @@ -10,6 +10,7 @@ * Interface for custom attribute value. * * @api + * @since 100.0.2 */ interface AttributeInterface { diff --git a/lib/internal/Magento/Framework/Api/CustomAttributesDataInterface.php b/lib/internal/Magento/Framework/Api/CustomAttributesDataInterface.php index 3019f84abb15a..d6567db27fc10 100644 --- a/lib/internal/Magento/Framework/Api/CustomAttributesDataInterface.php +++ b/lib/internal/Magento/Framework/Api/CustomAttributesDataInterface.php @@ -10,6 +10,7 @@ * Interface for entities which can be extended with custom attributes. * * @api + * @since 100.0.2 */ interface CustomAttributesDataInterface extends ExtensibleDataInterface { diff --git a/lib/internal/Magento/Framework/Api/Data/ImageContentInterface.php b/lib/internal/Magento/Framework/Api/Data/ImageContentInterface.php index abd770dd12f14..06467be9522cc 100644 --- a/lib/internal/Magento/Framework/Api/Data/ImageContentInterface.php +++ b/lib/internal/Magento/Framework/Api/Data/ImageContentInterface.php @@ -10,6 +10,7 @@ * Image Content data interface * * @api + * @since 100.0.2 */ interface ImageContentInterface { diff --git a/lib/internal/Magento/Framework/Api/Data/VideoContentInterface.php b/lib/internal/Magento/Framework/Api/Data/VideoContentInterface.php index 7b1ea05cf939c..6c8f796ee8655 100644 --- a/lib/internal/Magento/Framework/Api/Data/VideoContentInterface.php +++ b/lib/internal/Magento/Framework/Api/Data/VideoContentInterface.php @@ -12,6 +12,7 @@ * Video Content data interface * * @api + * @since 100.0.2 */ interface VideoContentInterface extends ExtensibleDataInterface { diff --git a/lib/internal/Magento/Framework/Api/ExtensibleDataInterface.php b/lib/internal/Magento/Framework/Api/ExtensibleDataInterface.php index affe86992f273..38cc075559804 100644 --- a/lib/internal/Magento/Framework/Api/ExtensibleDataInterface.php +++ b/lib/internal/Magento/Framework/Api/ExtensibleDataInterface.php @@ -10,6 +10,7 @@ * Interface for entities which can be extended with extension attributes. * * @api + * @since 100.0.2 */ interface ExtensibleDataInterface { diff --git a/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinDataInterface.php b/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinDataInterface.php index a0a2f649900fb..3bcd0c2fec29d 100644 --- a/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinDataInterface.php +++ b/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinDataInterface.php @@ -10,6 +10,7 @@ * Interface of data holder for extension attribute joins. * * @api + * @since 100.0.2 */ interface JoinDataInterface { diff --git a/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinProcessorInterface.php b/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinProcessorInterface.php index 1eaeaef24f419..7fb44aa337cc7 100644 --- a/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinProcessorInterface.php +++ b/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinProcessorInterface.php @@ -12,6 +12,7 @@ * Join processor allows to join extension attributes during collections loading. * * @api + * @since 100.0.2 */ interface JoinProcessorInterface { diff --git a/lib/internal/Magento/Framework/Api/ExtensionAttributesInterface.php b/lib/internal/Magento/Framework/Api/ExtensionAttributesInterface.php index 5578ed0137a62..b808fb5a22a38 100644 --- a/lib/internal/Magento/Framework/Api/ExtensionAttributesInterface.php +++ b/lib/internal/Magento/Framework/Api/ExtensionAttributesInterface.php @@ -10,6 +10,7 @@ * Marker interface for all extension attributes interfaces. * * @api + * @since 100.0.2 */ interface ExtensionAttributesInterface { diff --git a/lib/internal/Magento/Framework/Api/Filter.php b/lib/internal/Magento/Framework/Api/Filter.php index 03af29a00ad67..7e99a0038bd78 100644 --- a/lib/internal/Magento/Framework/Api/Filter.php +++ b/lib/internal/Magento/Framework/Api/Filter.php @@ -13,6 +13,7 @@ * * @api * @codeCoverageIgnore + * @since 100.0.2 */ class Filter extends AbstractSimpleObject { diff --git a/lib/internal/Magento/Framework/Api/FilterBuilder.php b/lib/internal/Magento/Framework/Api/FilterBuilder.php index 056cc07657deb..c1e7fee39390a 100644 --- a/lib/internal/Magento/Framework/Api/FilterBuilder.php +++ b/lib/internal/Magento/Framework/Api/FilterBuilder.php @@ -11,6 +11,7 @@ * * @api * @method Filter create() + * @since 100.0.2 */ class FilterBuilder extends AbstractSimpleObjectBuilder { diff --git a/lib/internal/Magento/Framework/Api/ImageContentValidatorInterface.php b/lib/internal/Magento/Framework/Api/ImageContentValidatorInterface.php index 686e47f7a933f..eecd7dbe8f19b 100644 --- a/lib/internal/Magento/Framework/Api/ImageContentValidatorInterface.php +++ b/lib/internal/Magento/Framework/Api/ImageContentValidatorInterface.php @@ -13,6 +13,7 @@ * Image content validation interface * * @api + * @since 100.0.2 */ interface ImageContentValidatorInterface { diff --git a/lib/internal/Magento/Framework/Api/ImageProcessorInterface.php b/lib/internal/Magento/Framework/Api/ImageProcessorInterface.php index 676e89974fe09..38e66fc9a1feb 100644 --- a/lib/internal/Magento/Framework/Api/ImageProcessorInterface.php +++ b/lib/internal/Magento/Framework/Api/ImageProcessorInterface.php @@ -13,6 +13,7 @@ * Interface ImageProcessorInterface * * @api + * @since 100.0.2 */ interface ImageProcessorInterface { diff --git a/lib/internal/Magento/Framework/Api/MetadataObjectInterface.php b/lib/internal/Magento/Framework/Api/MetadataObjectInterface.php index 64593d87f2a2d..a4a48fcbf7bb0 100644 --- a/lib/internal/Magento/Framework/Api/MetadataObjectInterface.php +++ b/lib/internal/Magento/Framework/Api/MetadataObjectInterface.php @@ -10,6 +10,7 @@ * Provides metadata about an attribute. * * @api + * @since 100.0.2 */ interface MetadataObjectInterface { diff --git a/lib/internal/Magento/Framework/Api/MetadataServiceInterface.php b/lib/internal/Magento/Framework/Api/MetadataServiceInterface.php index c6c3492420922..8993d7bc0003d 100644 --- a/lib/internal/Magento/Framework/Api/MetadataServiceInterface.php +++ b/lib/internal/Magento/Framework/Api/MetadataServiceInterface.php @@ -10,6 +10,7 @@ * MetadataService returns custom attribute metadata for a given class or interface it implements * * @api + * @since 100.0.2 */ interface MetadataServiceInterface { diff --git a/lib/internal/Magento/Framework/Api/Search/Document.php b/lib/internal/Magento/Framework/Api/Search/Document.php index 7454fa7974ece..c1edec9860f67 100644 --- a/lib/internal/Magento/Framework/Api/Search/Document.php +++ b/lib/internal/Magento/Framework/Api/Search/Document.php @@ -9,6 +9,7 @@ /** * @api + * @since 100.0.2 */ class Document extends AbstractSimpleObject implements DocumentInterface, \IteratorAggregate { diff --git a/lib/internal/Magento/Framework/Api/Search/FilterGroup.php b/lib/internal/Magento/Framework/Api/Search/FilterGroup.php index aef3df998a550..a8057d6d0d8b0 100644 --- a/lib/internal/Magento/Framework/Api/Search/FilterGroup.php +++ b/lib/internal/Magento/Framework/Api/Search/FilterGroup.php @@ -12,6 +12,7 @@ * Groups two or more filters together using a logical OR * * @api + * @since 100.0.2 */ class FilterGroup extends AbstractSimpleObject { diff --git a/lib/internal/Magento/Framework/Api/Search/FilterGroupBuilder.php b/lib/internal/Magento/Framework/Api/Search/FilterGroupBuilder.php index cfde284524482..64bb7431819b0 100644 --- a/lib/internal/Magento/Framework/Api/Search/FilterGroupBuilder.php +++ b/lib/internal/Magento/Framework/Api/Search/FilterGroupBuilder.php @@ -14,6 +14,7 @@ * Builder for FilterGroup Data. * * @api + * @since 100.0.2 */ class FilterGroupBuilder extends AbstractSimpleObjectBuilder { diff --git a/lib/internal/Magento/Framework/Api/Search/SearchCriteria.php b/lib/internal/Magento/Framework/Api/Search/SearchCriteria.php index 964e506120167..728b32ebfd06e 100644 --- a/lib/internal/Magento/Framework/Api/Search/SearchCriteria.php +++ b/lib/internal/Magento/Framework/Api/Search/SearchCriteria.php @@ -10,6 +10,7 @@ /** * @api + * @since 100.0.2 */ class SearchCriteria extends BaseSearchCriteria implements SearchCriteriaInterface { diff --git a/lib/internal/Magento/Framework/Api/Search/SearchCriteriaBuilder.php b/lib/internal/Magento/Framework/Api/Search/SearchCriteriaBuilder.php index 918a16a255729..ba443f116f652 100644 --- a/lib/internal/Magento/Framework/Api/Search/SearchCriteriaBuilder.php +++ b/lib/internal/Magento/Framework/Api/Search/SearchCriteriaBuilder.php @@ -14,6 +14,7 @@ * Builder for SearchCriteria Service Data Object * * @api + * @since 100.0.2 */ class SearchCriteriaBuilder extends AbstractSimpleObjectBuilder { diff --git a/lib/internal/Magento/Framework/Api/Search/SearchCriteriaInterface.php b/lib/internal/Magento/Framework/Api/Search/SearchCriteriaInterface.php index 6dda50569ca03..a61a33260fc5c 100644 --- a/lib/internal/Magento/Framework/Api/Search/SearchCriteriaInterface.php +++ b/lib/internal/Magento/Framework/Api/Search/SearchCriteriaInterface.php @@ -12,6 +12,7 @@ * * @api * @package Magento\Framework\Api\Search + * @since 100.0.2 */ interface SearchCriteriaInterface extends BaseSearchCriteriaInterface { diff --git a/lib/internal/Magento/Framework/Api/Search/SearchInterface.php b/lib/internal/Magento/Framework/Api/Search/SearchInterface.php index 9793e005b70b5..0b161b04561e8 100644 --- a/lib/internal/Magento/Framework/Api/Search/SearchInterface.php +++ b/lib/internal/Magento/Framework/Api/Search/SearchInterface.php @@ -9,6 +9,7 @@ * Search API for all requests * * @api + * @since 100.0.2 */ interface SearchInterface { diff --git a/lib/internal/Magento/Framework/Api/Search/SearchResultInterface.php b/lib/internal/Magento/Framework/Api/Search/SearchResultInterface.php index 792401124b96e..92941d9a9c025 100644 --- a/lib/internal/Magento/Framework/Api/Search/SearchResultInterface.php +++ b/lib/internal/Magento/Framework/Api/Search/SearchResultInterface.php @@ -11,6 +11,7 @@ * Interface SearchResultInterface * * @api + * @since 100.0.2 */ interface SearchResultInterface extends SearchResultsInterface { diff --git a/lib/internal/Magento/Framework/Api/SearchCriteria/CollectionProcessor/FilterProcessor/CustomFilterInterface.php b/lib/internal/Magento/Framework/Api/SearchCriteria/CollectionProcessor/FilterProcessor/CustomFilterInterface.php index c068970c93b12..a076348262a61 100644 --- a/lib/internal/Magento/Framework/Api/SearchCriteria/CollectionProcessor/FilterProcessor/CustomFilterInterface.php +++ b/lib/internal/Magento/Framework/Api/SearchCriteria/CollectionProcessor/FilterProcessor/CustomFilterInterface.php @@ -10,7 +10,7 @@ /** * @api - * @since 100.2.0 + * @since 101.0.0 */ interface CustomFilterInterface { @@ -20,7 +20,7 @@ interface CustomFilterInterface * @param Filter $filter * @param AbstractDb $collection * @return bool Whether the filter was applied - * @since 100.2.0 + * @since 101.0.0 */ public function apply(Filter $filter, AbstractDb $collection); } diff --git a/lib/internal/Magento/Framework/Api/SearchCriteria/CollectionProcessor/JoinProcessor/CustomJoinInterface.php b/lib/internal/Magento/Framework/Api/SearchCriteria/CollectionProcessor/JoinProcessor/CustomJoinInterface.php index 4ca55b6a1a72d..0fd4f077af984 100644 --- a/lib/internal/Magento/Framework/Api/SearchCriteria/CollectionProcessor/JoinProcessor/CustomJoinInterface.php +++ b/lib/internal/Magento/Framework/Api/SearchCriteria/CollectionProcessor/JoinProcessor/CustomJoinInterface.php @@ -9,7 +9,7 @@ /** * @api - * @since 100.2.0 + * @since 101.0.0 */ interface CustomJoinInterface { @@ -18,7 +18,7 @@ interface CustomJoinInterface * * @param AbstractDb $collection * @return bool - * @since 100.2.0 + * @since 101.0.0 */ public function apply(AbstractDb $collection); } diff --git a/lib/internal/Magento/Framework/Api/SearchCriteria/CollectionProcessorInterface.php b/lib/internal/Magento/Framework/Api/SearchCriteria/CollectionProcessorInterface.php index 722e1b96254d0..a87a92d8d9dfa 100644 --- a/lib/internal/Magento/Framework/Api/SearchCriteria/CollectionProcessorInterface.php +++ b/lib/internal/Magento/Framework/Api/SearchCriteria/CollectionProcessorInterface.php @@ -10,7 +10,7 @@ /** * @api - * @since 100.2.0 + * @since 101.0.0 */ interface CollectionProcessorInterface { @@ -21,7 +21,7 @@ interface CollectionProcessorInterface * @param AbstractDb $collection * @throws \InvalidArgumentException * @return void - * @since 100.2.0 + * @since 101.0.0 */ public function process(SearchCriteriaInterface $searchCriteria, AbstractDb $collection); } diff --git a/lib/internal/Magento/Framework/Api/SearchCriteriaInterface.php b/lib/internal/Magento/Framework/Api/SearchCriteriaInterface.php index ae4057ae9c21e..45397b6a195c2 100644 --- a/lib/internal/Magento/Framework/Api/SearchCriteriaInterface.php +++ b/lib/internal/Magento/Framework/Api/SearchCriteriaInterface.php @@ -10,6 +10,7 @@ * Search criteria interface. * * @api + * @since 100.0.2 */ interface SearchCriteriaInterface { diff --git a/lib/internal/Magento/Framework/Api/SearchResultsInterface.php b/lib/internal/Magento/Framework/Api/SearchResultsInterface.php index d2bc3053b8d6e..709c97ca2832f 100644 --- a/lib/internal/Magento/Framework/Api/SearchResultsInterface.php +++ b/lib/internal/Magento/Framework/Api/SearchResultsInterface.php @@ -10,6 +10,7 @@ * Search results interface. * * @api + * @since 100.0.2 */ interface SearchResultsInterface { diff --git a/lib/internal/Magento/Framework/Api/SortOrder.php b/lib/internal/Magento/Framework/Api/SortOrder.php index 67897ea22570d..b2da7d180395d 100644 --- a/lib/internal/Magento/Framework/Api/SortOrder.php +++ b/lib/internal/Magento/Framework/Api/SortOrder.php @@ -13,6 +13,7 @@ * Data object for sort order. * * @api + * @since 100.0.2 */ class SortOrder extends AbstractSimpleObject { diff --git a/lib/internal/Magento/Framework/Api/SortOrderBuilder.php b/lib/internal/Magento/Framework/Api/SortOrderBuilder.php index 6960440d4d522..6b3365ae5bf9c 100644 --- a/lib/internal/Magento/Framework/Api/SortOrderBuilder.php +++ b/lib/internal/Magento/Framework/Api/SortOrderBuilder.php @@ -11,6 +11,7 @@ * @method SortOrder create() * * @api + * @since 100.0.2 */ class SortOrderBuilder extends AbstractSimpleObjectBuilder { diff --git a/lib/internal/Magento/Framework/App/Action/Action.php b/lib/internal/Magento/Framework/App/Action/Action.php index b68e7e873be6a..4c0227cc5dbb8 100644 --- a/lib/internal/Magento/Framework/App/Action/Action.php +++ b/lib/internal/Magento/Framework/App/Action/Action.php @@ -20,6 +20,7 @@ * @api * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @SuppressWarnings(PHPMD.NumberOfChildren) + * @since 100.0.2 */ abstract class Action extends AbstractAction { diff --git a/lib/internal/Magento/Framework/App/Action/Context.php b/lib/internal/Magento/Framework/App/Action/Context.php index 5f5f013f454f2..1d2f04a23035b 100644 --- a/lib/internal/Magento/Framework/App/Action/Context.php +++ b/lib/internal/Magento/Framework/App/Action/Context.php @@ -19,6 +19,7 @@ * the classes they were introduced for. * * @api + * @since 100.0.2 */ class Context implements \Magento\Framework\ObjectManager\ContextInterface { diff --git a/lib/internal/Magento/Framework/App/Action/HttpHeadActionInterface.php b/lib/internal/Magento/Framework/App/Action/HttpHeadActionInterface.php index 389bd8089967b..6d85e0b80ee55 100644 --- a/lib/internal/Magento/Framework/App/Action/HttpHeadActionInterface.php +++ b/lib/internal/Magento/Framework/App/Action/HttpHeadActionInterface.php @@ -13,7 +13,7 @@ /** * Marker for actions processing HEAD requests. * - * @deprecated Both GET and HEAD requests map to HttpGetActionInterface + * @deprecated 102.0.2 Both GET and HEAD requests map to HttpGetActionInterface */ interface HttpHeadActionInterface extends ActionInterface { diff --git a/lib/internal/Magento/Framework/App/ActionFactory.php b/lib/internal/Magento/Framework/App/ActionFactory.php index 94f5ef36eb9c9..4edf022e43509 100644 --- a/lib/internal/Magento/Framework/App/ActionFactory.php +++ b/lib/internal/Magento/Framework/App/ActionFactory.php @@ -10,6 +10,7 @@ /** * @api + * @since 100.0.2 */ class ActionFactory { diff --git a/lib/internal/Magento/Framework/App/ActionFlag.php b/lib/internal/Magento/Framework/App/ActionFlag.php index 55201504c968f..3d6c2756595ad 100644 --- a/lib/internal/Magento/Framework/App/ActionFlag.php +++ b/lib/internal/Magento/Framework/App/ActionFlag.php @@ -13,6 +13,7 @@ * Please use plugins to prevent action dispatching instead. * * @api + * @since 100.0.2 */ class ActionFlag { diff --git a/lib/internal/Magento/Framework/App/ActionInterface.php b/lib/internal/Magento/Framework/App/ActionInterface.php index 921e1a2e16b1e..513a4ffd6660d 100644 --- a/lib/internal/Magento/Framework/App/ActionInterface.php +++ b/lib/internal/Magento/Framework/App/ActionInterface.php @@ -9,6 +9,7 @@ * Magento application action controller type. Every action controller in Application should implement this interface. * * @api + * @since 100.0.2 */ interface ActionInterface { diff --git a/lib/internal/Magento/Framework/App/Area/FrontNameResolverFactory.php b/lib/internal/Magento/Framework/App/Area/FrontNameResolverFactory.php index 6a4f79dfefe82..fb46ec621b4f8 100644 --- a/lib/internal/Magento/Framework/App/Area/FrontNameResolverFactory.php +++ b/lib/internal/Magento/Framework/App/Area/FrontNameResolverFactory.php @@ -12,6 +12,7 @@ * Keeping it for backward compatibility * * @api + * @since 100.0.2 */ class FrontNameResolverFactory { diff --git a/lib/internal/Magento/Framework/App/Area/FrontNameResolverInterface.php b/lib/internal/Magento/Framework/App/Area/FrontNameResolverInterface.php index fcdee6276c63c..960c933042e62 100644 --- a/lib/internal/Magento/Framework/App/Area/FrontNameResolverInterface.php +++ b/lib/internal/Magento/Framework/App/Area/FrontNameResolverInterface.php @@ -17,6 +17,7 @@ * for areas with dynamic front names. * * @api + * @since 100.0.2 */ interface FrontNameResolverInterface { diff --git a/lib/internal/Magento/Framework/App/Bootstrap.php b/lib/internal/Magento/Framework/App/Bootstrap.php index 717b810cffd29..83a04ba3916d5 100644 --- a/lib/internal/Magento/Framework/App/Bootstrap.php +++ b/lib/internal/Magento/Framework/App/Bootstrap.php @@ -23,6 +23,7 @@ * * @api * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @since 100.0.2 */ class Bootstrap { diff --git a/lib/internal/Magento/Framework/App/Cache/Manager.php b/lib/internal/Magento/Framework/App/Cache/Manager.php index 7ac53d5d6e070..b3531f6e0d163 100644 --- a/lib/internal/Magento/Framework/App/Cache/Manager.php +++ b/lib/internal/Magento/Framework/App/Cache/Manager.php @@ -12,6 +12,7 @@ * Cache status manager * * @api + * @since 100.0.2 */ class Manager { diff --git a/lib/internal/Magento/Framework/App/Cache/StateInterface.php b/lib/internal/Magento/Framework/App/Cache/StateInterface.php index c9f6db3dd8899..1f0b2fa6e00d5 100644 --- a/lib/internal/Magento/Framework/App/Cache/StateInterface.php +++ b/lib/internal/Magento/Framework/App/Cache/StateInterface.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ interface StateInterface { diff --git a/lib/internal/Magento/Framework/App/Cache/Type/FrontendPool.php b/lib/internal/Magento/Framework/App/Cache/Type/FrontendPool.php index 596fd833ab1ed..b89ba7067d725 100644 --- a/lib/internal/Magento/Framework/App/Cache/Type/FrontendPool.php +++ b/lib/internal/Magento/Framework/App/Cache/Type/FrontendPool.php @@ -12,6 +12,7 @@ * In-memory readonly pool of cache front-ends with enforced access control, specific to cache types * * @api + * @since 100.0.2 */ class FrontendPool { diff --git a/lib/internal/Magento/Framework/App/Cache/TypeListInterface.php b/lib/internal/Magento/Framework/App/Cache/TypeListInterface.php index 8f18f5b57d6cc..c379133e94a3b 100644 --- a/lib/internal/Magento/Framework/App/Cache/TypeListInterface.php +++ b/lib/internal/Magento/Framework/App/Cache/TypeListInterface.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ interface TypeListInterface { diff --git a/lib/internal/Magento/Framework/App/CacheInterface.php b/lib/internal/Magento/Framework/App/CacheInterface.php index 374fb3cf68936..9052d93191929 100644 --- a/lib/internal/Magento/Framework/App/CacheInterface.php +++ b/lib/internal/Magento/Framework/App/CacheInterface.php @@ -10,6 +10,7 @@ * System cache model interface * * @api + * @since 100.0.2 */ interface CacheInterface { diff --git a/lib/internal/Magento/Framework/App/Config/Data/ProcessorInterface.php b/lib/internal/Magento/Framework/App/Config/Data/ProcessorInterface.php index 83ff73ab387a9..7d0b53cf1bc12 100644 --- a/lib/internal/Magento/Framework/App/Config/Data/ProcessorInterface.php +++ b/lib/internal/Magento/Framework/App/Config/Data/ProcessorInterface.php @@ -9,6 +9,7 @@ * Processes data from admin store configuration fields * * @api + * @since 100.0.2 */ interface ProcessorInterface { diff --git a/lib/internal/Magento/Framework/App/Config/DataInterface.php b/lib/internal/Magento/Framework/App/Config/DataInterface.php index 6495bbf0bc4da..e267e7311be1a 100644 --- a/lib/internal/Magento/Framework/App/Config/DataInterface.php +++ b/lib/internal/Magento/Framework/App/Config/DataInterface.php @@ -9,6 +9,7 @@ * Configuration data storage * * @api + * @since 100.0.2 */ interface DataInterface { diff --git a/lib/internal/Magento/Framework/App/Config/Element.php b/lib/internal/Magento/Framework/App/Config/Element.php index e5b4a5c384513..d714783847dc5 100644 --- a/lib/internal/Magento/Framework/App/Config/Element.php +++ b/lib/internal/Magento/Framework/App/Config/Element.php @@ -11,6 +11,7 @@ /** * @api + * @since 100.0.2 */ class Element extends \Magento\Framework\Simplexml\Element { diff --git a/lib/internal/Magento/Framework/App/Config/InitialConfigSource.php b/lib/internal/Magento/Framework/App/Config/InitialConfigSource.php index 50a250f9c6591..79305e651eeaa 100644 --- a/lib/internal/Magento/Framework/App/Config/InitialConfigSource.php +++ b/lib/internal/Magento/Framework/App/Config/InitialConfigSource.php @@ -25,7 +25,7 @@ class InitialConfigSource implements ConfigSourceInterface /** * @var string - * @deprecated 100.2.0 Initial configs can not be separated since 2.2.0 version + * @deprecated 101.0.0 Initial configs can not be separated since 2.2.0 version */ private $fileKey; diff --git a/lib/internal/Magento/Framework/App/Config/MutableScopeConfigInterface.php b/lib/internal/Magento/Framework/App/Config/MutableScopeConfigInterface.php index 32d081b853f40..15c7530e80373 100644 --- a/lib/internal/Magento/Framework/App/Config/MutableScopeConfigInterface.php +++ b/lib/internal/Magento/Framework/App/Config/MutableScopeConfigInterface.php @@ -10,6 +10,7 @@ /** * @api + * @since 100.0.2 */ interface MutableScopeConfigInterface extends \Magento\Framework\App\Config\ScopeConfigInterface { diff --git a/lib/internal/Magento/Framework/App/Config/ReinitableConfigInterface.php b/lib/internal/Magento/Framework/App/Config/ReinitableConfigInterface.php index 7974f97ef1ffc..f180a4ce401b1 100644 --- a/lib/internal/Magento/Framework/App/Config/ReinitableConfigInterface.php +++ b/lib/internal/Magento/Framework/App/Config/ReinitableConfigInterface.php @@ -10,6 +10,7 @@ /** * @api + * @since 100.0.2 */ interface ReinitableConfigInterface extends \Magento\Framework\App\Config\MutableScopeConfigInterface { diff --git a/lib/internal/Magento/Framework/App/Config/Scope/Validator.php b/lib/internal/Magento/Framework/App/Config/Scope/Validator.php index 9c0f60286e093..df9807ac55c79 100644 --- a/lib/internal/Magento/Framework/App/Config/Scope/Validator.php +++ b/lib/internal/Magento/Framework/App/Config/Scope/Validator.php @@ -15,7 +15,7 @@ use Magento\Framework\Phrase; /** - * @deprecated 100.2.0 Added in order to avoid backward incompatibility because class was moved to another directory. + * @deprecated 101.0.0 Added in order to avoid backward incompatibility because class was moved to another directory. * @see \Magento\Framework\App\Scope\Validator */ class Validator implements ValidatorInterface diff --git a/lib/internal/Magento/Framework/App/Config/ScopeConfigInterface.php b/lib/internal/Magento/Framework/App/Config/ScopeConfigInterface.php index 48cabd7489588..bc6777b4f62a9 100644 --- a/lib/internal/Magento/Framework/App/Config/ScopeConfigInterface.php +++ b/lib/internal/Magento/Framework/App/Config/ScopeConfigInterface.php @@ -10,6 +10,7 @@ /** * @api + * @since 100.0.2 */ interface ScopeConfigInterface { diff --git a/lib/internal/Magento/Framework/App/Config/Storage/WriterInterface.php b/lib/internal/Magento/Framework/App/Config/Storage/WriterInterface.php index 35b24692bd228..c1e20cf332023 100644 --- a/lib/internal/Magento/Framework/App/Config/Storage/WriterInterface.php +++ b/lib/internal/Magento/Framework/App/Config/Storage/WriterInterface.php @@ -12,6 +12,7 @@ /** * Interface \Magento\Framework\App\Config\Storage\WriterInterface * @api + * @since 100.0.2 */ interface WriterInterface { diff --git a/lib/internal/Magento/Framework/App/Config/Value.php b/lib/internal/Magento/Framework/App/Config/Value.php index 6fde4dded4695..c18da34f86a26 100644 --- a/lib/internal/Magento/Framework/App/Config/Value.php +++ b/lib/internal/Magento/Framework/App/Config/Value.php @@ -24,6 +24,7 @@ * @api * * @SuppressWarnings(PHPMD.NumberOfChildren) + * @since 100.0.2 */ class Value extends \Magento\Framework\Model\AbstractModel implements \Magento\Framework\App\Config\ValueInterface { @@ -134,6 +135,7 @@ public function afterSave() * {@inheritdoc}. In addition, it sets status 'invalidate' for config caches * * @return $this + * @since 100.1.0 */ public function afterDelete() { diff --git a/lib/internal/Magento/Framework/App/DeploymentConfig.php b/lib/internal/Magento/Framework/App/DeploymentConfig.php index 40b03b068d6ab..56816c65cebd9 100644 --- a/lib/internal/Magento/Framework/App/DeploymentConfig.php +++ b/lib/internal/Magento/Framework/App/DeploymentConfig.php @@ -12,6 +12,7 @@ * Application deployment configuration * * @api + * @since 100.0.2 */ class DeploymentConfig { diff --git a/lib/internal/Magento/Framework/App/DeploymentConfig/Reader.php b/lib/internal/Magento/Framework/App/DeploymentConfig/Reader.php index ff7077213c5c3..8d4db3d444f52 100644 --- a/lib/internal/Magento/Framework/App/DeploymentConfig/Reader.php +++ b/lib/internal/Magento/Framework/App/DeploymentConfig/Reader.php @@ -136,7 +136,7 @@ public function load($fileKey = null) * @param string $pathConfig The path config * @param bool $ignoreInitialConfigFiles Whether ignore custom pools * @return array - * @deprecated 100.2.0 Magento does not support custom config file pools since 2.2.0 version + * @deprecated 101.0.0 Magento does not support custom config file pools since 2.2.0 version * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function loadConfigFile($fileKey, $pathConfig, $ignoreInitialConfigFiles = false) diff --git a/lib/internal/Magento/Framework/App/DocRootLocator.php b/lib/internal/Magento/Framework/App/DocRootLocator.php index d73baf8e4e742..698001044bdf3 100644 --- a/lib/internal/Magento/Framework/App/DocRootLocator.php +++ b/lib/internal/Magento/Framework/App/DocRootLocator.php @@ -22,7 +22,7 @@ class DocRootLocator private $request; /** - * @deprecated + * @deprecated 102.0.2 * @var ReadFactory */ private $readFactory; diff --git a/lib/internal/Magento/Framework/App/FrontControllerInterface.php b/lib/internal/Magento/Framework/App/FrontControllerInterface.php index afd3091097d19..712f3876355c1 100644 --- a/lib/internal/Magento/Framework/App/FrontControllerInterface.php +++ b/lib/internal/Magento/Framework/App/FrontControllerInterface.php @@ -11,6 +11,7 @@ * Every application area has own front controller. * * @api + * @since 100.0.2 */ interface FrontControllerInterface { diff --git a/lib/internal/Magento/Framework/App/Language/Dictionary.php b/lib/internal/Magento/Framework/App/Language/Dictionary.php index d9a5ccb00d892..50a9410939225 100644 --- a/lib/internal/Magento/Framework/App/Language/Dictionary.php +++ b/lib/internal/Magento/Framework/App/Language/Dictionary.php @@ -13,6 +13,7 @@ * A service for reading language package dictionaries * * @api + * @since 100.0.2 */ class Dictionary { diff --git a/lib/internal/Magento/Framework/App/ObjectManager.php b/lib/internal/Magento/Framework/App/ObjectManager.php index 1cc1745c3a57f..f18102a1dbc78 100644 --- a/lib/internal/Magento/Framework/App/ObjectManager.php +++ b/lib/internal/Magento/Framework/App/ObjectManager.php @@ -15,6 +15,7 @@ * * @api * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @since 100.0.2 */ class ObjectManager extends \Magento\Framework\ObjectManager\ObjectManager { diff --git a/lib/internal/Magento/Framework/App/ObjectManager/ConfigCache.php b/lib/internal/Magento/Framework/App/ObjectManager/ConfigCache.php index 0df11cb3cb6e1..846dd6011c732 100644 --- a/lib/internal/Magento/Framework/App/ObjectManager/ConfigCache.php +++ b/lib/internal/Magento/Framework/App/ObjectManager/ConfigCache.php @@ -68,7 +68,7 @@ public function save(array $config, $key) * Get serializer * * @return SerializerInterface - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getSerializer() { diff --git a/lib/internal/Magento/Framework/App/ObjectManager/ConfigLoader.php b/lib/internal/Magento/Framework/App/ObjectManager/ConfigLoader.php index 6abf2aca8d641..1d73bdf4a9956 100644 --- a/lib/internal/Magento/Framework/App/ObjectManager/ConfigLoader.php +++ b/lib/internal/Magento/Framework/App/ObjectManager/ConfigLoader.php @@ -86,7 +86,7 @@ public function load($area) * Get serializer * * @return SerializerInterface - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getSerializer() { diff --git a/lib/internal/Magento/Framework/App/ObjectManagerFactory.php b/lib/internal/Magento/Framework/App/ObjectManagerFactory.php index 1c05c58473602..bb05cf8d36b2e 100644 --- a/lib/internal/Magento/Framework/App/ObjectManagerFactory.php +++ b/lib/internal/Magento/Framework/App/ObjectManagerFactory.php @@ -19,6 +19,7 @@ * * @api * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @since 100.0.2 */ class ObjectManagerFactory { @@ -291,7 +292,7 @@ protected function _loadPrimaryConfig(DirectoryList $directoryList, $driverPool, * @param \Magento\Framework\ObjectManager\Config\Config $diConfig * @param \Magento\Framework\ObjectManager\DefinitionInterface $definitions * @return \Magento\Framework\Interception\PluginList\PluginList - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ protected function _createPluginList( diff --git a/lib/internal/Magento/Framework/App/PlainTextRequestInterface.php b/lib/internal/Magento/Framework/App/PlainTextRequestInterface.php index c986a2309888a..fbcabd15adba8 100644 --- a/lib/internal/Magento/Framework/App/PlainTextRequestInterface.php +++ b/lib/internal/Magento/Framework/App/PlainTextRequestInterface.php @@ -13,7 +13,7 @@ * To read already parsed request data use \Magento\Framework\App\RequestInterface. * * @api - * @since 100.2.0 + * @since 101.0.0 */ interface PlainTextRequestInterface { @@ -21,7 +21,7 @@ interface PlainTextRequestInterface * Returns textual representation of request to Magento. * * @return string - * @since 100.2.0 + * @since 101.0.0 */ public function getContent(); } diff --git a/lib/internal/Magento/Framework/App/ProductMetadataInterface.php b/lib/internal/Magento/Framework/App/ProductMetadataInterface.php index 4d55092d45e03..a62b06077a842 100644 --- a/lib/internal/Magento/Framework/App/ProductMetadataInterface.php +++ b/lib/internal/Magento/Framework/App/ProductMetadataInterface.php @@ -9,6 +9,7 @@ * Magento application product metadata * * @api + * @since 100.0.2 */ interface ProductMetadataInterface { diff --git a/lib/internal/Magento/Framework/App/ReinitableConfig.php b/lib/internal/Magento/Framework/App/ReinitableConfig.php index 70bc82229995d..09ba71a279636 100644 --- a/lib/internal/Magento/Framework/App/ReinitableConfig.php +++ b/lib/internal/Magento/Framework/App/ReinitableConfig.php @@ -9,7 +9,7 @@ /** * @inheritdoc - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ class ReinitableConfig extends MutableScopeConfig implements ReinitableConfigInterface { diff --git a/lib/internal/Magento/Framework/App/Request/PathInfoProcessorInterface.php b/lib/internal/Magento/Framework/App/Request/PathInfoProcessorInterface.php index 60d867cb4388f..3c2896569c199 100644 --- a/lib/internal/Magento/Framework/App/Request/PathInfoProcessorInterface.php +++ b/lib/internal/Magento/Framework/App/Request/PathInfoProcessorInterface.php @@ -9,6 +9,7 @@ /** * @api + * @since 100.0.2 */ interface PathInfoProcessorInterface { diff --git a/lib/internal/Magento/Framework/App/RequestContentInterface.php b/lib/internal/Magento/Framework/App/RequestContentInterface.php index 90848f34ccd66..29e26e0702163 100644 --- a/lib/internal/Magento/Framework/App/RequestContentInterface.php +++ b/lib/internal/Magento/Framework/App/RequestContentInterface.php @@ -11,7 +11,7 @@ * Direct usage of RequestInterface and PlainTextRequestInterface is preferable. * * @api - * @since 100.2.0 + * @since 101.0.0 */ interface RequestContentInterface extends RequestInterface, PlainTextRequestInterface { diff --git a/lib/internal/Magento/Framework/App/RequestInterface.php b/lib/internal/Magento/Framework/App/RequestInterface.php index 7abcc9208af5c..a830d46978b84 100644 --- a/lib/internal/Magento/Framework/App/RequestInterface.php +++ b/lib/internal/Magento/Framework/App/RequestInterface.php @@ -9,6 +9,7 @@ /** * @api + * @since 100.0.2 */ interface RequestInterface { diff --git a/lib/internal/Magento/Framework/App/RequestSafetyInterface.php b/lib/internal/Magento/Framework/App/RequestSafetyInterface.php index f56ff9aaf8ab5..56d6312a60c7c 100644 --- a/lib/internal/Magento/Framework/App/RequestSafetyInterface.php +++ b/lib/internal/Magento/Framework/App/RequestSafetyInterface.php @@ -10,6 +10,7 @@ * Request safety check. Can be used to identify if current application request is safe (does not modify state) or not. * * @api + * @since 100.0.2 */ interface RequestSafetyInterface { diff --git a/lib/internal/Magento/Framework/App/ResourceConnection.php b/lib/internal/Magento/Framework/App/ResourceConnection.php index b543cc970f640..50ebab048c7ae 100644 --- a/lib/internal/Magento/Framework/App/ResourceConnection.php +++ b/lib/internal/Magento/Framework/App/ResourceConnection.php @@ -15,6 +15,7 @@ * This class provides access to all these connections. * * @api + * @since 100.0.2 */ class ResourceConnection { @@ -298,6 +299,7 @@ public function getFkName($priTableName, $priColumnName, $refTableName, $refColu * * @param string $resourceName * @return string + * @since 102.0.0 */ public function getSchemaName($resourceName) { diff --git a/lib/internal/Magento/Framework/App/ResourceConnection/SourceProviderInterface.php b/lib/internal/Magento/Framework/App/ResourceConnection/SourceProviderInterface.php index f8ff407d4507e..0a67b4cac9785 100644 --- a/lib/internal/Magento/Framework/App/ResourceConnection/SourceProviderInterface.php +++ b/lib/internal/Magento/Framework/App/ResourceConnection/SourceProviderInterface.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ interface SourceProviderInterface extends \Traversable { diff --git a/lib/internal/Magento/Framework/App/Response/HttpInterface.php b/lib/internal/Magento/Framework/App/Response/HttpInterface.php index 08b1257f73abe..abe548b875a20 100644 --- a/lib/internal/Magento/Framework/App/Response/HttpInterface.php +++ b/lib/internal/Magento/Framework/App/Response/HttpInterface.php @@ -9,6 +9,7 @@ * HTTP response interface * * @api + * @since 100.0.2 */ interface HttpInterface extends \Magento\Framework\App\ResponseInterface { @@ -24,7 +25,7 @@ public function setHttpResponseCode($code); * Get HTTP response code * * @return int - * @since 100.2.0 + * @since 101.0.0 */ public function getHttpResponseCode(); @@ -37,7 +38,7 @@ public function getHttpResponseCode(); * @param string $value * @param boolean $replace * @return self - * @since 100.2.0 + * @since 101.0.0 */ public function setHeader($name, $value, $replace = false); @@ -49,7 +50,7 @@ public function setHeader($name, $value, $replace = false); * * @param string $name * @return \Zend\Http\Header\HeaderInterface|bool - * @since 100.2.0 + * @since 101.0.0 */ public function getHeader($name); @@ -58,7 +59,7 @@ public function getHeader($name); * * @param string $name * @return self - * @since 100.2.0 + * @since 101.0.0 */ public function clearHeader($name); @@ -76,7 +77,7 @@ public function clearHeader($name); * @param null|int|string $version * @param null|string $phrase * @return self - * @since 100.2.0 + * @since 101.0.0 */ public function setStatusHeader($httpCode, $version = null, $phrase = null); @@ -85,7 +86,7 @@ public function setStatusHeader($httpCode, $version = null, $phrase = null); * * @param string $value * @return self - * @since 100.2.0 + * @since 101.0.0 */ public function appendBody($value); @@ -96,7 +97,7 @@ public function appendBody($value); * * @param string $value * @return self - * @since 100.2.0 + * @since 101.0.0 */ public function setBody($value); @@ -108,7 +109,7 @@ public function setBody($value); * @param string $url * @param int $code * @return self - * @since 100.2.0 + * @since 101.0.0 */ public function setRedirect($url, $code = 302); } diff --git a/lib/internal/Magento/Framework/App/ResponseInterface.php b/lib/internal/Magento/Framework/App/ResponseInterface.php index f55e2cbaa2c1c..98633720d3ba4 100644 --- a/lib/internal/Magento/Framework/App/ResponseInterface.php +++ b/lib/internal/Magento/Framework/App/ResponseInterface.php @@ -9,6 +9,7 @@ /** * @api + * @since 100.0.2 */ interface ResponseInterface { diff --git a/lib/internal/Magento/Framework/App/Route/Config.php b/lib/internal/Magento/Framework/App/Route/Config.php index a578858a75740..4df7ae4e16bbd 100644 --- a/lib/internal/Magento/Framework/App/Route/Config.php +++ b/lib/internal/Magento/Framework/App/Route/Config.php @@ -149,7 +149,7 @@ public function getModulesByFrontName($frontName, $scope = null) * Get serializer * * @return \Magento\Framework\Serialize\SerializerInterface - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getSerializer() { diff --git a/lib/internal/Magento/Framework/App/Route/ConfigInterface.php b/lib/internal/Magento/Framework/App/Route/ConfigInterface.php index 88b1c42261fc7..26d1a6bf30ac0 100644 --- a/lib/internal/Magento/Framework/App/Route/ConfigInterface.php +++ b/lib/internal/Magento/Framework/App/Route/ConfigInterface.php @@ -9,6 +9,7 @@ * Routes configuration interface * * @api + * @since 100.0.2 */ interface ConfigInterface { diff --git a/lib/internal/Magento/Framework/App/Rss/DataProviderInterface.php b/lib/internal/Magento/Framework/App/Rss/DataProviderInterface.php index 2c61c855945f2..4c20469ea9f59 100644 --- a/lib/internal/Magento/Framework/App/Rss/DataProviderInterface.php +++ b/lib/internal/Magento/Framework/App/Rss/DataProviderInterface.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ interface DataProviderInterface { diff --git a/lib/internal/Magento/Framework/App/ScopeInterface.php b/lib/internal/Magento/Framework/App/ScopeInterface.php index 5821bf2aafa2a..81de45c5d9240 100644 --- a/lib/internal/Magento/Framework/App/ScopeInterface.php +++ b/lib/internal/Magento/Framework/App/ScopeInterface.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ interface ScopeInterface { diff --git a/lib/internal/Magento/Framework/App/State.php b/lib/internal/Magento/Framework/App/State.php index 5d6ebaa2cc070..bc2b85b37442b 100644 --- a/lib/internal/Magento/Framework/App/State.php +++ b/lib/internal/Magento/Framework/App/State.php @@ -12,6 +12,7 @@ * Note: Area code communication and emulation will be removed from this class. * * @api + * @since 100.0.2 */ class State { @@ -219,7 +220,7 @@ private function checkAreaCode($areaCode) * Get Instance of AreaList * * @return AreaList - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getAreaListInstance() { diff --git a/lib/internal/Magento/Framework/App/StaticResource.php b/lib/internal/Magento/Framework/App/StaticResource.php index 86b2b15d3c446..321ded57c0885 100644 --- a/lib/internal/Magento/Framework/App/StaticResource.php +++ b/lib/internal/Magento/Framework/App/StaticResource.php @@ -215,7 +215,7 @@ private function getFilesystem() * Retrieves LoggerInterface instance * * @return LoggerInterface - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getLogger() { diff --git a/lib/internal/Magento/Framework/App/TemplateTypesInterface.php b/lib/internal/Magento/Framework/App/TemplateTypesInterface.php index bc12d4d7e1ba5..37ae5e5431b92 100644 --- a/lib/internal/Magento/Framework/App/TemplateTypesInterface.php +++ b/lib/internal/Magento/Framework/App/TemplateTypesInterface.php @@ -8,7 +8,7 @@ /** * Template Types interface * - * @deprecated 100.2.0 because of incorrect location + * @deprecated 101.0.0 because of incorrect location */ interface TemplateTypesInterface { diff --git a/lib/internal/Magento/Framework/App/View/Asset/Publisher.php b/lib/internal/Magento/Framework/App/View/Asset/Publisher.php index 0af5a8199ab88..ea50f96615139 100644 --- a/lib/internal/Magento/Framework/App/View/Asset/Publisher.php +++ b/lib/internal/Magento/Framework/App/View/Asset/Publisher.php @@ -14,6 +14,7 @@ * A publishing service for view assets * * @api + * @since 100.0.2 */ class Publisher { diff --git a/lib/internal/Magento/Framework/App/View/Deployment/Version.php b/lib/internal/Magento/Framework/App/View/Deployment/Version.php index 67f6d3c1ed779..e86e51eaf83d3 100644 --- a/lib/internal/Magento/Framework/App/View/Deployment/Version.php +++ b/lib/internal/Magento/Framework/App/View/Deployment/Version.php @@ -109,7 +109,7 @@ private function generateVersion() * Get logger * * @return LoggerInterface - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getLogger() { diff --git a/lib/internal/Magento/Framework/App/ViewInterface.php b/lib/internal/Magento/Framework/App/ViewInterface.php index a659cd371a9a4..6a61154ce8b40 100644 --- a/lib/internal/Magento/Framework/App/ViewInterface.php +++ b/lib/internal/Magento/Framework/App/ViewInterface.php @@ -10,8 +10,9 @@ * Later replaced with Magento\Framework\View\Result component * * @api - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @see \Magento\Framework\View\Result\Layout + * @since 100.0.2 */ interface ViewInterface { diff --git a/lib/internal/Magento/Framework/AppInterface.php b/lib/internal/Magento/Framework/AppInterface.php index 25a0a9e785daa..e0397f8544536 100644 --- a/lib/internal/Magento/Framework/AppInterface.php +++ b/lib/internal/Magento/Framework/AppInterface.php @@ -14,6 +14,7 @@ * Implementations of this interface should implement application type specific initialization. * * @api + * @since 100.0.2 */ interface AppInterface { diff --git a/lib/internal/Magento/Framework/Archive/ArchiveInterface.php b/lib/internal/Magento/Framework/Archive/ArchiveInterface.php index 69a524107f1e0..c6e85b558b24e 100644 --- a/lib/internal/Magento/Framework/Archive/ArchiveInterface.php +++ b/lib/internal/Magento/Framework/Archive/ArchiveInterface.php @@ -13,6 +13,7 @@ /** * @api + * @since 100.0.2 */ interface ArchiveInterface { diff --git a/lib/internal/Magento/Framework/Archive/Zip.php b/lib/internal/Magento/Framework/Archive/Zip.php index c41f8b28ce348..84bb3da886b73 100644 --- a/lib/internal/Magento/Framework/Archive/Zip.php +++ b/lib/internal/Magento/Framework/Archive/Zip.php @@ -53,10 +53,11 @@ public function unpack($source, $destination) { $zip = new \ZipArchive(); if ($zip->open($source) === true) { - $filename = $this->filterRelativePaths($zip->getNameIndex(0) ?: ''); + $zip->renameIndex(0, basename($destination)); + $filename = $zip->getNameIndex(0) ?: ''; if ($filename) { + // extract first entry in zip file to destination directory $zip->extractTo(dirname($destination), $filename); - rename(dirname($destination).'/'.$filename, $destination); } else { $destination = ''; } @@ -67,19 +68,4 @@ public function unpack($source, $destination) return $destination; } - - /** - * Filter file names with relative paths. - * - * @param string $path - * @return string - */ - private function filterRelativePaths(string $path): string - { - if ($path && preg_match('#^\s*(../)|(/../)#i', $path)) { - $path = ''; - } - - return $path; - } } diff --git a/lib/internal/Magento/Framework/Authorization/PolicyInterface.php b/lib/internal/Magento/Framework/Authorization/PolicyInterface.php index 0d9a5d3af74c9..0afcc5c80e596 100644 --- a/lib/internal/Magento/Framework/Authorization/PolicyInterface.php +++ b/lib/internal/Magento/Framework/Authorization/PolicyInterface.php @@ -9,6 +9,7 @@ * Responsible for internal authorization decision making based on provided role, resource and privilege * * @api + * @since 100.0.2 */ interface PolicyInterface { diff --git a/lib/internal/Magento/Framework/Authorization/RoleLocatorInterface.php b/lib/internal/Magento/Framework/Authorization/RoleLocatorInterface.php index b273f2274df34..29b8cbdc377d4 100644 --- a/lib/internal/Magento/Framework/Authorization/RoleLocatorInterface.php +++ b/lib/internal/Magento/Framework/Authorization/RoleLocatorInterface.php @@ -11,6 +11,7 @@ * Should be implemented by application developer that uses \Magento\Framework\Authorization component. * * @api + * @since 100.0.2 */ interface RoleLocatorInterface { diff --git a/lib/internal/Magento/Framework/AuthorizationInterface.php b/lib/internal/Magento/Framework/AuthorizationInterface.php index 6077e2740b75c..65f0755a48a5c 100644 --- a/lib/internal/Magento/Framework/AuthorizationInterface.php +++ b/lib/internal/Magento/Framework/AuthorizationInterface.php @@ -9,6 +9,7 @@ /** * @api + * @since 100.0.2 */ interface AuthorizationInterface { diff --git a/lib/internal/Magento/Framework/Backup/AbstractBackup.php b/lib/internal/Magento/Framework/Backup/AbstractBackup.php index 66bcdbf16a54b..a46f7d629f6f1 100644 --- a/lib/internal/Magento/Framework/Backup/AbstractBackup.php +++ b/lib/internal/Magento/Framework/Backup/AbstractBackup.php @@ -12,6 +12,7 @@ * Class to work with archives * * @api + * @since 100.0.2 */ abstract class AbstractBackup implements BackupInterface, SourceFileInterface { @@ -311,6 +312,7 @@ protected function _filterName($name) * Check if keep files of backup * * @return bool + * @since 102.0.0 */ public function keepSourceFile() { @@ -322,6 +324,7 @@ public function keepSourceFile() * * @param bool $keepSourceFile * @return $this + * @since 102.0.0 */ public function setKeepSourceFile(bool $keepSourceFile) { diff --git a/lib/internal/Magento/Framework/Backup/BackupException.php b/lib/internal/Magento/Framework/Backup/BackupException.php index 7694c084c10a7..6fef1d92ddbfe 100644 --- a/lib/internal/Magento/Framework/Backup/BackupException.php +++ b/lib/internal/Magento/Framework/Backup/BackupException.php @@ -8,6 +8,7 @@ /** * @api + * @since 100.0.2 */ class BackupException extends \Magento\Framework\Exception\LocalizedException { diff --git a/lib/internal/Magento/Framework/Backup/BackupInterface.php b/lib/internal/Magento/Framework/Backup/BackupInterface.php index 16aada9689c11..e16eef51d25a9 100644 --- a/lib/internal/Magento/Framework/Backup/BackupInterface.php +++ b/lib/internal/Magento/Framework/Backup/BackupInterface.php @@ -14,7 +14,8 @@ /** * @api * - * @deprecated Backups should be done using other means. + * @deprecated 101.0.7 Backups should be done using other means. + * @since 100.0.2 */ interface BackupInterface { diff --git a/lib/internal/Magento/Framework/Backup/Db.php b/lib/internal/Magento/Framework/Backup/Db.php index d3b72f30d8cb3..b7e0edf7c4f47 100644 --- a/lib/internal/Magento/Framework/Backup/Db.php +++ b/lib/internal/Magento/Framework/Backup/Db.php @@ -14,6 +14,7 @@ * * @author Magento Core Team <core@magentocommerce.com> * @api + * @since 100.0.2 */ class Db extends AbstractBackup { diff --git a/lib/internal/Magento/Framework/Backup/Db/BackupDbInterface.php b/lib/internal/Magento/Framework/Backup/Db/BackupDbInterface.php index a019ccac06b66..78ace64e4fe68 100644 --- a/lib/internal/Magento/Framework/Backup/Db/BackupDbInterface.php +++ b/lib/internal/Magento/Framework/Backup/Db/BackupDbInterface.php @@ -8,7 +8,8 @@ /** * @api * - * @deprecated Backups should be done using other means. + * @deprecated 101.0.7 Backups should be done using other means. + * @since 100.0.2 */ interface BackupDbInterface { diff --git a/lib/internal/Magento/Framework/Backup/Db/BackupFactory.php b/lib/internal/Magento/Framework/Backup/Db/BackupFactory.php index d1c9c3df1e9aa..a9e1cdd133f75 100644 --- a/lib/internal/Magento/Framework/Backup/Db/BackupFactory.php +++ b/lib/internal/Magento/Framework/Backup/Db/BackupFactory.php @@ -10,6 +10,7 @@ /** * @api + * @since 100.0.2 */ class BackupFactory { diff --git a/lib/internal/Magento/Framework/Backup/Db/BackupInterface.php b/lib/internal/Magento/Framework/Backup/Db/BackupInterface.php index ae5879290eb20..78940f93e33c9 100644 --- a/lib/internal/Magento/Framework/Backup/Db/BackupInterface.php +++ b/lib/internal/Magento/Framework/Backup/Db/BackupInterface.php @@ -8,7 +8,8 @@ /** * @api * - * @deprecated Backups should be done using other means. + * @deprecated 101.0.7 Backups should be done using other means. + * @since 100.0.2 */ interface BackupInterface { diff --git a/lib/internal/Magento/Framework/Backup/Exception/CantLoadSnapshot.php b/lib/internal/Magento/Framework/Backup/Exception/CantLoadSnapshot.php index 45d1cc21b06da..b351bc85a613b 100644 --- a/lib/internal/Magento/Framework/Backup/Exception/CantLoadSnapshot.php +++ b/lib/internal/Magento/Framework/Backup/Exception/CantLoadSnapshot.php @@ -8,6 +8,7 @@ /** * @api + * @since 100.0.2 */ class CantLoadSnapshot extends \Magento\Framework\Backup\BackupException { diff --git a/lib/internal/Magento/Framework/Backup/Exception/FtpConnectionFailed.php b/lib/internal/Magento/Framework/Backup/Exception/FtpConnectionFailed.php index 9b722da10a1bd..311de25343eb7 100644 --- a/lib/internal/Magento/Framework/Backup/Exception/FtpConnectionFailed.php +++ b/lib/internal/Magento/Framework/Backup/Exception/FtpConnectionFailed.php @@ -8,6 +8,7 @@ /** * @api + * @since 100.0.2 */ class FtpConnectionFailed extends \Magento\Framework\Backup\BackupException { diff --git a/lib/internal/Magento/Framework/Backup/Exception/FtpValidationFailed.php b/lib/internal/Magento/Framework/Backup/Exception/FtpValidationFailed.php index 53af4bfd3061b..1b197576b32c2 100644 --- a/lib/internal/Magento/Framework/Backup/Exception/FtpValidationFailed.php +++ b/lib/internal/Magento/Framework/Backup/Exception/FtpValidationFailed.php @@ -8,6 +8,7 @@ /** * @api + * @since 100.0.2 */ class FtpValidationFailed extends \Magento\Framework\Backup\BackupException { diff --git a/lib/internal/Magento/Framework/Backup/Exception/NotEnoughFreeSpace.php b/lib/internal/Magento/Framework/Backup/Exception/NotEnoughFreeSpace.php index b373134d2e9a6..48cedca5aecbb 100644 --- a/lib/internal/Magento/Framework/Backup/Exception/NotEnoughFreeSpace.php +++ b/lib/internal/Magento/Framework/Backup/Exception/NotEnoughFreeSpace.php @@ -8,6 +8,7 @@ /** * @api + * @since 100.0.2 */ class NotEnoughFreeSpace extends \Magento\Framework\Backup\BackupException { diff --git a/lib/internal/Magento/Framework/Backup/Exception/NotEnoughPermissions.php b/lib/internal/Magento/Framework/Backup/Exception/NotEnoughPermissions.php index ba7e80a503f4f..df89932680029 100644 --- a/lib/internal/Magento/Framework/Backup/Exception/NotEnoughPermissions.php +++ b/lib/internal/Magento/Framework/Backup/Exception/NotEnoughPermissions.php @@ -8,6 +8,7 @@ /** * @api + * @since 100.0.2 */ class NotEnoughPermissions extends \Magento\Framework\Backup\BackupException { diff --git a/lib/internal/Magento/Framework/Backup/Factory.php b/lib/internal/Magento/Framework/Backup/Factory.php index effa796a2a074..1692cc168d5f2 100644 --- a/lib/internal/Magento/Framework/Backup/Factory.php +++ b/lib/internal/Magento/Framework/Backup/Factory.php @@ -15,6 +15,7 @@ /** * @api + * @since 100.0.2 */ class Factory { diff --git a/lib/internal/Magento/Framework/Backup/Filesystem.php b/lib/internal/Magento/Framework/Backup/Filesystem.php index f3946444cec20..72996cdd28fda 100644 --- a/lib/internal/Magento/Framework/Backup/Filesystem.php +++ b/lib/internal/Magento/Framework/Backup/Filesystem.php @@ -317,7 +317,7 @@ protected function _getTarTmpPath() /** * @return Ftp - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected function getRollBackFtp() { @@ -333,7 +333,7 @@ protected function getRollBackFtp() /** * @return Fs - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected function getRollBackFs() { diff --git a/lib/internal/Magento/Framework/Backup/Filesystem/Rollback/AbstractRollback.php b/lib/internal/Magento/Framework/Backup/Filesystem/Rollback/AbstractRollback.php index 8c8c21a8405b6..976c07ef986e0 100644 --- a/lib/internal/Magento/Framework/Backup/Filesystem/Rollback/AbstractRollback.php +++ b/lib/internal/Magento/Framework/Backup/Filesystem/Rollback/AbstractRollback.php @@ -11,6 +11,7 @@ * Filesystem rollback workers abstract class * * @api + * @since 100.0.2 */ abstract class AbstractRollback { diff --git a/lib/internal/Magento/Framework/Backup/Filesystem/Rollback/Fs.php b/lib/internal/Magento/Framework/Backup/Filesystem/Rollback/Fs.php index 4820b83ceb7a8..b8eca279fdf22 100644 --- a/lib/internal/Magento/Framework/Backup/Filesystem/Rollback/Fs.php +++ b/lib/internal/Magento/Framework/Backup/Filesystem/Rollback/Fs.php @@ -97,7 +97,7 @@ public function run() * Get file system helper instance * * @return Helper - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getFsHelper() { diff --git a/lib/internal/Magento/Framework/Bulk/BulkManagementInterface.php b/lib/internal/Magento/Framework/Bulk/BulkManagementInterface.php index 9cfb2b1c97a4d..8f538d0a729d4 100644 --- a/lib/internal/Magento/Framework/Bulk/BulkManagementInterface.php +++ b/lib/internal/Magento/Framework/Bulk/BulkManagementInterface.php @@ -8,7 +8,7 @@ /** * Interface BulkManagementInterface * @api - * @since 100.2.0 + * @since 102.0.2 */ interface BulkManagementInterface { @@ -20,7 +20,7 @@ interface BulkManagementInterface * @param string $description * @param int $userId * @return boolean - * @since 100.2.0 + * @since 102.0.2 */ public function scheduleBulk($bulkUuid, array $operations, $description, $userId = null); @@ -29,7 +29,7 @@ public function scheduleBulk($bulkUuid, array $operations, $description, $userId * * @param string $bulkId * @return boolean - * @since 100.2.0 + * @since 102.0.2 */ public function deleteBulk($bulkId); } diff --git a/lib/internal/Magento/Framework/Bulk/BulkStatusInterface.php b/lib/internal/Magento/Framework/Bulk/BulkStatusInterface.php index 0f1deb0ceeeaf..e2a6f17f9ce2d 100644 --- a/lib/internal/Magento/Framework/Bulk/BulkStatusInterface.php +++ b/lib/internal/Magento/Framework/Bulk/BulkStatusInterface.php @@ -8,7 +8,7 @@ /** * Interface BulkStatusInterface * @api - * @since 100.2.0 + * @since 102.0.2 */ interface BulkStatusInterface { @@ -18,7 +18,7 @@ interface BulkStatusInterface * @param string $bulkUuid * @param int|null $failureType * @return \Magento\Framework\Bulk\OperationInterface[] - * @since 100.2.0 + * @since 102.0.2 */ public function getFailedOperationsByBulkId($bulkUuid, $failureType = null); @@ -28,7 +28,7 @@ public function getFailedOperationsByBulkId($bulkUuid, $failureType = null); * @param string $bulkUuid * @param int $status * @return int - * @since 100.2.0 + * @since 102.0.2 */ public function getOperationsCountByBulkIdAndStatus($bulkUuid, $status); @@ -37,7 +37,7 @@ public function getOperationsCountByBulkIdAndStatus($bulkUuid, $status); * * @param int $userId * @return BulkSummaryInterface[] - * @since 100.2.0 + * @since 102.0.2 */ public function getBulksByUser($userId); @@ -49,7 +49,7 @@ public function getBulksByUser($userId); * * @param string $bulkUuid * @return int NOT_STARTED | IN_PROGRESS | FINISHED_SUCCESFULLY | FINISHED_WITH_FAILURE - * @since 100.2.0 + * @since 102.0.2 */ public function getBulkStatus($bulkUuid); } diff --git a/lib/internal/Magento/Framework/Bulk/BulkSummaryInterface.php b/lib/internal/Magento/Framework/Bulk/BulkSummaryInterface.php index 69e9b71ca00c3..94074c4499d7b 100644 --- a/lib/internal/Magento/Framework/Bulk/BulkSummaryInterface.php +++ b/lib/internal/Magento/Framework/Bulk/BulkSummaryInterface.php @@ -8,7 +8,7 @@ /** * Interface BulkSummaryInterface * @api - * @since 100.2.0 + * @since 102.0.2 */ interface BulkSummaryInterface { @@ -35,7 +35,7 @@ interface BulkSummaryInterface * Get bulk uuid * * @return string - * @since 100.2.0 + * @since 102.0.2 */ public function getBulkId(); @@ -44,7 +44,7 @@ public function getBulkId(); * * @param string $bulkUuid * @return $this - * @since 100.2.0 + * @since 102.0.2 */ public function setBulkId($bulkUuid); @@ -52,7 +52,7 @@ public function setBulkId($bulkUuid); * Get bulk description * * @return string - * @since 100.2.0 + * @since 102.0.2 */ public function getDescription(); @@ -61,7 +61,7 @@ public function getDescription(); * * @param string $description * @return $this - * @since 100.2.0 + * @since 102.0.2 */ public function setDescription($description); @@ -69,7 +69,7 @@ public function setDescription($description); * Get bulk scheduled time * * @return string - * @since 100.2.0 + * @since 102.0.2 */ public function getStartTime(); @@ -78,7 +78,7 @@ public function getStartTime(); * * @param string $timestamp * @return $this - * @since 100.2.0 + * @since 102.0.2 */ public function setStartTime($timestamp); @@ -86,7 +86,7 @@ public function setStartTime($timestamp); * Get user id * * @return int - * @since 100.2.0 + * @since 102.0.2 */ public function getUserId(); @@ -95,7 +95,7 @@ public function getUserId(); * * @param int $userId * @return $this - * @since 100.2.0 + * @since 102.0.2 */ public function setUserId($userId); @@ -103,7 +103,7 @@ public function setUserId($userId); * Get total number of operations scheduled in scope of this bulk * * @return int - * @since 100.2.0 + * @since 102.0.2 */ public function getOperationCount(); @@ -112,7 +112,7 @@ public function getOperationCount(); * * @param int $operationCount * @return $this - * @since 100.2.0 + * @since 102.0.2 */ public function setOperationCount($operationCount); } diff --git a/lib/internal/Magento/Framework/Bulk/OperationInterface.php b/lib/internal/Magento/Framework/Bulk/OperationInterface.php index c1cac9f171430..0b04fc933d482 100644 --- a/lib/internal/Magento/Framework/Bulk/OperationInterface.php +++ b/lib/internal/Magento/Framework/Bulk/OperationInterface.php @@ -8,7 +8,7 @@ /** * Interface OperationInterface * @api - * @since 100.2.0 + * @since 102.0.2 */ interface OperationInterface extends \Magento\Framework\Api\ExtensibleDataInterface { @@ -39,7 +39,7 @@ interface OperationInterface extends \Magento\Framework\Api\ExtensibleDataInterf * Operation id * * @return int - * @since 100.2.0 + * @since 102.0.2 */ public function getId(); @@ -48,7 +48,7 @@ public function getId(); * * @param int $id * @return $this - * @since 100.2.0 + * @since 102.0.2 */ public function setId($id); @@ -56,7 +56,7 @@ public function setId($id); * Get bulk uuid * * @return string - * @since 100.2.0 + * @since 102.0.2 */ public function getBulkUuid(); @@ -65,7 +65,7 @@ public function getBulkUuid(); * * @param string $bulkId * @return $this - * @since 100.2.0 + * @since 102.0.2 */ public function setBulkUuid($bulkId); @@ -73,7 +73,7 @@ public function setBulkUuid($bulkId); * Message Queue Topic * * @return string - * @since 100.2.0 + * @since 102.0.2 */ public function getTopicName(); @@ -82,7 +82,7 @@ public function getTopicName(); * * @param string $topic * @return $this - * @since 100.2.0 + * @since 102.0.2 */ public function setTopicName($topic); @@ -90,7 +90,7 @@ public function setTopicName($topic); * Serialized Data * * @return string - * @since 100.2.0 + * @since 102.0.2 */ public function getSerializedData(); @@ -99,7 +99,7 @@ public function getSerializedData(); * * @param string $serializedData * @return $this - * @since 100.2.0 + * @since 102.0.2 */ public function setSerializedData($serializedData); @@ -107,7 +107,7 @@ public function setSerializedData($serializedData); * Result serialized Data * * @return string - * @since 100.3.0 + * @since 102.0.2 */ public function getResultSerializedData(); @@ -116,7 +116,7 @@ public function getResultSerializedData(); * * @param string $resultSerializedData * @return $this - * @since 100.3.0 + * @since 102.0.2 */ public function setResultSerializedData($resultSerializedData); @@ -126,7 +126,7 @@ public function setResultSerializedData($resultSerializedData); * OPEN | COMPLETE | RETRIABLY_FAILED | NOT_RETRIABLY_FAILED * * @return int - * @since 100.2.0 + * @since 102.0.2 */ public function getStatus(); @@ -135,7 +135,7 @@ public function getStatus(); * * @param int $status * @return $this - * @since 100.2.0 + * @since 102.0.2 */ public function setStatus($status); @@ -143,7 +143,7 @@ public function setStatus($status); * Get result message * * @return string - * @since 100.2.0 + * @since 102.0.2 */ public function getResultMessage(); @@ -152,7 +152,7 @@ public function getResultMessage(); * * @param string $resultMessage * @return $this - * @since 100.2.0 + * @since 102.0.2 */ public function setResultMessage($resultMessage); @@ -160,7 +160,7 @@ public function setResultMessage($resultMessage); * Get error code * * @return int - * @since 100.2.0 + * @since 102.0.2 */ public function getErrorCode(); @@ -169,7 +169,7 @@ public function getErrorCode(); * * @param int $errorCode * @return $this - * @since 100.2.0 + * @since 102.0.2 */ public function setErrorCode($errorCode); } diff --git a/lib/internal/Magento/Framework/Bulk/OperationManagementInterface.php b/lib/internal/Magento/Framework/Bulk/OperationManagementInterface.php index e86d3ca8c1624..c0f1124439837 100644 --- a/lib/internal/Magento/Framework/Bulk/OperationManagementInterface.php +++ b/lib/internal/Magento/Framework/Bulk/OperationManagementInterface.php @@ -9,7 +9,7 @@ /** * Interface OperationManagementInterface * @api - * @since 100.2.0 + * @since 102.0.2 */ interface OperationManagementInterface { @@ -22,7 +22,7 @@ interface OperationManagementInterface * @param string|null $message property to update Result Message * @param string|null $data serialized data object of failed message * @return boolean - * @since 100.2.0 + * @since 102.0.2 */ public function changeOperationStatus($operationId, $status, $errorCode = null, $message = null, $data = null); } diff --git a/lib/internal/Magento/Framework/Bulk/composer.json b/lib/internal/Magento/Framework/Bulk/composer.json index db21ec9207770..a5f06d99c2ddc 100644 --- a/lib/internal/Magento/Framework/Bulk/composer.json +++ b/lib/internal/Magento/Framework/Bulk/composer.json @@ -10,7 +10,7 @@ "AFL-3.0" ], "require": { - "magento/framework": "*", + "magento/framework": "102.0.*", "php": "~7.1.3||~7.2.0" }, "autoload": { @@ -20,5 +20,6 @@ "files": [ "registration.php" ] - } + }, + "version": "100.3.2" } diff --git a/lib/internal/Magento/Framework/Cache/Frontend/Decorator/TagScope.php b/lib/internal/Magento/Framework/Cache/Frontend/Decorator/TagScope.php index c837544a75f0f..1c5f04364b087 100644 --- a/lib/internal/Magento/Framework/Cache/Frontend/Decorator/TagScope.php +++ b/lib/internal/Magento/Framework/Cache/Frontend/Decorator/TagScope.php @@ -10,6 +10,7 @@ * Cache frontend decorator that limits the cleaning scope within a tag * * @api + * @since 100.0.2 */ class TagScope extends \Magento\Framework\Cache\Frontend\Decorator\Bare { diff --git a/lib/internal/Magento/Framework/Cache/FrontendInterface.php b/lib/internal/Magento/Framework/Cache/FrontendInterface.php index d81d7fbe1c7cc..c57c97238bddd 100644 --- a/lib/internal/Magento/Framework/Cache/FrontendInterface.php +++ b/lib/internal/Magento/Framework/Cache/FrontendInterface.php @@ -9,6 +9,7 @@ * Interface of a cache frontend - an ultimate publicly available interface to an actual cache storage * * @api + * @since 100.0.2 */ interface FrontendInterface { diff --git a/lib/internal/Magento/Framework/Code/Generator/DefinedClasses.php b/lib/internal/Magento/Framework/Code/Generator/DefinedClasses.php index 363c6f59b17ea..e0ae472ba20cb 100644 --- a/lib/internal/Magento/Framework/Code/Generator/DefinedClasses.php +++ b/lib/internal/Magento/Framework/Code/Generator/DefinedClasses.php @@ -40,7 +40,7 @@ public function isClassLoadableFromMemory($className) * * @param string $className * @return bool - * @deprecated + * @deprecated 102.0.0 */ public function isClassLoadableFromDisc($className) { diff --git a/lib/internal/Magento/Framework/Code/NameBuilder.php b/lib/internal/Magento/Framework/Code/NameBuilder.php index 993235054e490..8ceac1c569766 100644 --- a/lib/internal/Magento/Framework/Code/NameBuilder.php +++ b/lib/internal/Magento/Framework/Code/NameBuilder.php @@ -9,6 +9,7 @@ * Builds namespace with classname out of the parts. * * @api + * @since 100.0.2 */ class NameBuilder { diff --git a/lib/internal/Magento/Framework/Code/Reader/SourceArgumentsReader.php b/lib/internal/Magento/Framework/Code/Reader/SourceArgumentsReader.php index 31243f6ad98f9..840cc2a3e943c 100644 --- a/lib/internal/Magento/Framework/Code/Reader/SourceArgumentsReader.php +++ b/lib/internal/Magento/Framework/Code/Reader/SourceArgumentsReader.php @@ -87,7 +87,7 @@ public function getConstructorArgumentTypes( * @param string $argument * @param array $availableNamespaces * @return string - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @see getConstructorArgumentTypes */ protected function resolveNamespaces($argument, $availableNamespaces) @@ -102,7 +102,7 @@ protected function resolveNamespaces($argument, $availableNamespaces) * @param string $token * @return string * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ protected function removeToken($argument, $token) { @@ -118,7 +118,7 @@ protected function removeToken($argument, $token) * * @param array $file * @return array - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @see getConstructorArgumentTypes */ protected function getImportedNamespaces(array $file) diff --git a/lib/internal/Magento/Framework/Communication/Config/Reader/XmlReader/Converter.php b/lib/internal/Magento/Framework/Communication/Config/Reader/XmlReader/Converter.php index b79ba49a24ddd..3f69c3258d0b9 100644 --- a/lib/internal/Magento/Framework/Communication/Config/Reader/XmlReader/Converter.php +++ b/lib/internal/Magento/Framework/Communication/Config/Reader/XmlReader/Converter.php @@ -62,7 +62,7 @@ public function __construct( * The getter function to get the new ConfigParser dependency. * * @return \Magento\Framework\Communication\Config\ConfigParser - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getConfigParser() { diff --git a/lib/internal/Magento/Framework/Component/ComponentRegistrar.php b/lib/internal/Magento/Framework/Component/ComponentRegistrar.php index 0a54d770300e8..a21e2b024599e 100644 --- a/lib/internal/Magento/Framework/Component/ComponentRegistrar.php +++ b/lib/internal/Magento/Framework/Component/ComponentRegistrar.php @@ -11,6 +11,7 @@ * @author Josh Di Fabio <joshdifabio@gmail.com> * * @api + * @since 100.0.2 */ class ComponentRegistrar implements ComponentRegistrarInterface { diff --git a/lib/internal/Magento/Framework/Config/AbstractXml.php b/lib/internal/Magento/Framework/Config/AbstractXml.php index caead98147bf5..35ce8348c4fc0 100644 --- a/lib/internal/Magento/Framework/Config/AbstractXml.php +++ b/lib/internal/Magento/Framework/Config/AbstractXml.php @@ -11,6 +11,7 @@ /** * @api + * @since 100.0.2 */ abstract class AbstractXml { diff --git a/lib/internal/Magento/Framework/Config/CacheInterface.php b/lib/internal/Magento/Framework/Config/CacheInterface.php index 7064dcfca0547..5d28cf7563a80 100644 --- a/lib/internal/Magento/Framework/Config/CacheInterface.php +++ b/lib/internal/Magento/Framework/Config/CacheInterface.php @@ -11,6 +11,7 @@ * Config cache interface. * * @api + * @since 100.0.2 */ interface CacheInterface extends \Magento\Framework\Cache\FrontendInterface { diff --git a/lib/internal/Magento/Framework/Config/Composer/Package.php b/lib/internal/Magento/Framework/Config/Composer/Package.php index a8ff6ac724c3f..bc0b195297980 100644 --- a/lib/internal/Magento/Framework/Config/Composer/Package.php +++ b/lib/internal/Magento/Framework/Config/Composer/Package.php @@ -9,6 +9,7 @@ /** * A model that represents composer package * @api + * @since 100.0.2 */ class Package { diff --git a/lib/internal/Magento/Framework/Config/ConfigOptionsListConstants.php b/lib/internal/Magento/Framework/Config/ConfigOptionsListConstants.php index 6bdb74ef7b89a..3d6c99b0adc0a 100644 --- a/lib/internal/Magento/Framework/Config/ConfigOptionsListConstants.php +++ b/lib/internal/Magento/Framework/Config/ConfigOptionsListConstants.php @@ -11,6 +11,7 @@ /** * Deployment configuration options constant storage * @api + * @since 100.0.2 */ class ConfigOptionsListConstants { diff --git a/lib/internal/Magento/Framework/Config/Converter/Dom/Flat.php b/lib/internal/Magento/Framework/Config/Converter/Dom/Flat.php index 7f64705a6bde0..d989f03b44f4d 100644 --- a/lib/internal/Magento/Framework/Config/Converter/Dom/Flat.php +++ b/lib/internal/Magento/Framework/Config/Converter/Dom/Flat.php @@ -11,6 +11,7 @@ * Universal converter of any XML data to an array representation with no data loss * * @api + * @since 100.0.2 */ class Flat { diff --git a/lib/internal/Magento/Framework/Config/ConverterInterface.php b/lib/internal/Magento/Framework/Config/ConverterInterface.php index 4e299e31fb206..ed4b811253c40 100644 --- a/lib/internal/Magento/Framework/Config/ConverterInterface.php +++ b/lib/internal/Magento/Framework/Config/ConverterInterface.php @@ -9,6 +9,7 @@ * Config DOM-to-array converter interface. * * @api + * @since 100.0.2 */ interface ConverterInterface { diff --git a/lib/internal/Magento/Framework/Config/Data.php b/lib/internal/Magento/Framework/Config/Data.php index 2ae8eb378064a..cc11b32c410ba 100644 --- a/lib/internal/Magento/Framework/Config/Data.php +++ b/lib/internal/Magento/Framework/Config/Data.php @@ -13,6 +13,7 @@ * * @SuppressWarnings(PHPMD.NumberOfChildren) * @api + * @since 100.0.2 */ class Data implements \Magento\Framework\Config\DataInterface { diff --git a/lib/internal/Magento/Framework/Config/Data/ConfigData.php b/lib/internal/Magento/Framework/Config/Data/ConfigData.php index b6ea96e36ec56..1c3d2524efa57 100644 --- a/lib/internal/Magento/Framework/Config/Data/ConfigData.php +++ b/lib/internal/Magento/Framework/Config/Data/ConfigData.php @@ -9,6 +9,7 @@ /** * Data transfer object to store config data for config options * @api + * @since 100.0.2 */ class ConfigData { diff --git a/lib/internal/Magento/Framework/Config/Data/Scoped.php b/lib/internal/Magento/Framework/Config/Data/Scoped.php index 9806d89fd5737..e453e8397a9a5 100644 --- a/lib/internal/Magento/Framework/Config/Data/Scoped.php +++ b/lib/internal/Magento/Framework/Config/Data/Scoped.php @@ -11,6 +11,7 @@ /** * Provides scoped configuration * @api + * @since 100.0.2 */ class Scoped extends \Magento\Framework\Config\Data { diff --git a/lib/internal/Magento/Framework/Config/DataInterface.php b/lib/internal/Magento/Framework/Config/DataInterface.php index f0fbedae5a500..0418915a2dadb 100644 --- a/lib/internal/Magento/Framework/Config/DataInterface.php +++ b/lib/internal/Magento/Framework/Config/DataInterface.php @@ -9,6 +9,7 @@ * Config data interface. * * @api + * @since 100.0.2 */ interface DataInterface { diff --git a/lib/internal/Magento/Framework/Config/Dom.php b/lib/internal/Magento/Framework/Config/Dom.php index e36f9615db26b..227eec631a8fe 100644 --- a/lib/internal/Magento/Framework/Config/Dom.php +++ b/lib/internal/Magento/Framework/Config/Dom.php @@ -18,6 +18,7 @@ * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @api + * @since 100.0.2 */ class Dom { @@ -83,7 +84,6 @@ class Dom /** * @var array - * @since 2.2.0 */ private static $resolvedSchemaPaths = []; @@ -122,7 +122,6 @@ public function __construct( * * @param string $errorFormat * @return string[] - * @since 2.1.0 */ private static function getXmlErrors($errorFormat) { diff --git a/lib/internal/Magento/Framework/Config/Dom/UrnResolver.php b/lib/internal/Magento/Framework/Config/Dom/UrnResolver.php index 41c83c940ca04..44ebe82422aba 100644 --- a/lib/internal/Magento/Framework/Config/Dom/UrnResolver.php +++ b/lib/internal/Magento/Framework/Config/Dom/UrnResolver.php @@ -16,6 +16,7 @@ /** * @api + * @since 100.0.2 */ class UrnResolver { diff --git a/lib/internal/Magento/Framework/Config/Dom/ValidationException.php b/lib/internal/Magento/Framework/Config/Dom/ValidationException.php index 3c74a80bdfab1..1c77e510841eb 100644 --- a/lib/internal/Magento/Framework/Config/Dom/ValidationException.php +++ b/lib/internal/Magento/Framework/Config/Dom/ValidationException.php @@ -11,6 +11,7 @@ /** * @api + * @since 100.0.2 */ class ValidationException extends \InvalidArgumentException { diff --git a/lib/internal/Magento/Framework/Config/Dom/ValidationSchemaException.php b/lib/internal/Magento/Framework/Config/Dom/ValidationSchemaException.php index d65cfa9a2ec9b..81548c31f6ba3 100644 --- a/lib/internal/Magento/Framework/Config/Dom/ValidationSchemaException.php +++ b/lib/internal/Magento/Framework/Config/Dom/ValidationSchemaException.php @@ -13,7 +13,7 @@ /** * @api - * @since 100.2.0 + * @since 101.0.0 */ class ValidationSchemaException extends LocalizedException { diff --git a/lib/internal/Magento/Framework/Config/DomFactory.php b/lib/internal/Magento/Framework/Config/DomFactory.php index 542ebd642c71d..f079674a50b9e 100644 --- a/lib/internal/Magento/Framework/Config/DomFactory.php +++ b/lib/internal/Magento/Framework/Config/DomFactory.php @@ -8,6 +8,7 @@ /** * Magento configuration DOM factory * @api + * @since 100.0.2 */ class DomFactory { diff --git a/lib/internal/Magento/Framework/Config/File/ConfigFilePool.php b/lib/internal/Magento/Framework/Config/File/ConfigFilePool.php index ffc32a300ccfe..c9fa5e3ddc606 100644 --- a/lib/internal/Magento/Framework/Config/File/ConfigFilePool.php +++ b/lib/internal/Magento/Framework/Config/File/ConfigFilePool.php @@ -9,6 +9,7 @@ /** * Stores file key to file name config * @api + * @since 100.0.2 */ class ConfigFilePool { @@ -39,7 +40,7 @@ class ConfigFilePool * Initial files for configuration * * @var array - * @deprecated 100.2.0 Magento does not support custom config file pools since 2.2.0 version + * @deprecated 101.0.0 Magento does not support custom config file pools since 2.2.0 version */ private $initialConfigFiles = [ self::DIST => [ @@ -91,7 +92,7 @@ public function getPath($fileKey) * Returns application initial config files. * * @return array - * @deprecated 100.2.0 Magento does not support custom config file pools since 2.2.0 version + * @deprecated 101.0.0 Magento does not support custom config file pools since 2.2.0 version * @since 100.1.3 */ public function getInitialFilePools() @@ -104,7 +105,7 @@ public function getInitialFilePools() * * @param string $pool * @return array - * @deprecated 100.2.0 Magento does not support custom config file pools since 2.2.0 version + * @deprecated 101.0.0 Magento does not support custom config file pools since 2.2.0 version * @since 100.1.3 */ public function getPathsByPool($pool) diff --git a/lib/internal/Magento/Framework/Config/FileIterator.php b/lib/internal/Magento/Framework/Config/FileIterator.php index 0de1d8ae528f9..7cf1f34b6deb6 100644 --- a/lib/internal/Magento/Framework/Config/FileIterator.php +++ b/lib/internal/Magento/Framework/Config/FileIterator.php @@ -12,6 +12,7 @@ /** * Class FileIterator * @api + * @since 100.0.2 */ class FileIterator implements \Iterator, \Countable { diff --git a/lib/internal/Magento/Framework/Config/FileIteratorFactory.php b/lib/internal/Magento/Framework/Config/FileIteratorFactory.php index 15d0edd57ded8..337a6110096b9 100644 --- a/lib/internal/Magento/Framework/Config/FileIteratorFactory.php +++ b/lib/internal/Magento/Framework/Config/FileIteratorFactory.php @@ -8,6 +8,7 @@ /** * @api + * @since 100.0.2 */ class FileIteratorFactory { diff --git a/lib/internal/Magento/Framework/Config/FileResolver.php b/lib/internal/Magento/Framework/Config/FileResolver.php index 30967a8fa0014..959537d76ab91 100644 --- a/lib/internal/Magento/Framework/Config/FileResolver.php +++ b/lib/internal/Magento/Framework/Config/FileResolver.php @@ -55,7 +55,7 @@ class FileResolver implements \Magento\Framework\Config\FileResolverInterface, D /** * @var DirectoryList - * @deprecated Unused class property + * @deprecated 102.0.0 Unused class property */ private $directoryList; diff --git a/lib/internal/Magento/Framework/Config/FileResolverInterface.php b/lib/internal/Magento/Framework/Config/FileResolverInterface.php index a83f1da03e123..95bf7f5249561 100644 --- a/lib/internal/Magento/Framework/Config/FileResolverInterface.php +++ b/lib/internal/Magento/Framework/Config/FileResolverInterface.php @@ -9,6 +9,7 @@ * File resolver interface. * * @api + * @since 100.0.2 */ interface FileResolverInterface { diff --git a/lib/internal/Magento/Framework/Config/Reader/Filesystem.php b/lib/internal/Magento/Framework/Config/Reader/Filesystem.php index e2008b95c3b61..b05269b33689d 100644 --- a/lib/internal/Magento/Framework/Config/Reader/Filesystem.php +++ b/lib/internal/Magento/Framework/Config/Reader/Filesystem.php @@ -12,6 +12,7 @@ /** * @SuppressWarnings(PHPMD.NumberOfChildren) * @api + * @since 100.0.2 */ class Filesystem implements \Magento\Framework\Config\ReaderInterface { diff --git a/lib/internal/Magento/Framework/Config/ReaderInterface.php b/lib/internal/Magento/Framework/Config/ReaderInterface.php index d85ed2030a262..97883d21489b5 100644 --- a/lib/internal/Magento/Framework/Config/ReaderInterface.php +++ b/lib/internal/Magento/Framework/Config/ReaderInterface.php @@ -11,6 +11,7 @@ * Config reader interface. * * @api + * @since 100.0.2 */ interface ReaderInterface { diff --git a/lib/internal/Magento/Framework/Config/SchemaLocatorInterface.php b/lib/internal/Magento/Framework/Config/SchemaLocatorInterface.php index 242f3d62a5f2a..985614051b665 100644 --- a/lib/internal/Magento/Framework/Config/SchemaLocatorInterface.php +++ b/lib/internal/Magento/Framework/Config/SchemaLocatorInterface.php @@ -11,6 +11,7 @@ * Config schema locator interface. * * @api + * @since 100.0.2 */ interface SchemaLocatorInterface { diff --git a/lib/internal/Magento/Framework/Config/ScopeInterface.php b/lib/internal/Magento/Framework/Config/ScopeInterface.php index 052d97eebc166..bd6bc92cdea48 100644 --- a/lib/internal/Magento/Framework/Config/ScopeInterface.php +++ b/lib/internal/Magento/Framework/Config/ScopeInterface.php @@ -9,6 +9,7 @@ * Config scope interface. * * @api + * @since 100.0.2 */ interface ScopeInterface { diff --git a/lib/internal/Magento/Framework/Config/ScopeListInterface.php b/lib/internal/Magento/Framework/Config/ScopeListInterface.php index c45938db93d41..47526c8ca0a86 100644 --- a/lib/internal/Magento/Framework/Config/ScopeListInterface.php +++ b/lib/internal/Magento/Framework/Config/ScopeListInterface.php @@ -9,6 +9,7 @@ * Config scope list interface. * * @api + * @since 100.0.2 */ interface ScopeListInterface { diff --git a/lib/internal/Magento/Framework/Config/Test/Unit/ValidationState/ConfigurableTest.php b/lib/internal/Magento/Framework/Config/Test/Unit/ValidationState/ConfigurableTest.php new file mode 100644 index 0000000000000..cbd9e43632489 --- /dev/null +++ b/lib/internal/Magento/Framework/Config/Test/Unit/ValidationState/ConfigurableTest.php @@ -0,0 +1,30 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +declare(strict_types=1); + +namespace Magento\Framework\Config\Test\Unit\ValidationState; + +use Magento\Framework\Config\ValidationState\Configurable; +use PHPUnit\Framework\TestCase; + +/** + * Tests for configurable validation state + */ +class ConfigurableTest extends TestCase +{ + public function testTrue() + { + $state = new Configurable(true); + self::assertTrue($state->isValidationRequired()); + } + + public function testFalse() + { + $state = new Configurable(false); + self::assertFalse($state->isValidationRequired()); + } +} diff --git a/lib/internal/Magento/Framework/Config/Theme.php b/lib/internal/Magento/Framework/Config/Theme.php index 812e61483b77b..a5e216d335ae4 100644 --- a/lib/internal/Magento/Framework/Config/Theme.php +++ b/lib/internal/Magento/Framework/Config/Theme.php @@ -11,6 +11,7 @@ /** * @api + * @since 100.0.2 */ class Theme { diff --git a/lib/internal/Magento/Framework/Config/ValidationState/Configurable.php b/lib/internal/Magento/Framework/Config/ValidationState/Configurable.php new file mode 100644 index 0000000000000..c996b2a3e135d --- /dev/null +++ b/lib/internal/Magento/Framework/Config/ValidationState/Configurable.php @@ -0,0 +1,38 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +declare(strict_types=1); + +namespace Magento\Framework\Config\ValidationState; + +use Magento\Framework\Config\ValidationStateInterface; + +/** + * A configurable validation state + */ +class Configurable implements ValidationStateInterface +{ + /** + * @var bool + */ + private $required; + + /** + * @param bool $required + */ + public function __construct(bool $required) + { + $this->required = $required; + } + + /** + * @inheritdoc + */ + public function isValidationRequired(): bool + { + return $this->required; + } +} diff --git a/lib/internal/Magento/Framework/Config/ValidationStateInterface.php b/lib/internal/Magento/Framework/Config/ValidationStateInterface.php index 20869d20b9dc1..6d1199adda5e2 100644 --- a/lib/internal/Magento/Framework/Config/ValidationStateInterface.php +++ b/lib/internal/Magento/Framework/Config/ValidationStateInterface.php @@ -9,6 +9,7 @@ * Config validation state interface. * * @api + * @since 100.0.2 */ interface ValidationStateInterface { diff --git a/lib/internal/Magento/Framework/Config/View.php b/lib/internal/Magento/Framework/Config/View.php index 05863caeec2b6..1f15c71e5ddce 100644 --- a/lib/internal/Magento/Framework/Config/View.php +++ b/lib/internal/Magento/Framework/Config/View.php @@ -9,6 +9,7 @@ * View configuration files handler * * @api + * @since 100.0.2 */ class View extends \Magento\Framework\Config\Reader\Filesystem { diff --git a/lib/internal/Magento/Framework/Console/CommandListInterface.php b/lib/internal/Magento/Framework/Console/CommandListInterface.php index 1547b5b671bfd..104d22cd735bf 100644 --- a/lib/internal/Magento/Framework/Console/CommandListInterface.php +++ b/lib/internal/Magento/Framework/Console/CommandListInterface.php @@ -8,6 +8,7 @@ /** * Contains a list of Console commands * @api + * @since 100.0.2 */ interface CommandListInterface { diff --git a/lib/internal/Magento/Framework/Controller/Result/Json.php b/lib/internal/Magento/Framework/Controller/Result/Json.php index f46d0875c4250..a40cbf8f78200 100644 --- a/lib/internal/Magento/Framework/Controller/Result/Json.php +++ b/lib/internal/Magento/Framework/Controller/Result/Json.php @@ -15,6 +15,7 @@ * Actual for controller actions that serve ajax requests * * @api + * @since 100.0.2 */ class Json extends AbstractResult { diff --git a/lib/internal/Magento/Framework/Controller/Result/Redirect.php b/lib/internal/Magento/Framework/Controller/Result/Redirect.php index 120b18d873cff..02daae818b120 100644 --- a/lib/internal/Magento/Framework/Controller/Result/Redirect.php +++ b/lib/internal/Magento/Framework/Controller/Result/Redirect.php @@ -17,6 +17,7 @@ * so this is a result object that implements all necessary properties of a HTTP redirect * * @api + * @since 100.0.2 */ class Redirect extends AbstractResult { diff --git a/lib/internal/Magento/Framework/Controller/Result/RedirectFactory.php b/lib/internal/Magento/Framework/Controller/Result/RedirectFactory.php index 0e622b1cc5e1a..797fcea4186dc 100644 --- a/lib/internal/Magento/Framework/Controller/Result/RedirectFactory.php +++ b/lib/internal/Magento/Framework/Controller/Result/RedirectFactory.php @@ -9,6 +9,7 @@ /** * @api + * @since 100.0.2 */ class RedirectFactory { diff --git a/lib/internal/Magento/Framework/Controller/ResultFactory.php b/lib/internal/Magento/Framework/Controller/ResultFactory.php index bb7ab1c8b6c85..88efcdf8d3386 100644 --- a/lib/internal/Magento/Framework/Controller/ResultFactory.php +++ b/lib/internal/Magento/Framework/Controller/ResultFactory.php @@ -12,6 +12,7 @@ * Result Factory * * @api + * @since 100.0.2 */ class ResultFactory { diff --git a/lib/internal/Magento/Framework/Controller/ResultInterface.php b/lib/internal/Magento/Framework/Controller/ResultInterface.php index f20f32078a9b5..3fe42ae07f566 100644 --- a/lib/internal/Magento/Framework/Controller/ResultInterface.php +++ b/lib/internal/Magento/Framework/Controller/ResultInterface.php @@ -14,6 +14,7 @@ * and be able to set it to the HTTP response * * @api + * @since 100.0.2 */ interface ResultInterface { diff --git a/lib/internal/Magento/Framework/Css/PreProcessor/Instruction/MagentoImport.php b/lib/internal/Magento/Framework/Css/PreProcessor/Instruction/MagentoImport.php index db30eb4844edb..4187650938bf9 100644 --- a/lib/internal/Magento/Framework/Css/PreProcessor/Instruction/MagentoImport.php +++ b/lib/internal/Magento/Framework/Css/PreProcessor/Instruction/MagentoImport.php @@ -48,7 +48,7 @@ class MagentoImport implements PreProcessorInterface /** * @var \Magento\Framework\View\Design\Theme\ListInterface - * @deprecated 100.1.1 + * @deprecated 100.0.2 */ protected $themeList; diff --git a/lib/internal/Magento/Framework/CurrencyInterface.php b/lib/internal/Magento/Framework/CurrencyInterface.php index ca042bda849aa..8ddaae5459c78 100644 --- a/lib/internal/Magento/Framework/CurrencyInterface.php +++ b/lib/internal/Magento/Framework/CurrencyInterface.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ interface CurrencyInterface { diff --git a/lib/internal/Magento/Framework/DB/Adapter/AdapterInterface.php b/lib/internal/Magento/Framework/DB/Adapter/AdapterInterface.php index f654fd263f605..acfd18370a732 100644 --- a/lib/internal/Magento/Framework/DB/Adapter/AdapterInterface.php +++ b/lib/internal/Magento/Framework/DB/Adapter/AdapterInterface.php @@ -12,6 +12,7 @@ * Magento Database Adapter Interface * * @api + * @since 100.0.2 */ interface AdapterInterface { diff --git a/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php b/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php index edec7e135ae9f..685d8e995bdbf 100644 --- a/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php +++ b/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php @@ -38,6 +38,7 @@ * @SuppressWarnings(PHPMD.TooManyFields) * @SuppressWarnings(PHPMD.ExcessiveClassComplexity) * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @since 100.0.2 */ class Mysql extends \Zend_Db_Adapter_Pdo_Mysql implements AdapterInterface { @@ -630,7 +631,7 @@ public function query($sql, $bind = []) * @throws \Zend_Db_Adapter_Exception To re-throw \PDOException. * @throws LocalizedException In case multiple queries are attempted at once, to protect from SQL injection * @SuppressWarnings(PHPMD.CyclomaticComplexity) - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ public function multiQuery($sql, $bind = []) { @@ -3776,7 +3777,7 @@ protected function _getInsertSqlQuery($tableName, array $columns, array $values, * @param array $columns * @param array $values * @return string - * @since 100.2.0 + * @since 101.0.0 */ protected function _getReplaceSqlQuery($tableName, array $columns, array $values) { @@ -4022,6 +4023,7 @@ public function getAutoIncrementField($tableName, $schemaName = null) * Required to listen all DDL changes done by 3-rd party modules with old Install/UpgradeSchema scripts. * * @return SchemaListener + * @since 102.0.0 */ public function getSchemaListener() { diff --git a/lib/internal/Magento/Framework/DB/Ddl/Table.php b/lib/internal/Magento/Framework/DB/Ddl/Table.php index 9d343806d66b3..e812b49f49d23 100644 --- a/lib/internal/Magento/Framework/DB/Ddl/Table.php +++ b/lib/internal/Magento/Framework/DB/Ddl/Table.php @@ -11,6 +11,7 @@ * Data Definition for table * * @api + * @since 100.0.2 */ class Table { diff --git a/lib/internal/Magento/Framework/DB/Ddl/Trigger.php b/lib/internal/Magento/Framework/DB/Ddl/Trigger.php index 94427c3d9c39d..1fd58be46d6c7 100644 --- a/lib/internal/Magento/Framework/DB/Ddl/Trigger.php +++ b/lib/internal/Magento/Framework/DB/Ddl/Trigger.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ class Trigger { diff --git a/lib/internal/Magento/Framework/DB/Query/BatchRangeIterator.php b/lib/internal/Magento/Framework/DB/Query/BatchRangeIterator.php index e2ef4ae530a9d..ac76804fcf5ed 100644 --- a/lib/internal/Magento/Framework/DB/Query/BatchRangeIterator.php +++ b/lib/internal/Magento/Framework/DB/Query/BatchRangeIterator.php @@ -35,7 +35,7 @@ class BatchRangeIterator implements BatchIteratorInterface /** * @var string - * @deprecated unused class property + * @deprecated 102.0.0 unused class property */ private $rangeFieldAlias; diff --git a/lib/internal/Magento/Framework/DB/Query/Generator.php b/lib/internal/Magento/Framework/DB/Query/Generator.php index 0538aec760bd7..af119b16780ee 100644 --- a/lib/internal/Magento/Framework/DB/Query/Generator.php +++ b/lib/internal/Magento/Framework/DB/Query/Generator.php @@ -134,7 +134,7 @@ public function generate( * @return BatchIteratorInterface * @throws LocalizedException Throws if incorrect "FROM" part in \Select exists * @see \Magento\Framework\DB\Query\Generator - * @deprecated 100.2.0 This is a temporary solution which is made due to the fact that we + * @deprecated 100.1.8 This is a temporary solution which is made due to the fact that we * can't change method generate() in version 2.1 due to a backwards incompatibility. * In 2.2 version need to use original method generate() with additional parameter. */ diff --git a/lib/internal/Magento/Framework/DB/Select.php b/lib/internal/Magento/Framework/DB/Select.php index 246e31db3cbbc..2893a5b0eb0bb 100644 --- a/lib/internal/Magento/Framework/DB/Select.php +++ b/lib/internal/Magento/Framework/DB/Select.php @@ -28,6 +28,7 @@ * @method \Magento\Framework\DB\Select distinct($flag = true) * @method \Magento\Framework\DB\Select reset($part = null) * @method \Magento\Framework\DB\Select columns($cols = '*', $correlationName = null) + * @since 100.0.2 */ class Select extends \Zend_Db_Select { diff --git a/lib/internal/Magento/Framework/DB/SelectFactory.php b/lib/internal/Magento/Framework/DB/SelectFactory.php index 3c64e78839c4d..306e649addff8 100644 --- a/lib/internal/Magento/Framework/DB/SelectFactory.php +++ b/lib/internal/Magento/Framework/DB/SelectFactory.php @@ -32,7 +32,6 @@ class SelectFactory /** * @param SelectRenderer $selectRenderer * @param array $parts - * @since 100.1.0 */ public function __construct( SelectRenderer $selectRenderer, diff --git a/lib/internal/Magento/Framework/DB/Sql/ColumnValueExpression.php b/lib/internal/Magento/Framework/DB/Sql/ColumnValueExpression.php index cf033dbe297f2..b51da7c47936b 100644 --- a/lib/internal/Magento/Framework/DB/Sql/ColumnValueExpression.php +++ b/lib/internal/Magento/Framework/DB/Sql/ColumnValueExpression.php @@ -10,7 +10,7 @@ * * Just a wrapper over Expression for implementing the specific type of expression. * @api - * @since 100.2.0 + * @since 100.1.8 */ class ColumnValueExpression extends Expression { diff --git a/lib/internal/Magento/Framework/DB/TemporaryTableService.php b/lib/internal/Magento/Framework/DB/TemporaryTableService.php index 881ebbe5c85ad..750b65217e50f 100644 --- a/lib/internal/Magento/Framework/DB/TemporaryTableService.php +++ b/lib/internal/Magento/Framework/DB/TemporaryTableService.php @@ -12,7 +12,7 @@ * Use this class to create an index with that you want to query later for quick data access * * @api - * @since 100.2.0 + * @since 100.1.8 */ class TemporaryTableService { @@ -43,7 +43,6 @@ class TemporaryTableService * @param \Magento\Framework\Math\Random $random * @param string[] $allowedIndexMethods * @param string[] $allowedEngines - * @since 100.2.0 */ public function __construct( \Magento\Framework\Math\Random $random, @@ -79,7 +78,7 @@ public function __construct( * @param string $dbEngine * @return string * @throws \InvalidArgumentException - * @since 100.2.0 + * @since 100.1.8 */ public function createFromSelect( Select $select, @@ -150,7 +149,7 @@ public function createFromSelect( * * @param string $name * @return bool - * @since 100.2.0 + * @since 100.1.8 */ public function dropTable($name) { diff --git a/lib/internal/Magento/Framework/DB/Tree.php b/lib/internal/Magento/Framework/DB/Tree.php index 1aeaf122131f6..6fbd014213bc8 100644 --- a/lib/internal/Magento/Framework/DB/Tree.php +++ b/lib/internal/Magento/Framework/DB/Tree.php @@ -18,7 +18,7 @@ * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * phpcs:ignoreFile * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ class Tree { @@ -82,7 +82,7 @@ class Tree * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ public function __construct($config = []) { @@ -156,7 +156,7 @@ public function __construct($config = []) * @param string $name * @return $this * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ public function setIdField($name) { @@ -170,7 +170,7 @@ public function setIdField($name) * @param string $name * @return $this * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ public function setLeftField($name) { @@ -184,7 +184,7 @@ public function setLeftField($name) * @param string $name * @return $this * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ public function setRightField($name) { @@ -198,7 +198,7 @@ public function setRightField($name) * @param string $name * @return $this * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ public function setLevelField($name) { @@ -212,7 +212,7 @@ public function setLevelField($name) * @param string $name * @return $this * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ public function setPidField($name) { @@ -226,7 +226,7 @@ public function setPidField($name) * @param string $name * @return $this * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ public function setTable($name) { @@ -237,7 +237,7 @@ public function setTable($name) /** * @return array * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ public function getKeys() { @@ -256,7 +256,7 @@ public function getKeys() * @param array $data * @return string * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ public function clear($data = []) { @@ -283,7 +283,7 @@ public function clear($data = []) * @param string|int $nodeId * @return array * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ public function getNodeInfo($nodeId) { @@ -303,7 +303,7 @@ public function getNodeInfo($nodeId) * @param array $data * @return false|string * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ public function appendChild($nodeId, $data) { @@ -371,7 +371,7 @@ public function appendChild($nodeId, $data) /** * @return array * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ public function checkNodes() { @@ -403,7 +403,7 @@ public function checkNodes() * @param string|int $nodeId * @return bool|Node|void * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ public function removeNode($nodeId) { @@ -479,7 +479,7 @@ public function removeNode($nodeId) * @SuppressWarnings(PHPMD.ExcessiveMethodLength) * @SuppressWarnings(PHPMD.UnusedFormalParameter) * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ public function moveNode($eId, $pId, $aId = 0) { @@ -815,7 +815,7 @@ public function moveNode($eId, $pId, $aId = 0) * @SuppressWarnings(PHPMD.ExcessiveMethodLength) * @SuppressWarnings(PHPMD.UnusedLocalVariable) * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ public function moveNodes($eId, $pId, $aId = 0) { @@ -1015,7 +1015,7 @@ public function moveNodes($eId, $pId, $aId = 0) * @param string $fields * @return void * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ public function addTable($tableName, $joinCondition, $fields = '*') { @@ -1026,7 +1026,7 @@ public function addTable($tableName, $joinCondition, $fields = '*') * @param Select $select * @return void * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ protected function _addExtTablesToSelect(Select &$select) { @@ -1041,7 +1041,7 @@ protected function _addExtTablesToSelect(Select &$select) * @param int $endLevel * @return NodeSet * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ public function getChildren($nodeId, $startLevel = 0, $endLevel = 0) { @@ -1088,7 +1088,7 @@ public function getChildren($nodeId, $startLevel = 0, $endLevel = 0) * @param string|int $nodeId * @return Node * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ public function getNode($nodeId) { diff --git a/lib/internal/Magento/Framework/DB/Tree/Node.php b/lib/internal/Magento/Framework/DB/Tree/Node.php index eb954a696e21e..507a09476abba 100644 --- a/lib/internal/Magento/Framework/DB/Tree/Node.php +++ b/lib/internal/Magento/Framework/DB/Tree/Node.php @@ -11,7 +11,7 @@ /** * @SuppressWarnings(PHPMD.UnusedPrivateField) * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ class Node { @@ -53,14 +53,14 @@ class Node /** * @var bool * - * @deprecated + * @deprecated 102.0.0 */ public $hasChild = false; /** * @var float|int * - * @deprecated + * @deprecated 102.0.0 */ public $numChild = 0; @@ -69,7 +69,7 @@ class Node * @param array $keys * @throws LocalizedException * - * @deprecated + * @deprecated 102.0.0 */ public function __construct($nodeData, $keys) { @@ -103,7 +103,7 @@ public function __construct($nodeData, $keys) * @param string $name * @return null|array * - * @deprecated + * @deprecated 102.0.0 */ public function getData($name) { @@ -117,7 +117,7 @@ public function getData($name) /** * @return int * - * @deprecated + * @deprecated 102.0.0 */ public function getLevel() { @@ -127,7 +127,7 @@ public function getLevel() /** * @return int * - * @deprecated + * @deprecated 102.0.0 */ public function getLeft() { @@ -137,7 +137,7 @@ public function getLeft() /** * @return int * - * @deprecated + * @deprecated 102.0.0 */ public function getRight() { @@ -147,7 +147,7 @@ public function getRight() /** * @return string|int * - * @deprecated + * @deprecated 102.0.0 */ public function getPid() { @@ -157,7 +157,7 @@ public function getPid() /** * @return string|int * - * @deprecated + * @deprecated 102.0.0 */ public function getId() { @@ -169,7 +169,7 @@ public function getId() * * @return bool * - * @deprecated + * @deprecated 102.0.0 */ public function isParent() { diff --git a/lib/internal/Magento/Framework/DB/Tree/NodeSet.php b/lib/internal/Magento/Framework/DB/Tree/NodeSet.php index 75e677b77ae45..e861a90f7cd0d 100644 --- a/lib/internal/Magento/Framework/DB/Tree/NodeSet.php +++ b/lib/internal/Magento/Framework/DB/Tree/NodeSet.php @@ -8,7 +8,7 @@ /** * TODO implements iterators * - * @deprecated Not used anymore. + * @deprecated 102.0.0 Not used anymore. */ class NodeSet implements \Iterator, \Countable { @@ -35,7 +35,7 @@ class NodeSet implements \Iterator, \Countable /** * Constructor * - * @deprecated + * @deprecated 102.0.0 */ public function __construct() { @@ -49,7 +49,7 @@ public function __construct() * @param Node $node * @return int * - * @deprecated + * @deprecated 102.0.0 */ public function addNode(Node $node) { @@ -61,7 +61,7 @@ public function addNode(Node $node) /** * @return int * - * @deprecated + * @deprecated 102.0.0 */ public function count() { @@ -71,7 +71,7 @@ public function count() /** * @return bool * - * @deprecated + * @deprecated 102.0.0 */ public function valid() { @@ -81,7 +81,7 @@ public function valid() /** * @return false|int * - * @deprecated + * @deprecated 102.0.0 */ public function next() { @@ -95,7 +95,7 @@ public function next() /** * @return int * - * @deprecated + * @deprecated 102.0.0 */ public function key() { @@ -105,7 +105,7 @@ public function key() /** * @return Node * - * @deprecated + * @deprecated 102.0.0 */ public function current() { @@ -115,7 +115,7 @@ public function current() /** * @return void * - * @deprecated + * @deprecated 102.0.0 */ public function rewind() { diff --git a/lib/internal/Magento/Framework/Data/AbstractSearchResult.php b/lib/internal/Magento/Framework/Data/AbstractSearchResult.php index f9272683005ce..05c8e39f52465 100644 --- a/lib/internal/Magento/Framework/Data/AbstractSearchResult.php +++ b/lib/internal/Magento/Framework/Data/AbstractSearchResult.php @@ -64,7 +64,7 @@ abstract class AbstractSearchResult extends AbstractDataObject implements Search /** * @var \Magento\Framework\DB\Select - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected $select; diff --git a/lib/internal/Magento/Framework/Data/Argument/InterpreterInterface.php b/lib/internal/Magento/Framework/Data/Argument/InterpreterInterface.php index 2deabdf9829ae..178efc3b23463 100644 --- a/lib/internal/Magento/Framework/Data/Argument/InterpreterInterface.php +++ b/lib/internal/Magento/Framework/Data/Argument/InterpreterInterface.php @@ -9,6 +9,7 @@ * Interface that encapsulates complexity of expression computation * * @api + * @since 100.0.2 */ interface InterpreterInterface { diff --git a/lib/internal/Magento/Framework/Data/Collection.php b/lib/internal/Magento/Framework/Data/Collection.php index 128d3d8e9fd3d..8514d82f6aa71 100644 --- a/lib/internal/Magento/Framework/Data/Collection.php +++ b/lib/internal/Magento/Framework/Data/Collection.php @@ -15,6 +15,7 @@ * TODO: Refactor use of \Magento\Framework\Option\ArrayInterface in library. * * @api + * @since 100.0.2 */ class Collection implements \IteratorAggregate, \Countable, ArrayInterface, CollectionDataSourceInterface { diff --git a/lib/internal/Magento/Framework/Data/Collection/AbstractDb.php b/lib/internal/Magento/Framework/Data/Collection/AbstractDb.php index 05529194707c7..8d54f75db0f3c 100644 --- a/lib/internal/Magento/Framework/Data/Collection/AbstractDb.php +++ b/lib/internal/Magento/Framework/Data/Collection/AbstractDb.php @@ -19,6 +19,7 @@ * phpcs:disable Magento2.Classes.AbstractApi * @api * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @since 100.0.2 */ abstract class AbstractDb extends \Magento\Framework\Data\Collection { diff --git a/lib/internal/Magento/Framework/Data/Collection/Filesystem.php b/lib/internal/Magento/Framework/Data/Collection/Filesystem.php index b2bd352ea279c..8021acbb9a886 100644 --- a/lib/internal/Magento/Framework/Data/Collection/Filesystem.php +++ b/lib/internal/Magento/Framework/Data/Collection/Filesystem.php @@ -25,6 +25,7 @@ * At least one target directory must be set * * @api + * @since 100.0.2 */ class Filesystem extends \Magento\Framework\Data\Collection { diff --git a/lib/internal/Magento/Framework/Data/Form.php b/lib/internal/Magento/Framework/Data/Form.php index abeda0c17542e..a9cdfbf5f9ae7 100644 --- a/lib/internal/Magento/Framework/Data/Form.php +++ b/lib/internal/Magento/Framework/Data/Form.php @@ -16,6 +16,7 @@ /** * @api + * @since 100.0.2 */ class Form extends \Magento\Framework\Data\Form\AbstractForm { diff --git a/lib/internal/Magento/Framework/Data/Form/Element/AbstractElement.php b/lib/internal/Magento/Framework/Data/Form/Element/AbstractElement.php index 14f4df7208b04..3a2b9a3f83b57 100644 --- a/lib/internal/Magento/Framework/Data/Form/Element/AbstractElement.php +++ b/lib/internal/Magento/Framework/Data/Form/Element/AbstractElement.php @@ -16,6 +16,7 @@ * @api * @author Magento Core Team <core@magentocommerce.com> * @SuppressWarnings(PHPMD.NumberOfChildren) + * @since 100.0.2 */ abstract class AbstractElement extends AbstractForm { diff --git a/lib/internal/Magento/Framework/Data/Form/Element/Fieldset.php b/lib/internal/Magento/Framework/Data/Form/Element/Fieldset.php index 90482ab55fc71..d2c44c0f112a6 100644 --- a/lib/internal/Magento/Framework/Data/Form/Element/Fieldset.php +++ b/lib/internal/Magento/Framework/Data/Form/Element/Fieldset.php @@ -13,6 +13,7 @@ * * @api * @author Magento Core Team <core@magentocommerce.com> + * @since 100.0.2 */ class Fieldset extends AbstractElement { diff --git a/lib/internal/Magento/Framework/Data/Form/Element/Renderer/RendererInterface.php b/lib/internal/Magento/Framework/Data/Form/Element/Renderer/RendererInterface.php index 6cd22e0f50d5e..18a0d30ba3a6d 100644 --- a/lib/internal/Magento/Framework/Data/Form/Element/Renderer/RendererInterface.php +++ b/lib/internal/Magento/Framework/Data/Form/Element/Renderer/RendererInterface.php @@ -13,6 +13,7 @@ /** * @api + * @since 100.0.2 */ interface RendererInterface { diff --git a/lib/internal/Magento/Framework/Data/Form/Element/Select.php b/lib/internal/Magento/Framework/Data/Form/Element/Select.php index d6d95ef9da63b..fad67c93046e8 100644 --- a/lib/internal/Magento/Framework/Data/Form/Element/Select.php +++ b/lib/internal/Magento/Framework/Data/Form/Element/Select.php @@ -12,6 +12,7 @@ * * @api * @author Magento Core Team <core@magentocommerce.com> + * @since 100.0.2 */ class Select extends AbstractElement { diff --git a/lib/internal/Magento/Framework/Data/Form/Filter/FilterInterface.php b/lib/internal/Magento/Framework/Data/Form/Filter/FilterInterface.php index f7205fd6946a2..a9bf479cfce05 100644 --- a/lib/internal/Magento/Framework/Data/Form/Filter/FilterInterface.php +++ b/lib/internal/Magento/Framework/Data/Form/Filter/FilterInterface.php @@ -13,6 +13,7 @@ /** * @api + * @since 100.0.2 */ interface FilterInterface { diff --git a/lib/internal/Magento/Framework/Data/Form/FormKey.php b/lib/internal/Magento/Framework/Data/Form/FormKey.php index 75b3311b4ffe9..ebeb720694492 100644 --- a/lib/internal/Magento/Framework/Data/Form/FormKey.php +++ b/lib/internal/Magento/Framework/Data/Form/FormKey.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ class FormKey { diff --git a/lib/internal/Magento/Framework/Data/Form/FormKey/Validator.php b/lib/internal/Magento/Framework/Data/Form/FormKey/Validator.php index 225ff1fd140a9..a99692ed31609 100644 --- a/lib/internal/Magento/Framework/Data/Form/FormKey/Validator.php +++ b/lib/internal/Magento/Framework/Data/Form/FormKey/Validator.php @@ -9,6 +9,7 @@ /** * @api + * @since 100.0.2 */ class Validator { diff --git a/lib/internal/Magento/Framework/Data/OptionSourceInterface.php b/lib/internal/Magento/Framework/Data/OptionSourceInterface.php index aac9a266c7957..6d0955f294072 100644 --- a/lib/internal/Magento/Framework/Data/OptionSourceInterface.php +++ b/lib/internal/Magento/Framework/Data/OptionSourceInterface.php @@ -9,6 +9,7 @@ * Source of option values in a form of value-label pairs * * @api + * @since 100.0.2 */ interface OptionSourceInterface { diff --git a/lib/internal/Magento/Framework/Data/Tree.php b/lib/internal/Magento/Framework/Data/Tree.php index b458338184885..14197eb20c00c 100644 --- a/lib/internal/Magento/Framework/Data/Tree.php +++ b/lib/internal/Magento/Framework/Data/Tree.php @@ -13,6 +13,7 @@ * * @api * @author Magento Core Team <core@magentocommerce.com> + * @since 100.0.2 */ class Tree { diff --git a/lib/internal/Magento/Framework/Data/Tree/Node.php b/lib/internal/Magento/Framework/Data/Tree/Node.php index f1901b71f21e6..ac0ac57e72969 100644 --- a/lib/internal/Magento/Framework/Data/Tree/Node.php +++ b/lib/internal/Magento/Framework/Data/Tree/Node.php @@ -13,6 +13,7 @@ * * @api * @author Magento Core Team <core@magentocommerce.com> + * @since 100.0.2 */ class Node extends \Magento\Framework\DataObject { diff --git a/lib/internal/Magento/Framework/Data/Tree/Node/Collection.php b/lib/internal/Magento/Framework/Data/Tree/Node/Collection.php index 94990c0340a83..cf6529988eb44 100644 --- a/lib/internal/Magento/Framework/Data/Tree/Node/Collection.php +++ b/lib/internal/Magento/Framework/Data/Tree/Node/Collection.php @@ -16,6 +16,7 @@ /** * @api + * @since 100.0.2 */ class Collection implements \ArrayAccess, \IteratorAggregate, \Countable { diff --git a/lib/internal/Magento/Framework/Data/Wysiwyg/ConfigProviderInterface.php b/lib/internal/Magento/Framework/Data/Wysiwyg/ConfigProviderInterface.php index dc1dabd42d9e8..07fbd302ac573 100644 --- a/lib/internal/Magento/Framework/Data/Wysiwyg/ConfigProviderInterface.php +++ b/lib/internal/Magento/Framework/Data/Wysiwyg/ConfigProviderInterface.php @@ -10,12 +10,14 @@ /** * Interface ConfigProviderInterface * @api + * @since 102.0.0 */ interface ConfigProviderInterface { /** * @param \Magento\Framework\DataObject $config * @return \Magento\Framework\DataObject + * @since 102.0.0 */ public function getConfig(\Magento\Framework\DataObject $config) : \Magento\Framework\DataObject; } diff --git a/lib/internal/Magento/Framework/DataObject.php b/lib/internal/Magento/Framework/DataObject.php index 6ecbca133e22a..11452c49fa162 100644 --- a/lib/internal/Magento/Framework/DataObject.php +++ b/lib/internal/Magento/Framework/DataObject.php @@ -10,6 +10,7 @@ * * @api * @SuppressWarnings(PHPMD.NumberOfChildren) + * @since 100.0.2 */ class DataObject implements \ArrayAccess { diff --git a/lib/internal/Magento/Framework/Encryption/Crypt.php b/lib/internal/Magento/Framework/Encryption/Crypt.php index 930cfa7a44f68..55f4d1a31f53d 100644 --- a/lib/internal/Magento/Framework/Encryption/Crypt.php +++ b/lib/internal/Magento/Framework/Encryption/Crypt.php @@ -12,7 +12,8 @@ * Class encapsulates cryptographic algorithm * * @api - * @deprecated + * @deprecated 102.0.0 + * @since 100.0.2 */ class Crypt { diff --git a/lib/internal/Magento/Framework/Encryption/EncryptorInterface.php b/lib/internal/Magento/Framework/Encryption/EncryptorInterface.php index 778cfcb897e0b..61d546daf3796 100644 --- a/lib/internal/Magento/Framework/Encryption/EncryptorInterface.php +++ b/lib/internal/Magento/Framework/Encryption/EncryptorInterface.php @@ -9,6 +9,7 @@ * Encryptor interface * * @api + * @since 100.0.2 */ interface EncryptorInterface { diff --git a/lib/internal/Magento/Framework/Encryption/Helper/Security.php b/lib/internal/Magento/Framework/Encryption/Helper/Security.php index 63884b5c7fb3e..2ccd4bd6f6381 100644 --- a/lib/internal/Magento/Framework/Encryption/Helper/Security.php +++ b/lib/internal/Magento/Framework/Encryption/Helper/Security.php @@ -12,6 +12,7 @@ * Class implements compareString from Zend\Crypt * * @api + * @since 100.0.2 */ class Security { diff --git a/lib/internal/Magento/Framework/Encryption/UrlCoder.php b/lib/internal/Magento/Framework/Encryption/UrlCoder.php index 12e3bb27b6724..f63e64bb66e6c 100644 --- a/lib/internal/Magento/Framework/Encryption/UrlCoder.php +++ b/lib/internal/Magento/Framework/Encryption/UrlCoder.php @@ -8,6 +8,7 @@ /** * @api + * @since 100.0.2 */ class UrlCoder { diff --git a/lib/internal/Magento/Framework/EntityManager/MetadataPool.php b/lib/internal/Magento/Framework/EntityManager/MetadataPool.php index dc295b97c1d28..d787daf3d1181 100644 --- a/lib/internal/Magento/Framework/EntityManager/MetadataPool.php +++ b/lib/internal/Magento/Framework/EntityManager/MetadataPool.php @@ -46,7 +46,6 @@ class MetadataPool * @param ObjectManagerInterface $objectManager * @param SequenceFactory $sequenceFactory * @param array $metadata - * @since 100.1.0 */ public function __construct( ObjectManagerInterface $objectManager, diff --git a/lib/internal/Magento/Framework/EntityManager/Operation/Create.php b/lib/internal/Magento/Framework/EntityManager/Operation/Create.php index ae9001be9e34f..a24ec39a2156d 100644 --- a/lib/internal/Magento/Framework/EntityManager/Operation/Create.php +++ b/lib/internal/Magento/Framework/EntityManager/Operation/Create.php @@ -142,7 +142,7 @@ public function execute($entity, $arguments = []) /** * @return SequenceApplier * - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getSequenceApplier() { diff --git a/lib/internal/Magento/Framework/Escaper.php b/lib/internal/Magento/Framework/Escaper.php index b12548f27bc8b..f8c039632efe2 100644 --- a/lib/internal/Magento/Framework/Escaper.php +++ b/lib/internal/Magento/Framework/Escaper.php @@ -10,6 +10,7 @@ * Magento escape methods * * @api + * @since 100.0.2 */ class Escaper { @@ -23,6 +24,11 @@ class Escaper */ private $logger; + /** + * @var \Magento\Framework\Translate\InlineInterface + */ + private $translateInline; + /** * @var string[] */ @@ -74,6 +80,7 @@ public function escapeHtml($data, $allowedTags = null) $domDocument = new \DOMDocument('1.0', 'UTF-8'); set_error_handler( function ($errorNumber, $errorString) { + // phpcs:ignore Magento2.Exceptions.DirectThrow throw new \Exception($errorString, $errorNumber); } ); @@ -83,6 +90,7 @@ function ($errorNumber, $errorString) { $domDocument->loadHTML( '<html><body id="' . $wrapperElementId . '">' . $string . '</body></html>' ); + // phpcs:disable Magento2.Exceptions.ThrowCatch } catch (\Exception $e) { restore_error_handler(); $this->getLogger()->critical($e); @@ -210,7 +218,7 @@ private function escapeAttributeValue($name, $value) * @param string $string * @param boolean $escapeSingleQuote * @return string - * @since 100.2.0 + * @since 101.0.0 */ public function escapeHtmlAttr($string, $escapeSingleQuote = true) { @@ -236,7 +244,7 @@ public function escapeUrl($string) * * @param string $string * @return string - * @since 100.2.0 + * @since 101.0.0 */ public function encodeUrlParam($string) { @@ -248,7 +256,7 @@ public function encodeUrlParam($string) * * @param string $string * @return string - * @since 100.2.0 + * @since 101.0.0 */ public function escapeJs($string) { @@ -275,7 +283,7 @@ function ($matches) { * * @param string $string * @return string - * @since 100.2.0 + * @since 101.0.0 */ public function escapeCss($string) { @@ -288,7 +296,7 @@ public function escapeCss($string) * @param string|array $data * @param string $quote * @return string|array - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ public function escapeJsQuote($data, $quote = '\'') { @@ -308,12 +316,15 @@ public function escapeJsQuote($data, $quote = '\'') * * @param string $data * @return string - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ public function escapeXssInUrl($data) { + $data = html_entity_decode((string)$data); + $this->getTranslateInline()->processResponseBody($data); + return htmlspecialchars( - $this->escapeScriptIdentifiers((string)$data), + $this->escapeScriptIdentifiers($data), ENT_COMPAT | ENT_HTML5 | ENT_HTML401, 'UTF-8', false @@ -345,7 +356,7 @@ private function escapeScriptIdentifiers(string $data): string * @param string $data * @param bool $addSlashes * @return string - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ public function escapeQuote($data, $addSlashes = false) { @@ -359,7 +370,7 @@ public function escapeQuote($data, $addSlashes = false) * Get escaper * * @return \Magento\Framework\ZendEscaper - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getEscaper() { @@ -374,7 +385,7 @@ private function getEscaper() * Get logger * * @return \Psr\Log\LoggerInterface - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getLogger() { @@ -407,4 +418,19 @@ private function filterProhibitedTags(array $allowedTags): array return $allowedTags; } + + /** + * Resolve inline translator. + * + * @return \Magento\Framework\Translate\InlineInterface + */ + private function getTranslateInline() + { + if ($this->translateInline === null) { + $this->translateInline = \Magento\Framework\App\ObjectManager::getInstance() + ->get(\Magento\Framework\Translate\InlineInterface::class); + } + + return $this->translateInline; + } } diff --git a/lib/internal/Magento/Framework/Event.php b/lib/internal/Magento/Framework/Event.php index c7b15a8eb0722..9df9c315ccad8 100644 --- a/lib/internal/Magento/Framework/Event.php +++ b/lib/internal/Magento/Framework/Event.php @@ -13,6 +13,7 @@ /** * @api + * @since 100.0.2 */ class Event extends \Magento\Framework\DataObject { diff --git a/lib/internal/Magento/Framework/Event/Observer.php b/lib/internal/Magento/Framework/Event/Observer.php index 4b5dc47795e6c..f3d954d641dfd 100644 --- a/lib/internal/Magento/Framework/Event/Observer.php +++ b/lib/internal/Magento/Framework/Event/Observer.php @@ -9,6 +9,7 @@ /** * @api + * @since 100.0.2 */ class Observer extends \Magento\Framework\DataObject { diff --git a/lib/internal/Magento/Framework/Event/Observer/Collection.php b/lib/internal/Magento/Framework/Event/Observer/Collection.php index c108d422cc9ca..595ee8f70da3a 100644 --- a/lib/internal/Magento/Framework/Event/Observer/Collection.php +++ b/lib/internal/Magento/Framework/Event/Observer/Collection.php @@ -13,6 +13,7 @@ /** * @api + * @since 100.0.2 */ class Collection { diff --git a/lib/internal/Magento/Framework/Event/ObserverInterface.php b/lib/internal/Magento/Framework/Event/ObserverInterface.php index e7c9b770ea1f5..e07de37c0e15b 100644 --- a/lib/internal/Magento/Framework/Event/ObserverInterface.php +++ b/lib/internal/Magento/Framework/Event/ObserverInterface.php @@ -11,6 +11,7 @@ * Interface \Magento\Framework\Event\ObserverInterface * * @api + * @since 100.0.2 */ interface ObserverInterface { diff --git a/lib/internal/Magento/Framework/Exception/AbstractAggregateException.php b/lib/internal/Magento/Framework/Exception/AbstractAggregateException.php index ff142c5319006..7cc968789e4e2 100644 --- a/lib/internal/Magento/Framework/Exception/AbstractAggregateException.php +++ b/lib/internal/Magento/Framework/Exception/AbstractAggregateException.php @@ -10,6 +10,7 @@ /** * @api + * @since 100.0.2 */ abstract class AbstractAggregateException extends LocalizedException implements AggregateExceptionInterface { @@ -81,6 +82,7 @@ public function addError(Phrase $phrase) /** * @param LocalizedException $exception * @return $this + * @since 101.0.6 */ public function addException(LocalizedException $exception) { diff --git a/lib/internal/Magento/Framework/Exception/AggregateExceptionInterface.php b/lib/internal/Magento/Framework/Exception/AggregateExceptionInterface.php index d7b6f6fce3f8f..d1a9846b9cc3c 100644 --- a/lib/internal/Magento/Framework/Exception/AggregateExceptionInterface.php +++ b/lib/internal/Magento/Framework/Exception/AggregateExceptionInterface.php @@ -10,6 +10,7 @@ * not mandating to inherit from AbstractAggregateException class * * @api + * @since 101.0.7 */ interface AggregateExceptionInterface { @@ -20,6 +21,7 @@ interface AggregateExceptionInterface * @see the \Magento\Framework\Webapi\Exception which receives $errors as a set of Localized Exceptions * * @return LocalizedException[] + * @since 101.0.7 */ public function getErrors(); } diff --git a/lib/internal/Magento/Framework/Exception/AlreadyExistsException.php b/lib/internal/Magento/Framework/Exception/AlreadyExistsException.php index eaef391521979..e64f147a13ea7 100644 --- a/lib/internal/Magento/Framework/Exception/AlreadyExistsException.php +++ b/lib/internal/Magento/Framework/Exception/AlreadyExistsException.php @@ -9,6 +9,7 @@ /** * @api + * @since 100.0.2 */ class AlreadyExistsException extends LocalizedException { @@ -16,7 +17,6 @@ class AlreadyExistsException extends LocalizedException * @param Phrase $phrase * @param \Exception $cause * @param int $code - * @since 100.2.0 */ public function __construct(Phrase $phrase = null, \Exception $cause = null, $code = 0) { diff --git a/lib/internal/Magento/Framework/Exception/AuthenticationException.php b/lib/internal/Magento/Framework/Exception/AuthenticationException.php index 9b20dea99ccf9..b16c1f5841c3d 100644 --- a/lib/internal/Magento/Framework/Exception/AuthenticationException.php +++ b/lib/internal/Magento/Framework/Exception/AuthenticationException.php @@ -9,6 +9,7 @@ /** * @api + * @since 100.0.2 */ class AuthenticationException extends LocalizedException { diff --git a/lib/internal/Magento/Framework/Exception/AuthorizationException.php b/lib/internal/Magento/Framework/Exception/AuthorizationException.php index ed310117d6717..9cc6b4d8094bc 100644 --- a/lib/internal/Magento/Framework/Exception/AuthorizationException.php +++ b/lib/internal/Magento/Framework/Exception/AuthorizationException.php @@ -10,6 +10,7 @@ /** * @api + * @since 100.0.2 */ class AuthorizationException extends LocalizedException { diff --git a/lib/internal/Magento/Framework/Exception/BulkException.php b/lib/internal/Magento/Framework/Exception/BulkException.php index 168e910e0d375..a7ec480341542 100644 --- a/lib/internal/Magento/Framework/Exception/BulkException.php +++ b/lib/internal/Magento/Framework/Exception/BulkException.php @@ -12,6 +12,7 @@ * Exception thrown while processing bulk of entities * * @api + * @since 101.0.7 */ class BulkException extends AbstractAggregateException { @@ -42,6 +43,7 @@ public function __construct(Phrase $phrase = null, \Exception $cause = null, $co * Add data * * @param array $data + * @since 101.0.7 */ public function addData($data) { @@ -52,6 +54,7 @@ public function addData($data) * Retrieve data * * @return array + * @since 101.0.7 */ public function getData() { diff --git a/lib/internal/Magento/Framework/Exception/CouldNotDeleteException.php b/lib/internal/Magento/Framework/Exception/CouldNotDeleteException.php index af8e4c3c0ec57..d22a9168e1d01 100644 --- a/lib/internal/Magento/Framework/Exception/CouldNotDeleteException.php +++ b/lib/internal/Magento/Framework/Exception/CouldNotDeleteException.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ class CouldNotDeleteException extends LocalizedException { diff --git a/lib/internal/Magento/Framework/Exception/CouldNotSaveException.php b/lib/internal/Magento/Framework/Exception/CouldNotSaveException.php index ea265864afd24..b0480c49d2940 100644 --- a/lib/internal/Magento/Framework/Exception/CouldNotSaveException.php +++ b/lib/internal/Magento/Framework/Exception/CouldNotSaveException.php @@ -8,6 +8,7 @@ /** * @api + * @since 100.0.2 */ class CouldNotSaveException extends AbstractAggregateException { diff --git a/lib/internal/Magento/Framework/Exception/CronException.php b/lib/internal/Magento/Framework/Exception/CronException.php index 22d23526a6558..feff3f3cb95a4 100644 --- a/lib/internal/Magento/Framework/Exception/CronException.php +++ b/lib/internal/Magento/Framework/Exception/CronException.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ class CronException extends LocalizedException { diff --git a/lib/internal/Magento/Framework/Exception/EmailNotConfirmedException.php b/lib/internal/Magento/Framework/Exception/EmailNotConfirmedException.php index 330f34fb565ce..1a114f19d731e 100644 --- a/lib/internal/Magento/Framework/Exception/EmailNotConfirmedException.php +++ b/lib/internal/Magento/Framework/Exception/EmailNotConfirmedException.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ class EmailNotConfirmedException extends AuthenticationException { diff --git a/lib/internal/Magento/Framework/Exception/FileSystemException.php b/lib/internal/Magento/Framework/Exception/FileSystemException.php index 6c85314b6f2a6..81078ae7cd31c 100644 --- a/lib/internal/Magento/Framework/Exception/FileSystemException.php +++ b/lib/internal/Magento/Framework/Exception/FileSystemException.php @@ -9,6 +9,7 @@ * Magento filesystem exception * * @api + * @since 100.0.2 */ class FileSystemException extends LocalizedException { diff --git a/lib/internal/Magento/Framework/Exception/InputException.php b/lib/internal/Magento/Framework/Exception/InputException.php index 7b1815dc0d1bb..f85baf4c9b0b9 100644 --- a/lib/internal/Magento/Framework/Exception/InputException.php +++ b/lib/internal/Magento/Framework/Exception/InputException.php @@ -12,6 +12,7 @@ * Exception to be thrown when there is an issue with the Input to a function call. * * @api + * @since 100.0.2 */ class InputException extends AbstractAggregateException { diff --git a/lib/internal/Magento/Framework/Exception/IntegrationException.php b/lib/internal/Magento/Framework/Exception/IntegrationException.php index 9adf9c740f0e2..56db6caecacf2 100644 --- a/lib/internal/Magento/Framework/Exception/IntegrationException.php +++ b/lib/internal/Magento/Framework/Exception/IntegrationException.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ class IntegrationException extends LocalizedException { diff --git a/lib/internal/Magento/Framework/Exception/InvalidEmailOrPasswordException.php b/lib/internal/Magento/Framework/Exception/InvalidEmailOrPasswordException.php index ba5b7d94f5328..38e69f0476b77 100644 --- a/lib/internal/Magento/Framework/Exception/InvalidEmailOrPasswordException.php +++ b/lib/internal/Magento/Framework/Exception/InvalidEmailOrPasswordException.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ class InvalidEmailOrPasswordException extends AuthenticationException { diff --git a/lib/internal/Magento/Framework/Exception/LocalizedException.php b/lib/internal/Magento/Framework/Exception/LocalizedException.php index 977c69db77bbc..b279fe65906a3 100644 --- a/lib/internal/Magento/Framework/Exception/LocalizedException.php +++ b/lib/internal/Magento/Framework/Exception/LocalizedException.php @@ -14,6 +14,7 @@ * Localized exception * * @api + * @since 100.0.2 */ class LocalizedException extends \Exception { diff --git a/lib/internal/Magento/Framework/Exception/MailException.php b/lib/internal/Magento/Framework/Exception/MailException.php index 1475ba04257c9..708f03adbe7b0 100644 --- a/lib/internal/Magento/Framework/Exception/MailException.php +++ b/lib/internal/Magento/Framework/Exception/MailException.php @@ -9,6 +9,7 @@ * Magento mail exception * * @api + * @since 100.0.2 */ class MailException extends LocalizedException { diff --git a/lib/internal/Magento/Framework/Exception/NoSuchEntityException.php b/lib/internal/Magento/Framework/Exception/NoSuchEntityException.php index 42b30d45e4c72..f39fef57ed568 100644 --- a/lib/internal/Magento/Framework/Exception/NoSuchEntityException.php +++ b/lib/internal/Magento/Framework/Exception/NoSuchEntityException.php @@ -11,6 +11,7 @@ /** * @api + * @since 100.0.2 */ class NoSuchEntityException extends LocalizedException { diff --git a/lib/internal/Magento/Framework/Exception/NotFoundException.php b/lib/internal/Magento/Framework/Exception/NotFoundException.php index 40e02e70fa37c..cfc02f4f516d6 100644 --- a/lib/internal/Magento/Framework/Exception/NotFoundException.php +++ b/lib/internal/Magento/Framework/Exception/NotFoundException.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ class NotFoundException extends LocalizedException { diff --git a/lib/internal/Magento/Framework/Exception/PaymentException.php b/lib/internal/Magento/Framework/Exception/PaymentException.php index 83b189d020ee3..fb52401229ba4 100644 --- a/lib/internal/Magento/Framework/Exception/PaymentException.php +++ b/lib/internal/Magento/Framework/Exception/PaymentException.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ class PaymentException extends LocalizedException { diff --git a/lib/internal/Magento/Framework/Exception/Plugin/AuthenticationException.php b/lib/internal/Magento/Framework/Exception/Plugin/AuthenticationException.php index 2a5564181d43f..4d559a548eff6 100644 --- a/lib/internal/Magento/Framework/Exception/Plugin/AuthenticationException.php +++ b/lib/internal/Magento/Framework/Exception/Plugin/AuthenticationException.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ class AuthenticationException extends \Magento\Framework\Exception\AuthenticationException { diff --git a/lib/internal/Magento/Framework/Exception/RemoteServiceUnavailableException.php b/lib/internal/Magento/Framework/Exception/RemoteServiceUnavailableException.php index a9af31b003333..50f01473b9dc9 100644 --- a/lib/internal/Magento/Framework/Exception/RemoteServiceUnavailableException.php +++ b/lib/internal/Magento/Framework/Exception/RemoteServiceUnavailableException.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ class RemoteServiceUnavailableException extends AuthenticationException { diff --git a/lib/internal/Magento/Framework/Exception/SerializationException.php b/lib/internal/Magento/Framework/Exception/SerializationException.php index bae56b487975c..cbb40de6578f0 100644 --- a/lib/internal/Magento/Framework/Exception/SerializationException.php +++ b/lib/internal/Magento/Framework/Exception/SerializationException.php @@ -12,6 +12,7 @@ * Serialization Exception * * @api + * @since 100.0.2 */ class SerializationException extends LocalizedException { diff --git a/lib/internal/Magento/Framework/Exception/SessionException.php b/lib/internal/Magento/Framework/Exception/SessionException.php index b3af3ea5b5bb0..0127e3fa551e6 100644 --- a/lib/internal/Magento/Framework/Exception/SessionException.php +++ b/lib/internal/Magento/Framework/Exception/SessionException.php @@ -9,6 +9,7 @@ * Session exception * * @api + * @since 100.0.2 */ class SessionException extends LocalizedException { diff --git a/lib/internal/Magento/Framework/Exception/State/ExpiredException.php b/lib/internal/Magento/Framework/Exception/State/ExpiredException.php index 29748b52c8351..9f127b2d1fa29 100644 --- a/lib/internal/Magento/Framework/Exception/State/ExpiredException.php +++ b/lib/internal/Magento/Framework/Exception/State/ExpiredException.php @@ -11,6 +11,7 @@ /** * @api + * @since 100.0.2 */ class ExpiredException extends StateException { diff --git a/lib/internal/Magento/Framework/Exception/State/InitException.php b/lib/internal/Magento/Framework/Exception/State/InitException.php index 9ca7de26c58d7..ad2e6ef283deb 100644 --- a/lib/internal/Magento/Framework/Exception/State/InitException.php +++ b/lib/internal/Magento/Framework/Exception/State/InitException.php @@ -11,6 +11,7 @@ * An exception that indicates application initialization error * * @api + * @since 100.0.2 */ class InitException extends LocalizedException { diff --git a/lib/internal/Magento/Framework/Exception/State/InputMismatchException.php b/lib/internal/Magento/Framework/Exception/State/InputMismatchException.php index 752ebcf4804b1..efc8e1b4afe3e 100644 --- a/lib/internal/Magento/Framework/Exception/State/InputMismatchException.php +++ b/lib/internal/Magento/Framework/Exception/State/InputMismatchException.php @@ -11,6 +11,7 @@ /** * @api + * @since 100.0.2 */ class InputMismatchException extends StateException { diff --git a/lib/internal/Magento/Framework/Exception/State/InvalidTransitionException.php b/lib/internal/Magento/Framework/Exception/State/InvalidTransitionException.php index 2667d1745767e..c66163e87c9c1 100644 --- a/lib/internal/Magento/Framework/Exception/State/InvalidTransitionException.php +++ b/lib/internal/Magento/Framework/Exception/State/InvalidTransitionException.php @@ -11,6 +11,7 @@ /** * @api + * @since 100.0.2 */ class InvalidTransitionException extends StateException { diff --git a/lib/internal/Magento/Framework/Exception/State/UserLockedException.php b/lib/internal/Magento/Framework/Exception/State/UserLockedException.php index fa39556f6eecc..63e81f987f776 100644 --- a/lib/internal/Magento/Framework/Exception/State/UserLockedException.php +++ b/lib/internal/Magento/Framework/Exception/State/UserLockedException.php @@ -9,6 +9,7 @@ /** * @api + * @since 100.0.2 */ class UserLockedException extends AuthenticationException { diff --git a/lib/internal/Magento/Framework/Exception/StateException.php b/lib/internal/Magento/Framework/Exception/StateException.php index 580ef6fabe2fa..ed80b9c2df35b 100644 --- a/lib/internal/Magento/Framework/Exception/StateException.php +++ b/lib/internal/Magento/Framework/Exception/StateException.php @@ -9,6 +9,7 @@ * State Exception * * @api + * @since 100.0.2 */ class StateException extends LocalizedException { diff --git a/lib/internal/Magento/Framework/Exception/TemporaryState/CouldNotSaveException.php b/lib/internal/Magento/Framework/Exception/TemporaryState/CouldNotSaveException.php index 894b5be3f0bd1..4c59205b24519 100644 --- a/lib/internal/Magento/Framework/Exception/TemporaryState/CouldNotSaveException.php +++ b/lib/internal/Magento/Framework/Exception/TemporaryState/CouldNotSaveException.php @@ -13,7 +13,7 @@ * CouldNotSaveException caused by recoverable error * * @api - * @since 100.2.0 + * @since 101.0.0 */ class CouldNotSaveException extends LocalizedCouldNotSaveException implements TemporaryStateExceptionInterface { @@ -23,7 +23,6 @@ class CouldNotSaveException extends LocalizedCouldNotSaveException implements Te * @param Phrase $phrase The Exception message to throw. * @param \Exception $previous [optional] The previous exception used for the exception chaining. * @param int $code [optional] The Exception code. - * @since 100.2.0 */ public function __construct(Phrase $phrase, \Exception $previous = null, $code = 0) { diff --git a/lib/internal/Magento/Framework/Exception/ValidatorException.php b/lib/internal/Magento/Framework/Exception/ValidatorException.php index 1066fe268df44..9dbb994c111f9 100644 --- a/lib/internal/Magento/Framework/Exception/ValidatorException.php +++ b/lib/internal/Magento/Framework/Exception/ValidatorException.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ class ValidatorException extends LocalizedException { diff --git a/lib/internal/Magento/Framework/File/Csv.php b/lib/internal/Magento/Framework/File/Csv.php index 571ad6b21efa7..1b1decdb5327c 100644 --- a/lib/internal/Magento/Framework/File/Csv.php +++ b/lib/internal/Magento/Framework/File/Csv.php @@ -130,7 +130,7 @@ public function getDataPairs($file, $keyIndex = 0, $valueIndex = 1) * @param array $data * @return $this * @throws \Magento\Framework\Exception\FileSystemException - * @deprecated + * @deprecated 102.0.0 * @see appendData */ public function saveData($file, $data) diff --git a/lib/internal/Magento/Framework/File/Size.php b/lib/internal/Magento/Framework/File/Size.php index c5a51ec1760e7..52cf572186f9f 100644 --- a/lib/internal/Magento/Framework/File/Size.php +++ b/lib/internal/Magento/Framework/File/Size.php @@ -11,6 +11,7 @@ /** * @api + * @since 100.0.2 */ class Size { diff --git a/lib/internal/Magento/Framework/File/Test/Unit/UploaderTest.php b/lib/internal/Magento/Framework/File/Test/Unit/UploaderTest.php new file mode 100644 index 0000000000000..fbeb51ba53e0f --- /dev/null +++ b/lib/internal/Magento/Framework/File/Test/Unit/UploaderTest.php @@ -0,0 +1,68 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +namespace Magento\Framework\File\Test\Unit; + +/** + * Unit Test class for \Magento\Framework\File\Uploader. + */ +class UploaderTest extends \PHPUnit\Framework\TestCase +{ + /** + * @param string $fileName + * @param string $expectedCorrectedFileName + * + * @return void + * @dataProvider getCorrectFileNameProvider + */ + public function testGetCorrectFileName(string $fileName, string $expectedCorrectedFileName): void + { + $this->assertEquals( + $expectedCorrectedFileName, + \Magento\Framework\File\Uploader::getCorrectFileName($fileName) + ); + } + + /** + * @return array + */ + public function getCorrectFileNameProvider(): array + { + return [ + [ + '^&*&^&*^$$$$()', + 'file.', + ], + [ + '^&*&^&*^$$$$().png', + 'file.png', + ], + [ + '_', + 'file.', + ], + [ + '_.jpg', + 'file.jpg', + ], + [ + 'a.' . str_repeat('b', 88), + 'a.' . str_repeat('b', 88), + ], + ]; + } + + /** + * @return void + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage Filename is too long; must be 90 characters or less + */ + public function testGetCorrectFileNameWithOverLimitInputNameLength(): void + { + \Magento\Framework\File\Uploader::getCorrectFileName('a.' . str_repeat('b', 89)); + } +} diff --git a/lib/internal/Magento/Framework/File/Uploader.php b/lib/internal/Magento/Framework/File/Uploader.php index 328a748cfd5df..ce3f413724f04 100644 --- a/lib/internal/Magento/Framework/File/Uploader.php +++ b/lib/internal/Magento/Framework/File/Uploader.php @@ -5,6 +5,9 @@ */ namespace Magento\Framework\File; +use Magento\Framework\Exception\FileSystemException; +use Magento\Framework\Validation\ValidationException; + /** * File upload class * @@ -12,6 +15,7 @@ * validation by protected file extension list to extended class * * @api + * @since 100.0.2 */ class Uploader { @@ -75,7 +79,7 @@ class Uploader protected $_allowRenameFiles = false; /** - * If this variable is set to TRUE, files dispertion will be supported. + * If this variable is set to TRUE, files dispersion will be supported. * * @var bool * @access protected @@ -162,7 +166,7 @@ class Uploader * * @param string|array $fileId * @param \Magento\Framework\File\Mime|null $fileMime - * @throws \Exception + * @throws \DomainException */ public function __construct( $fileId, @@ -171,7 +175,7 @@ public function __construct( $this->_setUploadFileId($fileId); if (!file_exists($this->_file['tmp_name'])) { $code = empty($this->_file['tmp_name']) ? self::TMP_NAME_EMPTY : 0; - throw new \Exception('The file was not uploaded.', $code); + throw new \DomainException('The file was not uploaded.', $code); } else { $this->_fileExists = true; } @@ -256,7 +260,7 @@ public function save($destinationFolder, $newFileName = null) * * @param string $destinationFolder * @return void - * @throws \Exception + * @throws FileSystemException */ private function validateDestination($destinationFolder) { @@ -265,7 +269,7 @@ private function validateDestination($destinationFolder) } if (!is_writable($destinationFolder)) { - throw new \Exception('Destination folder is not writable or does not exists.'); + throw new FileSystemException(__('Destination folder is not writable or does not exists.')); } } @@ -302,7 +306,7 @@ protected function _moveFile($tmpPath, $destPath) * Validate file before save * * @return void - * @throws \Exception + * @throws ValidationException */ protected function _validateFile() { @@ -312,7 +316,7 @@ protected function _validateFile() //is file extension allowed if (!$this->checkAllowedExtension($this->getFileExtension())) { - throw new \Exception('Disallowed file type.'); + throw new ValidationException(__('Disallowed file type.')); } //run validate callbacks foreach ($this->_validateCallbacks as $params) { @@ -366,19 +370,27 @@ public function removeValidateCallback($callbackName) } /** - * Correct filename with special chars and spaces + * Correct filename with special chars and spaces; also trim excessively long filenames. * * @param string $fileName * @return string + * @throws \InvalidArgumentException */ public static function getCorrectFileName($fileName) { $fileName = preg_replace('/[^a-z0-9_\\-\\.]+/i', '_', $fileName); $fileInfo = pathinfo($fileName); + $fileInfo['extension'] = $fileInfo['extension'] ?? ''; + + // account for excessively long filenames that cannot be stored completely in database + if (strlen($fileInfo['basename']) > 90) { + throw new \InvalidArgumentException('Filename is too long; must be 90 characters or less'); + } if (preg_match('/^_+$/', $fileInfo['filename'])) { $fileName = 'file.' . $fileInfo['extension']; } + return $fileName; } @@ -533,7 +545,8 @@ private function _getMimeType() * * @param string|array $fileId * @return void - * @throws \Exception + * @throws \DomainException + * @throws \InvalidArgumentException * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ private function _setUploadFileId($fileId) @@ -543,7 +556,7 @@ private function _setUploadFileId($fileId) $this->_file = $fileId; } else { if (empty($_FILES)) { - throw new \Exception('$_FILES array is empty'); + throw new \DomainException('$_FILES array is empty'); } preg_match("/^(.*?)\[(.*?)\]$/", $fileId, $file); @@ -565,7 +578,9 @@ private function _setUploadFileId($fileId) $this->_uploadType = self::SINGLE_STYLE; $this->_file = $_FILES[$fileId]; } elseif ($fileId == '') { - throw new \Exception('Invalid parameter given. A valid $_FILES[] identifier is expected.'); + throw new \InvalidArgumentException( + 'Invalid parameter given. A valid $_FILES[] identifier is expected.' + ); } } } @@ -575,7 +590,7 @@ private function _setUploadFileId($fileId) * * @param string $destinationFolder * @return \Magento\Framework\File\Uploader - * @throws \Exception + * @throws FileSystemException */ private function _createDestinationFolder($destinationFolder) { @@ -590,7 +605,7 @@ private function _createDestinationFolder($destinationFolder) if (!(@is_dir($destinationFolder) || @mkdir($destinationFolder, 0777, true) )) { - throw new \Exception("Unable to create directory '{$destinationFolder}'."); + throw new FileSystemException(__('Unable to create directory %1.', $destinationFolder)); } return $this; } @@ -620,11 +635,11 @@ public static function getNewFileName($destinationFile) } /** - * Get dispertion path + * Get dispersion path * * @param string $fileName * @return string - * @deprecated + * @deprecated 101.0.4 */ public static function getDispretionPath($fileName) { @@ -632,25 +647,27 @@ public static function getDispretionPath($fileName) } /** - * Get dispertion path + * Get dispersion path * * @param string $fileName * @return string + * @since 101.0.4 */ public static function getDispersionPath($fileName) { $char = 0; - $dispertionPath = ''; + $dispersionPath = ''; while ($char < 2 && $char < strlen($fileName)) { - if (empty($dispertionPath)) { - $dispertionPath = '/' . ('.' == $fileName[$char] ? '_' : $fileName[$char]); + if (empty($dispersionPath)) { + $dispersionPath = '/' . ('.' == $fileName[$char] ? '_' : $fileName[$char]); } else { - $dispertionPath = self::_addDirSeparator( - $dispertionPath + $dispersionPath = self::_addDirSeparator( + $dispersionPath ) . ('.' == $fileName[$char] ? '_' : $fileName[$char]); } $char++; } - return $dispertionPath; + + return $dispersionPath; } } diff --git a/lib/internal/Magento/Framework/Filesystem.php b/lib/internal/Magento/Framework/Filesystem.php index 01877fe17a716..1f65bd6885fcd 100644 --- a/lib/internal/Magento/Framework/Filesystem.php +++ b/lib/internal/Magento/Framework/Filesystem.php @@ -11,6 +11,7 @@ /** * @api + * @since 100.0.2 */ class Filesystem { @@ -78,6 +79,7 @@ public function getDirectoryRead($directoryCode, $driverCode = DriverPool::FILE) * * @return \Magento\Framework\Filesystem\Directory\ReadInterface * + * @since 102.0.0 */ public function getDirectoryReadByPath($path, $driverCode = DriverPool::FILE) { diff --git a/lib/internal/Magento/Framework/Filesystem/Directory/Read.php b/lib/internal/Magento/Framework/Filesystem/Directory/Read.php index a3a4cec59953f..c55752e7b0208 100644 --- a/lib/internal/Magento/Framework/Filesystem/Directory/Read.php +++ b/lib/internal/Magento/Framework/Filesystem/Directory/Read.php @@ -10,6 +10,7 @@ /** * @api + * @since 100.0.2 */ class Read implements ReadInterface { @@ -66,6 +67,7 @@ public function __construct( * @throws ValidatorException * * @return void + * @since 101.0.7 */ protected function validatePath( ?string $path, diff --git a/lib/internal/Magento/Framework/Filesystem/Directory/ReadInterface.php b/lib/internal/Magento/Framework/Filesystem/Directory/ReadInterface.php index 85d41b6932629..513f925a8c8fc 100644 --- a/lib/internal/Magento/Framework/Filesystem/Directory/ReadInterface.php +++ b/lib/internal/Magento/Framework/Filesystem/Directory/ReadInterface.php @@ -8,6 +8,7 @@ /** * Interface \Magento\Framework\Filesystem\Directory\ReadInterface * @api + * @since 100.0.2 */ interface ReadInterface { diff --git a/lib/internal/Magento/Framework/Filesystem/Directory/WriteInterface.php b/lib/internal/Magento/Framework/Filesystem/Directory/WriteInterface.php index 186cbcb81bff2..5b0fd74a422c9 100644 --- a/lib/internal/Magento/Framework/Filesystem/Directory/WriteInterface.php +++ b/lib/internal/Magento/Framework/Filesystem/Directory/WriteInterface.php @@ -8,6 +8,7 @@ /** * Interface \Magento\Framework\Filesystem\Directory\WriteInterface * @api + * @since 100.0.2 */ interface WriteInterface extends ReadInterface { diff --git a/lib/internal/Magento/Framework/Filesystem/DriverInterface.php b/lib/internal/Magento/Framework/Filesystem/DriverInterface.php index 39be808875141..afea4d3bc7b07 100644 --- a/lib/internal/Magento/Framework/Filesystem/DriverInterface.php +++ b/lib/internal/Magento/Framework/Filesystem/DriverInterface.php @@ -13,6 +13,7 @@ * Class Driver * * @api + * @since 100.0.2 */ interface DriverInterface { diff --git a/lib/internal/Magento/Framework/Filesystem/File/ReadFactory.php b/lib/internal/Magento/Framework/Filesystem/File/ReadFactory.php index 5d9badf42073f..e46b00bc5c74f 100644 --- a/lib/internal/Magento/Framework/Filesystem/File/ReadFactory.php +++ b/lib/internal/Magento/Framework/Filesystem/File/ReadFactory.php @@ -11,6 +11,7 @@ /** * Opens a file for reading * @api + * @since 100.0.2 */ class ReadFactory { diff --git a/lib/internal/Magento/Framework/Filesystem/File/WriteFactory.php b/lib/internal/Magento/Framework/Filesystem/File/WriteFactory.php index af2a43ceaedc3..7a9596586f56a 100644 --- a/lib/internal/Magento/Framework/Filesystem/File/WriteFactory.php +++ b/lib/internal/Magento/Framework/Filesystem/File/WriteFactory.php @@ -11,6 +11,7 @@ /** * Opens a file for reading and/or writing * @api + * @since 100.0.2 */ class WriteFactory extends ReadFactory { diff --git a/lib/internal/Magento/Framework/Filesystem/File/WriteInterface.php b/lib/internal/Magento/Framework/Filesystem/File/WriteInterface.php index ecf554de808cc..87e5f5afc95b4 100644 --- a/lib/internal/Magento/Framework/Filesystem/File/WriteInterface.php +++ b/lib/internal/Magento/Framework/Filesystem/File/WriteInterface.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ interface WriteInterface extends ReadInterface { diff --git a/lib/internal/Magento/Framework/Filesystem/Io/IoInterface.php b/lib/internal/Magento/Framework/Filesystem/Io/IoInterface.php index 93c85ebafe727..477da422def57 100644 --- a/lib/internal/Magento/Framework/Filesystem/Io/IoInterface.php +++ b/lib/internal/Magento/Framework/Filesystem/Io/IoInterface.php @@ -8,6 +8,7 @@ /** * Input/output client interface * @api + * @since 100.0.2 */ interface IoInterface { diff --git a/lib/internal/Magento/Framework/Filter/FilterManager.php b/lib/internal/Magento/Framework/Filter/FilterManager.php index ca5d998af833f..1729dee2487ab 100644 --- a/lib/internal/Magento/Framework/Filter/FilterManager.php +++ b/lib/internal/Magento/Framework/Filter/FilterManager.php @@ -26,6 +26,7 @@ * @method string decrypt(string $value, $params = array()) * @method string translit(string $value) * @method string translitUrl(string $value) + * @since 100.0.2 */ class FilterManager { diff --git a/lib/internal/Magento/Framework/Filter/Template.php b/lib/internal/Magento/Framework/Filter/Template.php index 6a04e8e8c6953..5ebe77fff8fd6 100644 --- a/lib/internal/Magento/Framework/Filter/Template.php +++ b/lib/internal/Magento/Framework/Filter/Template.php @@ -9,13 +9,11 @@ */ namespace Magento\Framework\Filter; -use Magento\Framework\Model\AbstractExtensibleModel; -use Magento\Framework\Model\AbstractModel; - /** * Template filter * * @api + * @since 100.0.2 */ class Template implements \Zend_Filter_Interface { @@ -81,7 +79,27 @@ class Template implements \Zend_Filter_Interface 'settemplateprocessor', 'gettemplateprocessor', 'vardirective', - 'delete' + 'delete', + 'getdatausingmethod', + '__destruct', + '__call', + '__callstatic', + '__set', + '__unset', + '__sleep', + '__wakeup', + '__invoke', + '__set_state', + '__debuginfo', + '___callparent', + '___callplugins' + ]; + + /** + * @var array[] + */ + private $restrictedMethodsByInstanceType = [ + \Magento\Framework\DB\Adapter\AdapterInterface::class => ['*'], ]; /** @@ -400,36 +418,23 @@ protected function getParameters($value) */ private function validateVariableMethodCall($object, string $method): void { - if ($object === $this) { + if ($object instanceof self || $object instanceof \Magento\Framework\DataObject) { if (in_array(mb_strtolower($method), $this->restrictedMethods)) { throw new \InvalidArgumentException("Method $method cannot be called from template."); } - } - } - - /** - * Check allowed methods for data objects. - * - * Deny calls for methods that may disrupt template processing. - * - * @param object $object - * @param string $method - * @return bool - * @throws \InvalidArgumentException - */ - private function isAllowedDataObjectMethod($object, string $method): bool - { - if ($object instanceof AbstractExtensibleModel || $object instanceof AbstractModel) { - if (in_array(mb_strtolower($method), $this->restrictedMethods)) { - throw new \InvalidArgumentException("Method $method cannot be called from template."); + } else { + foreach ($this->restrictedMethodsByInstanceType as $instanceType => $restrictedMethods) { + if ($object instanceof $instanceType && + (in_array('*', $restrictedMethods) || in_array(mb_strtolower($method), $restrictedMethods)) + ) { + throw new \InvalidArgumentException("Method $method cannot be called from template."); + } } } - - return true; } /** - * Return variable value for var construction + * Return variable value for var construction. * * @param string $value raw parameters * @param string $default default value @@ -448,45 +453,18 @@ protected function getVariable($value, $default = '{no_value_defined}') if ($i == 0 && isset($this->templateVars[$stackVars[$i]['name']])) { // Getting of template value $stackVars[$i]['variable'] = & $this->templateVars[$stackVars[$i]['name']]; - } elseif (isset($stackVars[$i - 1]['variable']) - && $stackVars[$i - 1]['variable'] instanceof \Magento\Framework\DataObject - ) { - // If data object calling methods or getting properties + } elseif (isset($stackVars[$i - 1]['variable']) && is_object($stackVars[$i - 1]['variable'])) { if ($stackVars[$i]['type'] == 'property') { - $caller = 'get' . $this->string->upperCaseWords($stackVars[$i]['name'], '_', ''); - $stackVars[$i]['variable'] = method_exists( + $stackVars[$i]['variable'] = $this->evaluateObjectPropertyAccess( $stackVars[$i - 1]['variable'], - $caller - ) ? $stackVars[$i - 1]['variable']->{$caller}() : $stackVars[$i - 1]['variable']->getData( $stackVars[$i]['name'] ); } elseif ($stackVars[$i]['type'] == 'method') { - // Calling of data object method - if (method_exists($stackVars[$i - 1]['variable'], $stackVars[$i]['name']) - || substr($stackVars[$i]['name'], 0, 3) == 'get' - ) { - $stackVars[$i]['args'] = $this->getStackArgs($stackVars[$i]['args']); - - if ($this->isAllowedDataObjectMethod($stackVars[$i - 1]['variable'], $stackVars[$i]['name'])) { - $stackVars[$i]['variable'] = call_user_func_array( - [$stackVars[$i - 1]['variable'], $stackVars[$i]['name']], - $stackVars[$i]['args'] - ); - } - } - } - $last = $i; - } elseif (isset($stackVars[$i - 1]['variable']) - && is_object($stackVars[$i - 1]['variable']) - && $stackVars[$i]['type'] == 'method' - ) { - // Calling object methods - $object = $stackVars[$i - 1]['variable']; - $method = $stackVars[$i]['name']; - if (method_exists($object, $method)) { - $args = $this->getStackArgs($stackVars[$i]['args']); - $this->validateVariableMethodCall($object, $method); - $stackVars[$i]['variable'] = call_user_func_array([$object, $method], $args); + $stackVars[$i]['variable'] = $this->evaluateObjectMethodCall( + $stackVars[$i - 1]['variable'], + $stackVars[$i]['name'], + $stackVars[$i]['args'] + ); } $last = $i; } @@ -500,6 +478,45 @@ protected function getVariable($value, $default = '{no_value_defined}') return $result; } + /** + * Evaluate object property access. + * + * @param object $object + * @param string $property + * @return null + */ + private function evaluateObjectPropertyAccess($object, $property) + { + $method = 'get' . $this->string->upperCaseWords($property, '_', ''); + $this->validateVariableMethodCall($object, $method); + return method_exists($object, $method) + ? $object->{$method}() + : (($object instanceof \Magento\Framework\DataObject) ? $object->getData($property) : null); + } + + /** + * Evaluate object method call. + * + * @param object $object + * @param string $method + * @param array $arguments + * @return mixed|null + */ + private function evaluateObjectMethodCall($object, $method, $arguments) + { + if (method_exists($object, $method) + || ($object instanceof \Magento\Framework\DataObject && substr($method, 0, 3) == 'get') + ) { + $arguments = $this->getStackArgs($arguments); + $this->validateVariableMethodCall($object, $method); + return call_user_func_array( + [$object, $method], + $arguments + ); + } + return null; + } + /** * Loops over a set of stack args to process variables into array argument values * diff --git a/lib/internal/Magento/Framework/Filter/Test/Unit/TemplateTest.php b/lib/internal/Magento/Framework/Filter/Test/Unit/TemplateTest.php index 0ee3a06ce5420..b7f76cb35953a 100644 --- a/lib/internal/Magento/Framework/Filter/Test/Unit/TemplateTest.php +++ b/lib/internal/Magento/Framework/Filter/Test/Unit/TemplateTest.php @@ -445,7 +445,8 @@ public function disallowedMethods() ['setTemplateProcessor'], ['getTemplateProcessor'], ['varDirective'], - ['delete'] + ['delete'], + ['getDataUsingMethod'] ]; } } diff --git a/lib/internal/Magento/Framework/Filter/Truncate.php b/lib/internal/Magento/Framework/Filter/Truncate.php index a4dd35b302705..d56f574bac019 100644 --- a/lib/internal/Magento/Framework/Filter/Truncate.php +++ b/lib/internal/Magento/Framework/Filter/Truncate.php @@ -11,7 +11,7 @@ * Truncate a string to a certain length if necessary, appending the $etc string. * $remainder will contain the string that has been replaced with $etc. * - * @deprecated + * @deprecated 101.0.7 * @see \Magento\Framework\Filter\TruncateFilter */ class Truncate implements \Zend_Filter_Interface diff --git a/lib/internal/Magento/Framework/HTTP/ClientInterface.php b/lib/internal/Magento/Framework/HTTP/ClientInterface.php index e2e4a89af8fba..3a3aac1546698 100644 --- a/lib/internal/Magento/Framework/HTTP/ClientInterface.php +++ b/lib/internal/Magento/Framework/HTTP/ClientInterface.php @@ -10,6 +10,7 @@ * Interface for HTTP clients * * @api + * @since 100.0.2 */ interface ClientInterface { diff --git a/lib/internal/Magento/Framework/Image/Adapter/AbstractAdapter.php b/lib/internal/Magento/Framework/Image/Adapter/AbstractAdapter.php index 6042e4eee491d..5a2102708b414 100644 --- a/lib/internal/Magento/Framework/Image/Adapter/AbstractAdapter.php +++ b/lib/internal/Magento/Framework/Image/Adapter/AbstractAdapter.php @@ -3,11 +3,15 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ +declare(strict_types=1); + namespace Magento\Framework\Image\Adapter; use Magento\Framework\App\Filesystem\DirectoryList; /** + * Class AbstractAdapter + * * @file Abstract.php * @author Magento Core Team <core@magentocommerce.com> * @SuppressWarnings(PHPMD.TooManyFields) @@ -169,7 +173,8 @@ abstract public function open($fileName); /** * Save image to specific path. - * If some folders of path does not exist they will be created + * + * If some folders of the path do not exist they will be created. * * @param null|string $destination * @param null|string $newName @@ -286,7 +291,7 @@ public function getMimeType() if ($this->_fileMimeType) { return $this->_fileMimeType; } else { - $this->_fileMimeType = image_type_to_mime_type($this->getImageType()); + $this->_fileMimeType = image_type_to_mime_type((int) $this->getImageType()); return $this->_fileMimeType; } } @@ -518,7 +523,7 @@ public function backgroundColor($value = null) */ protected function _getFileAttributes() { - $pathinfo = pathinfo($this->_fileName); + $pathinfo = pathinfo((string) $this->_fileName); $this->_fileSrcPath = $pathinfo['dirname']; $this->_fileSrcName = $pathinfo['basename']; @@ -620,6 +625,7 @@ protected function _checkDimensions($frameWidth, $frameHeight) $frameHeight !== null && $frameHeight <= 0 || empty($frameWidth) && empty($frameHeight) ) { + //phpcs:ignore Magento2.Exceptions.DirectThrow throw new \Exception('Invalid image dimensions.'); } } @@ -669,7 +675,7 @@ protected function _prepareDestination($destination = null, $newName = null) $destination = $this->_fileSrcPath; } else { if (empty($newName)) { - $info = pathinfo($destination); + $info = pathinfo((string) $destination); $newName = $info['basename']; $destination = $info['dirname']; } @@ -687,6 +693,7 @@ protected function _prepareDestination($destination = null, $newName = null) $this->directoryWrite->create($this->directoryWrite->getRelativePath($destination)); } catch (\Magento\Framework\Exception\FileSystemException $e) { $this->logger->critical($e); + //phpcs:ignore Magento2.Exceptions.DirectThrow throw new \Exception('Unable to write file into directory ' . $destination . '. Access forbidden.'); } } @@ -714,11 +721,19 @@ protected function _canProcess() public function validateUploadFile($filePath) { if (!file_exists($filePath)) { - throw new \InvalidArgumentException("File '{$filePath}' does not exists."); + throw new \InvalidArgumentException('Upload file does not exist.'); + } + + try { + $imageSize = getimagesize($filePath); + } catch (\Exception $e) { + $imageSize = false; } - if (!getimagesize($filePath)) { + + if (!$imageSize) { throw new \InvalidArgumentException('Disallowed file type.'); } + $this->checkDependencies(); $this->open($filePath); diff --git a/lib/internal/Magento/Framework/Image/Adapter/Config.php b/lib/internal/Magento/Framework/Image/Adapter/Config.php index 636bbcdcbdb41..64b1297659e67 100644 --- a/lib/internal/Magento/Framework/Image/Adapter/Config.php +++ b/lib/internal/Magento/Framework/Image/Adapter/Config.php @@ -65,7 +65,7 @@ public function getAdapters() * Get Maximum Image Width resolution in pixels. For image resizing on client side. * * @return int - * @deprecated + * @deprecated 102.0.1 * @see \Magento\Backend\Model\Image\UploadResizeConfigInterface::getMaxHeight() */ public function getMaxWidth(): int @@ -77,7 +77,7 @@ public function getMaxWidth(): int * Get Maximum Image Height resolution in pixels. For image resizing on client side. * * @return int - * @deprecated + * @deprecated 102.0.1 * @see \Magento\Backend\Model\Image\UploadResizeConfigInterface::getMaxHeight() */ public function getMaxHeight(): int diff --git a/lib/internal/Magento/Framework/Indexer/Action/Base.php b/lib/internal/Magento/Framework/Indexer/Action/Base.php index 636335192cbc5..b454d49578772 100644 --- a/lib/internal/Magento/Framework/Indexer/Action/Base.php +++ b/lib/internal/Magento/Framework/Indexer/Action/Base.php @@ -37,13 +37,13 @@ class Base implements ActionInterface /** * @var AdapterInterface - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected $connection; /** * @var SourceProviderInterface[] - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected $sources; @@ -54,7 +54,7 @@ class Base implements ActionInterface /** * @var HandlerInterface[] - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected $handlers; @@ -65,7 +65,7 @@ class Base implements ActionInterface /** * @var array - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected $columnTypesMap = [ 'varchar' => ['type' => Table::TYPE_TEXT, 'size' => 255], @@ -75,13 +75,13 @@ class Base implements ActionInterface /** * @var array - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected $filterColumns; /** * @var array - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected $searchColumns; @@ -102,7 +102,7 @@ class Base implements ActionInterface /** * @var String - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected $string; @@ -113,13 +113,13 @@ class Base implements ActionInterface /** * @var array - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected $filterable = []; /** * @var array - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected $searchable = []; @@ -353,7 +353,7 @@ protected function prepareFields() * @param array $field * @return void * - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected function saveFieldByType($field) { diff --git a/lib/internal/Magento/Framework/Indexer/ActionInterface.php b/lib/internal/Magento/Framework/Indexer/ActionInterface.php index 68a10e23e1d60..f4e59182c3c51 100644 --- a/lib/internal/Magento/Framework/Indexer/ActionInterface.php +++ b/lib/internal/Magento/Framework/Indexer/ActionInterface.php @@ -7,6 +7,7 @@ /** * @api Implement custom Action Interface + * @since 100.0.2 */ interface ActionInterface { diff --git a/lib/internal/Magento/Framework/Indexer/BatchProviderInterface.php b/lib/internal/Magento/Framework/Indexer/BatchProviderInterface.php index c318638e7e6ab..e8babffbbea78 100644 --- a/lib/internal/Magento/Framework/Indexer/BatchProviderInterface.php +++ b/lib/internal/Magento/Framework/Indexer/BatchProviderInterface.php @@ -15,7 +15,7 @@ * and process them one by one in order to reduce memory consumption and improve overall performance. * * @api retrieve Batches when implementing custom Indexer\Action - * @since 100.2.0 + * @since 101.0.0 */ interface BatchProviderInterface { @@ -27,7 +27,7 @@ interface BatchProviderInterface * @param string $linkField field that is used as a record identifier. * @param int $batchSize size of the single range. * @return \Generator generator that produces entity ID ranges in the format of ['from' => ..., 'to' => ...] - * @since 100.2.0 + * @since 101.0.0 */ public function getBatches(AdapterInterface $adapter, $tableName, $linkField, $batchSize); @@ -38,7 +38,7 @@ public function getBatches(AdapterInterface $adapter, $tableName, $linkField, $b * @param Select $select * @param array $batch * @return array - * @since 100.2.0 + * @since 101.0.0 */ public function getBatchIds(AdapterInterface $connection, Select $select, array $batch); } diff --git a/lib/internal/Magento/Framework/Indexer/BatchSizeManagementInterface.php b/lib/internal/Magento/Framework/Indexer/BatchSizeManagementInterface.php index b953afcd9e7e8..880d6feb3476f 100644 --- a/lib/internal/Magento/Framework/Indexer/BatchSizeManagementInterface.php +++ b/lib/internal/Magento/Framework/Indexer/BatchSizeManagementInterface.php @@ -10,7 +10,7 @@ /** * Batch size manager can be used to ensure that MEMORY table has enough memory for data in batch. * @api - * @since 100.2.0 + * @since 101.0.0 */ interface BatchSizeManagementInterface { @@ -20,7 +20,7 @@ interface BatchSizeManagementInterface * @param AdapterInterface $adapter database adapter. * @param int $batchSize * @return void - * @since 100.2.0 + * @since 101.0.0 */ public function ensureBatchSize(\Magento\Framework\DB\Adapter\AdapterInterface $adapter, $batchSize); } diff --git a/lib/internal/Magento/Framework/Indexer/Config/Converter.php b/lib/internal/Magento/Framework/Indexer/Config/Converter.php index 7f76b6e4295c5..f012f2b6d6101 100644 --- a/lib/internal/Magento/Framework/Indexer/Config/Converter.php +++ b/lib/internal/Magento/Framework/Indexer/Config/Converter.php @@ -238,7 +238,7 @@ protected function convertField(\DOMElement $node, $data) * * @param \DOMNode $node * @return string - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected function getTranslatedNodeValue(\DOMNode $node) { diff --git a/lib/internal/Magento/Framework/Indexer/ConfigInterface.php b/lib/internal/Magento/Framework/Indexer/ConfigInterface.php index 1769676e8ab42..14c771b5b69d3 100644 --- a/lib/internal/Magento/Framework/Indexer/ConfigInterface.php +++ b/lib/internal/Magento/Framework/Indexer/ConfigInterface.php @@ -9,6 +9,7 @@ * Indexer(s) configuration * * @api + * @since 100.0.2 */ interface ConfigInterface { diff --git a/lib/internal/Magento/Framework/Indexer/Dimension.php b/lib/internal/Magento/Framework/Indexer/Dimension.php index dacc8d7f524f5..3a484ed17dfdc 100644 --- a/lib/internal/Magento/Framework/Indexer/Dimension.php +++ b/lib/internal/Magento/Framework/Indexer/Dimension.php @@ -11,6 +11,7 @@ * Index Dimension object * * @api + * @since 101.0.6 */ class Dimension { @@ -38,6 +39,7 @@ public function __construct(string $name, string $value) * Get dimension name * * @return string + * @since 101.0.6 */ public function getName(): string { @@ -48,6 +50,7 @@ public function getName(): string * Get dimension value * * @return string + * @since 101.0.6 */ public function getValue(): string { diff --git a/lib/internal/Magento/Framework/Indexer/DimensionFactory.php b/lib/internal/Magento/Framework/Indexer/DimensionFactory.php index 8eaeff5628d60..c5bcab73a1058 100644 --- a/lib/internal/Magento/Framework/Indexer/DimensionFactory.php +++ b/lib/internal/Magento/Framework/Indexer/DimensionFactory.php @@ -13,6 +13,7 @@ * Dimension Factory * * @api + * @since 101.0.6 */ class DimensionFactory { @@ -33,6 +34,7 @@ public function __construct(ObjectManagerInterface $objectManager) * @param string $name * @param string $value * @return Dimension + * @since 101.0.6 */ public function create(string $name, string $value): Dimension { diff --git a/lib/internal/Magento/Framework/Indexer/DimensionProviderInterface.php b/lib/internal/Magento/Framework/Indexer/DimensionProviderInterface.php index ea4f56eb48d41..bd53fc36d3b44 100644 --- a/lib/internal/Magento/Framework/Indexer/DimensionProviderInterface.php +++ b/lib/internal/Magento/Framework/Indexer/DimensionProviderInterface.php @@ -10,12 +10,14 @@ /** * @api * Provide a list of dimensions + * @since 101.0.6 */ interface DimensionProviderInterface extends \IteratorAggregate { /** * Get Dimension Iterator. Returns yielded value of \Magento\Framework\Indexer\Dimension * @return \Traversable|\Magento\Framework\Indexer\Dimension[] + * @since 101.0.6 */ public function getIterator(): \Traversable; } diff --git a/lib/internal/Magento/Framework/Indexer/DimensionalIndexerInterface.php b/lib/internal/Magento/Framework/Indexer/DimensionalIndexerInterface.php index 43c4e7a7fd70b..acf1d598e89c5 100644 --- a/lib/internal/Magento/Framework/Indexer/DimensionalIndexerInterface.php +++ b/lib/internal/Magento/Framework/Indexer/DimensionalIndexerInterface.php @@ -10,6 +10,7 @@ /** * @api * Run indexer by dimensions + * @since 101.0.6 */ interface DimensionalIndexerInterface { @@ -20,6 +21,7 @@ interface DimensionalIndexerInterface * @param \Magento\Framework\Indexer\Dimension[] $dimensions * @param \Traversable $entityIds * @return void + * @since 101.0.6 */ public function executeByDimensions(array $dimensions, \Traversable $entityIds); } diff --git a/lib/internal/Magento/Framework/Indexer/FieldsetInterface.php b/lib/internal/Magento/Framework/Indexer/FieldsetInterface.php index 0ce1e8763ac96..85c5f698e1bb8 100644 --- a/lib/internal/Magento/Framework/Indexer/FieldsetInterface.php +++ b/lib/internal/Magento/Framework/Indexer/FieldsetInterface.php @@ -7,6 +7,7 @@ /** * @api Implement custom Fieldset + * @since 100.0.2 */ interface FieldsetInterface { diff --git a/lib/internal/Magento/Framework/Indexer/FieldsetPool.php b/lib/internal/Magento/Framework/Indexer/FieldsetPool.php index 747db5d2cc00f..742e15f1f43bf 100644 --- a/lib/internal/Magento/Framework/Indexer/FieldsetPool.php +++ b/lib/internal/Magento/Framework/Indexer/FieldsetPool.php @@ -9,6 +9,7 @@ /** * @api Retrieve Fieldset when implementing custom Indexer\Action + * @since 100.0.2 */ class FieldsetPool { diff --git a/lib/internal/Magento/Framework/Indexer/HandlerInterface.php b/lib/internal/Magento/Framework/Indexer/HandlerInterface.php index 5c1e9ea5a2569..8bb725a293f0c 100644 --- a/lib/internal/Magento/Framework/Indexer/HandlerInterface.php +++ b/lib/internal/Magento/Framework/Indexer/HandlerInterface.php @@ -9,6 +9,7 @@ /** * @api Implement custom Handler + * @since 100.0.2 */ interface HandlerInterface { diff --git a/lib/internal/Magento/Framework/Indexer/HandlerPool.php b/lib/internal/Magento/Framework/Indexer/HandlerPool.php index ed7abf19bad47..c4e3fdb0e7c2f 100644 --- a/lib/internal/Magento/Framework/Indexer/HandlerPool.php +++ b/lib/internal/Magento/Framework/Indexer/HandlerPool.php @@ -10,6 +10,7 @@ /** * @api Instantiate save handler when implementing custom Indexer\Action + * @since 100.0.2 */ class HandlerPool { diff --git a/lib/internal/Magento/Framework/Indexer/IndexStructure.php b/lib/internal/Magento/Framework/Indexer/IndexStructure.php index a39de2d5b8a62..2fd5bfa0bd955 100644 --- a/lib/internal/Magento/Framework/Indexer/IndexStructure.php +++ b/lib/internal/Magento/Framework/Indexer/IndexStructure.php @@ -16,7 +16,7 @@ /** * Full text search index structure. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ class IndexStructure implements IndexStructureInterface diff --git a/lib/internal/Magento/Framework/Indexer/IndexStructureInterface.php b/lib/internal/Magento/Framework/Indexer/IndexStructureInterface.php index f4c518bdfea7a..f8cc53d676af8 100644 --- a/lib/internal/Magento/Framework/Indexer/IndexStructureInterface.php +++ b/lib/internal/Magento/Framework/Indexer/IndexStructureInterface.php @@ -11,6 +11,7 @@ * Indexer structure (schema) handler * * @api + * @since 100.0.2 */ interface IndexStructureInterface { diff --git a/lib/internal/Magento/Framework/Indexer/IndexTableRowSizeEstimatorInterface.php b/lib/internal/Magento/Framework/Indexer/IndexTableRowSizeEstimatorInterface.php index a0a8fcf18146f..537b144df9dd2 100644 --- a/lib/internal/Magento/Framework/Indexer/IndexTableRowSizeEstimatorInterface.php +++ b/lib/internal/Magento/Framework/Indexer/IndexTableRowSizeEstimatorInterface.php @@ -9,7 +9,7 @@ /** * Calculate memory size for entity according different dimensions. * @api - * @since 100.2.0 + * @since 101.0.0 */ interface IndexTableRowSizeEstimatorInterface { @@ -17,7 +17,7 @@ interface IndexTableRowSizeEstimatorInterface * Calculate memory size for entity row. * * @return float - * @since 100.2.0 + * @since 101.0.0 */ public function estimateRowSize(); } diff --git a/lib/internal/Magento/Framework/Indexer/IndexerInterface.php b/lib/internal/Magento/Framework/Indexer/IndexerInterface.php index bf572b94ccc94..597266a05fd3f 100644 --- a/lib/internal/Magento/Framework/Indexer/IndexerInterface.php +++ b/lib/internal/Magento/Framework/Indexer/IndexerInterface.php @@ -9,8 +9,9 @@ * Indexer * * @api - * @deprecated Facade will be split + * @deprecated 102.0.0 Facade will be split * @see \Magento\Framework\Indexer\ActionInterface + * @since 100.0.2 */ interface IndexerInterface { @@ -163,7 +164,7 @@ public function getLatestUpdated(); * * @return void * @throws \Exception - * @deprecated + * @deprecated 102.0.0 * @see \Magento\Framework\Indexer\ActionInterface::executeFull */ public function reindexAll(); @@ -173,7 +174,7 @@ public function reindexAll(); * * @param int $id * @return void - * @deprecated + * @deprecated 102.0.0 * @see \Magento\Framework\Indexer\ActionInterface::executeList */ public function reindexRow($id); @@ -183,7 +184,7 @@ public function reindexRow($id); * * @param int[] $ids * @return void - * @deprecated + * @deprecated 102.0.0 * @see \Magento\Framework\Indexer\ActionInterface::executeList */ public function reindexList($ids); diff --git a/lib/internal/Magento/Framework/Indexer/IndexerRegistry.php b/lib/internal/Magento/Framework/Indexer/IndexerRegistry.php index 5867565e0ccd5..bdc8479671f2e 100644 --- a/lib/internal/Magento/Framework/Indexer/IndexerRegistry.php +++ b/lib/internal/Magento/Framework/Indexer/IndexerRegistry.php @@ -7,6 +7,7 @@ /** * @api Retrieve indexer by id, for example when indexer need to be invalidated + * @since 100.0.2 */ class IndexerRegistry { diff --git a/lib/internal/Magento/Framework/Indexer/SaveHandler/IndexerInterface.php b/lib/internal/Magento/Framework/Indexer/SaveHandler/IndexerInterface.php index e03404d3eb8f6..a3111f9966ee2 100644 --- a/lib/internal/Magento/Framework/Indexer/SaveHandler/IndexerInterface.php +++ b/lib/internal/Magento/Framework/Indexer/SaveHandler/IndexerInterface.php @@ -15,6 +15,7 @@ * Indexer persistence handler * * @api + * @since 100.0.2 */ interface IndexerInterface { diff --git a/lib/internal/Magento/Framework/Indexer/SaveHandlerFactory.php b/lib/internal/Magento/Framework/Indexer/SaveHandlerFactory.php index 80231dd7aa290..9e1ee9a375e36 100644 --- a/lib/internal/Magento/Framework/Indexer/SaveHandlerFactory.php +++ b/lib/internal/Magento/Framework/Indexer/SaveHandlerFactory.php @@ -10,6 +10,7 @@ /** * @api Instantiate save handler when implementing custom Indexer\Action + * @since 100.0.2 */ class SaveHandlerFactory { diff --git a/lib/internal/Magento/Framework/Indexer/StateInterface.php b/lib/internal/Magento/Framework/Indexer/StateInterface.php index 124b8ab50b4b8..332b3227ffc88 100644 --- a/lib/internal/Magento/Framework/Indexer/StateInterface.php +++ b/lib/internal/Magento/Framework/Indexer/StateInterface.php @@ -7,6 +7,7 @@ /** * @api Retrieve status of the Indexer + * @since 100.0.2 */ interface StateInterface { diff --git a/lib/internal/Magento/Framework/Interception/Config/Config.php b/lib/internal/Magento/Framework/Interception/Config/Config.php index 3f16e9275bd08..0a055b87d1269 100644 --- a/lib/internal/Magento/Framework/Interception/Config/Config.php +++ b/lib/internal/Magento/Framework/Interception/Config/Config.php @@ -37,7 +37,7 @@ class Config implements \Magento\Framework\Interception\ConfigInterface /** * Cache - * @deprecated + * @deprecated 102.0.1 * @var \Magento\Framework\Cache\FrontendInterface */ protected $_cache; diff --git a/lib/internal/Magento/Framework/Interception/PluginList/PluginList.php b/lib/internal/Magento/Framework/Interception/PluginList/PluginList.php index a4f728454a524..09a15beae251e 100644 --- a/lib/internal/Magento/Framework/Interception/PluginList/PluginList.php +++ b/lib/internal/Magento/Framework/Interception/PluginList/PluginList.php @@ -389,7 +389,7 @@ private function filterPlugins(array &$plugins) * Get logger * * @return \Psr\Log\LoggerInterface - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getLogger() { diff --git a/lib/internal/Magento/Framework/Json/Decoder.php b/lib/internal/Magento/Framework/Json/Decoder.php index 57e160cac7bbf..fbc99a036daa9 100644 --- a/lib/internal/Magento/Framework/Json/Decoder.php +++ b/lib/internal/Magento/Framework/Json/Decoder.php @@ -6,7 +6,7 @@ namespace Magento\Framework\Json; /** - * @deprecated 100.2.0 @see \Magento\Framework\Serialize\Serializer\Json::unserialize + * @deprecated 101.0.0 @see \Magento\Framework\Serialize\Serializer\Json::unserialize */ class Decoder implements DecoderInterface { diff --git a/lib/internal/Magento/Framework/Json/DecoderInterface.php b/lib/internal/Magento/Framework/Json/DecoderInterface.php index 9aa630fd9ca0c..baef2154ea618 100644 --- a/lib/internal/Magento/Framework/Json/DecoderInterface.php +++ b/lib/internal/Magento/Framework/Json/DecoderInterface.php @@ -10,7 +10,8 @@ * * @api * - * @deprecated 100.2.0 @see \Magento\Framework\Serialize\Serializer\Json::unserialize + * @deprecated 101.0.0 @see \Magento\Framework\Serialize\Serializer\Json::unserialize + * @since 100.0.2 */ interface DecoderInterface { diff --git a/lib/internal/Magento/Framework/Json/Encoder.php b/lib/internal/Magento/Framework/Json/Encoder.php index 35d259781d67a..0c53edeb6ae00 100644 --- a/lib/internal/Magento/Framework/Json/Encoder.php +++ b/lib/internal/Magento/Framework/Json/Encoder.php @@ -6,7 +6,7 @@ namespace Magento\Framework\Json; /** - * @deprecated 100.2.0 @see \Magento\Framework\Serialize\Serializer\Json::serialize + * @deprecated 101.0.0 @see \Magento\Framework\Serialize\Serializer\Json::serialize */ class Encoder implements EncoderInterface { diff --git a/lib/internal/Magento/Framework/Json/EncoderInterface.php b/lib/internal/Magento/Framework/Json/EncoderInterface.php index 9fb720d11fea3..59ea0f47d556c 100644 --- a/lib/internal/Magento/Framework/Json/EncoderInterface.php +++ b/lib/internal/Magento/Framework/Json/EncoderInterface.php @@ -10,7 +10,8 @@ * * @api * - * @deprecated 100.2.0 @see \Magento\Framework\Serialize\Serializer\Json::serialize + * @deprecated 101.0.0 @see \Magento\Framework\Serialize\Serializer\Json::serialize + * @since 100.0.2 */ interface EncoderInterface { diff --git a/lib/internal/Magento/Framework/Json/Helper/Data.php b/lib/internal/Magento/Framework/Json/Helper/Data.php index 67589d00eb99d..a1f2e01a2e92e 100644 --- a/lib/internal/Magento/Framework/Json/Helper/Data.php +++ b/lib/internal/Magento/Framework/Json/Helper/Data.php @@ -8,7 +8,7 @@ /** * Json data helper * - * @deprecated 100.2.0 @see \Magento\Framework\Serialize\Serializer\Json + * @deprecated 101.0.0 @see \Magento\Framework\Serialize\Serializer\Json */ class Data extends \Magento\Framework\App\Helper\AbstractHelper { diff --git a/lib/internal/Magento/Framework/Locale/ConfigInterface.php b/lib/internal/Magento/Framework/Locale/ConfigInterface.php index e5f8bc00e5466..a4ee02c323b19 100644 --- a/lib/internal/Magento/Framework/Locale/ConfigInterface.php +++ b/lib/internal/Magento/Framework/Locale/ConfigInterface.php @@ -9,6 +9,7 @@ * Provides access to locale-related config information * * @api + * @since 100.0.2 */ interface ConfigInterface { diff --git a/lib/internal/Magento/Framework/Locale/CurrencyInterface.php b/lib/internal/Magento/Framework/Locale/CurrencyInterface.php index e52ac551f54ec..e36a905a6c473 100644 --- a/lib/internal/Magento/Framework/Locale/CurrencyInterface.php +++ b/lib/internal/Magento/Framework/Locale/CurrencyInterface.php @@ -9,6 +9,7 @@ * Provides access to currency config information * * @api + * @since 100.0.2 */ interface CurrencyInterface { diff --git a/lib/internal/Magento/Framework/Locale/FormatInterface.php b/lib/internal/Magento/Framework/Locale/FormatInterface.php index 1312c8841c23b..1a15b2610be54 100644 --- a/lib/internal/Magento/Framework/Locale/FormatInterface.php +++ b/lib/internal/Magento/Framework/Locale/FormatInterface.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ interface FormatInterface { diff --git a/lib/internal/Magento/Framework/Locale/ListsInterface.php b/lib/internal/Magento/Framework/Locale/ListsInterface.php index 22e9bf00ebce7..c7d509e20546a 100644 --- a/lib/internal/Magento/Framework/Locale/ListsInterface.php +++ b/lib/internal/Magento/Framework/Locale/ListsInterface.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ interface ListsInterface extends OptionInterface { diff --git a/lib/internal/Magento/Framework/Locale/ResolverInterface.php b/lib/internal/Magento/Framework/Locale/ResolverInterface.php index 22ec8fb70304c..70d397ddf3cc1 100644 --- a/lib/internal/Magento/Framework/Locale/ResolverInterface.php +++ b/lib/internal/Magento/Framework/Locale/ResolverInterface.php @@ -9,6 +9,7 @@ * Manages locale config information * * @api + * @since 100.0.2 */ interface ResolverInterface { diff --git a/lib/internal/Magento/Framework/Lock/LockManagerInterface.php b/lib/internal/Magento/Framework/Lock/LockManagerInterface.php index 76cc8506eb182..81f721fac9036 100644 --- a/lib/internal/Magento/Framework/Lock/LockManagerInterface.php +++ b/lib/internal/Magento/Framework/Lock/LockManagerInterface.php @@ -11,6 +11,7 @@ * Interface of a lock manager * * @api + * @since 101.0.5 */ interface LockManagerInterface { @@ -21,6 +22,7 @@ interface LockManagerInterface * @param int $timeout How long to wait lock acquisition in seconds, negative value means infinite timeout * @return bool * @api + * @since 101.0.5 */ public function lock(string $name, int $timeout = -1): bool; @@ -30,6 +32,7 @@ public function lock(string $name, int $timeout = -1): bool; * @param string $name lock name * @return bool * @api + * @since 101.0.5 */ public function unlock(string $name): bool; @@ -39,6 +42,7 @@ public function unlock(string $name): bool; * @param string $name lock name * @return bool * @api + * @since 101.0.5 */ public function isLocked(string $name): bool; } diff --git a/lib/internal/Magento/Framework/Mail/MailMessageInterface.php b/lib/internal/Magento/Framework/Mail/MailMessageInterface.php index da010be270255..2400935a32291 100644 --- a/lib/internal/Magento/Framework/Mail/MailMessageInterface.php +++ b/lib/internal/Magento/Framework/Mail/MailMessageInterface.php @@ -9,6 +9,7 @@ * Mail Message interface * * @api + * @since 101.0.8 */ interface MailMessageInterface extends MessageInterface { @@ -17,6 +18,7 @@ interface MailMessageInterface extends MessageInterface * * @param string $html * @return $this + * @since 101.0.8 */ public function setBodyHtml($html); @@ -25,6 +27,7 @@ public function setBodyHtml($html); * * @param string $text * @return $this + * @since 101.0.8 */ public function setBodyText($text); @@ -32,6 +35,7 @@ public function setBodyText($text); * Get message source code. * * @return string + * @since 101.0.8 */ public function getRawMessage(); } diff --git a/lib/internal/Magento/Framework/Mail/Message.php b/lib/internal/Magento/Framework/Mail/Message.php index 71da6e673bf29..ac4cbc5557500 100644 --- a/lib/internal/Magento/Framework/Mail/Message.php +++ b/lib/internal/Magento/Framework/Mail/Message.php @@ -39,7 +39,7 @@ public function __construct($charset = 'utf-8') /** * @inheritdoc * - * @deprecated + * @deprecated 101.0.8 * @see \Magento\Framework\Mail\Message::setBodyText * @see \Magento\Framework\Mail\Message::setBodyHtml */ @@ -52,7 +52,7 @@ public function setMessageType($type) /** * @inheritdoc * - * @deprecated + * @deprecated 101.0.8 * @see \Magento\Framework\Mail\Message::setBodyText * @see \Magento\Framework\Mail\Message::setBodyHtml */ @@ -93,7 +93,7 @@ public function getBody() /** * @inheritdoc * - * @deprecated This function is missing the from name. The + * @deprecated 102.0.1 This function is missing the from name. The * setFromAddress() function sets both from address and from name. * @see setFromAddress() */ diff --git a/lib/internal/Magento/Framework/Mail/MessageInterface.php b/lib/internal/Magento/Framework/Mail/MessageInterface.php index c0d3afed81e39..904c723e8bf08 100644 --- a/lib/internal/Magento/Framework/Mail/MessageInterface.php +++ b/lib/internal/Magento/Framework/Mail/MessageInterface.php @@ -9,8 +9,9 @@ * Mail Message interface * * @api - * @deprecated in favor of MailMessageInterface to avoid temporal coupling (setMessageType + setBody) + * @deprecated 102.0.0 in favor of MailMessageInterface to avoid temporal coupling (setMessageType + setBody) * @see \Magento\Framework\Mail\MailMessageInterface + * @since 100.0.2 */ interface MessageInterface { @@ -46,7 +47,7 @@ public function getSubject(); * @param mixed $body * @return $this * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\Framework\Mail\MailMessageInterface::setBodyHtml * @see \Magento\Framework\Mail\MailMessageInterface::setBodyText() */ @@ -105,7 +106,7 @@ public function setReplyTo($replyToAddress); * @param string $type * @return $this * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\Framework\Mail\MailMessageInterface::setBodyHtml * @see \Magento\Framework\Mail\MailMessageInterface::getBodyHtml * @see \Magento\Framework\Mail\MailMessageInterface::setBodyText() diff --git a/lib/internal/Magento/Framework/Mail/Template/ConfigInterface.php b/lib/internal/Magento/Framework/Mail/Template/ConfigInterface.php index b4e6cb46045fe..bac90dcbae5e0 100644 --- a/lib/internal/Magento/Framework/Mail/Template/ConfigInterface.php +++ b/lib/internal/Magento/Framework/Mail/Template/ConfigInterface.php @@ -9,6 +9,7 @@ * High-level interface for mail templates data that hides format from the client code * * @api + * @since 100.0.2 */ interface ConfigInterface { diff --git a/lib/internal/Magento/Framework/Mail/Template/FactoryInterface.php b/lib/internal/Magento/Framework/Mail/Template/FactoryInterface.php index 4e88a9897e4a2..2c0f99e4ac1f1 100644 --- a/lib/internal/Magento/Framework/Mail/Template/FactoryInterface.php +++ b/lib/internal/Magento/Framework/Mail/Template/FactoryInterface.php @@ -9,6 +9,7 @@ * Mail Template Factory interface * * @api + * @since 100.0.2 */ interface FactoryInterface { diff --git a/lib/internal/Magento/Framework/Mail/Template/SenderResolverInterface.php b/lib/internal/Magento/Framework/Mail/Template/SenderResolverInterface.php index 89fcb7478bdf5..f283fe54819ac 100644 --- a/lib/internal/Magento/Framework/Mail/Template/SenderResolverInterface.php +++ b/lib/internal/Magento/Framework/Mail/Template/SenderResolverInterface.php @@ -9,6 +9,7 @@ * Mail Sender Resolver interface * * @api + * @since 100.0.2 */ interface SenderResolverInterface { diff --git a/lib/internal/Magento/Framework/Mail/Template/TransportBuilder.php b/lib/internal/Magento/Framework/Mail/Template/TransportBuilder.php index b9271c0209fd3..d7abb84b36647 100644 --- a/lib/internal/Magento/Framework/Mail/Template/TransportBuilder.php +++ b/lib/internal/Magento/Framework/Mail/Template/TransportBuilder.php @@ -21,6 +21,7 @@ * * @api * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @since 100.0.2 */ class TransportBuilder { @@ -177,7 +178,7 @@ public function setReplyTo($email, $name = null) /** * Set mail from address * - * @deprecated This function sets the from address but does not provide + * @deprecated 102.0.1 This function sets the from address but does not provide * a way of setting the correct from addresses based on the scope. * @see setFromByScope() * @@ -197,6 +198,7 @@ public function setFrom($from) * @param string|int $scopeId * @return $this * @throws \Magento\Framework\Exception\MailException + * @since 102.0.1 */ public function setFromByScope($from, $scopeId = null) { diff --git a/lib/internal/Magento/Framework/Mail/Template/TransportBuilderByStore.php b/lib/internal/Magento/Framework/Mail/Template/TransportBuilderByStore.php index 85b1b181d4f9e..416fbb1ecb1dd 100644 --- a/lib/internal/Magento/Framework/Mail/Template/TransportBuilderByStore.php +++ b/lib/internal/Magento/Framework/Mail/Template/TransportBuilderByStore.php @@ -11,7 +11,7 @@ /** * Class TransportBuilderByStore * - * @deprecated The ability to set From address based on store is now available + * @deprecated 102.0.1 The ability to set From address based on store is now available * in the \Magento\Framework\Mail\Template\TransportBuilder class * @see \Magento\Framework\Mail\Template\TransportBuilder::setFromByStore */ diff --git a/lib/internal/Magento/Framework/Mail/TemplateInterface.php b/lib/internal/Magento/Framework/Mail/TemplateInterface.php index ad13772876ea1..b1062aec92bee 100644 --- a/lib/internal/Magento/Framework/Mail/TemplateInterface.php +++ b/lib/internal/Magento/Framework/Mail/TemplateInterface.php @@ -9,6 +9,7 @@ * Mail Template interface * * @api + * @since 100.0.2 */ interface TemplateInterface extends \Magento\Framework\App\TemplateTypesInterface { diff --git a/lib/internal/Magento/Framework/Mail/TransportInterface.php b/lib/internal/Magento/Framework/Mail/TransportInterface.php index cccfad885838e..dd65439243ba3 100644 --- a/lib/internal/Magento/Framework/Mail/TransportInterface.php +++ b/lib/internal/Magento/Framework/Mail/TransportInterface.php @@ -9,6 +9,7 @@ * Mail Transport interface * * @api + * @since 100.0.2 */ interface TransportInterface { @@ -24,7 +25,7 @@ public function sendMessage(); * Get message * * @return \Magento\Framework\Mail\MessageInterface - * @since 100.2.0 + * @since 101.0.0 */ public function getMessage(); } diff --git a/lib/internal/Magento/Framework/Math/Calculator.php b/lib/internal/Magento/Framework/Math/Calculator.php index c09f90d4be4da..a8971f964a668 100644 --- a/lib/internal/Magento/Framework/Math/Calculator.php +++ b/lib/internal/Magento/Framework/Math/Calculator.php @@ -9,6 +9,7 @@ * Calculations Library * * @api + * @since 100.0.2 */ class Calculator { diff --git a/lib/internal/Magento/Framework/Math/Division.php b/lib/internal/Magento/Framework/Math/Division.php index 820a11b80dea9..c69bc4379e77f 100644 --- a/lib/internal/Magento/Framework/Math/Division.php +++ b/lib/internal/Magento/Framework/Math/Division.php @@ -9,6 +9,7 @@ * Division library * * @api + * @since 100.0.2 */ class Division { diff --git a/lib/internal/Magento/Framework/Math/FloatComparator.php b/lib/internal/Magento/Framework/Math/FloatComparator.php index 4053404369956..affec441e89fd 100644 --- a/lib/internal/Magento/Framework/Math/FloatComparator.php +++ b/lib/internal/Magento/Framework/Math/FloatComparator.php @@ -11,6 +11,7 @@ * Contains methods to compare float digits. * * @api + * @since 101.0.6 */ class FloatComparator { @@ -27,6 +28,7 @@ class FloatComparator * @param float $a * @param float $b * @return bool + * @since 101.0.6 */ public function equal(float $a, float $b): bool { @@ -39,6 +41,7 @@ public function equal(float $a, float $b): bool * @param float $a * @param float $b * @return bool + * @since 101.0.6 */ public function greaterThan(float $a, float $b): bool { @@ -51,6 +54,7 @@ public function greaterThan(float $a, float $b): bool * @param float $a * @param float $b * @return bool + * @since 101.0.6 */ public function greaterThanOrEqual(float $a, float $b): bool { diff --git a/lib/internal/Magento/Framework/Math/Random.php b/lib/internal/Magento/Framework/Math/Random.php index c2059e1935a80..8adb602e00479 100644 --- a/lib/internal/Magento/Framework/Math/Random.php +++ b/lib/internal/Magento/Framework/Math/Random.php @@ -12,6 +12,7 @@ * Random data generator * * @api + * @since 100.0.2 */ class Random { diff --git a/lib/internal/Magento/Framework/Message/AbstractMessage.php b/lib/internal/Magento/Framework/Message/AbstractMessage.php index 85789bca9047c..c7f0b283d1dd9 100644 --- a/lib/internal/Magento/Framework/Message/AbstractMessage.php +++ b/lib/internal/Magento/Framework/Message/AbstractMessage.php @@ -9,6 +9,7 @@ * Abstract message model * * @api + * @since 100.0.2 */ abstract class AbstractMessage implements MessageInterface { diff --git a/lib/internal/Magento/Framework/Message/Collection.php b/lib/internal/Magento/Framework/Message/Collection.php index 32e84fc28f5a0..dfcb06dd6f291 100644 --- a/lib/internal/Magento/Framework/Message/Collection.php +++ b/lib/internal/Magento/Framework/Message/Collection.php @@ -9,6 +9,7 @@ * Messages collection * * @api + * @since 100.0.2 */ class Collection { diff --git a/lib/internal/Magento/Framework/Message/ManagerInterface.php b/lib/internal/Magento/Framework/Message/ManagerInterface.php index 360444fa897ac..29063a4deecbd 100644 --- a/lib/internal/Magento/Framework/Message/ManagerInterface.php +++ b/lib/internal/Magento/Framework/Message/ManagerInterface.php @@ -9,6 +9,7 @@ * Adds different types of messages to the session, and allows access to existing messages. * * @api + * @since 100.0.2 */ interface ManagerInterface { diff --git a/lib/internal/Magento/Framework/Message/MessageInterface.php b/lib/internal/Magento/Framework/Message/MessageInterface.php index 2dad284152990..5a52b9b2fe649 100644 --- a/lib/internal/Magento/Framework/Message/MessageInterface.php +++ b/lib/internal/Magento/Framework/Message/MessageInterface.php @@ -9,6 +9,7 @@ * Represent a message with a type, content text, and an isSticky attribute to prevent message from being cleared. * * @api + * @since 100.0.2 */ interface MessageInterface { diff --git a/lib/internal/Magento/Framework/Message/PhraseFactory.php b/lib/internal/Magento/Framework/Message/PhraseFactory.php index 2cfa324f40dbe..7efc83a811549 100644 --- a/lib/internal/Magento/Framework/Message/PhraseFactory.php +++ b/lib/internal/Magento/Framework/Message/PhraseFactory.php @@ -9,7 +9,7 @@ /** * Factory to combine several messages into one - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ class PhraseFactory { diff --git a/lib/internal/Magento/Framework/MessageQueue/BatchConsumer.php b/lib/internal/Magento/Framework/MessageQueue/BatchConsumer.php index e7dc12be40e6d..659b153897615 100644 --- a/lib/internal/Magento/Framework/MessageQueue/BatchConsumer.php +++ b/lib/internal/Magento/Framework/MessageQueue/BatchConsumer.php @@ -275,7 +275,7 @@ private function lockMessages(array $messages) * * @return ConsumerConfig * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ private function getConsumerConfig() { @@ -292,7 +292,7 @@ private function getConsumerConfig() * * @return MessageController * - * @deprecated 100.1.0 + * @deprecated 102.0.2 */ private function getMessageController() { diff --git a/lib/internal/Magento/Framework/MessageQueue/Bulk/ExchangeFactory.php b/lib/internal/Magento/Framework/MessageQueue/Bulk/ExchangeFactory.php index 47775ac857b07..15638954f265c 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Bulk/ExchangeFactory.php +++ b/lib/internal/Magento/Framework/MessageQueue/Bulk/ExchangeFactory.php @@ -9,7 +9,7 @@ * Factory class for @see \Magento\Framework\MessageQueue\ExchangeInterface * * @api - * @since 100.2.0 + * @since 102.0.2 */ class ExchangeFactory implements ExchangeFactoryInterface { @@ -27,7 +27,7 @@ class ExchangeFactory implements ExchangeFactoryInterface * Object Manager instance * * @var \Magento\Framework\ObjectManagerInterface - * @since 100.2.0 + * @since 102.0.2 */ protected $objectManager = null; @@ -37,7 +37,6 @@ class ExchangeFactory implements ExchangeFactoryInterface * @param \Magento\Framework\MessageQueue\ConnectionTypeResolver $connectionTypeResolver * @param \Magento\Framework\ObjectManagerInterface $objectManager * @param ExchangeFactoryInterface[] $exchangeFactories - * @since 100.2.0 */ public function __construct( \Magento\Framework\MessageQueue\ConnectionTypeResolver $connectionTypeResolver, @@ -51,7 +50,7 @@ public function __construct( /** * @inheritdoc - * @since 100.2.0 + * @since 102.0.2 */ public function create($connectionName, array $data = []) { diff --git a/lib/internal/Magento/Framework/MessageQueue/Bulk/ExchangeFactoryInterface.php b/lib/internal/Magento/Framework/MessageQueue/Bulk/ExchangeFactoryInterface.php index dc691e632c9ed..d737928111260 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Bulk/ExchangeFactoryInterface.php +++ b/lib/internal/Magento/Framework/MessageQueue/Bulk/ExchangeFactoryInterface.php @@ -9,7 +9,7 @@ * Factory class for @see \Magento\Framework\MessageQueue\Bulk\ExchangeInterface * * @api - * @since 100.2.0 + * @since 102.0.2 */ interface ExchangeFactoryInterface { @@ -21,7 +21,7 @@ interface ExchangeFactoryInterface * @return ExchangeInterface * @throws \LogicException If exchange is not defined for the specified connection type * or it doesn't implement ExchangeInterface - * @since 100.2.0 + * @since 102.0.2 */ public function create($connectionName, array $data = []); } diff --git a/lib/internal/Magento/Framework/MessageQueue/Bulk/ExchangeInterface.php b/lib/internal/Magento/Framework/MessageQueue/Bulk/ExchangeInterface.php index 08b64689c2940..66a3b42e750d3 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Bulk/ExchangeInterface.php +++ b/lib/internal/Magento/Framework/MessageQueue/Bulk/ExchangeInterface.php @@ -9,7 +9,7 @@ * Interface for bulk exchange. * * @api - * @since 100.2.0 + * @since 102.0.2 */ interface ExchangeInterface { @@ -19,7 +19,7 @@ interface ExchangeInterface * @param string $topic * @param \Magento\Framework\MessageQueue\EnvelopeInterface[] $envelopes * @return mixed - * @since 100.2.0 + * @since 102.0.2 */ public function enqueue($topic, array $envelopes); } diff --git a/lib/internal/Magento/Framework/MessageQueue/Code/Generator/Config/RemoteServiceReader/Communication.php b/lib/internal/Magento/Framework/MessageQueue/Code/Generator/Config/RemoteServiceReader/Communication.php index 6219dbf29b14c..a6294a9235f18 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Code/Generator/Config/RemoteServiceReader/Communication.php +++ b/lib/internal/Magento/Framework/MessageQueue/Code/Generator/Config/RemoteServiceReader/Communication.php @@ -96,7 +96,7 @@ public function read($scope = null) * @param string $methodName * @return string * - * @deprecated 100.2.0 + * @deprecated 102.0.2 * @see \Magento\Framework\Communication\Config\ReflectionGenerator::generateTopicName */ public function generateTopicName($typeName, $methodName) diff --git a/lib/internal/Magento/Framework/MessageQueue/Code/Generator/Config/RemoteServiceReader/MessageQueue.php b/lib/internal/Magento/Framework/MessageQueue/Code/Generator/Config/RemoteServiceReader/MessageQueue.php index 9412e1c2384f0..d75be138c1c55 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Code/Generator/Config/RemoteServiceReader/MessageQueue.php +++ b/lib/internal/Magento/Framework/MessageQueue/Code/Generator/Config/RemoteServiceReader/MessageQueue.php @@ -11,7 +11,7 @@ /** * Remote service configuration reader. * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ class MessageQueue implements \Magento\Framework\Config\ReaderInterface { diff --git a/lib/internal/Magento/Framework/MessageQueue/Code/Generator/RemoteServiceGenerator.php b/lib/internal/Magento/Framework/MessageQueue/Code/Generator/RemoteServiceGenerator.php index 0cd62963c547c..15e24a055a830 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Code/Generator/RemoteServiceGenerator.php +++ b/lib/internal/Magento/Framework/MessageQueue/Code/Generator/RemoteServiceGenerator.php @@ -218,7 +218,7 @@ protected function validateResultClassName() * * @return ReflectionGenerator * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ private function getReflectionGenerator() { diff --git a/lib/internal/Magento/Framework/MessageQueue/Config.php b/lib/internal/Magento/Framework/MessageQueue/Config.php index 9a925e1417c12..b234d12f1cb8f 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Config.php +++ b/lib/internal/Magento/Framework/MessageQueue/Config.php @@ -12,7 +12,7 @@ /** * Queue configuration. * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ class Config implements ConfigInterface { diff --git a/lib/internal/Magento/Framework/MessageQueue/Config/Consumer/ConfigReaderPlugin.php b/lib/internal/Magento/Framework/MessageQueue/Config/Consumer/ConfigReaderPlugin.php index c791baf4deb66..5d2687a6006c8 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Config/Consumer/ConfigReaderPlugin.php +++ b/lib/internal/Magento/Framework/MessageQueue/Config/Consumer/ConfigReaderPlugin.php @@ -11,7 +11,7 @@ /** * Plugin which provides access to consumers declared in queue config using consumer config interface. * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ class ConfigReaderPlugin { diff --git a/lib/internal/Magento/Framework/MessageQueue/Config/Publisher/ConfigReaderPlugin.php b/lib/internal/Magento/Framework/MessageQueue/Config/Publisher/ConfigReaderPlugin.php index 78b82a67069bf..22f032df1a15f 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Config/Publisher/ConfigReaderPlugin.php +++ b/lib/internal/Magento/Framework/MessageQueue/Config/Publisher/ConfigReaderPlugin.php @@ -11,7 +11,7 @@ /** * Plugin which provides access to publishers declared in queue config using publisher config interface. * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ class ConfigReaderPlugin { diff --git a/lib/internal/Magento/Framework/MessageQueue/Config/Reader/Xml.php b/lib/internal/Magento/Framework/MessageQueue/Config/Reader/Xml.php index 16efacf628d57..12d15b230370c 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Config/Reader/Xml.php +++ b/lib/internal/Magento/Framework/MessageQueue/Config/Reader/Xml.php @@ -9,7 +9,7 @@ /** * MessageQueue configuration filesystem loader. Loads all publisher configuration from XML file * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ class Xml extends \Magento\Framework\Config\Reader\Filesystem { diff --git a/lib/internal/Magento/Framework/MessageQueue/Config/Reader/Xml/CompositeConverter.php b/lib/internal/Magento/Framework/MessageQueue/Config/Reader/Xml/CompositeConverter.php index 0184f720b3b4e..235b90bee1971 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Config/Reader/Xml/CompositeConverter.php +++ b/lib/internal/Magento/Framework/MessageQueue/Config/Reader/Xml/CompositeConverter.php @@ -11,7 +11,7 @@ /** * Converts MessageQueue config from \DOMDocument to array * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ class CompositeConverter implements ConverterInterface { diff --git a/lib/internal/Magento/Framework/MessageQueue/Config/Reader/Xml/Converter/TopicConfig.php b/lib/internal/Magento/Framework/MessageQueue/Config/Reader/Xml/Converter/TopicConfig.php index e33d6ab5b1fb8..447592c5bb56e 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Config/Reader/Xml/Converter/TopicConfig.php +++ b/lib/internal/Magento/Framework/MessageQueue/Config/Reader/Xml/Converter/TopicConfig.php @@ -15,7 +15,7 @@ /** * Converts MessageQueue config from \DOMDocument to array * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ class TopicConfig implements \Magento\Framework\Config\ConverterInterface { diff --git a/lib/internal/Magento/Framework/MessageQueue/Config/Reader/Xml/SchemaLocator.php b/lib/internal/Magento/Framework/MessageQueue/Config/Reader/Xml/SchemaLocator.php index 613d564942e2f..2d621eaca7ff5 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Config/Reader/Xml/SchemaLocator.php +++ b/lib/internal/Magento/Framework/MessageQueue/Config/Reader/Xml/SchemaLocator.php @@ -9,7 +9,7 @@ /** * Schema locator for Publishers * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ class SchemaLocator implements \Magento\Framework\Config\SchemaLocatorInterface { diff --git a/lib/internal/Magento/Framework/MessageQueue/Config/Topology/ConfigReaderPlugin.php b/lib/internal/Magento/Framework/MessageQueue/Config/Topology/ConfigReaderPlugin.php index b5f8d179961c6..07b86cdff37a9 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Config/Topology/ConfigReaderPlugin.php +++ b/lib/internal/Magento/Framework/MessageQueue/Config/Topology/ConfigReaderPlugin.php @@ -10,7 +10,7 @@ /** * Plugin which provides access to topology declared in queue config using topology config interface. * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ class ConfigReaderPlugin { diff --git a/lib/internal/Magento/Framework/MessageQueue/ConfigInterface.php b/lib/internal/Magento/Framework/MessageQueue/ConfigInterface.php index a88b5dedbd269..d35749db508b5 100644 --- a/lib/internal/Magento/Framework/MessageQueue/ConfigInterface.php +++ b/lib/internal/Magento/Framework/MessageQueue/ConfigInterface.php @@ -9,7 +9,7 @@ use Magento\Framework\Exception\LocalizedException; /** - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ interface ConfigInterface { diff --git a/lib/internal/Magento/Framework/MessageQueue/Consumer.php b/lib/internal/Magento/Framework/MessageQueue/Consumer.php index 8f65a2d8c5ed2..b6e735197b218 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Consumer.php +++ b/lib/internal/Magento/Framework/MessageQueue/Consumer.php @@ -240,7 +240,7 @@ private function getTransactionCallback(QueueInterface $queue) * * @return ConsumerConfig * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ private function getConsumerConfig() { @@ -255,7 +255,7 @@ private function getConsumerConfig() * * @return CommunicationConfig * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ private function getCommunicationConfig() { @@ -271,7 +271,7 @@ private function getCommunicationConfig() * * @return QueueRepository * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ private function getQueueRepository() { @@ -286,7 +286,7 @@ private function getQueueRepository() * * @return MessageController * - * @deprecated 100.1.0 + * @deprecated 102.0.2 */ private function getMessageController() { @@ -302,7 +302,7 @@ private function getMessageController() * * @return MessageValidator * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ private function getMessageValidator() { @@ -318,7 +318,7 @@ private function getMessageValidator() * * @return EnvelopeFactory * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ private function getEnvelopeFactory() { diff --git a/lib/internal/Magento/Framework/MessageQueue/Consumer/ConfigInterface.php b/lib/internal/Magento/Framework/MessageQueue/Consumer/ConfigInterface.php index 344b5ef1d580c..ddf4b58c1af07 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Consumer/ConfigInterface.php +++ b/lib/internal/Magento/Framework/MessageQueue/Consumer/ConfigInterface.php @@ -12,7 +12,7 @@ * Consumer config interface provides access data declared in etc/queue_consumer.xml * * @api - * @since 100.2.0 + * @since 102.0.2 */ interface ConfigInterface { @@ -23,7 +23,7 @@ interface ConfigInterface * @return ConsumerConfigItemInterface * @throws LocalizedException * @throws \LogicException - * @since 100.2.0 + * @since 102.0.2 */ public function getConsumer($name); @@ -32,7 +32,7 @@ public function getConsumer($name); * * @return ConsumerConfigItemInterface[] * @throws \LogicException - * @since 100.2.0 + * @since 102.0.2 */ public function getConsumers(); } diff --git a/lib/internal/Magento/Framework/MessageQueue/ConsumerConfiguration.php b/lib/internal/Magento/Framework/MessageQueue/ConsumerConfiguration.php index 09cd5dcb8d909..79acf2d03fd9e 100644 --- a/lib/internal/Magento/Framework/MessageQueue/ConsumerConfiguration.php +++ b/lib/internal/Magento/Framework/MessageQueue/ConsumerConfiguration.php @@ -174,7 +174,7 @@ private function getData($key) * * @return ConsumerConfig * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ private function getConsumerConfig() { @@ -189,7 +189,7 @@ private function getConsumerConfig() * * @return CommunicationConfig * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ private function getCommunicationConfig() { diff --git a/lib/internal/Magento/Framework/MessageQueue/ConsumerConfigurationInterface.php b/lib/internal/Magento/Framework/MessageQueue/ConsumerConfigurationInterface.php index b825949ddb019..2182d888c25c7 100644 --- a/lib/internal/Magento/Framework/MessageQueue/ConsumerConfigurationInterface.php +++ b/lib/internal/Magento/Framework/MessageQueue/ConsumerConfigurationInterface.php @@ -42,7 +42,7 @@ public function getQueueName(); * Get consumer type sync|async. * * @return string - * @deprecated 100.2.0 + * @deprecated 102.0.2 * @see \Magento\Framework\Communication\ConfigInterface::getTopic * @throws \LogicException */ diff --git a/lib/internal/Magento/Framework/MessageQueue/ConsumerFactory.php b/lib/internal/Magento/Framework/MessageQueue/ConsumerFactory.php index 7d9f210b4a698..030e3299e1cd3 100644 --- a/lib/internal/Magento/Framework/MessageQueue/ConsumerFactory.php +++ b/lib/internal/Magento/Framework/MessageQueue/ConsumerFactory.php @@ -122,7 +122,7 @@ private function createConsumerConfiguration($consumerConfigItem) * * @return ConsumerConfig * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ private function getConsumerConfig() { @@ -137,7 +137,7 @@ private function getConsumerConfig() * * @return CommunicationConfig * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ private function getCommunicationConfig() { diff --git a/lib/internal/Magento/Framework/MessageQueue/ConsumerInterface.php b/lib/internal/Magento/Framework/MessageQueue/ConsumerInterface.php index ca45da7eca8ff..3b157fe645301 100644 --- a/lib/internal/Magento/Framework/MessageQueue/ConsumerInterface.php +++ b/lib/internal/Magento/Framework/MessageQueue/ConsumerInterface.php @@ -9,6 +9,8 @@ * Consumers will connect to a queue, read messages, and invoke a method to process the message contents. * * @api + * @since 102.0.2 + * @since 100.0.2 */ interface ConsumerInterface { @@ -18,6 +20,7 @@ interface ConsumerInterface * @param int|null $maxNumberOfMessages if not specified - process all queued incoming messages and terminate, * otherwise terminate execution after processing the specified number of messages * @return void + * @since 102.0.2 */ public function process($maxNumberOfMessages = null); } diff --git a/lib/internal/Magento/Framework/MessageQueue/EnvelopeInterface.php b/lib/internal/Magento/Framework/MessageQueue/EnvelopeInterface.php index 07f12d1856317..3c5fcb86928dd 100644 --- a/lib/internal/Magento/Framework/MessageQueue/EnvelopeInterface.php +++ b/lib/internal/Magento/Framework/MessageQueue/EnvelopeInterface.php @@ -7,6 +7,8 @@ /** * @api + * @since 102.0.2 + * @since 100.0.2 */ interface EnvelopeInterface { @@ -14,6 +16,7 @@ interface EnvelopeInterface * Binary representation of message * * @return string + * @since 102.0.2 */ public function getBody(); @@ -21,6 +24,7 @@ public function getBody(); * Message metadata * * @return array + * @since 102.0.2 */ public function getProperties(); } diff --git a/lib/internal/Magento/Framework/MessageQueue/ExchangeFactory.php b/lib/internal/Magento/Framework/MessageQueue/ExchangeFactory.php index ca1ef769af90f..b7a64e911c9e2 100644 --- a/lib/internal/Magento/Framework/MessageQueue/ExchangeFactory.php +++ b/lib/internal/Magento/Framework/MessageQueue/ExchangeFactory.php @@ -9,7 +9,7 @@ * Factory class for @see \Magento\Framework\MessageQueue\ExchangeInterface * * @api - * @since 100.2.0 + * @since 102.0.2 */ class ExchangeFactory implements ExchangeFactoryInterface { @@ -27,7 +27,7 @@ class ExchangeFactory implements ExchangeFactoryInterface * Object Manager instance * * @var \Magento\Framework\ObjectManagerInterface - * @since 100.2.0 + * @since 102.0.2 */ protected $objectManager = null; @@ -37,7 +37,6 @@ class ExchangeFactory implements ExchangeFactoryInterface * @param ConnectionTypeResolver $connectionTypeResolver * @param \Magento\Framework\ObjectManagerInterface $objectManager * @param ExchangeFactoryInterface[] $exchangeFactories - * @since 100.2.0 */ public function __construct( ConnectionTypeResolver $connectionTypeResolver, @@ -51,7 +50,7 @@ public function __construct( /** * {@inheritdoc} - * @since 100.2.0 + * @since 102.0.2 */ public function create($connectionName, array $data = []) { diff --git a/lib/internal/Magento/Framework/MessageQueue/ExchangeFactoryInterface.php b/lib/internal/Magento/Framework/MessageQueue/ExchangeFactoryInterface.php index 1e70b0266fc4f..1d1c78209a553 100644 --- a/lib/internal/Magento/Framework/MessageQueue/ExchangeFactoryInterface.php +++ b/lib/internal/Magento/Framework/MessageQueue/ExchangeFactoryInterface.php @@ -9,7 +9,7 @@ * Factory class for @see \Magento\Framework\MessageQueue\ExchangeInterface * * @api - * @since 100.2.0 + * @since 102.0.2 */ interface ExchangeFactoryInterface { @@ -19,7 +19,7 @@ interface ExchangeFactoryInterface * @param string $connectionName * @param array $data * @return ExchangeInterface - * @since 100.2.0 + * @since 102.0.2 */ public function create($connectionName, array $data = []); } diff --git a/lib/internal/Magento/Framework/MessageQueue/ExchangeInterface.php b/lib/internal/Magento/Framework/MessageQueue/ExchangeInterface.php index bb36332ae25b1..2362c2073d4fc 100644 --- a/lib/internal/Magento/Framework/MessageQueue/ExchangeInterface.php +++ b/lib/internal/Magento/Framework/MessageQueue/ExchangeInterface.php @@ -9,6 +9,8 @@ * Interface message Exchange * * @api + * @since 102.0.2 + * @since 100.0.2 */ interface ExchangeInterface { @@ -18,6 +20,7 @@ interface ExchangeInterface * @param string $topic * @param EnvelopeInterface $envelope * @return mixed + * @since 102.0.2 */ public function enqueue($topic, EnvelopeInterface $envelope); } diff --git a/lib/internal/Magento/Framework/MessageQueue/ExchangeRepository.php b/lib/internal/Magento/Framework/MessageQueue/ExchangeRepository.php index 1f26e5d785c1a..954a898cde620 100644 --- a/lib/internal/Magento/Framework/MessageQueue/ExchangeRepository.php +++ b/lib/internal/Magento/Framework/MessageQueue/ExchangeRepository.php @@ -53,7 +53,7 @@ public function getByConnectionName($connectionName) * Get exchange factory. * * @return ExchangeFactoryInterface - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ private function getExchangeFactory() { diff --git a/lib/internal/Magento/Framework/MessageQueue/MessageEncoder.php b/lib/internal/Magento/Framework/MessageQueue/MessageEncoder.php index 91ad24eaeb978..25a67aa856ffc 100644 --- a/lib/internal/Magento/Framework/MessageQueue/MessageEncoder.php +++ b/lib/internal/Magento/Framework/MessageQueue/MessageEncoder.php @@ -219,7 +219,7 @@ protected function getConverter($direction) * * @return CommunicationConfig * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ private function getCommunicationConfig() { diff --git a/lib/internal/Magento/Framework/MessageQueue/MessageIdGeneratorInterface.php b/lib/internal/Magento/Framework/MessageQueue/MessageIdGeneratorInterface.php index 727db7d34761a..4322b98fbd16e 100644 --- a/lib/internal/Magento/Framework/MessageQueue/MessageIdGeneratorInterface.php +++ b/lib/internal/Magento/Framework/MessageQueue/MessageIdGeneratorInterface.php @@ -9,7 +9,7 @@ * Used to generate unique id for queue message. * * @api - * @since 100.2.0 + * @since 102.0.2 */ interface MessageIdGeneratorInterface { @@ -18,7 +18,7 @@ interface MessageIdGeneratorInterface * * @param string $topicName * @return string - * @since 100.2.0 + * @since 102.0.2 */ public function generate($topicName); } diff --git a/lib/internal/Magento/Framework/MessageQueue/MessageLockException.php b/lib/internal/Magento/Framework/MessageQueue/MessageLockException.php index 4ea462f7e1a8e..0861a9928b838 100644 --- a/lib/internal/Magento/Framework/MessageQueue/MessageLockException.php +++ b/lib/internal/Magento/Framework/MessageQueue/MessageLockException.php @@ -11,7 +11,7 @@ * Class MessageLockException to be thrown when a message being processed is already in the lock table. * * @api - * @since 100.1.0 + * @since 102.0.2 */ class MessageLockException extends LocalizedException { diff --git a/lib/internal/Magento/Framework/MessageQueue/MessageValidator.php b/lib/internal/Magento/Framework/MessageQueue/MessageValidator.php index a40bb9af1e0c4..0474ee0fbaada 100644 --- a/lib/internal/Magento/Framework/MessageQueue/MessageValidator.php +++ b/lib/internal/Magento/Framework/MessageQueue/MessageValidator.php @@ -183,7 +183,7 @@ private function getRealType($message) * * @return CommunicationConfig * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ private function getCommunicationConfig() { diff --git a/lib/internal/Magento/Framework/MessageQueue/Publisher.php b/lib/internal/Magento/Framework/MessageQueue/Publisher.php index 8fe77abe69136..a8addfb411932 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Publisher.php +++ b/lib/internal/Magento/Framework/MessageQueue/Publisher.php @@ -109,7 +109,7 @@ private function isAmqpConfigured() * * @return PublisherConfig * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ private function getPublisherConfig() { @@ -124,7 +124,7 @@ private function getPublisherConfig() * * @return AmqpConfig * - * @deprecated + * @deprecated 100.2.0 102.0.2 */ private function getAmqpConfig() { diff --git a/lib/internal/Magento/Framework/MessageQueue/Publisher/ConfigInterface.php b/lib/internal/Magento/Framework/MessageQueue/Publisher/ConfigInterface.php index 7b5586b28a273..0429167df7e2f 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Publisher/ConfigInterface.php +++ b/lib/internal/Magento/Framework/MessageQueue/Publisher/ConfigInterface.php @@ -12,7 +12,7 @@ * Publisher config interface provides access data declared in etc/queue_publisher.xml * * @api - * @since 100.2.0 + * @since 102.0.2 */ interface ConfigInterface { @@ -23,7 +23,7 @@ interface ConfigInterface * @return PublisherConfigItemInterface * @throws LocalizedException * @throws \LogicException - * @since 100.2.0 + * @since 102.0.2 */ public function getPublisher($topic); @@ -32,7 +32,7 @@ public function getPublisher($topic); * * @return PublisherConfigItemInterface[] * @throws \LogicException - * @since 100.2.0 + * @since 102.0.2 */ public function getPublishers(); } diff --git a/lib/internal/Magento/Framework/MessageQueue/PublisherInterface.php b/lib/internal/Magento/Framework/MessageQueue/PublisherInterface.php index 1aee963b1bd47..234b93237b919 100644 --- a/lib/internal/Magento/Framework/MessageQueue/PublisherInterface.php +++ b/lib/internal/Magento/Framework/MessageQueue/PublisherInterface.php @@ -9,6 +9,8 @@ * Producer to publish messages via a specific transport to a specific queue or exchange. * * @api + * @since 102.0.2 + * @since 100.0.2 */ interface PublisherInterface { @@ -19,6 +21,7 @@ interface PublisherInterface * @param array|object $data * @return null|mixed * @throws \InvalidArgumentException If message is not formed properly + * @since 102.0.2 */ public function publish($topicName, $data); } diff --git a/lib/internal/Magento/Framework/MessageQueue/PublisherPool.php b/lib/internal/Magento/Framework/MessageQueue/PublisherPool.php index 2c1e4e64c7d71..292b3e7af9657 100644 --- a/lib/internal/Magento/Framework/MessageQueue/PublisherPool.php +++ b/lib/internal/Magento/Framework/MessageQueue/PublisherPool.php @@ -14,7 +14,7 @@ * Publishers pool. * * @api - * @since 100.1.0 + * @since 102.0.2 */ class PublisherPool implements PublisherInterface, BulkPublisherInterface { @@ -35,7 +35,7 @@ class PublisherPool implements PublisherInterface, BulkPublisherInterface * Publisher objects pool. * * @var \Magento\Framework\MessageQueue\PublisherInterface[] - * @since 100.1.0 + * @since 102.0.2 */ protected $publishers = []; @@ -43,7 +43,7 @@ class PublisherPool implements PublisherInterface, BulkPublisherInterface * Communication config. * * @var CommunicationConfig - * @since 100.1.0 + * @since 102.0.2 */ protected $communicationConfig; @@ -65,7 +65,6 @@ class PublisherPool implements PublisherInterface, BulkPublisherInterface * @param string[] $publishers * * @SuppressWarnings(PHPMD.UnusedFormalParameter) - * @since 100.1.0 */ public function __construct( CommunicationConfig $communicationConfig, @@ -78,7 +77,7 @@ public function __construct( /** * {@inheritdoc} - * @since 100.1.0 + * @since 102.0.2 */ public function publish($topicName, $data) { @@ -163,7 +162,7 @@ private function getPublisherForConnectionNameAndType($type, $connectionName) * * @return PublisherConfig * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ private function getPublisherConfig() { @@ -178,7 +177,7 @@ private function getPublisherConfig() * * @return ConnectionTypeResolver * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ private function getConnectionTypeResolver() { diff --git a/lib/internal/Magento/Framework/MessageQueue/QueueFactory.php b/lib/internal/Magento/Framework/MessageQueue/QueueFactory.php index eb734df06a59f..813d8f729c519 100644 --- a/lib/internal/Magento/Framework/MessageQueue/QueueFactory.php +++ b/lib/internal/Magento/Framework/MessageQueue/QueueFactory.php @@ -9,7 +9,7 @@ * Factory class for @see \Magento\Framework\MessageQueue\Queuenterface * * @api - * @since 100.2.0 + * @since 102.0.2 */ class QueueFactory implements QueueFactoryInterface { @@ -27,7 +27,7 @@ class QueueFactory implements QueueFactoryInterface * Object Manager instance * * @var \Magento\Framework\ObjectManagerInterface - * @since 100.2.0 + * @since 102.0.2 */ protected $objectManager = null; @@ -37,7 +37,6 @@ class QueueFactory implements QueueFactoryInterface * @param ConnectionTypeResolver $connectionTypeResolver * @param \Magento\Framework\ObjectManagerInterface $objectManager * @param QueueFactoryInterface[] $queueFactories - * @since 100.2.0 */ public function __construct( ConnectionTypeResolver $connectionTypeResolver, @@ -51,7 +50,7 @@ public function __construct( /** * {@inheritdoc} - * @since 100.2.0 + * @since 102.0.2 */ public function create($queueName, $connectionName) { diff --git a/lib/internal/Magento/Framework/MessageQueue/QueueFactoryInterface.php b/lib/internal/Magento/Framework/MessageQueue/QueueFactoryInterface.php index 697db9296b5b0..ef496b859cea6 100644 --- a/lib/internal/Magento/Framework/MessageQueue/QueueFactoryInterface.php +++ b/lib/internal/Magento/Framework/MessageQueue/QueueFactoryInterface.php @@ -9,7 +9,7 @@ * Factory class for @see \Magento\Framework\MessageQueue\QueueInterface * * @api - * @since 100.2.0 + * @since 102.0.2 */ interface QueueFactoryInterface { @@ -19,7 +19,7 @@ interface QueueFactoryInterface * @param string $queueName * @param string $connectionName * @return QueueInterface - * @since 100.2.0 + * @since 102.0.2 */ public function create($queueName, $connectionName); } diff --git a/lib/internal/Magento/Framework/MessageQueue/QueueInterface.php b/lib/internal/Magento/Framework/MessageQueue/QueueInterface.php index 1b3814b8e857a..ec35163ac93ca 100644 --- a/lib/internal/Magento/Framework/MessageQueue/QueueInterface.php +++ b/lib/internal/Magento/Framework/MessageQueue/QueueInterface.php @@ -9,6 +9,8 @@ * Interface for interaction with message queue. * * @api + * @since 102.0.2 + * @since 100.0.2 */ interface QueueInterface { @@ -16,6 +18,7 @@ interface QueueInterface * Get message from queue * * @return EnvelopeInterface + * @since 102.0.2 */ public function dequeue(); @@ -24,6 +27,7 @@ public function dequeue(); * * @param EnvelopeInterface $envelope * @return void + * @since 102.0.2 */ public function acknowledge(EnvelopeInterface $envelope); @@ -32,6 +36,7 @@ public function acknowledge(EnvelopeInterface $envelope); * * @param callable|array $callback * @return void + * @since 102.0.2 */ public function subscribe($callback); @@ -42,6 +47,7 @@ public function subscribe($callback); * @param bool $requeue * @param string $rejectionMessage * @return void + * @since 102.0.2 */ public function reject(EnvelopeInterface $envelope, $requeue = true, $rejectionMessage = null); @@ -50,7 +56,7 @@ public function reject(EnvelopeInterface $envelope, $requeue = true, $rejectionM * * @param EnvelopeInterface $envelope * @return void - * @since 100.1.0 + * @since 102.0.2 */ public function push(EnvelopeInterface $envelope); } diff --git a/lib/internal/Magento/Framework/MessageQueue/QueueRepository.php b/lib/internal/Magento/Framework/MessageQueue/QueueRepository.php index 5d04003c9ade0..cd64991e32ca7 100644 --- a/lib/internal/Magento/Framework/MessageQueue/QueueRepository.php +++ b/lib/internal/Magento/Framework/MessageQueue/QueueRepository.php @@ -57,7 +57,7 @@ public function get($connectionName, $queueName) * Get queue factory. * * @return QueueFactoryInterface - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ private function getQueueFactory() { diff --git a/lib/internal/Magento/Framework/MessageQueue/Rpc/Consumer.php b/lib/internal/Magento/Framework/MessageQueue/Rpc/Consumer.php index 10ef24c462808..167e499477429 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Rpc/Consumer.php +++ b/lib/internal/Magento/Framework/MessageQueue/Rpc/Consumer.php @@ -9,7 +9,7 @@ /** * A MessageQueue Consumer to handle receiving, processing and replying to an RPC message. * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ class Consumer extends \Magento\Framework\MessageQueue\Consumer { diff --git a/lib/internal/Magento/Framework/MessageQueue/Rpc/Publisher.php b/lib/internal/Magento/Framework/MessageQueue/Rpc/Publisher.php index 89b987cbb4405..67e22879a0a72 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Rpc/Publisher.php +++ b/lib/internal/Magento/Framework/MessageQueue/Rpc/Publisher.php @@ -107,7 +107,7 @@ public function publish($topicName, $data) * * @return ResponseQueueNameBuilder * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ private function getResponseQueueNameBuilder() { @@ -123,7 +123,7 @@ private function getResponseQueueNameBuilder() * * @return PublisherConfig * - * @deprecated 100.2.0 + * @deprecated 102.0.2 */ private function getPublisherConfig() { diff --git a/lib/internal/Magento/Framework/MessageQueue/Topology/ConfigInterface.php b/lib/internal/Magento/Framework/MessageQueue/Topology/ConfigInterface.php index 81d056999b573..51b51458b8229 100644 --- a/lib/internal/Magento/Framework/MessageQueue/Topology/ConfigInterface.php +++ b/lib/internal/Magento/Framework/MessageQueue/Topology/ConfigInterface.php @@ -13,7 +13,7 @@ * Topology config interface provides access data declared in etc/queue_topology.xml * * @api - * @since 100.2.0 + * @since 102.0.2 */ interface ConfigInterface { @@ -25,7 +25,7 @@ interface ConfigInterface * @return ExchangeConfigItemInterface * @throws LocalizedException * @throws \LogicException - * @since 100.2.0 + * @since 102.0.2 */ public function getExchange($name, $connection); @@ -34,7 +34,7 @@ public function getExchange($name, $connection); * * @return ExchangeConfigItemInterface[] * @throws \LogicException - * @since 100.2.0 + * @since 102.0.2 */ public function getExchanges(); @@ -43,7 +43,7 @@ public function getExchanges(); * * @return QueueConfigItemInterface[] * @throws \LogicException - * @since 100.2.0 + * @since 102.0.2 */ public function getQueues(); } diff --git a/lib/internal/Magento/Framework/MessageQueue/composer.json b/lib/internal/Magento/Framework/MessageQueue/composer.json index 6848e5dcaca31..183d19e8cd4a1 100644 --- a/lib/internal/Magento/Framework/MessageQueue/composer.json +++ b/lib/internal/Magento/Framework/MessageQueue/composer.json @@ -10,7 +10,7 @@ "AFL-3.0" ], "require": { - "magento/framework": "*", + "magento/framework": "102.0.*", "php": "~7.1.3||~7.2.0" }, "autoload": { @@ -20,5 +20,6 @@ "files": [ "registration.php" ] - } + }, + "version": "100.3.2" } diff --git a/lib/internal/Magento/Framework/Model/AbstractModel.php b/lib/internal/Magento/Framework/Model/AbstractModel.php index 8018c6176390f..b6473f8b0ab3c 100644 --- a/lib/internal/Magento/Framework/Model/AbstractModel.php +++ b/lib/internal/Magento/Framework/Model/AbstractModel.php @@ -15,6 +15,7 @@ * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @SuppressWarnings(PHPMD.NumberOfChildren) * @SuppressWarnings(PHPMD.TooManyFields) + * @since 100.0.2 */ abstract class AbstractModel extends \Magento\Framework\DataObject { @@ -467,7 +468,7 @@ protected function _setResourceModel($resourceName, $collectionName = null) * * @throws \Magento\Framework\Exception\LocalizedException * @return \Magento\Framework\Model\ResourceModel\Db\AbstractDb - * @deprecated because resource models should be used directly + * @deprecated 101.0.0 because resource models should be used directly */ protected function _getResource() { @@ -496,7 +497,7 @@ public function getResourceName() * @TODO MAGETWO-23541: Incorrect dependencies between Model\AbstractModel and Data\Collection\Db from Framework * @throws \Magento\Framework\Exception\LocalizedException * @return \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection - * @deprecated because collections should be used directly via factory + * @deprecated 101.0.0 because collections should be used directly via factory */ public function getResourceCollection() { @@ -517,7 +518,7 @@ public function getResourceCollection() * * @TODO MAGETWO-23541: Incorrect dependencies between Model\AbstractModel and Data\Collection\Db from Framework * @return \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection - * @deprecated because collections should be used directly via factory + * @deprecated 101.0.0 because collections should be used directly via factory */ public function getCollection() { @@ -587,7 +588,7 @@ protected function _afterLoad() * @param string $identifier * @param string|null $field * @return void - * @since 100.2.0 + * @since 101.0.0 */ public function beforeLoad($identifier, $field = null) { @@ -895,7 +896,7 @@ public function afterDeleteCommit() * Retrieve model resource * * @return \Magento\Framework\Model\ResourceModel\Db\AbstractDb - * @deprecated because resource models should be used directly + * @deprecated 101.0.0 because resource models should be used directly */ public function getResource() { diff --git a/lib/internal/Magento/Framework/Model/ActionValidator/RemoveAction.php b/lib/internal/Magento/Framework/Model/ActionValidator/RemoveAction.php index 430bb6f65f295..e6b492b0a04fc 100644 --- a/lib/internal/Magento/Framework/Model/ActionValidator/RemoveAction.php +++ b/lib/internal/Magento/Framework/Model/ActionValidator/RemoveAction.php @@ -12,6 +12,7 @@ /** * @api + * @since 100.0.2 */ class RemoveAction { diff --git a/lib/internal/Magento/Framework/Model/Context.php b/lib/internal/Magento/Framework/Model/Context.php index 910a0d48a5e9c..301398a67f6de 100644 --- a/lib/internal/Magento/Framework/Model/Context.php +++ b/lib/internal/Magento/Framework/Model/Context.php @@ -19,6 +19,7 @@ * the classes they were introduced for. * * @api + * @since 100.0.2 */ class Context implements \Magento\Framework\ObjectManager\ContextInterface { diff --git a/lib/internal/Magento/Framework/Model/ResourceModel/AbstractResource.php b/lib/internal/Magento/Framework/Model/ResourceModel/AbstractResource.php index 255e6d94d741f..71e87d4cb6d87 100644 --- a/lib/internal/Magento/Framework/Model/ResourceModel/AbstractResource.php +++ b/lib/internal/Magento/Framework/Model/ResourceModel/AbstractResource.php @@ -14,17 +14,19 @@ * Abstract resource model * * @api + * @since 100.0.2 */ abstract class AbstractResource { /** * @var Json - * @since 100.2.0 + * @since 101.0.0 */ protected $serializer; /** * @var \Psr\Log\LoggerInterface + * @since 102.0.0 */ protected $_logger; @@ -247,8 +249,8 @@ protected function _getColumnsForEntityLoad(\Magento\Framework\Model\AbstractMod * Get serializer * * @return Json - * @deprecated 100.2.0 - * @since 100.2.0 + * @deprecated 101.0.0 + * @since 101.0.0 */ protected function getSerializer() { @@ -262,7 +264,7 @@ protected function getSerializer() * Get logger * * @return \Psr\Log\LoggerInterface - * @deprecated + * @deprecated 101.0.1 */ private function getLogger() { diff --git a/lib/internal/Magento/Framework/Model/ResourceModel/Db/AbstractDb.php b/lib/internal/Magento/Framework/Model/ResourceModel/Db/AbstractDb.php index 5bb9c23a64f4b..52041d2cd3df8 100644 --- a/lib/internal/Magento/Framework/Model/ResourceModel/Db/AbstractDb.php +++ b/lib/internal/Magento/Framework/Model/ResourceModel/Db/AbstractDb.php @@ -20,6 +20,7 @@ * @SuppressWarnings(PHPMD.ExcessiveClassComplexity) * phpcs:disable Magento2.Classes.AbstractApi * @api + * @since 100.0.2 */ abstract class AbstractDb extends AbstractResource { diff --git a/lib/internal/Magento/Framework/Model/ResourceModel/Db/Collection/AbstractCollection.php b/lib/internal/Magento/Framework/Model/ResourceModel/Db/Collection/AbstractCollection.php index cba5f133f53c8..b63291394e1d1 100644 --- a/lib/internal/Magento/Framework/Model/ResourceModel/Db/Collection/AbstractCollection.php +++ b/lib/internal/Magento/Framework/Model/ResourceModel/Db/Collection/AbstractCollection.php @@ -15,6 +15,7 @@ * phpcs:disable Magento2.Classes.AbstractApi * @api * @SuppressWarnings(PHPMD.NumberOfChildren) + * @since 100.0.2 */ abstract class AbstractCollection extends AbstractDb implements SourceProviderInterface { diff --git a/lib/internal/Magento/Framework/Model/ResourceModel/Db/ObjectRelationProcessor.php b/lib/internal/Magento/Framework/Model/ResourceModel/Db/ObjectRelationProcessor.php index e899cc56f4548..0851c48d50036 100644 --- a/lib/internal/Magento/Framework/Model/ResourceModel/Db/ObjectRelationProcessor.php +++ b/lib/internal/Magento/Framework/Model/ResourceModel/Db/ObjectRelationProcessor.php @@ -10,6 +10,7 @@ /** * @api + * @since 100.0.2 */ class ObjectRelationProcessor { diff --git a/lib/internal/Magento/Framework/Model/ResourceModel/Db/TransactionManagerInterface.php b/lib/internal/Magento/Framework/Model/ResourceModel/Db/TransactionManagerInterface.php index 166789196cfa6..81ef2b1b5fa18 100644 --- a/lib/internal/Magento/Framework/Model/ResourceModel/Db/TransactionManagerInterface.php +++ b/lib/internal/Magento/Framework/Model/ResourceModel/Db/TransactionManagerInterface.php @@ -9,6 +9,7 @@ /** * @api + * @since 100.0.2 */ interface TransactionManagerInterface { diff --git a/lib/internal/Magento/Framework/Module/Dir/Reader.php b/lib/internal/Magento/Framework/Module/Dir/Reader.php index 141a291ea6818..42d97235d578e 100644 --- a/lib/internal/Magento/Framework/Module/Dir/Reader.php +++ b/lib/internal/Magento/Framework/Module/Dir/Reader.php @@ -15,6 +15,7 @@ /** * @api + * @since 100.0.2 */ class Reader { diff --git a/lib/internal/Magento/Framework/Module/Manager.php b/lib/internal/Magento/Framework/Module/Manager.php index a9a3d2294a90f..a542b236a9a34 100644 --- a/lib/internal/Magento/Framework/Module/Manager.php +++ b/lib/internal/Magento/Framework/Module/Manager.php @@ -21,7 +21,7 @@ class Manager { /** * @var Output\ConfigInterface - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private $outputConfig; @@ -32,7 +32,7 @@ class Manager /** * @var array - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private $outputConfigPaths; @@ -67,7 +67,7 @@ public function isEnabled($moduleName) * * @param string $moduleName Fully-qualified module name * @return boolean - * @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 @@ -85,7 +85,7 @@ public function isOutputEnabled($moduleName) * * @param string $moduleName Fully-qualified module name * @return boolean - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected function _isCustomOutputConfigEnabled($moduleName) { diff --git a/lib/internal/Magento/Framework/Module/ModuleResource.php b/lib/internal/Magento/Framework/Module/ModuleResource.php index b453ea4cba095..f7f212b829997 100644 --- a/lib/internal/Magento/Framework/Module/ModuleResource.php +++ b/lib/internal/Magento/Framework/Module/ModuleResource.php @@ -11,7 +11,7 @@ /** * Resource Model * - * @deprecated Declarative schema and data patches replace old functionality and setup_module table + * @deprecated 102.0.0 Declarative schema and data patches replace old functionality and setup_module table * So all resources related to this table, will be deprecated since 2.3.0 */ class ModuleResource extends AbstractDb implements ResourceInterface @@ -141,7 +141,7 @@ public function setDataVersion($moduleName, $version) /** * Flush all class cache * - * @deprecated This method was added as temporary solution, to increase modularity: + * @deprecated 102.0.0 This method was added as temporary solution, to increase modularity: * Because before new modules appears in resource only on next bootstrap * @return void */ diff --git a/lib/internal/Magento/Framework/Module/Output/Config.php b/lib/internal/Magento/Framework/Module/Output/Config.php index 48afc97dc5336..765998fcdb568 100644 --- a/lib/internal/Magento/Framework/Module/Output/Config.php +++ b/lib/internal/Magento/Framework/Module/Output/Config.php @@ -8,7 +8,7 @@ namespace Magento\Framework\Module\Output; /** - * @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 @@ -24,13 +24,13 @@ class Config implements \Magento\Framework\Module\Output\ConfigInterface /** * @var \Magento\Framework\App\Config\ScopeConfigInterface - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected $_scopeConfig; /** * @var string - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ protected $_storeType; @@ -50,7 +50,7 @@ public function __construct( * Whether a module is enabled in the configuration or not * * @param string $moduleName Fully-qualified module name - * @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 @@ -66,7 +66,7 @@ public function isEnabled($moduleName) * Retrieve module enabled specific path * * @param string $path Fully-qualified config path - * @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 diff --git a/lib/internal/Magento/Framework/Module/Output/ConfigInterface.php b/lib/internal/Magento/Framework/Module/Output/ConfigInterface.php index 6813691b9c906..b657e742ee2f0 100644 --- a/lib/internal/Magento/Framework/Module/Output/ConfigInterface.php +++ b/lib/internal/Magento/Framework/Module/Output/ConfigInterface.php @@ -6,7 +6,7 @@ namespace Magento\Framework\Module\Output; /** - * @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. */ interface ConfigInterface @@ -15,7 +15,7 @@ interface ConfigInterface * Whether a module is enabled in the configuration or not * * @param string $moduleName Fully-qualified module name - * @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 @@ -28,7 +28,7 @@ public function isEnabled($moduleName); * Retrieve module enabled specific path * * @param string $path Fully-qualified config path - * @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 diff --git a/lib/internal/Magento/Framework/Module/Setup/Migration.php b/lib/internal/Magento/Framework/Module/Setup/Migration.php index 1de26b5c9234a..551ea3305337a 100644 --- a/lib/internal/Magento/Framework/Module/Setup/Migration.php +++ b/lib/internal/Magento/Framework/Module/Setup/Migration.php @@ -15,6 +15,7 @@ * @api * @SuppressWarnings(PHPMD.ExcessiveParameterList) * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @since 100.0.2 */ class Migration { @@ -703,7 +704,7 @@ public function getCompositeModules() * @return string|int|float|bool|array|null * @throws \InvalidArgumentException * @SuppressWarnings(PHPMD.UnusedFormalParameter) - * @deprecated + * @deprecated 101.0.1 * @see \Magento\Framework\Module\Setup\Migration::jsonDecode */ protected function _jsonDecode($encodedValue, $objectDecodeType = 1) diff --git a/lib/internal/Magento/Framework/Notification/MessageInterface.php b/lib/internal/Magento/Framework/Notification/MessageInterface.php index a1694b042d9db..b768c0daed11b 100644 --- a/lib/internal/Magento/Framework/Notification/MessageInterface.php +++ b/lib/internal/Magento/Framework/Notification/MessageInterface.php @@ -14,6 +14,7 @@ * Interface MessageInterface * * @api + * @since 100.0.2 */ interface MessageInterface { diff --git a/lib/internal/Magento/Framework/Notification/MessageList.php b/lib/internal/Magento/Framework/Notification/MessageList.php index ac753b48c8944..62ac8e083bfd1 100644 --- a/lib/internal/Magento/Framework/Notification/MessageList.php +++ b/lib/internal/Magento/Framework/Notification/MessageList.php @@ -11,6 +11,7 @@ * * Class MessageList * @api + * @since 100.0.2 */ class MessageList { diff --git a/lib/internal/Magento/Framework/Notification/NotifierInterface.php b/lib/internal/Magento/Framework/Notification/NotifierInterface.php index 0e34e69a94541..862298663a9c6 100644 --- a/lib/internal/Magento/Framework/Notification/NotifierInterface.php +++ b/lib/internal/Magento/Framework/Notification/NotifierInterface.php @@ -12,6 +12,7 @@ * Interface NotifierInterface * * @api + * @since 100.0.2 */ interface NotifierInterface { diff --git a/lib/internal/Magento/Framework/Notification/NotifierList.php b/lib/internal/Magento/Framework/Notification/NotifierList.php index e436e21cae5fc..2b2f9f5faf8a8 100644 --- a/lib/internal/Magento/Framework/Notification/NotifierList.php +++ b/lib/internal/Magento/Framework/Notification/NotifierList.php @@ -10,6 +10,7 @@ * List of registered system notifiers * @api * + * @since 100.0.2 */ class NotifierList { diff --git a/lib/internal/Magento/Framework/Oauth/ConsumerInterface.php b/lib/internal/Magento/Framework/Oauth/ConsumerInterface.php index ae416b01eae94..3945233ca2b5d 100644 --- a/lib/internal/Magento/Framework/Oauth/ConsumerInterface.php +++ b/lib/internal/Magento/Framework/Oauth/ConsumerInterface.php @@ -9,6 +9,7 @@ * Oauth consumer interface. * * @api + * @since 100.0.2 */ interface ConsumerInterface { diff --git a/lib/internal/Magento/Framework/Oauth/Exception.php b/lib/internal/Magento/Framework/Oauth/Exception.php index 6e6753654fdd2..eaf1fd065ab01 100644 --- a/lib/internal/Magento/Framework/Oauth/Exception.php +++ b/lib/internal/Magento/Framework/Oauth/Exception.php @@ -11,6 +11,7 @@ * OAuth Exception * * @api + * @since 100.0.2 */ class Exception extends AuthenticationException { diff --git a/lib/internal/Magento/Framework/Oauth/NonceGeneratorInterface.php b/lib/internal/Magento/Framework/Oauth/NonceGeneratorInterface.php index ca364aa95abeb..79dd527afc570 100644 --- a/lib/internal/Magento/Framework/Oauth/NonceGeneratorInterface.php +++ b/lib/internal/Magento/Framework/Oauth/NonceGeneratorInterface.php @@ -11,6 +11,7 @@ * A method for generating a current timestamp is also provided by this interface. * * @api + * @since 100.0.2 */ interface NonceGeneratorInterface { diff --git a/lib/internal/Magento/Framework/Oauth/OauthInputException.php b/lib/internal/Magento/Framework/Oauth/OauthInputException.php index 1c526dd220f25..52ff15bbb75d5 100644 --- a/lib/internal/Magento/Framework/Oauth/OauthInputException.php +++ b/lib/internal/Magento/Framework/Oauth/OauthInputException.php @@ -10,6 +10,7 @@ /** * @api + * @since 100.0.2 */ class OauthInputException extends InputException { diff --git a/lib/internal/Magento/Framework/Oauth/OauthInterface.php b/lib/internal/Magento/Framework/Oauth/OauthInterface.php index 4f68eabaf69dc..8528e682ab4c8 100644 --- a/lib/internal/Magento/Framework/Oauth/OauthInterface.php +++ b/lib/internal/Magento/Framework/Oauth/OauthInterface.php @@ -11,6 +11,7 @@ * token requests. A method is also included for generating an OAuth header that can be used in an HTTP request. * * @api + * @since 100.0.2 */ interface OauthInterface { diff --git a/lib/internal/Magento/Framework/Oauth/TokenProviderInterface.php b/lib/internal/Magento/Framework/Oauth/TokenProviderInterface.php index 7f4bc6a320173..7b07b1550745a 100644 --- a/lib/internal/Magento/Framework/Oauth/TokenProviderInterface.php +++ b/lib/internal/Magento/Framework/Oauth/TokenProviderInterface.php @@ -11,6 +11,7 @@ * provided to help clients manipulating tokens validate and acquire the associated token consumer. * * @api + * @since 100.0.2 */ interface TokenProviderInterface { diff --git a/lib/internal/Magento/Framework/ObjectManager/Code/Generator/Repository.php b/lib/internal/Magento/Framework/ObjectManager/Code/Generator/Repository.php index be484f074342d..538024678f198 100644 --- a/lib/internal/Magento/Framework/ObjectManager/Code/Generator/Repository.php +++ b/lib/internal/Magento/Framework/ObjectManager/Code/Generator/Repository.php @@ -16,8 +16,7 @@ /** * Class Repository - * @since 2.0.0 - * @deprecated 2.2.0 As current implementation breaks Repository contract. Not removed from codebase to prevent + * @deprecated 101.0.0 As current implementation breaks Repository contract. Not removed from codebase to prevent * possible backward incompatibilities if this functionality being used by 3rd party developers. */ class Repository extends \Magento\Framework\Code\Generator\EntityAbstract diff --git a/lib/internal/Magento/Framework/ObjectManager/Config/Config.php b/lib/internal/Magento/Framework/ObjectManager/Config/Config.php index b45a2f8bcf0ba..72b5902337b0d 100644 --- a/lib/internal/Magento/Framework/ObjectManager/Config/Config.php +++ b/lib/internal/Magento/Framework/ObjectManager/Config/Config.php @@ -336,7 +336,7 @@ public function getPreferences() * Get serializer * * @return \Magento\Framework\Serialize\SerializerInterface - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getSerializer() { diff --git a/lib/internal/Magento/Framework/ObjectManager/ContextInterface.php b/lib/internal/Magento/Framework/ObjectManager/ContextInterface.php index 323f092e7cf52..742917ead47fc 100644 --- a/lib/internal/Magento/Framework/ObjectManager/ContextInterface.php +++ b/lib/internal/Magento/Framework/ObjectManager/ContextInterface.php @@ -17,6 +17,7 @@ * the classes they were introduced for. * * @api + * @since 100.0.2 */ interface ContextInterface { diff --git a/lib/internal/Magento/Framework/ObjectManagerInterface.php b/lib/internal/Magento/Framework/ObjectManagerInterface.php index 68e7056bc413b..6b165595f0f2c 100644 --- a/lib/internal/Magento/Framework/ObjectManagerInterface.php +++ b/lib/internal/Magento/Framework/ObjectManagerInterface.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ interface ObjectManagerInterface { diff --git a/lib/internal/Magento/Framework/Option/ArrayInterface.php b/lib/internal/Magento/Framework/Option/ArrayInterface.php index 054d9059b02f8..3c813545bc2c5 100644 --- a/lib/internal/Magento/Framework/Option/ArrayInterface.php +++ b/lib/internal/Magento/Framework/Option/ArrayInterface.php @@ -8,7 +8,7 @@ /** * Array marker interface * - * @deprecated please use \Magento\Framework\Data\OptionSourceInterface instead. + * @deprecated 102.0.1 please use \Magento\Framework\Data\OptionSourceInterface instead. * @see \Magento\Framework\Data\OptionSourceInterface */ interface ArrayInterface extends \Magento\Framework\Data\OptionSourceInterface diff --git a/lib/internal/Magento/Framework/Phrase.php b/lib/internal/Magento/Framework/Phrase.php index 02092c3ab8581..30fab8292f11e 100644 --- a/lib/internal/Magento/Framework/Phrase.php +++ b/lib/internal/Magento/Framework/Phrase.php @@ -12,6 +12,7 @@ /** * @api + * @since 100.0.2 */ class Phrase implements \JsonSerializable { diff --git a/lib/internal/Magento/Framework/Phrase/RendererInterface.php b/lib/internal/Magento/Framework/Phrase/RendererInterface.php index e3e314696f3d1..fa8a8fcae7ae8 100644 --- a/lib/internal/Magento/Framework/Phrase/RendererInterface.php +++ b/lib/internal/Magento/Framework/Phrase/RendererInterface.php @@ -11,6 +11,7 @@ * Translated phrase renderer * * @api + * @since 100.0.2 */ interface RendererInterface { diff --git a/lib/internal/Magento/Framework/Pricing/Adjustment/AdjustmentInterface.php b/lib/internal/Magento/Framework/Pricing/Adjustment/AdjustmentInterface.php index 9dff304ea3407..2ca6bd07d16e0 100644 --- a/lib/internal/Magento/Framework/Pricing/Adjustment/AdjustmentInterface.php +++ b/lib/internal/Magento/Framework/Pricing/Adjustment/AdjustmentInterface.php @@ -12,6 +12,7 @@ * Interface AdjustmentInterface * * @api + * @since 100.0.2 */ interface AdjustmentInterface { diff --git a/lib/internal/Magento/Framework/Pricing/Adjustment/CalculatorInterface.php b/lib/internal/Magento/Framework/Pricing/Adjustment/CalculatorInterface.php index ea622c2a1cba6..2c182632407ab 100644 --- a/lib/internal/Magento/Framework/Pricing/Adjustment/CalculatorInterface.php +++ b/lib/internal/Magento/Framework/Pricing/Adjustment/CalculatorInterface.php @@ -12,6 +12,7 @@ * Calculator interface * * @api + * @since 100.0.2 */ interface CalculatorInterface { diff --git a/lib/internal/Magento/Framework/Pricing/Adjustment/Collection.php b/lib/internal/Magento/Framework/Pricing/Adjustment/Collection.php index c7ab4b6e796c2..96e4d52e6b41d 100644 --- a/lib/internal/Magento/Framework/Pricing/Adjustment/Collection.php +++ b/lib/internal/Magento/Framework/Pricing/Adjustment/Collection.php @@ -10,6 +10,7 @@ * Adjustment collection model * * @api + * @since 100.0.2 */ class Collection { diff --git a/lib/internal/Magento/Framework/Pricing/Adjustment/Pool.php b/lib/internal/Magento/Framework/Pricing/Adjustment/Pool.php index d064e05b0b671..4d1e213a9ff6a 100644 --- a/lib/internal/Magento/Framework/Pricing/Adjustment/Pool.php +++ b/lib/internal/Magento/Framework/Pricing/Adjustment/Pool.php @@ -12,6 +12,7 @@ * Global adjustment pool model * * @api + * @since 100.0.2 */ class Pool { diff --git a/lib/internal/Magento/Framework/Pricing/Amount/AmountFactory.php b/lib/internal/Magento/Framework/Pricing/Amount/AmountFactory.php index a8340ee097f58..93da79d8588cb 100644 --- a/lib/internal/Magento/Framework/Pricing/Amount/AmountFactory.php +++ b/lib/internal/Magento/Framework/Pricing/Amount/AmountFactory.php @@ -10,6 +10,7 @@ * Class AmountFactory * * @api + * @since 100.0.2 */ class AmountFactory { diff --git a/lib/internal/Magento/Framework/Pricing/Amount/AmountInterface.php b/lib/internal/Magento/Framework/Pricing/Amount/AmountInterface.php index a625e340395cc..45240315aa126 100644 --- a/lib/internal/Magento/Framework/Pricing/Amount/AmountInterface.php +++ b/lib/internal/Magento/Framework/Pricing/Amount/AmountInterface.php @@ -10,6 +10,7 @@ * Amount interface, the amount values are in display currency * * @api + * @since 100.0.2 */ interface AmountInterface { diff --git a/lib/internal/Magento/Framework/Pricing/Helper/Data.php b/lib/internal/Magento/Framework/Pricing/Helper/Data.php index bc56bddea8ece..39852074300be 100644 --- a/lib/internal/Magento/Framework/Pricing/Helper/Data.php +++ b/lib/internal/Magento/Framework/Pricing/Helper/Data.php @@ -11,6 +11,7 @@ * Pricing data helper * * @api + * @since 100.0.2 */ class Data extends \Magento\Framework\App\Helper\AbstractHelper { diff --git a/lib/internal/Magento/Framework/Pricing/Price/AbstractPrice.php b/lib/internal/Magento/Framework/Pricing/Price/AbstractPrice.php index 8c49385f7e60f..89470cf24cbb6 100644 --- a/lib/internal/Magento/Framework/Pricing/Price/AbstractPrice.php +++ b/lib/internal/Magento/Framework/Pricing/Price/AbstractPrice.php @@ -16,6 +16,7 @@ * Should be the base for creating any Price type class * * @api + * @since 100.0.2 */ abstract class AbstractPrice implements PriceInterface { diff --git a/lib/internal/Magento/Framework/Pricing/Price/BasePriceProviderInterface.php b/lib/internal/Magento/Framework/Pricing/Price/BasePriceProviderInterface.php index eb5c6d9064e21..b6367fa46c161 100644 --- a/lib/internal/Magento/Framework/Pricing/Price/BasePriceProviderInterface.php +++ b/lib/internal/Magento/Framework/Pricing/Price/BasePriceProviderInterface.php @@ -10,6 +10,7 @@ * Interface BasePriceProviderInterface * * @api + * @since 100.0.2 */ interface BasePriceProviderInterface { diff --git a/lib/internal/Magento/Framework/Pricing/Price/Collection.php b/lib/internal/Magento/Framework/Pricing/Price/Collection.php index 200c3a50aff89..eedb910c56b92 100644 --- a/lib/internal/Magento/Framework/Pricing/Price/Collection.php +++ b/lib/internal/Magento/Framework/Pricing/Price/Collection.php @@ -12,6 +12,7 @@ * Class Collection * * @api + * @since 100.0.2 */ class Collection implements \Iterator { diff --git a/lib/internal/Magento/Framework/Pricing/Price/Pool.php b/lib/internal/Magento/Framework/Pricing/Price/Pool.php index dfdd0c52681e1..a1c7d416b2259 100644 --- a/lib/internal/Magento/Framework/Pricing/Price/Pool.php +++ b/lib/internal/Magento/Framework/Pricing/Price/Pool.php @@ -10,6 +10,7 @@ * Class Pool * * @api + * @since 100.0.2 */ class Pool implements \Iterator, \ArrayAccess { diff --git a/lib/internal/Magento/Framework/Pricing/Price/PriceInterface.php b/lib/internal/Magento/Framework/Pricing/Price/PriceInterface.php index 7953940287eb2..2b3bd86d04b2b 100644 --- a/lib/internal/Magento/Framework/Pricing/Price/PriceInterface.php +++ b/lib/internal/Magento/Framework/Pricing/Price/PriceInterface.php @@ -12,6 +12,7 @@ * Catalog price interface * * @api + * @since 100.0.2 */ interface PriceInterface { diff --git a/lib/internal/Magento/Framework/Pricing/PriceCurrencyInterface.php b/lib/internal/Magento/Framework/Pricing/PriceCurrencyInterface.php index eb379b54d257f..665b9b559208f 100644 --- a/lib/internal/Magento/Framework/Pricing/PriceCurrencyInterface.php +++ b/lib/internal/Magento/Framework/Pricing/PriceCurrencyInterface.php @@ -10,6 +10,7 @@ * Interface PriceCurrencyInterface * * @api + * @since 100.0.2 */ interface PriceCurrencyInterface { @@ -78,7 +79,7 @@ public function convertAndFormat( /** * Round price * - * @deprecated + * @deprecated 102.0.1 * @param float $price * @return float */ diff --git a/lib/internal/Magento/Framework/Pricing/PriceInfo/Base.php b/lib/internal/Magento/Framework/Pricing/PriceInfo/Base.php index ac8c301e24a5c..31b343c74e272 100644 --- a/lib/internal/Magento/Framework/Pricing/PriceInfo/Base.php +++ b/lib/internal/Magento/Framework/Pricing/PriceInfo/Base.php @@ -17,6 +17,7 @@ * Price info base model * * @api + * @since 100.0.2 */ class Base implements PriceInfoInterface { diff --git a/lib/internal/Magento/Framework/Pricing/PriceInfo/Factory.php b/lib/internal/Magento/Framework/Pricing/PriceInfo/Factory.php index e3e4af56f6095..8739520016764 100644 --- a/lib/internal/Magento/Framework/Pricing/PriceInfo/Factory.php +++ b/lib/internal/Magento/Framework/Pricing/PriceInfo/Factory.php @@ -16,6 +16,7 @@ * Price info model factory * * @api + * @since 100.0.2 */ class Factory { diff --git a/lib/internal/Magento/Framework/Pricing/PriceInfoInterface.php b/lib/internal/Magento/Framework/Pricing/PriceInfoInterface.php index 259a8a4d8c2d1..80620008c77ae 100644 --- a/lib/internal/Magento/Framework/Pricing/PriceInfoInterface.php +++ b/lib/internal/Magento/Framework/Pricing/PriceInfoInterface.php @@ -13,6 +13,7 @@ * Price info model interface * * @api + * @since 100.0.2 */ interface PriceInfoInterface { diff --git a/lib/internal/Magento/Framework/Pricing/Render.php b/lib/internal/Magento/Framework/Pricing/Render.php index 2159fcaeaa121..0784a09191380 100644 --- a/lib/internal/Magento/Framework/Pricing/Render.php +++ b/lib/internal/Magento/Framework/Pricing/Render.php @@ -19,6 +19,7 @@ * @method string getPriceRenderHandle() * * @api + * @since 100.0.2 */ class Render extends AbstractBlock { diff --git a/lib/internal/Magento/Framework/Pricing/Render/AdjustmentRenderInterface.php b/lib/internal/Magento/Framework/Pricing/Render/AdjustmentRenderInterface.php index 3be51eb83b911..a9bfb84bcaded 100644 --- a/lib/internal/Magento/Framework/Pricing/Render/AdjustmentRenderInterface.php +++ b/lib/internal/Magento/Framework/Pricing/Render/AdjustmentRenderInterface.php @@ -13,6 +13,7 @@ * Adjustment render interface * * @api + * @since 100.0.2 */ interface AdjustmentRenderInterface { diff --git a/lib/internal/Magento/Framework/Pricing/Render/AmountRenderInterface.php b/lib/internal/Magento/Framework/Pricing/Render/AmountRenderInterface.php index 724593e269944..38acbe37e71db 100644 --- a/lib/internal/Magento/Framework/Pricing/Render/AmountRenderInterface.php +++ b/lib/internal/Magento/Framework/Pricing/Render/AmountRenderInterface.php @@ -14,6 +14,7 @@ * Price amount renderer interface * * @api + * @since 100.0.2 */ interface AmountRenderInterface { diff --git a/lib/internal/Magento/Framework/Pricing/Render/PriceBoxRenderInterface.php b/lib/internal/Magento/Framework/Pricing/Render/PriceBoxRenderInterface.php index 9c23c594a89fb..68a246a36c8dc 100644 --- a/lib/internal/Magento/Framework/Pricing/Render/PriceBoxRenderInterface.php +++ b/lib/internal/Magento/Framework/Pricing/Render/PriceBoxRenderInterface.php @@ -14,6 +14,7 @@ * Price box render interface * * @api + * @since 100.0.2 */ interface PriceBoxRenderInterface { diff --git a/lib/internal/Magento/Framework/Pricing/Render/RendererPool.php b/lib/internal/Magento/Framework/Pricing/Render/RendererPool.php index 73efef2e477be..a32273f51c8f4 100644 --- a/lib/internal/Magento/Framework/Pricing/Render/RendererPool.php +++ b/lib/internal/Magento/Framework/Pricing/Render/RendererPool.php @@ -13,6 +13,7 @@ /** * @api + * @since 100.0.2 */ class RendererPool extends AbstractBlock { diff --git a/lib/internal/Magento/Framework/Pricing/SaleableInterface.php b/lib/internal/Magento/Framework/Pricing/SaleableInterface.php index 240012c0b18e1..9d7959ff80fea 100644 --- a/lib/internal/Magento/Framework/Pricing/SaleableInterface.php +++ b/lib/internal/Magento/Framework/Pricing/SaleableInterface.php @@ -10,6 +10,7 @@ * Interface SaleableInterface * * @api + * @since 100.0.2 */ interface SaleableInterface { diff --git a/lib/internal/Magento/Framework/Profiler.php b/lib/internal/Magento/Framework/Profiler.php index eaf0a732f98c0..4fafc68a568db 100644 --- a/lib/internal/Magento/Framework/Profiler.php +++ b/lib/internal/Magento/Framework/Profiler.php @@ -12,6 +12,7 @@ /** * @api + * @since 100.0.2 */ class Profiler { diff --git a/lib/internal/Magento/Framework/Profiler/DriverInterface.php b/lib/internal/Magento/Framework/Profiler/DriverInterface.php index fe6393b3a43e3..4230b69dab917 100644 --- a/lib/internal/Magento/Framework/Profiler/DriverInterface.php +++ b/lib/internal/Magento/Framework/Profiler/DriverInterface.php @@ -11,6 +11,7 @@ /** * @api + * @since 100.0.2 */ interface DriverInterface { diff --git a/lib/internal/Magento/Framework/Reflection/DataObjectProcessor.php b/lib/internal/Magento/Framework/Reflection/DataObjectProcessor.php index 2f3caf08c534e..43b8cc22ebf2c 100644 --- a/lib/internal/Magento/Framework/Reflection/DataObjectProcessor.php +++ b/lib/internal/Magento/Framework/Reflection/DataObjectProcessor.php @@ -12,6 +12,7 @@ * Data object processor for array serialization using class reflection * * @api + * @since 100.0.2 */ class DataObjectProcessor { diff --git a/lib/internal/Magento/Framework/Reflection/MethodsMap.php b/lib/internal/Magento/Framework/Reflection/MethodsMap.php index 6b0ddfbfc2127..a3b8b58b7793d 100644 --- a/lib/internal/Magento/Framework/Reflection/MethodsMap.php +++ b/lib/internal/Magento/Framework/Reflection/MethodsMap.php @@ -232,7 +232,7 @@ public function isMethodReturnValueRequired($type, $methodName) * Get serializer * * @return \Magento\Framework\Serialize\SerializerInterface - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getSerializer() { diff --git a/lib/internal/Magento/Framework/Registry.php b/lib/internal/Magento/Framework/Registry.php index d1bc227437d5f..e798b28e1e1b2 100644 --- a/lib/internal/Magento/Framework/Registry.php +++ b/lib/internal/Magento/Framework/Registry.php @@ -12,7 +12,8 @@ * It's usage should be avoid. Use service classes or data providers instead. * * @api - * @deprecated + * @deprecated 102.0.0 + * @since 100.0.2 */ class Registry { @@ -29,7 +30,7 @@ class Registry * @param string $key * @return mixed * - * @deprecated + * @deprecated 102.0.0 */ public function registry($key) { @@ -48,7 +49,7 @@ public function registry($key) * @return void * @throws \RuntimeException * - * @deprecated + * @deprecated 102.0.0 */ public function register($key, $value, $graceful = false) { @@ -67,7 +68,7 @@ public function register($key, $value, $graceful = false) * @param string $key * @return void * - * @deprecated + * @deprecated 102.0.0 */ public function unregister($key) { diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Adapter.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Adapter.php index e1b423d738a20..77be3dba85ce7 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Adapter.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Adapter.php @@ -15,7 +15,7 @@ /** * MySQL Search Adapter * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder.php index 4a5802dd44e04..9cf926b996f31 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder.php @@ -17,9 +17,10 @@ /** * MySQL search aggregation builder. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch * @api + * @since 100.0.2 */ class Builder { diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/BucketInterface.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/BucketInterface.php index 4fa2474d2258e..e23df661376c3 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/BucketInterface.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/BucketInterface.php @@ -13,7 +13,7 @@ /** * MySQL search aggregation bucket builder. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ interface BucketInterface diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/Container.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/Container.php index 844cfc9f8741d..c64898fb2676d 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/Container.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/Container.php @@ -8,7 +8,7 @@ /** * MySQL search aggregation container builder. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ class Container diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/Dynamic.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/Dynamic.php index 46828ab7a8c73..4bd1cd40a6d8c 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/Dynamic.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/Dynamic.php @@ -15,7 +15,7 @@ /** * MySQL search dynamic aggregation builder. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ class Dynamic implements BucketInterface diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/Metrics.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/Metrics.php index e4cdb04052ef2..f75c631696319 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/Metrics.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/Metrics.php @@ -10,7 +10,7 @@ /** * MySQL search aggregation metrics builder. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ class Metrics diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/Range.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/Range.php index aced57c100130..418a6ecc5ad90 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/Range.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/Range.php @@ -17,7 +17,7 @@ /** * MySQL search aggregation range builder. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ class Range implements BucketInterface diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/Term.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/Term.php index 547526be43ccd..53bd86eaf1a98 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/Term.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Builder/Term.php @@ -12,7 +12,7 @@ /** * MySQL search aggregation term builder. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ class Term implements BucketInterface diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/DataProviderContainer.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/DataProviderContainer.php index 565b5eeef3351..235bac911cc6e 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/DataProviderContainer.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/DataProviderContainer.php @@ -8,9 +8,10 @@ /** * MySQL search data provider container. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch * @api + * @since 100.0.2 */ class DataProviderContainer { diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/DataProviderInterface.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/DataProviderInterface.php index c251265c694d2..6d89654ef5a93 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/DataProviderInterface.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/DataProviderInterface.php @@ -13,7 +13,7 @@ /** * MySQL search data provider. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ interface DataProviderInterface diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Interval.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Interval.php index ba41a535f45c9..374d80c8d472b 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Interval.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Aggregation/Interval.php @@ -11,7 +11,7 @@ /** * MySQL search aggregation interval. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ class Interval implements IntervalInterface diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/AggregationFactory.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/AggregationFactory.php index 756d9edc6fbe1..28c01a615e5e8 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/AggregationFactory.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/AggregationFactory.php @@ -8,7 +8,7 @@ /** * Aggregation Factory * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ class AggregationFactory diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/ConditionManager.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/ConditionManager.php index e56559563c35a..8dffc679b5c7f 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/ConditionManager.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/ConditionManager.php @@ -12,8 +12,9 @@ * MySQL search condition manager * * @api - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch + * @since 100.0.2 */ class ConditionManager { diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/DocumentFactory.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/DocumentFactory.php index 4e8854fad353a..40649ee88b777 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/DocumentFactory.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/DocumentFactory.php @@ -15,8 +15,9 @@ * Document Factory * * @api - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch + * @since 100.0.2 */ class DocumentFactory { diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Field/Field.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Field/Field.php index 0a340e7f76dc0..0fc76e44f3491 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Field/Field.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Field/Field.php @@ -8,7 +8,7 @@ /** * @inheritdoc - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ class Field implements FieldInterface diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Field/FieldFactory.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Field/FieldFactory.php index 066d1832aefbf..b12d84a2065bf 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Field/FieldFactory.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Field/FieldFactory.php @@ -10,8 +10,9 @@ * MySQL search field factory. * * @api - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch + * @since 100.0.2 */ class FieldFactory { diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Field/FieldInterface.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Field/FieldInterface.php index 7dc74f39709f9..3952aff32db0f 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Field/FieldInterface.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Field/FieldInterface.php @@ -9,7 +9,7 @@ /** * MySQL search field. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ interface FieldInterface diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Field/ResolverInterface.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Field/ResolverInterface.php index 5455b91d73020..d71a968021927 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Field/ResolverInterface.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Field/ResolverInterface.php @@ -8,7 +8,7 @@ /** * MySQL search field resolver. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ interface ResolverInterface diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/Builder/FilterInterface.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/Builder/FilterInterface.php index 6f8b63955a0c1..80d481f489acc 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/Builder/FilterInterface.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/Builder/FilterInterface.php @@ -10,7 +10,7 @@ /** * MySQL search filter builder. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ interface FilterInterface diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/Builder/Range.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/Builder/Range.php index d14bfdcb548d3..9ab1974e1b2d3 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/Builder/Range.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/Builder/Range.php @@ -12,7 +12,7 @@ /** * Range filter builder. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ class Range implements FilterInterface diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/Builder/Term.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/Builder/Term.php index c89ef50f3cb35..63a1d3d56ec9e 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/Builder/Term.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/Builder/Term.php @@ -11,7 +11,7 @@ /** * Term filter builder. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ class Term implements FilterInterface diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/Builder/Wildcard.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/Builder/Wildcard.php index 9a2776ac20b2c..483bb51926081 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/Builder/Wildcard.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/Builder/Wildcard.php @@ -10,7 +10,7 @@ /** * Wildcard filter builder. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ class Wildcard implements FilterInterface diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/BuilderInterface.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/BuilderInterface.php index 3da989333d668..e52ff7cd87c13 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/BuilderInterface.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/BuilderInterface.php @@ -10,7 +10,7 @@ /** * MySQL search filter builder. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ interface BuilderInterface diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/PreprocessorInterface.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/PreprocessorInterface.php index eb0bbc6f3b563..873bdafd79515 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/PreprocessorInterface.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Filter/PreprocessorInterface.php @@ -10,7 +10,7 @@ /** * MySQL search filter pre-processor. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ interface PreprocessorInterface diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/IndexBuilderInterface.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/IndexBuilderInterface.php index fbd35455c2294..4efc375043bda 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/IndexBuilderInterface.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/IndexBuilderInterface.php @@ -11,7 +11,7 @@ /** * Build base Query for Index * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ interface IndexBuilderInterface diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Mapper.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Mapper.php index e97a6690dbcc2..f01c593061d1d 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Mapper.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Mapper.php @@ -25,8 +25,9 @@ * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @api - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch + * @since 100.0.2 */ class Mapper { diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/Builder/Match.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/Builder/Match.php index d4c98cda17e12..8cf81eb7e145b 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/Builder/Match.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/Builder/Match.php @@ -20,8 +20,9 @@ * MySQL search query match. * * @api - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch + * @since 100.0.2 */ class Match implements QueryInterface { diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/Builder/QueryInterface.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/Builder/QueryInterface.php index 6796a1f995e4f..1ea1510bd5b25 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/Builder/QueryInterface.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/Builder/QueryInterface.php @@ -10,7 +10,7 @@ /** * MySQL search query builder. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ interface QueryInterface diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/MatchContainer.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/MatchContainer.php index 6ed3338c040e2..654ae660af849 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/MatchContainer.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/MatchContainer.php @@ -13,7 +13,7 @@ /** * MySQL search query match container. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ class MatchContainer diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/MatchContainerFactory.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/MatchContainerFactory.php index cb10de7bdcbbc..821ea265ff5a3 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/MatchContainerFactory.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/MatchContainerFactory.php @@ -8,7 +8,7 @@ /** * MatchContainer Factory * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ class MatchContainerFactory diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/QueryContainer.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/QueryContainer.php index 9161a30f9bc51..9f5f7f5431b90 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/QueryContainer.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/QueryContainer.php @@ -12,7 +12,7 @@ /** * MySQL search query container. * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ class QueryContainer diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/QueryContainerFactory.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/QueryContainerFactory.php index 59ee4bb045b2a..add797c39078c 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/QueryContainerFactory.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/Query/QueryContainerFactory.php @@ -8,7 +8,7 @@ /** * MatchContainer Factory * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ class QueryContainerFactory diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/ResponseFactory.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/ResponseFactory.php index b41a43883fde5..bb0e32ae229dd 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/ResponseFactory.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/ResponseFactory.php @@ -8,7 +8,7 @@ /** * Response Factory * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ class ResponseFactory diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/ScoreBuilder.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/ScoreBuilder.php index 1cc417f891c19..5d2ded298a14c 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/ScoreBuilder.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/ScoreBuilder.php @@ -9,8 +9,9 @@ * Class for generating sql condition for calculating store manager * * @api - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch + * @since 100.0.2 */ class ScoreBuilder { diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/ScoreBuilderFactory.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/ScoreBuilderFactory.php index 70aa749fd859f..18bdbb57ce150 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/ScoreBuilderFactory.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/ScoreBuilderFactory.php @@ -8,7 +8,7 @@ /** * ScoreBuilder Factory * - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch */ class ScoreBuilderFactory diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/TemporaryStorage.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/TemporaryStorage.php index 60ee2d5706067..a2e2980428d50 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/TemporaryStorage.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/TemporaryStorage.php @@ -16,8 +16,9 @@ * MySQL search temporary storage. * * @api - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch + * @since 100.0.2 */ class TemporaryStorage { diff --git a/lib/internal/Magento/Framework/Search/Adapter/Mysql/TemporaryStorageFactory.php b/lib/internal/Magento/Framework/Search/Adapter/Mysql/TemporaryStorageFactory.php index 208f6b39b9eb4..f1fc487a91ca0 100644 --- a/lib/internal/Magento/Framework/Search/Adapter/Mysql/TemporaryStorageFactory.php +++ b/lib/internal/Magento/Framework/Search/Adapter/Mysql/TemporaryStorageFactory.php @@ -12,8 +12,9 @@ * * @codeCoverageIgnore * @api - * @deprecated + * @deprecated 102.0.0 * @see \Magento\ElasticSearch + * @since 100.0.2 */ class TemporaryStorageFactory { diff --git a/lib/internal/Magento/Framework/Search/Dynamic/Algorithm.php b/lib/internal/Magento/Framework/Search/Dynamic/Algorithm.php index 6f95060e2a8df..06bd3372105c9 100644 --- a/lib/internal/Magento/Framework/Search/Dynamic/Algorithm.php +++ b/lib/internal/Magento/Framework/Search/Dynamic/Algorithm.php @@ -10,6 +10,7 @@ * * @author Magento Core Team <core@magentocommerce.com> * @api + * @since 100.0.2 */ class Algorithm { diff --git a/lib/internal/Magento/Framework/Search/Dynamic/Algorithm/Repository.php b/lib/internal/Magento/Framework/Search/Dynamic/Algorithm/Repository.php index c2d7e4025b3b3..bfba3130c6ae8 100644 --- a/lib/internal/Magento/Framework/Search/Dynamic/Algorithm/Repository.php +++ b/lib/internal/Magento/Framework/Search/Dynamic/Algorithm/Repository.php @@ -11,6 +11,7 @@ /** * @api + * @since 100.0.2 */ class Repository { diff --git a/lib/internal/Magento/Framework/Search/Dynamic/DataProviderFactory.php b/lib/internal/Magento/Framework/Search/Dynamic/DataProviderFactory.php index 6c3a59152a9a1..ccfd5ec01dee3 100644 --- a/lib/internal/Magento/Framework/Search/Dynamic/DataProviderFactory.php +++ b/lib/internal/Magento/Framework/Search/Dynamic/DataProviderFactory.php @@ -10,6 +10,7 @@ /** * @api + * @since 100.0.2 */ class DataProviderFactory { diff --git a/lib/internal/Magento/Framework/Search/Dynamic/DataProviderInterface.php b/lib/internal/Magento/Framework/Search/Dynamic/DataProviderInterface.php index fa360134663d6..374facf486ad9 100644 --- a/lib/internal/Magento/Framework/Search/Dynamic/DataProviderInterface.php +++ b/lib/internal/Magento/Framework/Search/Dynamic/DataProviderInterface.php @@ -11,6 +11,7 @@ /** * @api + * @since 100.0.2 */ interface DataProviderInterface { diff --git a/lib/internal/Magento/Framework/Search/Dynamic/EntityStorage.php b/lib/internal/Magento/Framework/Search/Dynamic/EntityStorage.php index e32096704025f..7500ab622b65b 100644 --- a/lib/internal/Magento/Framework/Search/Dynamic/EntityStorage.php +++ b/lib/internal/Magento/Framework/Search/Dynamic/EntityStorage.php @@ -8,6 +8,7 @@ /** * @api + * @since 100.0.2 */ class EntityStorage { diff --git a/lib/internal/Magento/Framework/Search/Dynamic/EntityStorageFactory.php b/lib/internal/Magento/Framework/Search/Dynamic/EntityStorageFactory.php index 96e6b0113d1a7..6b7a4cd9a6df6 100644 --- a/lib/internal/Magento/Framework/Search/Dynamic/EntityStorageFactory.php +++ b/lib/internal/Magento/Framework/Search/Dynamic/EntityStorageFactory.php @@ -10,6 +10,7 @@ /** * EntityStorage Factory * @api + * @since 100.0.2 */ class EntityStorageFactory { diff --git a/lib/internal/Magento/Framework/Search/Dynamic/IntervalFactory.php b/lib/internal/Magento/Framework/Search/Dynamic/IntervalFactory.php index 90e66d1e7330c..261a52c27e850 100644 --- a/lib/internal/Magento/Framework/Search/Dynamic/IntervalFactory.php +++ b/lib/internal/Magento/Framework/Search/Dynamic/IntervalFactory.php @@ -10,6 +10,7 @@ /** * @api + * @since 100.0.2 */ class IntervalFactory { diff --git a/lib/internal/Magento/Framework/Search/Dynamic/IntervalInterface.php b/lib/internal/Magento/Framework/Search/Dynamic/IntervalInterface.php index 547166eb175ba..f80cac17d8dc6 100644 --- a/lib/internal/Magento/Framework/Search/Dynamic/IntervalInterface.php +++ b/lib/internal/Magento/Framework/Search/Dynamic/IntervalInterface.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ interface IntervalInterface { diff --git a/lib/internal/Magento/Framework/Search/EngineResolverInterface.php b/lib/internal/Magento/Framework/Search/EngineResolverInterface.php index 57ba210121bc4..47dfa6659cc25 100644 --- a/lib/internal/Magento/Framework/Search/EngineResolverInterface.php +++ b/lib/internal/Magento/Framework/Search/EngineResolverInterface.php @@ -7,6 +7,7 @@ /** * @api + * @since 102.0.0 */ interface EngineResolverInterface { @@ -16,6 +17,7 @@ interface EngineResolverInterface * It returns string identifier of Search Engine that is currently chosen in configuration * * @return string + * @since 102.0.0 */ public function getCurrentSearchEngine(); } diff --git a/lib/internal/Magento/Framework/Search/EntityMetadata.php b/lib/internal/Magento/Framework/Search/EntityMetadata.php index 8d25921813df3..9449396942c5a 100644 --- a/lib/internal/Magento/Framework/Search/EntityMetadata.php +++ b/lib/internal/Magento/Framework/Search/EntityMetadata.php @@ -9,6 +9,7 @@ /** * Entity metadata * @api + * @since 100.0.2 */ class EntityMetadata { diff --git a/lib/internal/Magento/Framework/Search/Request.php b/lib/internal/Magento/Framework/Search/Request.php index 264d4929dde56..54d9f12fcb82f 100644 --- a/lib/internal/Magento/Framework/Search/Request.php +++ b/lib/internal/Magento/Framework/Search/Request.php @@ -14,6 +14,7 @@ * * @codeCoverageIgnore * @api + * @since 100.0.2 */ class Request implements RequestInterface { @@ -151,8 +152,9 @@ public function getSize() * It must be move to different interface. * Scope to split Search request interface on two different 'Search' and 'Fulltext Search' contains in MC-16461. * - * @deprecated + * @deprecated 102.0.2 * @return array + * @since 102.0.2 */ public function getSort() { diff --git a/lib/internal/Magento/Framework/Search/Request/Aggregation/DynamicBucket.php b/lib/internal/Magento/Framework/Search/Request/Aggregation/DynamicBucket.php index dfa28911ca4ce..8f691b695a017 100644 --- a/lib/internal/Magento/Framework/Search/Request/Aggregation/DynamicBucket.php +++ b/lib/internal/Magento/Framework/Search/Request/Aggregation/DynamicBucket.php @@ -10,6 +10,7 @@ /** * Dynamic Buckets * @api + * @since 100.0.2 */ class DynamicBucket implements BucketInterface { diff --git a/lib/internal/Magento/Framework/Search/Request/Binder.php b/lib/internal/Magento/Framework/Search/Request/Binder.php index 9df1ee87eb869..5016c1c11926c 100644 --- a/lib/internal/Magento/Framework/Search/Request/Binder.php +++ b/lib/internal/Magento/Framework/Search/Request/Binder.php @@ -9,6 +9,7 @@ * Data binder for search request. * * @api + * @since 100.0.2 */ class Binder { diff --git a/lib/internal/Magento/Framework/Search/Request/BucketInterface.php b/lib/internal/Magento/Framework/Search/Request/BucketInterface.php index 8da797e5a9767..1512a8a68cf78 100644 --- a/lib/internal/Magento/Framework/Search/Request/BucketInterface.php +++ b/lib/internal/Magento/Framework/Search/Request/BucketInterface.php @@ -9,6 +9,7 @@ * Aggregation Bucket Interface * * @api + * @since 100.0.2 */ interface BucketInterface { diff --git a/lib/internal/Magento/Framework/Search/Request/Builder.php b/lib/internal/Magento/Framework/Search/Request/Builder.php index 74bc65010a934..5f6a8c1e75b59 100644 --- a/lib/internal/Magento/Framework/Search/Request/Builder.php +++ b/lib/internal/Magento/Framework/Search/Request/Builder.php @@ -15,6 +15,7 @@ * * @api * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @since 100.0.2 */ class Builder { @@ -103,6 +104,7 @@ public function setFrom($from) * * @param \Magento\Framework\Api\SortOrder[] $sort * @return $this + * @since 102.0.2 */ public function setSort($sort) { diff --git a/lib/internal/Magento/Framework/Search/Request/Cleaner.php b/lib/internal/Magento/Framework/Search/Request/Cleaner.php index c015f90751a23..59eeea47fe278 100644 --- a/lib/internal/Magento/Framework/Search/Request/Cleaner.php +++ b/lib/internal/Magento/Framework/Search/Request/Cleaner.php @@ -12,6 +12,7 @@ /** * @api + * @since 100.0.2 */ class Cleaner { diff --git a/lib/internal/Magento/Framework/Search/Request/Dimension.php b/lib/internal/Magento/Framework/Search/Request/Dimension.php index bc60af8c16959..6df1974cc61cc 100644 --- a/lib/internal/Magento/Framework/Search/Request/Dimension.php +++ b/lib/internal/Magento/Framework/Search/Request/Dimension.php @@ -10,6 +10,7 @@ /** * Search Request Dimension * @api + * @since 100.0.2 */ class Dimension extends AbstractKeyValuePair { diff --git a/lib/internal/Magento/Framework/Search/Request/Filter/BoolExpression.php b/lib/internal/Magento/Framework/Search/Request/Filter/BoolExpression.php index 5a1d2ad528237..6b0304ae37758 100644 --- a/lib/internal/Magento/Framework/Search/Request/Filter/BoolExpression.php +++ b/lib/internal/Magento/Framework/Search/Request/Filter/BoolExpression.php @@ -10,6 +10,7 @@ /** * Bool Filter * @api + * @since 100.0.2 */ class BoolExpression implements FilterInterface { diff --git a/lib/internal/Magento/Framework/Search/Request/Filter/Range.php b/lib/internal/Magento/Framework/Search/Request/Filter/Range.php index 1be0c690483ab..981c92203b864 100644 --- a/lib/internal/Magento/Framework/Search/Request/Filter/Range.php +++ b/lib/internal/Magento/Framework/Search/Request/Filter/Range.php @@ -11,6 +11,7 @@ * Range Filter * @SuppressWarnings(PHPMD.ShortVariable) * @api + * @since 100.0.2 */ class Range implements FilterInterface { diff --git a/lib/internal/Magento/Framework/Search/Request/Filter/Term.php b/lib/internal/Magento/Framework/Search/Request/Filter/Term.php index 5560c92164db4..50fd658c6760b 100644 --- a/lib/internal/Magento/Framework/Search/Request/Filter/Term.php +++ b/lib/internal/Magento/Framework/Search/Request/Filter/Term.php @@ -11,6 +11,7 @@ /** * Term Filter * @api + * @since 100.0.2 */ class Term extends AbstractKeyValuePair implements FilterInterface { diff --git a/lib/internal/Magento/Framework/Search/Request/Filter/Wildcard.php b/lib/internal/Magento/Framework/Search/Request/Filter/Wildcard.php index 60b5463132003..d1b487d498935 100644 --- a/lib/internal/Magento/Framework/Search/Request/Filter/Wildcard.php +++ b/lib/internal/Magento/Framework/Search/Request/Filter/Wildcard.php @@ -11,6 +11,7 @@ /** * Wildcard Filter * @api + * @since 100.0.2 */ class Wildcard extends AbstractKeyValuePair implements FilterInterface { diff --git a/lib/internal/Magento/Framework/Search/Request/FilterInterface.php b/lib/internal/Magento/Framework/Search/Request/FilterInterface.php index 14fdd2929b15d..928f4121a84cd 100644 --- a/lib/internal/Magento/Framework/Search/Request/FilterInterface.php +++ b/lib/internal/Magento/Framework/Search/Request/FilterInterface.php @@ -9,6 +9,7 @@ * Filter Interface * * @api + * @since 100.0.2 */ interface FilterInterface { diff --git a/lib/internal/Magento/Framework/Search/Request/Mapper.php b/lib/internal/Magento/Framework/Search/Request/Mapper.php index 7586444d4b197..3cbcc618c4438 100644 --- a/lib/internal/Magento/Framework/Search/Request/Mapper.php +++ b/lib/internal/Magento/Framework/Search/Request/Mapper.php @@ -13,6 +13,7 @@ /** * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @api + * @since 100.0.2 */ class Mapper { diff --git a/lib/internal/Magento/Framework/Search/Request/Query/BoolExpression.php b/lib/internal/Magento/Framework/Search/Request/Query/BoolExpression.php index 1ac3ba6c09b3b..c47a020b80580 100644 --- a/lib/internal/Magento/Framework/Search/Request/Query/BoolExpression.php +++ b/lib/internal/Magento/Framework/Search/Request/Query/BoolExpression.php @@ -10,6 +10,7 @@ /** * Bool Query * @api + * @since 100.0.2 */ class BoolExpression implements QueryInterface { diff --git a/lib/internal/Magento/Framework/Search/Request/Query/Filter.php b/lib/internal/Magento/Framework/Search/Request/Query/Filter.php index 7de25175793e4..850dbfd40a1fe 100644 --- a/lib/internal/Magento/Framework/Search/Request/Query/Filter.php +++ b/lib/internal/Magento/Framework/Search/Request/Query/Filter.php @@ -10,6 +10,7 @@ /** * Term Query * @api + * @since 100.0.2 */ class Filter implements QueryInterface { diff --git a/lib/internal/Magento/Framework/Search/Request/Query/Match.php b/lib/internal/Magento/Framework/Search/Request/Query/Match.php index a1f884dbc106e..8fbd5244780bc 100644 --- a/lib/internal/Magento/Framework/Search/Request/Query/Match.php +++ b/lib/internal/Magento/Framework/Search/Request/Query/Match.php @@ -10,6 +10,7 @@ /** * Match Query * @api + * @since 100.0.2 */ class Match implements QueryInterface { diff --git a/lib/internal/Magento/Framework/Search/Request/QueryInterface.php b/lib/internal/Magento/Framework/Search/Request/QueryInterface.php index e7cf56172cbaf..bf8a9582f5808 100644 --- a/lib/internal/Magento/Framework/Search/Request/QueryInterface.php +++ b/lib/internal/Magento/Framework/Search/Request/QueryInterface.php @@ -9,6 +9,7 @@ * Query Interface * * @api + * @since 100.0.2 */ interface QueryInterface { diff --git a/lib/internal/Magento/Framework/Search/RequestInterface.php b/lib/internal/Magento/Framework/Search/RequestInterface.php index 16df80f755c07..d5879ce0dc22e 100644 --- a/lib/internal/Magento/Framework/Search/RequestInterface.php +++ b/lib/internal/Magento/Framework/Search/RequestInterface.php @@ -13,6 +13,7 @@ * Search Request * * @api + * @since 100.0.2 */ interface RequestInterface { diff --git a/lib/internal/Magento/Framework/Search/Response/Aggregation.php b/lib/internal/Magento/Framework/Search/Response/Aggregation.php index ea72597c53034..7ebe052b65ba8 100644 --- a/lib/internal/Magento/Framework/Search/Response/Aggregation.php +++ b/lib/internal/Magento/Framework/Search/Response/Aggregation.php @@ -11,6 +11,7 @@ /** * Faceted data * @api + * @since 100.0.2 */ class Aggregation implements AggregationInterface, \IteratorAggregate { diff --git a/lib/internal/Magento/Framework/Search/Response/QueryResponse.php b/lib/internal/Magento/Framework/Search/Response/QueryResponse.php index 00b1ed2149bec..d7d0a8d03b28c 100644 --- a/lib/internal/Magento/Framework/Search/Response/QueryResponse.php +++ b/lib/internal/Magento/Framework/Search/Response/QueryResponse.php @@ -12,6 +12,7 @@ /** * Search Response * @api + * @since 100.0.2 */ class QueryResponse implements ResponseInterface { @@ -80,9 +81,10 @@ public function getAggregations() * It must be move to different interface. * Scope to split Search response interface on two different 'Search' and 'Fulltext Search' contains in MC-16461. * - * @deprecated + * @deprecated 102.0.2 * * @return int + * @since 102.0.2 */ public function getTotal(): int { diff --git a/lib/internal/Magento/Framework/Serialize/Serializer/Json.php b/lib/internal/Magento/Framework/Serialize/Serializer/Json.php index 7ce9756ff243d..d5a5aec9259dd 100644 --- a/lib/internal/Magento/Framework/Serialize/Serializer/Json.php +++ b/lib/internal/Magento/Framework/Serialize/Serializer/Json.php @@ -11,13 +11,13 @@ * Serialize data to JSON, unserialize JSON encoded data * * @api - * @since 100.2.0 + * @since 101.0.0 */ class Json implements SerializerInterface { /** * @inheritDoc - * @since 100.2.0 + * @since 101.0.0 */ public function serialize($data) { @@ -30,7 +30,7 @@ public function serialize($data) /** * @inheritDoc - * @since 100.2.0 + * @since 101.0.0 */ public function unserialize($string) { diff --git a/lib/internal/Magento/Framework/Serialize/Serializer/JsonHexTag.php b/lib/internal/Magento/Framework/Serialize/Serializer/JsonHexTag.php index 4a5406ff3fd99..dc63a726481ae 100644 --- a/lib/internal/Magento/Framework/Serialize/Serializer/JsonHexTag.php +++ b/lib/internal/Magento/Framework/Serialize/Serializer/JsonHexTag.php @@ -16,13 +16,13 @@ * unserialize JSON encoded data * * @api - * @since 100.2.0 + * @since 102.0.1 */ class JsonHexTag extends Json implements SerializerInterface { /** * @inheritDoc - * @since 100.2.0 + * @since 102.0.1 */ public function serialize($data): string { diff --git a/lib/internal/Magento/Framework/Serialize/SerializerInterface.php b/lib/internal/Magento/Framework/Serialize/SerializerInterface.php index 8b448f3ba246b..24ace0c38b84e 100644 --- a/lib/internal/Magento/Framework/Serialize/SerializerInterface.php +++ b/lib/internal/Magento/Framework/Serialize/SerializerInterface.php @@ -9,7 +9,7 @@ * Interface for serializing * * @api - * @since 100.2.0 + * @since 101.0.0 */ interface SerializerInterface { @@ -19,7 +19,7 @@ interface SerializerInterface * @param string|int|float|bool|array|null $data * @return string|bool * @throws \InvalidArgumentException - * @since 100.2.0 + * @since 101.0.0 */ public function serialize($data); @@ -29,7 +29,7 @@ public function serialize($data); * @param string $string * @return string|int|float|bool|array|null * @throws \InvalidArgumentException - * @since 100.2.0 + * @since 101.0.0 */ public function unserialize($string); } diff --git a/lib/internal/Magento/Framework/Session/Generic.php b/lib/internal/Magento/Framework/Session/Generic.php index 8cd358dd56416..794ce7a64e88b 100644 --- a/lib/internal/Magento/Framework/Session/Generic.php +++ b/lib/internal/Magento/Framework/Session/Generic.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ class Generic extends SessionManager { diff --git a/lib/internal/Magento/Framework/Session/SessionManagerInterface.php b/lib/internal/Magento/Framework/Session/SessionManagerInterface.php index 93fac2947eb61..70976a6269d18 100644 --- a/lib/internal/Magento/Framework/Session/SessionManagerInterface.php +++ b/lib/internal/Magento/Framework/Session/SessionManagerInterface.php @@ -11,6 +11,7 @@ * Session Manager Interface * * @api + * @since 100.0.2 */ interface SessionManagerInterface { diff --git a/lib/internal/Magento/Framework/Session/SidResolver.php b/lib/internal/Magento/Framework/Session/SidResolver.php index 1208aeb31eaee..742cfc452fea0 100644 --- a/lib/internal/Magento/Framework/Session/SidResolver.php +++ b/lib/internal/Magento/Framework/Session/SidResolver.php @@ -11,6 +11,7 @@ /** * Class SidResolver + * @deprecated 102.0.2 SIDs in URLs are no longer used */ class SidResolver implements SidResolverInterface { diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Diff/Diff.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Diff/Diff.php index 0e857567689c4..578b3c62be573 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Diff/Diff.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Diff/Diff.php @@ -23,6 +23,7 @@ * - new (Should be changed to) * - old () * @api + * @since 102.0.0 */ class Diff implements DiffInterface { @@ -40,6 +41,7 @@ class Diff implements DiffInterface * This changes created only for debug reasons. * * @var array + * @since 102.0.0 */ public $debugChanges; @@ -100,6 +102,7 @@ public function __construct( * All changes are sorted because there are dependencies between tables, like foreign keys. * * @inheritdoc + * @since 102.0.0 */ public function getAll() { @@ -115,6 +118,7 @@ public function getAll() * @param string $table * @param string $operation * @return ElementHistory[] + * @since 102.0.0 */ public function getChange($table, $operation) { @@ -159,6 +163,7 @@ private function getWhiteListTables() * @param ElementInterface | Table $object * @param string $operation * @return bool + * @since 102.0.0 */ public function canBeRegistered(ElementInterface $object, $operation): bool { @@ -202,6 +207,7 @@ private function isElementHaveAutoGeneratedName(ElementInterface $element): bool * * @param TableElementInterface $dtoObject * @inheritdoc + * @since 102.0.0 */ public function register( ElementInterface $dtoObject, diff --git a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/ElementInterface.php b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/ElementInterface.php index 43c4c5d9d516a..168b8c0861ad7 100644 --- a/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/ElementInterface.php +++ b/lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/ElementInterface.php @@ -11,6 +11,7 @@ * Is parent interface for all various schema structural elements: * table, column, constraint, index. * @api + * @since 102.0.0 */ interface ElementInterface { @@ -18,6 +19,7 @@ interface ElementInterface * Return name of structural element. * * @return string + * @since 102.0.0 */ public function getName(); @@ -25,6 +27,7 @@ public function getName(); * Retrieve element low level type: varchar, char, foreign key, etc.. * * @return string + * @since 102.0.0 */ public function getType(); @@ -36,6 +39,7 @@ public function getType(); * And in order to distinguish this types of elements we use this method. * * @return string + * @since 102.0.0 */ public function getElementType(); } diff --git a/lib/internal/Magento/Framework/Setup/InstallDataInterface.php b/lib/internal/Magento/Framework/Setup/InstallDataInterface.php index 68e08f658faaf..085f989a8bb82 100644 --- a/lib/internal/Magento/Framework/Setup/InstallDataInterface.php +++ b/lib/internal/Magento/Framework/Setup/InstallDataInterface.php @@ -9,6 +9,7 @@ * Interface for data installs of a module * * @api + * @since 100.0.2 */ interface InstallDataInterface { diff --git a/lib/internal/Magento/Framework/Setup/InstallSchemaInterface.php b/lib/internal/Magento/Framework/Setup/InstallSchemaInterface.php index abb0017b85e93..878f3e3e1a152 100644 --- a/lib/internal/Magento/Framework/Setup/InstallSchemaInterface.php +++ b/lib/internal/Magento/Framework/Setup/InstallSchemaInterface.php @@ -9,6 +9,7 @@ * Interface for DB schema installs of a module * * @api + * @since 100.0.2 */ interface InstallSchemaInterface { diff --git a/lib/internal/Magento/Framework/Setup/LoggerInterface.php b/lib/internal/Magento/Framework/Setup/LoggerInterface.php index 8f82cf8001127..169c2acfe9bf5 100644 --- a/lib/internal/Magento/Framework/Setup/LoggerInterface.php +++ b/lib/internal/Magento/Framework/Setup/LoggerInterface.php @@ -10,6 +10,7 @@ * Interface to Log Message in Setup * * @api + * @since 100.0.2 */ interface LoggerInterface { diff --git a/lib/internal/Magento/Framework/Setup/ModuleContextInterface.php b/lib/internal/Magento/Framework/Setup/ModuleContextInterface.php index 45c59f08bc691..d5d0b4e1efe59 100644 --- a/lib/internal/Magento/Framework/Setup/ModuleContextInterface.php +++ b/lib/internal/Magento/Framework/Setup/ModuleContextInterface.php @@ -8,6 +8,7 @@ /** * Context of a module being installed/updated: version, user data, etc. * @api + * @since 100.0.2 */ interface ModuleContextInterface { diff --git a/lib/internal/Magento/Framework/Setup/ModuleDataSetupInterface.php b/lib/internal/Magento/Framework/Setup/ModuleDataSetupInterface.php index bcf50e6ff9851..2bc55d13d2277 100644 --- a/lib/internal/Magento/Framework/Setup/ModuleDataSetupInterface.php +++ b/lib/internal/Magento/Framework/Setup/ModuleDataSetupInterface.php @@ -9,6 +9,7 @@ * DB data resource interface for a module * * @api + * @since 100.0.2 */ interface ModuleDataSetupInterface extends SetupInterface { diff --git a/lib/internal/Magento/Framework/Setup/Patch/PatchVersionInterface.php b/lib/internal/Magento/Framework/Setup/Patch/PatchVersionInterface.php index 9fca3ffc364f9..0ebc54f821c4b 100644 --- a/lib/internal/Magento/Framework/Setup/Patch/PatchVersionInterface.php +++ b/lib/internal/Magento/Framework/Setup/Patch/PatchVersionInterface.php @@ -8,7 +8,7 @@ /** * For backward compatibility with versioned style module installation. Deprecated since creation. * - * @deprecated + * @deprecated 102.0.0 */ interface PatchVersionInterface { @@ -20,7 +20,7 @@ interface PatchVersionInterface * * * @return string - * @deprecated since appearance, required for backward compatibility + * @deprecated 102.0.0 since appearance, required for backward compatibility */ public static function getVersion(); } diff --git a/lib/internal/Magento/Framework/Setup/SchemaSetupInterface.php b/lib/internal/Magento/Framework/Setup/SchemaSetupInterface.php index 48900c5cdc029..dd73c79069b1a 100644 --- a/lib/internal/Magento/Framework/Setup/SchemaSetupInterface.php +++ b/lib/internal/Magento/Framework/Setup/SchemaSetupInterface.php @@ -8,6 +8,7 @@ /** * DB schema resource interface * @api + * @since 100.0.2 */ interface SchemaSetupInterface extends SetupInterface { diff --git a/lib/internal/Magento/Framework/Setup/SetupInterface.php b/lib/internal/Magento/Framework/Setup/SetupInterface.php index 58d0387007045..434a3234ee318 100644 --- a/lib/internal/Magento/Framework/Setup/SetupInterface.php +++ b/lib/internal/Magento/Framework/Setup/SetupInterface.php @@ -9,6 +9,7 @@ * DB resource interface * * @api + * @since 100.0.2 */ interface SetupInterface { diff --git a/lib/internal/Magento/Framework/Setup/UninstallInterface.php b/lib/internal/Magento/Framework/Setup/UninstallInterface.php index 28e8104610559..72a2a9a37348a 100644 --- a/lib/internal/Magento/Framework/Setup/UninstallInterface.php +++ b/lib/internal/Magento/Framework/Setup/UninstallInterface.php @@ -9,6 +9,7 @@ * Interface for handling data removal during module uninstall * * @api + * @since 100.0.2 */ interface UninstallInterface { diff --git a/lib/internal/Magento/Framework/Setup/UpgradeDataInterface.php b/lib/internal/Magento/Framework/Setup/UpgradeDataInterface.php index f700157cab98e..93d94cce0dd99 100644 --- a/lib/internal/Magento/Framework/Setup/UpgradeDataInterface.php +++ b/lib/internal/Magento/Framework/Setup/UpgradeDataInterface.php @@ -9,6 +9,7 @@ * Interface for data upgrades of a module * * @api + * @since 100.0.2 */ interface UpgradeDataInterface { diff --git a/lib/internal/Magento/Framework/Setup/UpgradeSchemaInterface.php b/lib/internal/Magento/Framework/Setup/UpgradeSchemaInterface.php index 22c3b2110ec69..d7a3d56e55164 100644 --- a/lib/internal/Magento/Framework/Setup/UpgradeSchemaInterface.php +++ b/lib/internal/Magento/Framework/Setup/UpgradeSchemaInterface.php @@ -9,6 +9,7 @@ * Interface for DB schema upgrades of a module * * @api + * @since 100.0.2 */ interface UpgradeSchemaInterface { diff --git a/lib/internal/Magento/Framework/Shell/CommandRendererInterface.php b/lib/internal/Magento/Framework/Shell/CommandRendererInterface.php index 7460aaea74819..5632e32b790fe 100644 --- a/lib/internal/Magento/Framework/Shell/CommandRendererInterface.php +++ b/lib/internal/Magento/Framework/Shell/CommandRendererInterface.php @@ -9,6 +9,7 @@ * Shell command renderer * * @api + * @since 100.0.2 */ interface CommandRendererInterface { diff --git a/lib/internal/Magento/Framework/ShellInterface.php b/lib/internal/Magento/Framework/ShellInterface.php index 96607b8a072af..3c51916f06a23 100644 --- a/lib/internal/Magento/Framework/ShellInterface.php +++ b/lib/internal/Magento/Framework/ShellInterface.php @@ -9,6 +9,7 @@ * Shell command line wrapper encapsulates command execution and arguments escaping * * @api + * @since 100.0.2 */ interface ShellInterface { diff --git a/lib/internal/Magento/Framework/Simplexml/Config.php b/lib/internal/Magento/Framework/Simplexml/Config.php index 0d8711c5011c0..9f403e3451dcc 100644 --- a/lib/internal/Magento/Framework/Simplexml/Config.php +++ b/lib/internal/Magento/Framework/Simplexml/Config.php @@ -9,6 +9,7 @@ * Base class for simplexml based configurations * * @api + * @since 100.0.2 */ class Config { diff --git a/lib/internal/Magento/Framework/Simplexml/Element.php b/lib/internal/Magento/Framework/Simplexml/Element.php index eec48bc555010..bd509f7eb0838 100644 --- a/lib/internal/Magento/Framework/Simplexml/Element.php +++ b/lib/internal/Magento/Framework/Simplexml/Element.php @@ -10,6 +10,7 @@ * Extends SimpleXML to add valuable functionality to \SimpleXMLElement class * * @api + * @since 100.0.2 */ class Element extends \SimpleXMLElement { diff --git a/lib/internal/Magento/Framework/Stdlib/ArrayUtils.php b/lib/internal/Magento/Framework/Stdlib/ArrayUtils.php index bd822a4942ba9..56243ae6b24cf 100644 --- a/lib/internal/Magento/Framework/Stdlib/ArrayUtils.php +++ b/lib/internal/Magento/Framework/Stdlib/ArrayUtils.php @@ -9,6 +9,7 @@ * Class ArrayUtils * * @api + * @since 100.0.2 */ class ArrayUtils { @@ -150,7 +151,7 @@ private function _decorateArrayObject($element, $key, $value, $isSkipped) * @param string $path The leading path * @param string $separator The path parts separator * @return array - * @since 100.2.0 + * @since 101.0.0 */ public function flatten(array $data, $path = '', $separator = '/') { @@ -181,7 +182,7 @@ public function flatten(array $data, $path = '', $separator = '/') * @param array $originalArray The array to compare from * @param array $newArray The array to compare with * @return array Diff array - * @since 100.2.0 + * @since 101.0.0 */ public function recursiveDiff(array $originalArray, array $newArray) { diff --git a/lib/internal/Magento/Framework/Stdlib/BooleanUtils.php b/lib/internal/Magento/Framework/Stdlib/BooleanUtils.php index 83cf1a839f0ef..f55bc79ad6505 100644 --- a/lib/internal/Magento/Framework/Stdlib/BooleanUtils.php +++ b/lib/internal/Magento/Framework/Stdlib/BooleanUtils.php @@ -9,6 +9,7 @@ * Utility methods for the boolean data type * * @api + * @since 100.0.2 */ class BooleanUtils { @@ -71,7 +72,7 @@ public function toBoolean($value) * * @param mixed $value * @return mixed - * @since 100.2.0 + * @since 101.0.0 */ public function convert($value) { diff --git a/lib/internal/Magento/Framework/Stdlib/Cookie/CookieMetadata.php b/lib/internal/Magento/Framework/Stdlib/Cookie/CookieMetadata.php index 2b4cddf242113..112408bfddfdd 100644 --- a/lib/internal/Magento/Framework/Stdlib/Cookie/CookieMetadata.php +++ b/lib/internal/Magento/Framework/Stdlib/Cookie/CookieMetadata.php @@ -8,6 +8,7 @@ /** * Class CookieMetadata * @api + * @since 100.0.2 */ class CookieMetadata { diff --git a/lib/internal/Magento/Framework/Stdlib/Cookie/CookieMetadataFactory.php b/lib/internal/Magento/Framework/Stdlib/Cookie/CookieMetadataFactory.php index b60df1264863d..706c19e1e731a 100644 --- a/lib/internal/Magento/Framework/Stdlib/Cookie/CookieMetadataFactory.php +++ b/lib/internal/Magento/Framework/Stdlib/Cookie/CookieMetadataFactory.php @@ -11,6 +11,7 @@ /** * CookieMetadataFactory is used to construct SensitiveCookieMetadata and PublicCookieMetadata objects. * @api + * @since 100.0.2 */ class CookieMetadataFactory { diff --git a/lib/internal/Magento/Framework/Stdlib/Cookie/CookieReaderInterface.php b/lib/internal/Magento/Framework/Stdlib/Cookie/CookieReaderInterface.php index 121c168483a6e..5b7c54159aed6 100644 --- a/lib/internal/Magento/Framework/Stdlib/Cookie/CookieReaderInterface.php +++ b/lib/internal/Magento/Framework/Stdlib/Cookie/CookieReaderInterface.php @@ -9,6 +9,7 @@ /** * CookieReaderInterface provides the ability to read cookies sent in a request. * @api + * @since 100.0.2 */ interface CookieReaderInterface { diff --git a/lib/internal/Magento/Framework/Stdlib/Cookie/CookieScopeInterface.php b/lib/internal/Magento/Framework/Stdlib/Cookie/CookieScopeInterface.php index b2870309ae5a5..d355579b4b07a 100644 --- a/lib/internal/Magento/Framework/Stdlib/Cookie/CookieScopeInterface.php +++ b/lib/internal/Magento/Framework/Stdlib/Cookie/CookieScopeInterface.php @@ -8,6 +8,7 @@ /** * CookieScope is used to store default scope metadata. * @api + * @since 100.0.2 */ interface CookieScopeInterface { diff --git a/lib/internal/Magento/Framework/Stdlib/Cookie/CookieSizeLimitReachedException.php b/lib/internal/Magento/Framework/Stdlib/Cookie/CookieSizeLimitReachedException.php index fabd3bbe2b0be..a74a4983cb5b8 100644 --- a/lib/internal/Magento/Framework/Stdlib/Cookie/CookieSizeLimitReachedException.php +++ b/lib/internal/Magento/Framework/Stdlib/Cookie/CookieSizeLimitReachedException.php @@ -15,6 +15,7 @@ * set for the domain. * * @api + * @since 100.0.2 */ class CookieSizeLimitReachedException extends LocalizedException { diff --git a/lib/internal/Magento/Framework/Stdlib/Cookie/FailureToSendException.php b/lib/internal/Magento/Framework/Stdlib/Cookie/FailureToSendException.php index 681d6b43c3d04..ee9e798d258d7 100644 --- a/lib/internal/Magento/Framework/Stdlib/Cookie/FailureToSendException.php +++ b/lib/internal/Magento/Framework/Stdlib/Cookie/FailureToSendException.php @@ -12,6 +12,7 @@ * impossible to send any cookie information back to the client. * * @api + * @since 100.0.2 */ class FailureToSendException extends LocalizedException { diff --git a/lib/internal/Magento/Framework/Stdlib/Cookie/PublicCookieMetadata.php b/lib/internal/Magento/Framework/Stdlib/Cookie/PublicCookieMetadata.php index ef40ea94a6d08..14af3651834ad 100644 --- a/lib/internal/Magento/Framework/Stdlib/Cookie/PublicCookieMetadata.php +++ b/lib/internal/Magento/Framework/Stdlib/Cookie/PublicCookieMetadata.php @@ -10,6 +10,7 @@ * Class PublicCookieMetadata * * @api + * @since 100.0.2 */ class PublicCookieMetadata extends CookieMetadata { diff --git a/lib/internal/Magento/Framework/Stdlib/Cookie/SensitiveCookieMetadata.php b/lib/internal/Magento/Framework/Stdlib/Cookie/SensitiveCookieMetadata.php index aab8e93160c8d..ed09481ab464e 100644 --- a/lib/internal/Magento/Framework/Stdlib/Cookie/SensitiveCookieMetadata.php +++ b/lib/internal/Magento/Framework/Stdlib/Cookie/SensitiveCookieMetadata.php @@ -15,6 +15,7 @@ * as path and domain are only data to be exposed by SensitiveCookieMetadata * * @api + * @since 100.0.2 */ class SensitiveCookieMetadata extends CookieMetadata { diff --git a/lib/internal/Magento/Framework/Stdlib/CookieManagerInterface.php b/lib/internal/Magento/Framework/Stdlib/CookieManagerInterface.php index d4d37d656ebcf..fc357d26d8c36 100644 --- a/lib/internal/Magento/Framework/Stdlib/CookieManagerInterface.php +++ b/lib/internal/Magento/Framework/Stdlib/CookieManagerInterface.php @@ -22,6 +22,7 @@ * about how the cookie should be stored and whether JavaScript can access the cookie. * * @api + * @since 100.0.2 */ interface CookieManagerInterface extends CookieReaderInterface { diff --git a/lib/internal/Magento/Framework/Stdlib/DateTime.php b/lib/internal/Magento/Framework/Stdlib/DateTime.php index 36db84860b373..2b828f4ba1d4e 100644 --- a/lib/internal/Magento/Framework/Stdlib/DateTime.php +++ b/lib/internal/Magento/Framework/Stdlib/DateTime.php @@ -10,6 +10,7 @@ * Internal dates * * @api + * @since 100.0.2 */ class DateTime { @@ -79,7 +80,7 @@ public function isEmptyDate($date) * @param int $time * @return string The given time in given format * - * @deprecated + * @deprecated 101.0.1 * @see Use Intl library for datetime handling: http://php.net/manual/en/book.intl.php * * @codeCoverageIgnore @@ -95,7 +96,7 @@ public function gmDate($format, $time) * @param string $timeStr * @return int * - * @deprecated + * @deprecated 101.0.1 * @see Use Intl library for datetime handling: http://php.net/manual/en/book.intl.php * * @codeCoverageIgnore diff --git a/lib/internal/Magento/Framework/Stdlib/DateTime/DateTime.php b/lib/internal/Magento/Framework/Stdlib/DateTime/DateTime.php index 7ac93c7b94305..61a7b3aed06be 100644 --- a/lib/internal/Magento/Framework/Stdlib/DateTime/DateTime.php +++ b/lib/internal/Magento/Framework/Stdlib/DateTime/DateTime.php @@ -10,6 +10,7 @@ * Date conversion model * * @api + * @since 100.0.2 */ class DateTime { diff --git a/lib/internal/Magento/Framework/Stdlib/DateTime/DateTimeFormatterInterface.php b/lib/internal/Magento/Framework/Stdlib/DateTime/DateTimeFormatterInterface.php index a2d18215385fc..c1ec2695be114 100644 --- a/lib/internal/Magento/Framework/Stdlib/DateTime/DateTimeFormatterInterface.php +++ b/lib/internal/Magento/Framework/Stdlib/DateTime/DateTimeFormatterInterface.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ interface DateTimeFormatterInterface { diff --git a/lib/internal/Magento/Framework/Stdlib/DateTime/Filter/Date.php b/lib/internal/Magento/Framework/Stdlib/DateTime/Filter/Date.php index 1138dc2e60887..59920f1861072 100644 --- a/lib/internal/Magento/Framework/Stdlib/DateTime/Filter/Date.php +++ b/lib/internal/Magento/Framework/Stdlib/DateTime/Filter/Date.php @@ -11,6 +11,7 @@ * Date filter. Converts date from localized to internal format. * * @api + * @since 100.0.2 */ class Date implements \Zend_Filter_Interface { diff --git a/lib/internal/Magento/Framework/Stdlib/DateTime/Filter/DateTime.php b/lib/internal/Magento/Framework/Stdlib/DateTime/Filter/DateTime.php index 0f2e81e6a9faf..05e9042a06a54 100644 --- a/lib/internal/Magento/Framework/Stdlib/DateTime/Filter/DateTime.php +++ b/lib/internal/Magento/Framework/Stdlib/DateTime/Filter/DateTime.php @@ -9,6 +9,7 @@ * Date/Time filter. Converts datetime from localized to internal format. * * @api + * @since 100.0.2 */ class DateTime extends Date { diff --git a/lib/internal/Magento/Framework/Stdlib/DateTime/Timezone/Validator.php b/lib/internal/Magento/Framework/Stdlib/DateTime/Timezone/Validator.php index 43cc83a702f6c..363fa54794bb4 100644 --- a/lib/internal/Magento/Framework/Stdlib/DateTime/Timezone/Validator.php +++ b/lib/internal/Magento/Framework/Stdlib/DateTime/Timezone/Validator.php @@ -11,6 +11,7 @@ /** * @api + * @since 100.0.2 */ class Validator { diff --git a/lib/internal/Magento/Framework/Stdlib/DateTime/TimezoneInterface.php b/lib/internal/Magento/Framework/Stdlib/DateTime/TimezoneInterface.php index d1ac24c84be9a..0ff6de9266c8a 100644 --- a/lib/internal/Magento/Framework/Stdlib/DateTime/TimezoneInterface.php +++ b/lib/internal/Magento/Framework/Stdlib/DateTime/TimezoneInterface.php @@ -11,6 +11,7 @@ /** * Timezone Interface * @api + * @since 100.0.2 */ interface TimezoneInterface { diff --git a/lib/internal/Magento/Framework/Stdlib/StringUtils.php b/lib/internal/Magento/Framework/Stdlib/StringUtils.php index 35decd7dab0a0..3e3072ee58677 100644 --- a/lib/internal/Magento/Framework/Stdlib/StringUtils.php +++ b/lib/internal/Magento/Framework/Stdlib/StringUtils.php @@ -9,6 +9,7 @@ * Magento methods to work with string * * @api + * @since 100.0.2 */ class StringUtils { diff --git a/lib/internal/Magento/Framework/Test/Unit/EscaperTest.php b/lib/internal/Magento/Framework/Test/Unit/EscaperTest.php index 7b45765fdefe8..44776a34c2b6d 100644 --- a/lib/internal/Magento/Framework/Test/Unit/EscaperTest.php +++ b/lib/internal/Magento/Framework/Test/Unit/EscaperTest.php @@ -7,6 +7,7 @@ use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; use Magento\Framework\Escaper; +use Magento\Framework\Translate\Inline; /** * \Magento\Framework\Escaper test case @@ -16,26 +17,40 @@ class EscaperTest extends \PHPUnit\Framework\TestCase /** * @var \Magento\Framework\Escaper */ - protected $escaper = null; + protected $escaper; /** * @var \Magento\Framework\ZendEscaper */ private $zendEscaper; + /** + * @var Inline + */ + private $translateInline; + /** * @var \Psr\Log\LoggerInterface */ private $loggerMock; + /** + * @inheritdoc + */ protected function setUp() { + $objectManagerHelper = new ObjectManager($this); $this->escaper = new Escaper(); $this->zendEscaper = new \Magento\Framework\ZendEscaper(); + $this->translateInline = $objectManagerHelper->getObject(Inline::class); $this->loggerMock = $this->getMockForAbstractClass(\Psr\Log\LoggerInterface::class); - $objectManagerHelper = new ObjectManager($this); $objectManagerHelper->setBackwardCompatibleProperty($this->escaper, 'escaper', $this->zendEscaper); $objectManagerHelper->setBackwardCompatibleProperty($this->escaper, 'logger', $this->loggerMock); + $objectManagerHelper->setBackwardCompatibleProperty( + $this->escaper, + 'translateInline', + $this->translateInline + ); } /** @@ -385,6 +400,10 @@ public function escapeDataProvider() 'http://test.com/?redirect=\x64\x61\x74\x61\x3a\x74\x65\x78\x74x2cCPHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg', 'http://test.com/?redirect=:\x74\x65\x78\x74x2cCPHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg', ], + [ + 'http://test.com/?{{{test}}{{test_translated}}{{tes_origin}}{{theme}}}', + 'http://test.com/?test', + ], ]; } } diff --git a/lib/internal/Magento/Framework/Translate.php b/lib/internal/Magento/Framework/Translate.php index e992482609a87..18675e19a4a96 100644 --- a/lib/internal/Magento/Framework/Translate.php +++ b/lib/internal/Magento/Framework/Translate.php @@ -461,7 +461,7 @@ private function getThemeTranslationFilesList($locale): array * @param string $locale * @return string * - * @deprecated + * @deprecated 102.0.1 * * @see \Magento\Framework\Translate::getThemeTranslationFilesList */ @@ -589,7 +589,7 @@ protected function _saveCache() * Get serializer * * @return \Magento\Framework\Serialize\SerializerInterface - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getSerializer() { diff --git a/lib/internal/Magento/Framework/Translate/AdapterInterface.php b/lib/internal/Magento/Framework/Translate/AdapterInterface.php index bcd08a0b27c29..96591d3d32d53 100644 --- a/lib/internal/Magento/Framework/Translate/AdapterInterface.php +++ b/lib/internal/Magento/Framework/Translate/AdapterInterface.php @@ -10,6 +10,7 @@ * Magento translate adapter interface * * @api + * @since 100.0.2 */ interface AdapterInterface { diff --git a/lib/internal/Magento/Framework/Translate/Inline/ConfigInterface.php b/lib/internal/Magento/Framework/Translate/Inline/ConfigInterface.php index 02ab3e92d1d16..dc78b0b49d26f 100644 --- a/lib/internal/Magento/Framework/Translate/Inline/ConfigInterface.php +++ b/lib/internal/Magento/Framework/Translate/Inline/ConfigInterface.php @@ -9,6 +9,7 @@ * Inline Translation config interface * * @api + * @since 100.0.2 */ interface ConfigInterface { diff --git a/lib/internal/Magento/Framework/Translate/Inline/ParserInterface.php b/lib/internal/Magento/Framework/Translate/Inline/ParserInterface.php index 4c3bfc1a1964b..78093d99729b7 100644 --- a/lib/internal/Magento/Framework/Translate/Inline/ParserInterface.php +++ b/lib/internal/Magento/Framework/Translate/Inline/ParserInterface.php @@ -9,6 +9,7 @@ * Processes the content with the inline translation replacement so the inline translate JavaScript code will work. * * @api + * @since 100.0.2 */ interface ParserInterface { diff --git a/lib/internal/Magento/Framework/Translate/Inline/StateInterface.php b/lib/internal/Magento/Framework/Translate/Inline/StateInterface.php index cf56616ac4a99..e0994713a0219 100644 --- a/lib/internal/Magento/Framework/Translate/Inline/StateInterface.php +++ b/lib/internal/Magento/Framework/Translate/Inline/StateInterface.php @@ -10,6 +10,7 @@ * Controls and represents the state of the inline translation processing. * * @api + * @since 100.0.2 */ interface StateInterface { diff --git a/lib/internal/Magento/Framework/Translate/InlineInterface.php b/lib/internal/Magento/Framework/Translate/InlineInterface.php index 4669a536eedbf..2c8ac78bffcf0 100644 --- a/lib/internal/Magento/Framework/Translate/InlineInterface.php +++ b/lib/internal/Magento/Framework/Translate/InlineInterface.php @@ -9,6 +9,7 @@ * Inline translation interface * * @api + * @since 100.0.2 */ interface InlineInterface { diff --git a/lib/internal/Magento/Framework/Translate/ResourceInterface.php b/lib/internal/Magento/Framework/Translate/ResourceInterface.php index 51e2f430c7281..44a600a04deeb 100644 --- a/lib/internal/Magento/Framework/Translate/ResourceInterface.php +++ b/lib/internal/Magento/Framework/Translate/ResourceInterface.php @@ -9,6 +9,7 @@ * Returns the translation resource data. * * @api + * @since 100.0.2 */ interface ResourceInterface { diff --git a/lib/internal/Magento/Framework/Unserialize/Unserialize.php b/lib/internal/Magento/Framework/Unserialize/Unserialize.php index 56c3bb0d16864..7611e6c12b6d8 100644 --- a/lib/internal/Magento/Framework/Unserialize/Unserialize.php +++ b/lib/internal/Magento/Framework/Unserialize/Unserialize.php @@ -10,7 +10,7 @@ use Magento\Framework\Serialize\Serializer\Serialize; /** - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ class Unserialize { diff --git a/lib/internal/Magento/Framework/Url.php b/lib/internal/Magento/Framework/Url.php index 11aeb1c0c79b8..7d5c85da754a7 100644 --- a/lib/internal/Magento/Framework/Url.php +++ b/lib/internal/Magento/Framework/Url.php @@ -1024,7 +1024,7 @@ public function getRebuiltUrl($url) * * @param string $value * @return string - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ public function escape($value) { @@ -1176,7 +1176,7 @@ protected function getRouteParamsResolver() * Gets URL modifier. * * @return \Magento\Framework\Url\ModifierInterface - * @deprecated 100.1.0 + * @deprecated 101.0.0 */ private function getUrlModifier() { @@ -1193,7 +1193,7 @@ private function getUrlModifier() * Get escaper * * @return Escaper - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getEscaper() { diff --git a/lib/internal/Magento/Framework/Url/DecoderInterface.php b/lib/internal/Magento/Framework/Url/DecoderInterface.php index 523a402c1dc84..7a9f971202450 100644 --- a/lib/internal/Magento/Framework/Url/DecoderInterface.php +++ b/lib/internal/Magento/Framework/Url/DecoderInterface.php @@ -9,6 +9,7 @@ * Base64 decoder for URLs * * @api + * @since 100.0.2 */ interface DecoderInterface { diff --git a/lib/internal/Magento/Framework/Url/EncoderInterface.php b/lib/internal/Magento/Framework/Url/EncoderInterface.php index 9e5a999755063..02afdfcaefe9b 100644 --- a/lib/internal/Magento/Framework/Url/EncoderInterface.php +++ b/lib/internal/Magento/Framework/Url/EncoderInterface.php @@ -9,6 +9,7 @@ * Base64 encoder for URLs * * @api + * @since 100.0.2 */ interface EncoderInterface { diff --git a/lib/internal/Magento/Framework/Url/QueryParamsResolverInterface.php b/lib/internal/Magento/Framework/Url/QueryParamsResolverInterface.php index c9bd2412cad9c..1e7e8dff25456 100644 --- a/lib/internal/Magento/Framework/Url/QueryParamsResolverInterface.php +++ b/lib/internal/Magento/Framework/Url/QueryParamsResolverInterface.php @@ -9,6 +9,7 @@ * Resolves query parameters in a URL. * * @api + * @since 100.0.2 */ interface QueryParamsResolverInterface { diff --git a/lib/internal/Magento/Framework/Url/RouteParamsResolver.php b/lib/internal/Magento/Framework/Url/RouteParamsResolver.php index b46ba00d48023..eac9005e68548 100644 --- a/lib/internal/Magento/Framework/Url/RouteParamsResolver.php +++ b/lib/internal/Magento/Framework/Url/RouteParamsResolver.php @@ -154,7 +154,7 @@ public function getRouteParam($key) * Get escaper * * @return \Magento\Framework\Escaper - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getEscaper() { diff --git a/lib/internal/Magento/Framework/Url/RouteParamsResolverInterface.php b/lib/internal/Magento/Framework/Url/RouteParamsResolverInterface.php index 349f3d8359f7d..22d9aac7a2c32 100644 --- a/lib/internal/Magento/Framework/Url/RouteParamsResolverInterface.php +++ b/lib/internal/Magento/Framework/Url/RouteParamsResolverInterface.php @@ -9,6 +9,7 @@ * Route parameters resolver. * * @api + * @since 100.0.2 */ interface RouteParamsResolverInterface { diff --git a/lib/internal/Magento/Framework/Url/ScopeInterface.php b/lib/internal/Magento/Framework/Url/ScopeInterface.php index 821ae1814e9a3..648a33ca7b870 100644 --- a/lib/internal/Magento/Framework/Url/ScopeInterface.php +++ b/lib/internal/Magento/Framework/Url/ScopeInterface.php @@ -10,6 +10,7 @@ * determine scope based on URLs. * * @api + * @since 100.0.2 */ interface ScopeInterface extends \Magento\Framework\App\ScopeInterface { diff --git a/lib/internal/Magento/Framework/Url/ScopeResolverInterface.php b/lib/internal/Magento/Framework/Url/ScopeResolverInterface.php index 961ad6ecff8b5..b6861e1153f21 100644 --- a/lib/internal/Magento/Framework/Url/ScopeResolverInterface.php +++ b/lib/internal/Magento/Framework/Url/ScopeResolverInterface.php @@ -9,6 +9,7 @@ * This ScopeResolverInterface adds the ability to get the Magento area the code is executing in. * * @api + * @since 100.0.2 */ interface ScopeResolverInterface extends \Magento\Framework\App\ScopeResolverInterface { diff --git a/lib/internal/Magento/Framework/Url/SecurityInfoInterface.php b/lib/internal/Magento/Framework/Url/SecurityInfoInterface.php index c3cdab91d325f..8029538fbaeb4 100644 --- a/lib/internal/Magento/Framework/Url/SecurityInfoInterface.php +++ b/lib/internal/Magento/Framework/Url/SecurityInfoInterface.php @@ -9,6 +9,7 @@ * URL security information. Answers whether URL is secured. * * @api + * @since 100.0.2 */ interface SecurityInfoInterface { diff --git a/lib/internal/Magento/Framework/UrlInterface.php b/lib/internal/Magento/Framework/UrlInterface.php index 59806e14eb7c9..6575f66ca87f2 100644 --- a/lib/internal/Magento/Framework/UrlInterface.php +++ b/lib/internal/Magento/Framework/UrlInterface.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ interface UrlInterface { diff --git a/lib/internal/Magento/Framework/Validation/ValidationException.php b/lib/internal/Magento/Framework/Validation/ValidationException.php index 4f94bd8af80b5..ee98d08ae47f8 100644 --- a/lib/internal/Magento/Framework/Validation/ValidationException.php +++ b/lib/internal/Magento/Framework/Validation/ValidationException.php @@ -17,6 +17,7 @@ * to support Multi-Error response. * * @api + * @since 101.0.7 */ class ValidationException extends LocalizedException implements AggregateExceptionInterface { @@ -43,6 +44,7 @@ public function __construct( /** * @inheritdoc + * @since 101.0.7 */ public function getErrors(): array { diff --git a/lib/internal/Magento/Framework/Validation/ValidationResult.php b/lib/internal/Magento/Framework/Validation/ValidationResult.php index 60ff7ba5a4700..9e9cad26536fb 100644 --- a/lib/internal/Magento/Framework/Validation/ValidationResult.php +++ b/lib/internal/Magento/Framework/Validation/ValidationResult.php @@ -12,6 +12,7 @@ * ValidationResult represents a container storing all the validation errors that happened during the entity validation. * * @api + * @since 101.0.7 */ class ValidationResult { @@ -30,6 +31,7 @@ public function __construct(array $errors) /** * @return bool + * @since 101.0.7 */ public function isValid(): bool { @@ -38,6 +40,7 @@ public function isValid(): bool /** * @return array + * @since 101.0.7 */ public function getErrors(): array { diff --git a/lib/internal/Magento/Framework/Validator.php b/lib/internal/Magento/Framework/Validator.php index e15a1399a96a4..b42e486d00483 100644 --- a/lib/internal/Magento/Framework/Validator.php +++ b/lib/internal/Magento/Framework/Validator.php @@ -10,6 +10,7 @@ * Validator class that represents chain of validators. * * @api + * @since 100.0.2 */ class Validator extends \Magento\Framework\Validator\AbstractValidator { diff --git a/lib/internal/Magento/Framework/Validator/AbstractValidator.php b/lib/internal/Magento/Framework/Validator/AbstractValidator.php index db636516aacab..ade9fa230fbb8 100644 --- a/lib/internal/Magento/Framework/Validator/AbstractValidator.php +++ b/lib/internal/Magento/Framework/Validator/AbstractValidator.php @@ -9,6 +9,7 @@ * Abstract validator class. * * @api + * @since 100.0.2 */ abstract class AbstractValidator implements \Magento\Framework\Validator\ValidatorInterface { diff --git a/lib/internal/Magento/Framework/Validator/Constraint.php b/lib/internal/Magento/Framework/Validator/Constraint.php index d9be3c3d7ff9f..3326d42b7d24f 100644 --- a/lib/internal/Magento/Framework/Validator/Constraint.php +++ b/lib/internal/Magento/Framework/Validator/Constraint.php @@ -9,6 +9,7 @@ /** * @api + * @since 100.0.2 */ class Constraint extends \Magento\Framework\Validator\AbstractValidator { diff --git a/lib/internal/Magento/Framework/Validator/DataObject.php b/lib/internal/Magento/Framework/Validator/DataObject.php index 7348550ab3880..d4f4bbb45e7ec 100644 --- a/lib/internal/Magento/Framework/Validator/DataObject.php +++ b/lib/internal/Magento/Framework/Validator/DataObject.php @@ -12,6 +12,7 @@ /** * @api + * @since 100.0.2 */ class DataObject implements \Zend_Validate_Interface { diff --git a/lib/internal/Magento/Framework/Validator/Exception.php b/lib/internal/Magento/Framework/Validator/Exception.php index 370f66c424b01..837886e0ce9c9 100644 --- a/lib/internal/Magento/Framework/Validator/Exception.php +++ b/lib/internal/Magento/Framework/Validator/Exception.php @@ -16,6 +16,7 @@ * Exception to be thrown when data validation fails * * @api + * @since 100.0.2 */ class Exception extends InputException { diff --git a/lib/internal/Magento/Framework/Validator/ValidatorInterface.php b/lib/internal/Magento/Framework/Validator/ValidatorInterface.php index 92fb6395c1e4a..001582bd5b867 100644 --- a/lib/internal/Magento/Framework/Validator/ValidatorInterface.php +++ b/lib/internal/Magento/Framework/Validator/ValidatorInterface.php @@ -9,6 +9,7 @@ /** * @api + * @since 100.0.2 */ interface ValidatorInterface extends \Zend_Validate_Interface { diff --git a/lib/internal/Magento/Framework/View/Asset/AssetInterface.php b/lib/internal/Magento/Framework/View/Asset/AssetInterface.php index 60dc997b9d6da..6b7c47816c6a8 100644 --- a/lib/internal/Magento/Framework/View/Asset/AssetInterface.php +++ b/lib/internal/Magento/Framework/View/Asset/AssetInterface.php @@ -9,6 +9,7 @@ * An abstraction for static view file (or resource) that may be embedded to a web page * * @api + * @since 100.0.2 */ interface AssetInterface { @@ -30,7 +31,7 @@ public function getContentType(); * Retrieve source content type * * @return string - * @since 100.2.0 + * @since 101.0.0 */ public function getSourceContentType(); } diff --git a/lib/internal/Magento/Framework/View/Asset/Bundle.php b/lib/internal/Magento/Framework/View/Asset/Bundle.php index 80f35f9d57075..5d918982412b7 100644 --- a/lib/internal/Magento/Framework/View/Asset/Bundle.php +++ b/lib/internal/Magento/Framework/View/Asset/Bundle.php @@ -13,7 +13,7 @@ /** * Bundle model - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @see \Magento\Deploy\Package\Bundle */ class Bundle diff --git a/lib/internal/Magento/Framework/View/Asset/Bundle/Config.php b/lib/internal/Magento/Framework/View/Asset/Bundle/Config.php index 8c529e9a2bc1c..ede43c789416f 100644 --- a/lib/internal/Magento/Framework/View/Asset/Bundle/Config.php +++ b/lib/internal/Magento/Framework/View/Asset/Bundle/Config.php @@ -15,7 +15,7 @@ /** * Class Config - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @see \Magento\Deploy\Config\BundleConfig */ class Config implements Bundle\ConfigInterface diff --git a/lib/internal/Magento/Framework/View/Asset/Bundle/ConfigInterface.php b/lib/internal/Magento/Framework/View/Asset/Bundle/ConfigInterface.php index bea542aef2ea8..3acb49337a2e0 100644 --- a/lib/internal/Magento/Framework/View/Asset/Bundle/ConfigInterface.php +++ b/lib/internal/Magento/Framework/View/Asset/Bundle/ConfigInterface.php @@ -10,7 +10,7 @@ /** * Interface ConfigInterface - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @see \Magento\Deploy\Config\BundleConfig */ interface ConfigInterface diff --git a/lib/internal/Magento/Framework/View/Asset/Bundle/Manager.php b/lib/internal/Magento/Framework/View/Asset/Bundle/Manager.php index ee1368c0e6230..490c04004365d 100644 --- a/lib/internal/Magento/Framework/View/Asset/Bundle/Manager.php +++ b/lib/internal/Magento/Framework/View/Asset/Bundle/Manager.php @@ -15,7 +15,7 @@ /** * BundleService model * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @see \Magento\Deploy\Service\Bundle */ class Manager diff --git a/lib/internal/Magento/Framework/View/Asset/ConfigInterface.php b/lib/internal/Magento/Framework/View/Asset/ConfigInterface.php index 21357911e4597..1b817acf84aeb 100644 --- a/lib/internal/Magento/Framework/View/Asset/ConfigInterface.php +++ b/lib/internal/Magento/Framework/View/Asset/ConfigInterface.php @@ -9,6 +9,7 @@ * View asset configuration interface * * @api + * @since 100.0.2 */ interface ConfigInterface { diff --git a/lib/internal/Magento/Framework/View/Asset/ContentProcessorException.php b/lib/internal/Magento/Framework/View/Asset/ContentProcessorException.php index 86daba29e5be8..481968f7da360 100644 --- a/lib/internal/Magento/Framework/View/Asset/ContentProcessorException.php +++ b/lib/internal/Magento/Framework/View/Asset/ContentProcessorException.php @@ -9,6 +9,7 @@ /** * @api + * @since 100.0.2 */ class ContentProcessorException extends LocalizedException { diff --git a/lib/internal/Magento/Framework/View/Asset/File.php b/lib/internal/Magento/Framework/View/Asset/File.php index 2dd50224f78fa..7a3276b251a5a 100644 --- a/lib/internal/Magento/Framework/View/Asset/File.php +++ b/lib/internal/Magento/Framework/View/Asset/File.php @@ -12,6 +12,7 @@ * This class is a value object with lazy loading of some of its data (content, physical file path) * * @api + * @since 100.0.2 */ class File implements MergeableInterface { @@ -166,7 +167,7 @@ public function getSourceFile() * Get source content type * * @return string - * @since 100.2.0 + * @since 101.0.0 */ public function getSourceContentType() { diff --git a/lib/internal/Magento/Framework/View/Asset/File/FallbackContext.php b/lib/internal/Magento/Framework/View/Asset/File/FallbackContext.php index 5f83358336ab6..ba6564cd7abb7 100644 --- a/lib/internal/Magento/Framework/View/Asset/File/FallbackContext.php +++ b/lib/internal/Magento/Framework/View/Asset/File/FallbackContext.php @@ -12,6 +12,7 @@ * An advanced context that contains information necessary for view files fallback system * * @api + * @since 100.0.2 */ class FallbackContext extends Context { diff --git a/lib/internal/Magento/Framework/View/Asset/File/NotFoundException.php b/lib/internal/Magento/Framework/View/Asset/File/NotFoundException.php index 93b88834edff9..ddecc9330617d 100644 --- a/lib/internal/Magento/Framework/View/Asset/File/NotFoundException.php +++ b/lib/internal/Magento/Framework/View/Asset/File/NotFoundException.php @@ -12,6 +12,7 @@ * Use this exception when file has not been found * * @api + * @since 100.0.2 */ class NotFoundException extends \LogicException { diff --git a/lib/internal/Magento/Framework/View/Asset/GroupedCollection.php b/lib/internal/Magento/Framework/View/Asset/GroupedCollection.php index a0942599480b4..a574b272a2876 100644 --- a/lib/internal/Magento/Framework/View/Asset/GroupedCollection.php +++ b/lib/internal/Magento/Framework/View/Asset/GroupedCollection.php @@ -9,6 +9,7 @@ * List of page assets that combines into groups ones having the same properties * * @api + * @since 100.0.2 */ class GroupedCollection extends Collection { diff --git a/lib/internal/Magento/Framework/View/Asset/LocalInterface.php b/lib/internal/Magento/Framework/View/Asset/LocalInterface.php index fd7d1ea473ecd..2bb53bcaa86b2 100644 --- a/lib/internal/Magento/Framework/View/Asset/LocalInterface.php +++ b/lib/internal/Magento/Framework/View/Asset/LocalInterface.php @@ -8,6 +8,7 @@ /** * Interface of an asset with locally accessible source file * @api + * @since 100.0.2 */ interface LocalInterface extends AssetInterface { diff --git a/lib/internal/Magento/Framework/View/Asset/MergeStrategy/Checksum.php b/lib/internal/Magento/Framework/View/Asset/MergeStrategy/Checksum.php index 7c7e8864151c0..c15fedeb8d799 100644 --- a/lib/internal/Magento/Framework/View/Asset/MergeStrategy/Checksum.php +++ b/lib/internal/Magento/Framework/View/Asset/MergeStrategy/Checksum.php @@ -45,7 +45,7 @@ public function __construct( } /** - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @return Source */ private function getAssetSource() diff --git a/lib/internal/Magento/Framework/View/Asset/Minification.php b/lib/internal/Magento/Framework/View/Asset/Minification.php index 087d57ffa4162..856e0b42e2bff 100644 --- a/lib/internal/Magento/Framework/View/Asset/Minification.php +++ b/lib/internal/Magento/Framework/View/Asset/Minification.php @@ -11,6 +11,7 @@ /** * Helper class for static files minification related processes. * @api + * @since 100.0.2 */ class Minification { diff --git a/lib/internal/Magento/Framework/View/Asset/PreProcessor/AlternativeSourceInterface.php b/lib/internal/Magento/Framework/View/Asset/PreProcessor/AlternativeSourceInterface.php index 750c77e651dff..d208786673e04 100644 --- a/lib/internal/Magento/Framework/View/Asset/PreProcessor/AlternativeSourceInterface.php +++ b/lib/internal/Magento/Framework/View/Asset/PreProcessor/AlternativeSourceInterface.php @@ -11,6 +11,7 @@ * Interface AlternativeSourceInterface * * @api + * @since 100.0.2 */ interface AlternativeSourceInterface extends PreProcessorInterface { diff --git a/lib/internal/Magento/Framework/View/Asset/PreProcessor/Chain.php b/lib/internal/Magento/Framework/View/Asset/PreProcessor/Chain.php index 4fc31c22cb2de..80ce1321ef91e 100644 --- a/lib/internal/Magento/Framework/View/Asset/PreProcessor/Chain.php +++ b/lib/internal/Magento/Framework/View/Asset/PreProcessor/Chain.php @@ -13,6 +13,7 @@ * Encapsulates complexity of all necessary context and parameters * * @api + * @since 100.0.2 */ class Chain { diff --git a/lib/internal/Magento/Framework/View/Asset/PreProcessor/ChainFactory.php b/lib/internal/Magento/Framework/View/Asset/PreProcessor/ChainFactory.php index 51957cdf4c789..70baf7622b138 100644 --- a/lib/internal/Magento/Framework/View/Asset/PreProcessor/ChainFactory.php +++ b/lib/internal/Magento/Framework/View/Asset/PreProcessor/ChainFactory.php @@ -11,6 +11,7 @@ * Factory for @see \Magento\Framework\View\Asset\PreProcessor\Chain * @codeCoverageIgnore * @api + * @since 100.0.2 */ class ChainFactory implements ChainFactoryInterface { diff --git a/lib/internal/Magento/Framework/View/Asset/PreProcessor/ChainFactoryInterface.php b/lib/internal/Magento/Framework/View/Asset/PreProcessor/ChainFactoryInterface.php index d81bc69158db9..10ae2f6d479b2 100644 --- a/lib/internal/Magento/Framework/View/Asset/PreProcessor/ChainFactoryInterface.php +++ b/lib/internal/Magento/Framework/View/Asset/PreProcessor/ChainFactoryInterface.php @@ -9,6 +9,7 @@ * Interface ChainFactoryInterface * * @api + * @since 100.0.2 */ interface ChainFactoryInterface { diff --git a/lib/internal/Magento/Framework/View/Asset/PreProcessorInterface.php b/lib/internal/Magento/Framework/View/Asset/PreProcessorInterface.php index 419b6cd8f612f..35c9aa6a18a41 100644 --- a/lib/internal/Magento/Framework/View/Asset/PreProcessorInterface.php +++ b/lib/internal/Magento/Framework/View/Asset/PreProcessorInterface.php @@ -9,6 +9,7 @@ * An interface for "preprocessing" asset contents * * @api + * @since 100.0.2 */ interface PreProcessorInterface { diff --git a/lib/internal/Magento/Framework/View/Asset/Repository.php b/lib/internal/Magento/Framework/View/Asset/Repository.php index 19c9ddd1e9186..b8cd7fa8541e4 100644 --- a/lib/internal/Magento/Framework/View/Asset/Repository.php +++ b/lib/internal/Magento/Framework/View/Asset/Repository.php @@ -16,6 +16,7 @@ * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * * @api + * @since 100.0.2 */ class Repository { @@ -36,7 +37,7 @@ class Repository /** * @var \Magento\Framework\View\Design\Theme\ListInterface - * @deprecated 100.1.1 + * @deprecated 100.0.2 */ private $themeList; diff --git a/lib/internal/Magento/Framework/View/Asset/Source.php b/lib/internal/Magento/Framework/View/Asset/Source.php index 4afe1be4490bc..dc98a257500c2 100644 --- a/lib/internal/Magento/Framework/View/Asset/Source.php +++ b/lib/internal/Magento/Framework/View/Asset/Source.php @@ -47,7 +47,7 @@ class Source /** * @var \Magento\Framework\View\Design\Theme\ListInterface - * @deprecated 100.1.1 + * @deprecated 100.0.2 */ private $themeList; diff --git a/lib/internal/Magento/Framework/View/ConfigInterface.php b/lib/internal/Magento/Framework/View/ConfigInterface.php index 1b81f10f49d5a..e2a82d97ca1e8 100644 --- a/lib/internal/Magento/Framework/View/ConfigInterface.php +++ b/lib/internal/Magento/Framework/View/ConfigInterface.php @@ -9,6 +9,7 @@ * Config Interface * * @api + * @since 100.0.2 */ interface ConfigInterface { diff --git a/lib/internal/Magento/Framework/View/Context.php b/lib/internal/Magento/Framework/View/Context.php index 508d63d158bd7..8503c48d135c2 100644 --- a/lib/internal/Magento/Framework/View/Context.php +++ b/lib/internal/Magento/Framework/View/Context.php @@ -28,6 +28,7 @@ * @SuppressWarnings(PHPMD.TooManyFields) * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @api + * @since 100.0.2 */ class Context { diff --git a/lib/internal/Magento/Framework/View/Design/Fallback/Rule/Theme.php b/lib/internal/Magento/Framework/View/Design/Fallback/Rule/Theme.php index b1e0e117e6efd..543eb3727d7a3 100644 --- a/lib/internal/Magento/Framework/View/Design/Fallback/Rule/Theme.php +++ b/lib/internal/Magento/Framework/View/Design/Fallback/Rule/Theme.php @@ -108,7 +108,7 @@ private function getThemePubStaticDir(ThemeInterface $theme, $params = []) * Get DirectoryList instance * @return DirectoryList * - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getDirectoryList() { diff --git a/lib/internal/Magento/Framework/View/Design/Theme/FileProviderInterface.php b/lib/internal/Magento/Framework/View/Design/Theme/FileProviderInterface.php index bf431b085a106..19337ba60f5a5 100644 --- a/lib/internal/Magento/Framework/View/Design/Theme/FileProviderInterface.php +++ b/lib/internal/Magento/Framework/View/Design/Theme/FileProviderInterface.php @@ -9,6 +9,7 @@ * Theme files provider * * @api + * @since 100.0.2 */ interface FileProviderInterface { diff --git a/lib/internal/Magento/Framework/View/Design/Theme/Label/ListInterface.php b/lib/internal/Magento/Framework/View/Design/Theme/Label/ListInterface.php index 7003ee17dd763..5f8e8be4cf812 100644 --- a/lib/internal/Magento/Framework/View/Design/Theme/Label/ListInterface.php +++ b/lib/internal/Magento/Framework/View/Design/Theme/Label/ListInterface.php @@ -9,6 +9,7 @@ * Label list interface * * @api + * @since 100.0.2 */ interface ListInterface { diff --git a/lib/internal/Magento/Framework/View/Design/Theme/ListInterface.php b/lib/internal/Magento/Framework/View/Design/Theme/ListInterface.php index b3556a578db6a..c68f2fc23f3a8 100644 --- a/lib/internal/Magento/Framework/View/Design/Theme/ListInterface.php +++ b/lib/internal/Magento/Framework/View/Design/Theme/ListInterface.php @@ -9,6 +9,7 @@ * Theme list interface * * @api + * @since 100.0.2 */ interface ListInterface { diff --git a/lib/internal/Magento/Framework/View/Design/ThemeInterface.php b/lib/internal/Magento/Framework/View/Design/ThemeInterface.php index adcd29db708c9..fc1c5d8a22a47 100644 --- a/lib/internal/Magento/Framework/View/Design/ThemeInterface.php +++ b/lib/internal/Magento/Framework/View/Design/ThemeInterface.php @@ -9,6 +9,7 @@ * Interface ThemeInterface * * @api + * @since 100.0.2 */ interface ThemeInterface { diff --git a/lib/internal/Magento/Framework/View/Element/AbstractBlock.php b/lib/internal/Magento/Framework/View/Element/AbstractBlock.php index 3f2c2ac1685cd..0a63294527dec 100644 --- a/lib/internal/Magento/Framework/View/Element/AbstractBlock.php +++ b/lib/internal/Magento/Framework/View/Element/AbstractBlock.php @@ -22,6 +22,7 @@ * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @SuppressWarnings(PHPMD.TooManyFields) * @SuppressWarnings(PHPMD.NumberOfChildren) + * @since 100.0.2 */ abstract class AbstractBlock extends \Magento\Framework\DataObject implements BlockInterface { @@ -173,7 +174,7 @@ abstract class AbstractBlock extends \Magento\Framework\DataObject implements Bl /** * @var \Magento\Framework\App\CacheInterface - * @since 100.2.0 + * @since 101.0.0 */ protected $_cache; @@ -893,7 +894,7 @@ public function escapeHtml($data, $allowedTags = null) * * @param string $string * @return string - * @since 100.2.0 + * @since 101.0.0 */ public function escapeJs($string) { @@ -906,7 +907,7 @@ public function escapeJs($string) * @param string $string * @param boolean $escapeSingleQuote * @return string - * @since 100.2.0 + * @since 101.0.0 */ public function escapeHtmlAttr($string, $escapeSingleQuote = true) { @@ -918,7 +919,7 @@ public function escapeHtmlAttr($string, $escapeSingleQuote = true) * * @param string $string * @return string - * @since 100.2.0 + * @since 101.0.0 */ public function escapeCss($string) { @@ -957,7 +958,7 @@ public function escapeUrl($string) * * @param string $data * @return string - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ public function escapeXssInUrl($data) { @@ -972,7 +973,7 @@ public function escapeXssInUrl($data) * @param string $data * @param bool $addSlashes * @return string - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ public function escapeQuote($data, $addSlashes = false) { @@ -985,7 +986,7 @@ public function escapeQuote($data, $addSlashes = false) * @param string|array $data * @param string $quote * @return string|array - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ public function escapeJsQuote($data, $quote = '\'') { diff --git a/lib/internal/Magento/Framework/View/Element/Block/ArgumentInterface.php b/lib/internal/Magento/Framework/View/Element/Block/ArgumentInterface.php index 29b5557c9fcb1..00992d28f4df1 100644 --- a/lib/internal/Magento/Framework/View/Element/Block/ArgumentInterface.php +++ b/lib/internal/Magento/Framework/View/Element/Block/ArgumentInterface.php @@ -10,6 +10,7 @@ * All objects that are injected to block arguments should implement this interface. * * @api + * @since 101.0.0 */ interface ArgumentInterface { diff --git a/lib/internal/Magento/Framework/View/Element/BlockFactory.php b/lib/internal/Magento/Framework/View/Element/BlockFactory.php index 068cb49a66319..511c2a9050c17 100644 --- a/lib/internal/Magento/Framework/View/Element/BlockFactory.php +++ b/lib/internal/Magento/Framework/View/Element/BlockFactory.php @@ -11,6 +11,7 @@ * Class BlockFactory * * @api + * @since 100.0.2 */ class BlockFactory { diff --git a/lib/internal/Magento/Framework/View/Element/BlockInterface.php b/lib/internal/Magento/Framework/View/Element/BlockInterface.php index 1b4326694df97..565fdcc68188b 100644 --- a/lib/internal/Magento/Framework/View/Element/BlockInterface.php +++ b/lib/internal/Magento/Framework/View/Element/BlockInterface.php @@ -11,6 +11,7 @@ * Used to present information to user * * @api + * @since 100.0.2 */ interface BlockInterface { diff --git a/lib/internal/Magento/Framework/View/Element/Context.php b/lib/internal/Magento/Framework/View/Element/Context.php index 0f8123745e7e8..ce804e2ace255 100644 --- a/lib/internal/Magento/Framework/View/Element/Context.php +++ b/lib/internal/Magento/Framework/View/Element/Context.php @@ -22,6 +22,7 @@ * @SuppressWarnings(PHPMD) * * @api + * @since 100.0.2 */ class Context implements \Magento\Framework\ObjectManager\ContextInterface { @@ -379,6 +380,7 @@ public function getLocaleDate() * Lock guarded cache loader. * * @return LockGuardedCacheLoader + * @since 102.0.2 */ public function getLockGuardedCacheLoader() { diff --git a/lib/internal/Magento/Framework/View/Element/FormKey.php b/lib/internal/Magento/Framework/View/Element/FormKey.php index 072ba42b34f1d..c1943010ed185 100644 --- a/lib/internal/Magento/Framework/View/Element/FormKey.php +++ b/lib/internal/Magento/Framework/View/Element/FormKey.php @@ -11,6 +11,7 @@ /** * @api + * @since 100.0.2 */ class FormKey extends \Magento\Framework\View\Element\AbstractBlock { diff --git a/lib/internal/Magento/Framework/View/Element/Html/Calendar.php b/lib/internal/Magento/Framework/View/Element/Html/Calendar.php index 0c8187569cf28..b1d5ed66b3387 100644 --- a/lib/internal/Magento/Framework/View/Element/Html/Calendar.php +++ b/lib/internal/Magento/Framework/View/Element/Html/Calendar.php @@ -13,6 +13,7 @@ * Prepares localization data for calendar * * @api + * @since 100.0.2 */ class Calendar extends \Magento\Framework\View\Element\Template { diff --git a/lib/internal/Magento/Framework/View/Element/Html/Link.php b/lib/internal/Magento/Framework/View/Element/Html/Link.php index 6c5761f8cea25..01742257642cc 100644 --- a/lib/internal/Magento/Framework/View/Element/Html/Link.php +++ b/lib/internal/Magento/Framework/View/Element/Html/Link.php @@ -13,6 +13,7 @@ * @method string getTitle() * * @api + * @since 100.0.2 */ class Link extends \Magento\Framework\View\Element\Template { diff --git a/lib/internal/Magento/Framework/View/Element/Html/Link/Current.php b/lib/internal/Magento/Framework/View/Element/Html/Link/Current.php index 7aac210dcab89..a23ce4a83ff31 100644 --- a/lib/internal/Magento/Framework/View/Element/Html/Link/Current.php +++ b/lib/internal/Magento/Framework/View/Element/Html/Link/Current.php @@ -20,6 +20,7 @@ * @method null|array getAttributes() * @method null|bool getCurrent() * @method \Magento\Framework\View\Element\Html\Link\Current setCurrent(bool $value) + * @since 100.0.2 */ class Current extends Template { diff --git a/lib/internal/Magento/Framework/View/Element/Html/Links.php b/lib/internal/Magento/Framework/View/Element/Html/Links.php index 472e24d7f2bfa..8bca55fcbb61d 100644 --- a/lib/internal/Magento/Framework/View/Element/Html/Links.php +++ b/lib/internal/Magento/Framework/View/Element/Html/Links.php @@ -9,6 +9,7 @@ * Links list block * * @api + * @since 100.0.2 */ class Links extends \Magento\Framework\View\Element\Template { diff --git a/lib/internal/Magento/Framework/View/Element/Js/Components.php b/lib/internal/Magento/Framework/View/Element/Js/Components.php index 3f9be417d62be..82a6a3ee8a902 100644 --- a/lib/internal/Magento/Framework/View/Element/Js/Components.php +++ b/lib/internal/Magento/Framework/View/Element/Js/Components.php @@ -10,6 +10,7 @@ /** * @api + * @since 100.0.2 */ class Components extends Template { diff --git a/lib/internal/Magento/Framework/View/Element/Js/Cookie.php b/lib/internal/Magento/Framework/View/Element/Js/Cookie.php index c44bad026ecac..2edb878f5b9a7 100644 --- a/lib/internal/Magento/Framework/View/Element/Js/Cookie.php +++ b/lib/internal/Magento/Framework/View/Element/Js/Cookie.php @@ -11,6 +11,7 @@ /** * @api + * @since 100.0.2 */ class Cookie extends Template { diff --git a/lib/internal/Magento/Framework/View/Element/Messages.php b/lib/internal/Magento/Framework/View/Element/Messages.php index 409e678d4e30a..0af9a915966bf 100644 --- a/lib/internal/Magento/Framework/View/Element/Messages.php +++ b/lib/internal/Magento/Framework/View/Element/Messages.php @@ -11,6 +11,7 @@ * Class Messages * * @api + * @since 100.0.2 */ class Messages extends Template { diff --git a/lib/internal/Magento/Framework/View/Element/RendererInterface.php b/lib/internal/Magento/Framework/View/Element/RendererInterface.php index e9be81b7f9d20..4137739c08757 100644 --- a/lib/internal/Magento/Framework/View/Element/RendererInterface.php +++ b/lib/internal/Magento/Framework/View/Element/RendererInterface.php @@ -9,6 +9,7 @@ * Magento Block interface * * @api + * @since 100.0.2 */ interface RendererInterface { diff --git a/lib/internal/Magento/Framework/View/Element/RendererList.php b/lib/internal/Magento/Framework/View/Element/RendererList.php index 30bc38aed28f3..b951c3a0445fe 100644 --- a/lib/internal/Magento/Framework/View/Element/RendererList.php +++ b/lib/internal/Magento/Framework/View/Element/RendererList.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ class RendererList extends AbstractBlock { diff --git a/lib/internal/Magento/Framework/View/Element/Template.php b/lib/internal/Magento/Framework/View/Element/Template.php index a1aa599156d2a..44dd41c4600bc 100644 --- a/lib/internal/Magento/Framework/View/Element/Template.php +++ b/lib/internal/Magento/Framework/View/Element/Template.php @@ -27,6 +27,7 @@ * @api * @SuppressWarnings(PHPMD.NumberOfChildren) * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @since 100.0.2 */ class Template extends AbstractBlock { diff --git a/lib/internal/Magento/Framework/View/Element/Template/Context.php b/lib/internal/Magento/Framework/View/Element/Template/Context.php index 4538fb33a9726..48c91ae29bfa9 100644 --- a/lib/internal/Magento/Framework/View/Element/Template/Context.php +++ b/lib/internal/Magento/Framework/View/Element/Template/Context.php @@ -20,6 +20,7 @@ * * @api * @SuppressWarnings(PHPMD) + * @since 100.0.2 */ class Context extends \Magento\Framework\View\Element\Context { diff --git a/lib/internal/Magento/Framework/View/Element/Text.php b/lib/internal/Magento/Framework/View/Element/Text.php index 687317576c358..b1197006349da 100644 --- a/lib/internal/Magento/Framework/View/Element/Text.php +++ b/lib/internal/Magento/Framework/View/Element/Text.php @@ -9,6 +9,7 @@ * Class Text * * @api + * @since 100.0.2 */ class Text extends \Magento\Framework\View\Element\AbstractBlock { diff --git a/lib/internal/Magento/Framework/View/Element/Text/ListText.php b/lib/internal/Magento/Framework/View/Element/Text/ListText.php index a18ed78967139..d1892b3e11bd7 100644 --- a/lib/internal/Magento/Framework/View/Element/Text/ListText.php +++ b/lib/internal/Magento/Framework/View/Element/Text/ListText.php @@ -11,6 +11,7 @@ * Class ListText * * @api + * @since 100.0.2 */ class ListText extends \Magento\Framework\View\Element\Text { diff --git a/lib/internal/Magento/Framework/View/Element/UiComponent/Argument/Interpreter/ConfigurableObject.php b/lib/internal/Magento/Framework/View/Element/UiComponent/Argument/Interpreter/ConfigurableObject.php index c40d26ab2f500..9d8dcd9821cdf 100644 --- a/lib/internal/Magento/Framework/View/Element/UiComponent/Argument/Interpreter/ConfigurableObject.php +++ b/lib/internal/Magento/Framework/View/Element/UiComponent/Argument/Interpreter/ConfigurableObject.php @@ -3,8 +3,12 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ +declare(strict_types=1); + namespace Magento\Framework\View\Element\UiComponent\Argument\Interpreter; +use Magento\Framework\Code\Reader\ClassReader; +use Magento\Framework\ObjectManager\ConfigInterface; use Magento\Framework\ObjectManagerInterface; use Magento\Framework\Data\Argument\InterpreterInterface; @@ -13,6 +17,11 @@ */ class ConfigurableObject implements InterpreterInterface { + /** + * @var array + */ + private $classWhitelist = []; + /** * @var ObjectManagerInterface */ @@ -23,20 +32,41 @@ class ConfigurableObject implements InterpreterInterface */ protected $argumentInterpreter; + /** + * @var ClassReader|null + */ + private $classReader; + + /** + * @var ConfigInterface + */ + private $objectManagerConfig; + /** * Constructor * * @param ObjectManagerInterface $objectManager * @param InterpreterInterface $argumentInterpreter + * @param array $classWhitelist + * @param ClassReader|null $classReader + * @param ConfigInterface|null $objectManagerConfig */ - public function __construct(ObjectManagerInterface $objectManager, InterpreterInterface $argumentInterpreter) - { + public function __construct( + ObjectManagerInterface $objectManager, + InterpreterInterface $argumentInterpreter, + array $classWhitelist = [], + ClassReader $classReader = null, + ConfigInterface $objectManagerConfig = null + ) { $this->objectManager = $objectManager; $this->argumentInterpreter = $argumentInterpreter; + $this->classWhitelist = $classWhitelist; + $this->classReader = $classReader ?? $objectManager->get(ClassReader::class); + $this->objectManagerConfig = $objectManagerConfig ?? $objectManager->get(ConfigInterface::class); } /** - * {@inheritdoc} + * @inheritdoc */ public function evaluate(array $data) { @@ -53,10 +83,44 @@ public function evaluate(array $data) if (!isset($arguments['class'])) { throw new \InvalidArgumentException('Node "argument" with name "class" is required for this type.'); } + $className = $arguments['class']; unset($arguments['class']); + + $type = $this->objectManagerConfig->getInstanceType( + $this->objectManagerConfig->getPreference($className) + ); + + $classParents = $this->getParents($type); + + $whitelistIntersection = array_intersect($classParents, $this->classWhitelist); + + if (empty($whitelistIntersection)) { + throw new \InvalidArgumentException( + sprintf('Class argument is invalid: %s', $className) + ); + } } return $this->objectManager->create($className, $arguments); } + + /** + * Retrieves all the parent classes and interfaces for a class including the ones implemented by the class itself + * + * @param string $type + * @return string[] + */ + private function getParents(string $type) + { + $classParents = $this->classReader->getParents($type); + foreach ($classParents as $parent) { + if (empty($parent)) { + continue; + } + $classParents = array_merge($classParents, $this->getParents($parent)); + } + + return $classParents; + } } diff --git a/lib/internal/Magento/Framework/View/Element/UiComponent/Config/ManagerInterface.php b/lib/internal/Magento/Framework/View/Element/UiComponent/Config/ManagerInterface.php index a66233f99f4d5..525e9ecb52b20 100644 --- a/lib/internal/Magento/Framework/View/Element/UiComponent/Config/ManagerInterface.php +++ b/lib/internal/Magento/Framework/View/Element/UiComponent/Config/ManagerInterface.php @@ -7,7 +7,7 @@ /** * Interface ManagerInterface - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ interface ManagerInterface { diff --git a/lib/internal/Magento/Framework/View/Element/UiComponent/Config/Provider/Component/Definition.php b/lib/internal/Magento/Framework/View/Element/UiComponent/Config/Provider/Component/Definition.php index 6fd041d582495..56c945ab4fd28 100644 --- a/lib/internal/Magento/Framework/View/Element/UiComponent/Config/Provider/Component/Definition.php +++ b/lib/internal/Magento/Framework/View/Element/UiComponent/Config/Provider/Component/Definition.php @@ -114,7 +114,7 @@ protected function prepareComponentData(array $componentsData) * Get serializer * * @return \Magento\Framework\Serialize\SerializerInterface - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getSerializer() { diff --git a/lib/internal/Magento/Framework/View/Element/UiComponent/Config/Provider/Template.php b/lib/internal/Magento/Framework/View/Element/UiComponent/Config/Provider/Template.php index 59da9bc8aa5b1..074e18738c3b8 100644 --- a/lib/internal/Magento/Framework/View/Element/UiComponent/Config/Provider/Template.php +++ b/lib/internal/Magento/Framework/View/Element/UiComponent/Config/Provider/Template.php @@ -117,7 +117,7 @@ public function getTemplate($template) * Get serializer * * @return \Magento\Framework\Serialize\SerializerInterface - * @deprecated 100.2.0 + * @deprecated 101.0.0 */ private function getSerializer() { diff --git a/lib/internal/Magento/Framework/View/Element/UiComponent/DataProvider/DataProviderInterface.php b/lib/internal/Magento/Framework/View/Element/UiComponent/DataProvider/DataProviderInterface.php index 9f3121f4e495d..d939a01648f6b 100644 --- a/lib/internal/Magento/Framework/View/Element/UiComponent/DataProvider/DataProviderInterface.php +++ b/lib/internal/Magento/Framework/View/Element/UiComponent/DataProvider/DataProviderInterface.php @@ -11,6 +11,7 @@ * Interface DataProviderInterface * * @api + * @since 100.0.2 */ interface DataProviderInterface { diff --git a/lib/internal/Magento/Framework/View/Element/UiComponent/DataProvider/FilterPool.php b/lib/internal/Magento/Framework/View/Element/UiComponent/DataProvider/FilterPool.php index 24ea542649875..392e2a50fa274 100644 --- a/lib/internal/Magento/Framework/View/Element/UiComponent/DataProvider/FilterPool.php +++ b/lib/internal/Magento/Framework/View/Element/UiComponent/DataProvider/FilterPool.php @@ -13,6 +13,7 @@ * Class FilterPool * * @api + * @since 100.0.2 */ class FilterPool { diff --git a/lib/internal/Magento/Framework/View/Element/UiComponent/DataProvider/SearchResult.php b/lib/internal/Magento/Framework/View/Element/UiComponent/DataProvider/SearchResult.php index e1aa6a0605dab..32334e89c5876 100644 --- a/lib/internal/Magento/Framework/View/Element/UiComponent/DataProvider/SearchResult.php +++ b/lib/internal/Magento/Framework/View/Element/UiComponent/DataProvider/SearchResult.php @@ -95,7 +95,7 @@ public function __construct( } /** - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @return ResourceConnection */ private function getResourceConnection() diff --git a/lib/internal/Magento/Framework/View/Element/UiComponentFactory.php b/lib/internal/Magento/Framework/View/Element/UiComponentFactory.php index 626aebeb94269..b4c4a3294710d 100755 --- a/lib/internal/Magento/Framework/View/Element/UiComponentFactory.php +++ b/lib/internal/Magento/Framework/View/Element/UiComponentFactory.php @@ -24,6 +24,7 @@ * * @api * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @since 100.0.2 */ class UiComponentFactory extends DataObject { @@ -49,7 +50,7 @@ class UiComponentFactory extends DataObject /** * UI component manager * - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @var ManagerInterface */ protected $componentManager; diff --git a/lib/internal/Magento/Framework/View/Element/UiComponentInterface.php b/lib/internal/Magento/Framework/View/Element/UiComponentInterface.php index b5c3546084fcb..151be6345adec 100644 --- a/lib/internal/Magento/Framework/View/Element/UiComponentInterface.php +++ b/lib/internal/Magento/Framework/View/Element/UiComponentInterface.php @@ -11,6 +11,7 @@ * Interface UiComponentInterface * * @api + * @since 100.0.2 */ interface UiComponentInterface extends BlockInterface { diff --git a/lib/internal/Magento/Framework/View/File/CollectorInterface.php b/lib/internal/Magento/Framework/View/File/CollectorInterface.php index 31554d2a79238..dec8d6ea093b6 100644 --- a/lib/internal/Magento/Framework/View/File/CollectorInterface.php +++ b/lib/internal/Magento/Framework/View/File/CollectorInterface.php @@ -11,6 +11,7 @@ * Interface of locating view files in the file system * * @api + * @since 100.0.2 */ interface CollectorInterface { diff --git a/lib/internal/Magento/Framework/View/FileSystem.php b/lib/internal/Magento/Framework/View/FileSystem.php index db269345eab98..687b6adcb0f8e 100644 --- a/lib/internal/Magento/Framework/View/FileSystem.php +++ b/lib/internal/Magento/Framework/View/FileSystem.php @@ -9,6 +9,7 @@ * Model that finds file paths by their fileId * * @api + * @since 100.0.2 */ class FileSystem { diff --git a/lib/internal/Magento/Framework/View/Layout/BuilderInterface.php b/lib/internal/Magento/Framework/View/Layout/BuilderInterface.php index f579a539a12a9..1d28952aaa0f7 100644 --- a/lib/internal/Magento/Framework/View/Layout/BuilderInterface.php +++ b/lib/internal/Magento/Framework/View/Layout/BuilderInterface.php @@ -11,6 +11,7 @@ * Interface BuilderInterface * * @api + * @since 100.0.2 */ interface BuilderInterface { diff --git a/lib/internal/Magento/Framework/View/Layout/Data/Structure.php b/lib/internal/Magento/Framework/View/Layout/Data/Structure.php index d9aa739fb04f9..3ec5f8b50c7da 100644 --- a/lib/internal/Magento/Framework/View/Layout/Data/Structure.php +++ b/lib/internal/Magento/Framework/View/Layout/Data/Structure.php @@ -12,6 +12,7 @@ * An associative data structure, that features "nested set" parent-child relations * * @api + * @since 100.0.2 */ class Structure extends DataStructure { diff --git a/lib/internal/Magento/Framework/View/Layout/Element.php b/lib/internal/Magento/Framework/View/Layout/Element.php index 203af4bf1553c..f8ce682dcded2 100644 --- a/lib/internal/Magento/Framework/View/Layout/Element.php +++ b/lib/internal/Magento/Framework/View/Layout/Element.php @@ -9,6 +9,7 @@ * Class Element * * @api + * @since 100.0.2 */ class Element extends \Magento\Framework\Simplexml\Element { diff --git a/lib/internal/Magento/Framework/View/Layout/Generator/Context.php b/lib/internal/Magento/Framework/View/Layout/Generator/Context.php index 951724b062829..606372d366722 100644 --- a/lib/internal/Magento/Framework/View/Layout/Generator/Context.php +++ b/lib/internal/Magento/Framework/View/Layout/Generator/Context.php @@ -10,6 +10,7 @@ /** * @api + * @since 100.0.2 */ class Context { diff --git a/lib/internal/Magento/Framework/View/Layout/GeneratorPool.php b/lib/internal/Magento/Framework/View/Layout/GeneratorPool.php index a585eda37df68..333afcf3bf408 100644 --- a/lib/internal/Magento/Framework/View/Layout/GeneratorPool.php +++ b/lib/internal/Magento/Framework/View/Layout/GeneratorPool.php @@ -10,6 +10,7 @@ /** * Pool of generators for structural elements * @api + * @since 100.0.2 */ class GeneratorPool { @@ -238,7 +239,7 @@ protected function moveElementInStructure( * @param array $data * * @return bool - * @since 100.2.0 + * @since 101.0.0 */ protected function visibilityConditionsExistsIn(array $data) { diff --git a/lib/internal/Magento/Framework/View/Layout/Reader/Block.php b/lib/internal/Magento/Framework/View/Layout/Reader/Block.php index ff20eb339c318..52f7552cea03d 100755 --- a/lib/internal/Magento/Framework/View/Layout/Reader/Block.php +++ b/lib/internal/Magento/Framework/View/Layout/Reader/Block.php @@ -81,7 +81,7 @@ class Block implements Layout\ReaderInterface private $conditionReader; /** - * @deprecated 100.2.0 + * @deprecated 101.0.0 * @var string */ private $deprecatedAttributeAcl = 'acl'; diff --git a/lib/internal/Magento/Framework/View/Layout/Reader/Context.php b/lib/internal/Magento/Framework/View/Layout/Reader/Context.php index 806c779186dc0..f9ca09478d600 100644 --- a/lib/internal/Magento/Framework/View/Layout/Reader/Context.php +++ b/lib/internal/Magento/Framework/View/Layout/Reader/Context.php @@ -10,6 +10,7 @@ /** * @api + * @since 100.0.2 */ class Context { diff --git a/lib/internal/Magento/Framework/View/Layout/ScheduledStructure.php b/lib/internal/Magento/Framework/View/Layout/ScheduledStructure.php index 3193e10282fd4..aae2e9a68fe3c 100644 --- a/lib/internal/Magento/Framework/View/Layout/ScheduledStructure.php +++ b/lib/internal/Magento/Framework/View/Layout/ScheduledStructure.php @@ -9,6 +9,7 @@ * Layout structure model * * @api + * @since 100.0.2 */ class ScheduledStructure { @@ -489,7 +490,7 @@ public function flushScheduledStructure() * Reformat 'Layout scheduled structure' to array. * * @return array - * @since 100.2.0 + * @since 101.0.0 */ public function __toArray() { @@ -506,7 +507,7 @@ public function __toArray() * * @param array $data * @return void - * @since 100.2.0 + * @since 101.0.0 */ public function populateWithArray(array $data) { diff --git a/lib/internal/Magento/Framework/View/LayoutInterface.php b/lib/internal/Magento/Framework/View/LayoutInterface.php index a8ad5e28de2d6..3a63b5ccc9ea3 100644 --- a/lib/internal/Magento/Framework/View/LayoutInterface.php +++ b/lib/internal/Magento/Framework/View/LayoutInterface.php @@ -8,6 +8,7 @@ /** * Interface LayoutInterface * @api + * @since 100.0.2 */ interface LayoutInterface { diff --git a/lib/internal/Magento/Framework/View/Page/Config.php b/lib/internal/Magento/Framework/View/Page/Config.php index b29a0feda9d60..049e69d2048e1 100644 --- a/lib/internal/Magento/Framework/View/Page/Config.php +++ b/lib/internal/Magento/Framework/View/Page/Config.php @@ -24,6 +24,7 @@ * @SuppressWarnings(PHPMD.TooManyFields) * * @api + * @since 100.0.2 */ class Config { @@ -372,6 +373,7 @@ public function getDescription() * Set meta title * * @param string $title + * @since 101.0.6 */ public function setMetaTitle($title) { @@ -382,6 +384,7 @@ public function setMetaTitle($title) * Retrieve meta title * * @return string + * @since 101.0.6 */ public function getMetaTitle() { diff --git a/lib/internal/Magento/Framework/View/Page/Config/Structure.php b/lib/internal/Magento/Framework/View/Page/Config/Structure.php index 1a181952ed990..78e3cf9f58c85 100644 --- a/lib/internal/Magento/Framework/View/Page/Config/Structure.php +++ b/lib/internal/Magento/Framework/View/Page/Config/Structure.php @@ -10,6 +10,7 @@ * Page config structure model * * @api + * @since 100.0.2 */ class Structure { @@ -216,7 +217,7 @@ public function getAssets() * Reformat 'Page config structure' to array. * * @return array - * @since 100.2.0 + * @since 101.0.0 */ public function __toArray() { @@ -233,7 +234,7 @@ public function __toArray() * * @param array $data * @return void - * @since 100.2.0 + * @since 101.0.0 */ public function populateWithArray(array $data) { diff --git a/lib/internal/Magento/Framework/View/Page/FaviconInterface.php b/lib/internal/Magento/Framework/View/Page/FaviconInterface.php index d7286029c466c..a28506e3f5906 100644 --- a/lib/internal/Magento/Framework/View/Page/FaviconInterface.php +++ b/lib/internal/Magento/Framework/View/Page/FaviconInterface.php @@ -9,6 +9,7 @@ * Favicon interface * * @api + * @since 100.0.2 */ interface FaviconInterface { diff --git a/lib/internal/Magento/Framework/View/Page/Title.php b/lib/internal/Magento/Framework/View/Page/Title.php index b0c8b155c878e..17bc4cea1cc92 100644 --- a/lib/internal/Magento/Framework/View/Page/Title.php +++ b/lib/internal/Magento/Framework/View/Page/Title.php @@ -12,6 +12,7 @@ * Page title * * @api + * @since 100.0.2 */ class Title { diff --git a/lib/internal/Magento/Framework/View/Render/RenderFactory.php b/lib/internal/Magento/Framework/View/Render/RenderFactory.php index 3f90bc2e8f2bb..d150ede9a5b78 100644 --- a/lib/internal/Magento/Framework/View/Render/RenderFactory.php +++ b/lib/internal/Magento/Framework/View/Render/RenderFactory.php @@ -12,6 +12,7 @@ * Class RenderFactory * * @api + * @since 100.0.2 */ class RenderFactory { diff --git a/lib/internal/Magento/Framework/View/RenderInterface.php b/lib/internal/Magento/Framework/View/RenderInterface.php index 041893f81232a..5f456dd1987eb 100644 --- a/lib/internal/Magento/Framework/View/RenderInterface.php +++ b/lib/internal/Magento/Framework/View/RenderInterface.php @@ -9,6 +9,7 @@ * Interface RenderInterface * * @api + * @since 100.0.2 */ interface RenderInterface { diff --git a/lib/internal/Magento/Framework/View/Result/Layout.php b/lib/internal/Magento/Framework/View/Result/Layout.php index 83e0a991cb959..2b08ddf69e372 100644 --- a/lib/internal/Magento/Framework/View/Result/Layout.php +++ b/lib/internal/Magento/Framework/View/Result/Layout.php @@ -19,6 +19,7 @@ * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * * @api + * @since 100.0.2 */ class Layout extends AbstractResult { diff --git a/lib/internal/Magento/Framework/View/Result/LayoutFactory.php b/lib/internal/Magento/Framework/View/Result/LayoutFactory.php index 4104e19686244..4b857ad3cf66b 100644 --- a/lib/internal/Magento/Framework/View/Result/LayoutFactory.php +++ b/lib/internal/Magento/Framework/View/Result/LayoutFactory.php @@ -10,6 +10,7 @@ /** * @api + * @since 100.0.2 */ class LayoutFactory { diff --git a/lib/internal/Magento/Framework/View/Result/Page.php b/lib/internal/Magento/Framework/View/Result/Page.php index 39cca1a111906..14a83a8320330 100644 --- a/lib/internal/Magento/Framework/View/Result/Page.php +++ b/lib/internal/Magento/Framework/View/Result/Page.php @@ -25,6 +25,7 @@ * @SuppressWarnings(PHPMD.DepthOfInheritance) * * @api + * @since 100.0.2 */ class Page extends Layout { diff --git a/lib/internal/Magento/Framework/View/Result/PageFactory.php b/lib/internal/Magento/Framework/View/Result/PageFactory.php index ef234ca4d4429..4de4c097d16a2 100644 --- a/lib/internal/Magento/Framework/View/Result/PageFactory.php +++ b/lib/internal/Magento/Framework/View/Result/PageFactory.php @@ -14,6 +14,7 @@ * which is by convention is determined from the controller action class * * @api + * @since 100.0.2 */ class PageFactory { diff --git a/lib/internal/Magento/Framework/View/Template/Html/MinifierInterface.php b/lib/internal/Magento/Framework/View/Template/Html/MinifierInterface.php index edd8caeb914b3..98fe13ab3a12c 100644 --- a/lib/internal/Magento/Framework/View/Template/Html/MinifierInterface.php +++ b/lib/internal/Magento/Framework/View/Template/Html/MinifierInterface.php @@ -10,6 +10,7 @@ * HTML minifier * * @api + * @since 100.0.2 */ interface MinifierInterface { diff --git a/lib/internal/Magento/Framework/View/TemplateEngine/Xhtml/CompilerInterface.php b/lib/internal/Magento/Framework/View/TemplateEngine/Xhtml/CompilerInterface.php index 565bb7c92324c..8228013df40a4 100644 --- a/lib/internal/Magento/Framework/View/TemplateEngine/Xhtml/CompilerInterface.php +++ b/lib/internal/Magento/Framework/View/TemplateEngine/Xhtml/CompilerInterface.php @@ -11,6 +11,7 @@ * Interface CompilerInterface * * @api + * @since 100.0.2 */ interface CompilerInterface { diff --git a/lib/internal/Magento/Framework/View/TemplateEnginePool.php b/lib/internal/Magento/Framework/View/TemplateEnginePool.php index 1aec127a17bd1..0f8d2032af879 100644 --- a/lib/internal/Magento/Framework/View/TemplateEnginePool.php +++ b/lib/internal/Magento/Framework/View/TemplateEnginePool.php @@ -7,6 +7,7 @@ /** * @api + * @since 100.0.2 */ class TemplateEnginePool { diff --git a/lib/internal/Magento/Framework/View/Test/Unit/UiComponent/Argument/Interpreter/ConfigurableObjectTest.php b/lib/internal/Magento/Framework/View/Test/Unit/UiComponent/Argument/Interpreter/ConfigurableObjectTest.php new file mode 100644 index 0000000000000..0d4be68a4c1bb --- /dev/null +++ b/lib/internal/Magento/Framework/View/Test/Unit/UiComponent/Argument/Interpreter/ConfigurableObjectTest.php @@ -0,0 +1,278 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +declare(strict_types=1); + +namespace Magento\Framework\View\Test\Unit\UiComponent\Argument\Interpreter; + +use Magento\Framework\Code\Reader\ClassReader; +use Magento\Framework\Data\Argument\InterpreterInterface; +use Magento\Framework\ObjectManager\ConfigInterface; +use Magento\Framework\ObjectManagerInterface; +use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; +use Magento\Framework\View\Element\UiComponent\Argument\Interpreter\ConfigurableObject; +use PHPUnit\Framework\TestCase; +use PHPUnit\Framework\MockObject\MockObject; + +/** + * Unit tests for ConfigurableObject + */ +class ConfigurableObjectTest extends TestCase +{ + /** + * @var ConfigurableObject + */ + private $configurableObject; + + /** + * @var ObjectManagerInterface|MockObject + */ + private $objectManager; + + /** + * @var InterpreterInterface|MockObject + */ + private $interpreter; + + /** + * @var ClassReader|MockObject + */ + private $classReader; + + /** + * @var ConfigInterface|MockObject + */ + private $objectManagerConfig; + + protected function setUp() + { + $objectManager = new ObjectManager($this); + $this->objectManager = $this->createMock(ObjectManagerInterface::class); + $this->interpreter = $this->createMock(InterpreterInterface::class); + $this->classReader = $this->createMock(ClassReader::class); + $this->objectManagerConfig = $this->createMock(ConfigInterface::class); + $this->configurableObject = $objectManager->getObject( + ConfigurableObject::class, + [ + 'objectManager' => $this->objectManager, + 'argumentInterpreter' => $this->interpreter, + 'classWhitelist' => [ + \Foo\Bar\ClassA::class, + \Foo\Bar\InterfaceA::class, + ], + 'classReader' => $this->classReader, + 'objectManagerConfig' => $this->objectManagerConfig, + ] + ); + } + + /** + * @dataProvider validDataProvider + */ + public function testValidCombinations( + $data, + $expectedClass, + $classParentsValueMap, + $expectedArguments + ) { + $this->objectManagerConfig + ->method('getPreference') + ->with($expectedClass) + ->WillReturn('bar'); + $this->objectManagerConfig + ->method('getInstanceType') + ->with('bar') + ->willReturn($expectedClass); + + $this->classReader + ->method('getParents') + ->willReturnMap($classParentsValueMap); + + $this->objectManager + ->expects($this->once()) + ->method('create') + ->with($expectedClass, $expectedArguments) + ->willReturn('an object yay!'); + + $this->interpreter + ->method('evaluate') + ->will( + $this->returnCallback( + function (array $arg) { + return $arg['value']; + } + ) + ); + + $actualResult = $this->configurableObject->evaluate($data); + self::assertSame('an object yay!', $actualResult); + } + + /** + * @dataProvider invalidDataProvider + */ + public function testInvalidCombinations( + $data, + $expectedClass, + $classParentsValueMap, + $expectedException, + $expectedExceptionMessage + ) { + + $this->expectException($expectedException); + $this->expectExceptionMessage($expectedExceptionMessage); + + $this->objectManagerConfig + ->method('getPreference') + ->with($expectedClass) + ->WillReturn('bar'); + $this->objectManagerConfig + ->method('getInstanceType') + ->with('bar') + ->willReturn($expectedClass); + + $this->classReader + ->method('getParents') + ->willReturnMap($classParentsValueMap); + + $this->objectManager + ->expects($this->never()) + ->method('create'); + + $this->interpreter + ->method('evaluate') + ->will( + $this->returnCallback( + function (array $arg) { + return $arg['value']; + } + ) + ); + + $actualResult = $this->configurableObject->evaluate($data); + self::assertSame('an object yay!', $actualResult); + } + + public function validDataProvider() + { + return [ + // Test most basic syntax with no arguments + [ + [ + 'value' => 'MyObject', + ], + 'MyObject', + [], + [] + ], + // Test alternative data syntax + [ + [ + 'argument' => [ + 'class' => ['value' => 'MyFooClass'] + ] + ], + 'MyFooClass', + [ + ['MyFooClass', ['Something', 'skipme']], + ['Something', ['dontcare', 'SomethingElse']], + ['SomethingElse', [\Foo\Bar\ClassA::class, 'unrelated']], + ['skipme', []], + ['dontcare', []], + ['unrelated', []], + [\Foo\Bar\ClassA::class, []] + ], + [] + ], + // Test arguments + [ + [ + 'argument' => [ + 'class' => ['value' => 'MyFooClass'], + 'myarg' => ['value' => 'bar'], + ] + ], + 'MyFooClass', + [ + ['MyFooClass', ['Something', 'skipme']], + ['Something', ['dontcare', 'SomethingElse']], + ['SomethingElse', [\Foo\Bar\ClassA::class, 'unrelated']], + ['skipme', []], + ['dontcare', []], + ['unrelated', []], + [\Foo\Bar\ClassA::class, []] + ], + ['myarg' => 'bar'] + ], + // Test multiple matching whitelisted classes + [ + [ + 'argument' => [ + 'class' => ['value' => 'MyFooClass'], + 'myarg' => ['value' => 'bar'], + ] + ], + 'MyFooClass', + [ + ['MyFooClass', ['Something', 'skipme']], + ['Something', ['dontcare', 'SomethingElse']], + ['SomethingElse', [\Foo\Bar\ClassA::class, 'unrelated']], + ['skipme', []], + ['dontcare', []], + ['unrelated', [\Foo\Bar\InterfaceA::class]], + [\Foo\Bar\ClassA::class, []], + [\Foo\Bar\InterfaceA::class, []] + ], + ['myarg' => 'bar'] + ], + ]; + } + + public function invalidDataProvider() + { + return [ + [ + [ + 'notvalid' => 'sup' + ], + '', + [], + \InvalidArgumentException::class, + 'Node "argument" required for this type.' + ], + [ + [ + 'argument' => [ + 'notclass' => ['value' => 'doesntmatter'] + ] + ], + '', + [], + \InvalidArgumentException::class, + 'Node "argument" with name "class" is required for this type.' + ], + [ + [ + 'argument' => [ + 'class' => ['value' => 'MyFooClass'], + 'myarg' => ['value' => 'bar'], + ] + ], + 'MyFooClass', + [ + ['MyFooClass', ['Something', 'skipme']], + ['Something', ['dontcare', 'SomethingElse']], + ['SomethingElse', ['unrelated']], + ['skipme', []], + ['dontcare', []], + ['unrelated', []], + ], + \InvalidArgumentException::class, + 'Class argument is invalid: MyFooClass' + ], + ]; + } +} diff --git a/lib/internal/Magento/Framework/View/Url/ConfigInterface.php b/lib/internal/Magento/Framework/View/Url/ConfigInterface.php index d1076abdb0ec5..4cc0d86e619f2 100644 --- a/lib/internal/Magento/Framework/View/Url/ConfigInterface.php +++ b/lib/internal/Magento/Framework/View/Url/ConfigInterface.php @@ -8,6 +8,7 @@ /** * Url Config Interface * @api + * @since 100.0.2 */ interface ConfigInterface { diff --git a/lib/internal/Magento/Framework/View/Url/CssResolver.php b/lib/internal/Magento/Framework/View/Url/CssResolver.php index 8c73e2ab9bcf9..60f03d063c4a8 100644 --- a/lib/internal/Magento/Framework/View/Url/CssResolver.php +++ b/lib/internal/Magento/Framework/View/Url/CssResolver.php @@ -11,6 +11,7 @@ * CSS URLs resolver class. * This utility class provides a set of methods to work with CSS files. * @api + * @since 100.0.2 */ class CssResolver { diff --git a/lib/internal/Magento/Framework/Webapi/Authorization.php b/lib/internal/Magento/Framework/Webapi/Authorization.php index 03ee07d48b323..a1907dc46ab11 100644 --- a/lib/internal/Magento/Framework/Webapi/Authorization.php +++ b/lib/internal/Magento/Framework/Webapi/Authorization.php @@ -23,7 +23,6 @@ class Authorization * Initialize dependencies. * * @param \Magento\Framework\AuthorizationInterface $authorization - * @since 100.1.0 */ public function __construct(\Magento\Framework\AuthorizationInterface $authorization) { diff --git a/lib/internal/Magento/Framework/Webapi/CustomAttributeTypeLocatorInterface.php b/lib/internal/Magento/Framework/Webapi/CustomAttributeTypeLocatorInterface.php index 25d78672eef87..ac183bc3b1871 100644 --- a/lib/internal/Magento/Framework/Webapi/CustomAttributeTypeLocatorInterface.php +++ b/lib/internal/Magento/Framework/Webapi/CustomAttributeTypeLocatorInterface.php @@ -24,7 +24,7 @@ public function getType($attributeCode, $entityType); * Get list of all Data Interface corresponding to complex custom attribute types * * @return string[] array of Data Interface class names - * @deprecated + * @deprecated 102.0.0 * @see \Magento\Framework\Webapi\CustomAttribute\ServiceTypeListInterface::getDataTypes() */ public function getAllServiceDataInterfaces(); diff --git a/lib/internal/Magento/Framework/Webapi/ErrorProcessor.php b/lib/internal/Magento/Framework/Webapi/ErrorProcessor.php index f9b6a32fc5673..3737d86d2b1f6 100644 --- a/lib/internal/Magento/Framework/Webapi/ErrorProcessor.php +++ b/lib/internal/Magento/Framework/Webapi/ErrorProcessor.php @@ -24,6 +24,7 @@ * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @api + * @since 100.0.2 */ class ErrorProcessor { diff --git a/lib/internal/Magento/Framework/Webapi/Rest/Request/Deserializer/Json.php b/lib/internal/Magento/Framework/Webapi/Rest/Request/Deserializer/Json.php index c2e7c324d1282..2673df519b064 100644 --- a/lib/internal/Magento/Framework/Webapi/Rest/Request/Deserializer/Json.php +++ b/lib/internal/Magento/Framework/Webapi/Rest/Request/Deserializer/Json.php @@ -14,7 +14,7 @@ class Json implements \Magento\Framework\Webapi\Rest\Request\DeserializerInterfa { /** * @var \Magento\Framework\Json\Decoder - * @deprecated + * @deprecated 101.0.0 */ protected $decoder; diff --git a/lib/internal/Magento/Framework/Webapi/Rest/Request/ParamOverriderInterface.php b/lib/internal/Magento/Framework/Webapi/Rest/Request/ParamOverriderInterface.php index 828022353e4fa..bc171b84ba3d9 100644 --- a/lib/internal/Magento/Framework/Webapi/Rest/Request/ParamOverriderInterface.php +++ b/lib/internal/Magento/Framework/Webapi/Rest/Request/ParamOverriderInterface.php @@ -27,6 +27,7 @@ * adding to the parameter list for ParamsOverrider's dependency injection configuration. * * @api + * @since 100.0.2 */ interface ParamOverriderInterface { diff --git a/lib/internal/Magento/Framework/Webapi/Rest/Response/RendererInterface.php b/lib/internal/Magento/Framework/Webapi/Rest/Response/RendererInterface.php index 9d905ce599779..4edbe4e6a5377 100644 --- a/lib/internal/Magento/Framework/Webapi/Rest/Response/RendererInterface.php +++ b/lib/internal/Magento/Framework/Webapi/Rest/Response/RendererInterface.php @@ -11,6 +11,7 @@ * Renderer interface allows REST response data rendering in a specific format (e.g. Json or Xml) * * @api + * @since 100.0.2 */ interface RendererInterface { diff --git a/lib/internal/Magento/Framework/Webapi/ServiceInputProcessor.php b/lib/internal/Magento/Framework/Webapi/ServiceInputProcessor.php index c253a400bed93..f46105a456586 100644 --- a/lib/internal/Magento/Framework/Webapi/ServiceInputProcessor.php +++ b/lib/internal/Magento/Framework/Webapi/ServiceInputProcessor.php @@ -28,6 +28,7 @@ * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @api + * @since 100.0.2 */ class ServiceInputProcessor implements ServicePayloadConverterInterface { diff --git a/lib/internal/Magento/Framework/Webapi/ServiceOutputProcessor.php b/lib/internal/Magento/Framework/Webapi/ServiceOutputProcessor.php index 224421d6561c8..684d07e3994a6 100644 --- a/lib/internal/Magento/Framework/Webapi/ServiceOutputProcessor.php +++ b/lib/internal/Magento/Framework/Webapi/ServiceOutputProcessor.php @@ -17,6 +17,7 @@ * Data object converter * * @api + * @since 100.0.2 */ class ServiceOutputProcessor implements ServicePayloadConverterInterface { diff --git a/lib/internal/Magento/Framework/Webapi/ServicePayloadConverterInterface.php b/lib/internal/Magento/Framework/Webapi/ServicePayloadConverterInterface.php index 30f93efdb9ef9..da4fe0ad08143 100644 --- a/lib/internal/Magento/Framework/Webapi/ServicePayloadConverterInterface.php +++ b/lib/internal/Magento/Framework/Webapi/ServicePayloadConverterInterface.php @@ -11,6 +11,7 @@ * Interface for data conversion based on data type. * * @api + * @since 100.0.2 */ interface ServicePayloadConverterInterface { diff --git a/lib/internal/Magento/Framework/composer.json b/lib/internal/Magento/Framework/composer.json index c360d57be107f..f7eb9adbf9dff 100644 --- a/lib/internal/Magento/Framework/composer.json +++ b/lib/internal/Magento/Framework/composer.json @@ -55,5 +55,6 @@ "files": [ "registration.php" ] - } + }, + "version": "102.0.2-p2" } diff --git a/lib/web/knockoutjs/knockout.js b/lib/web/knockoutjs/knockout.js index cd11f4d0c0d14..93ccdc5415111 100644 --- a/lib/web/knockoutjs/knockout.js +++ b/lib/web/knockoutjs/knockout.js @@ -502,16 +502,6 @@ ko.utils = (function () { setElementName: function(element, name) { element.name = name; - - // Workaround IE 6/7 issue - // - https://github.com/SteveSanderson/knockout/issues/197 - // - http://www.matts411.com/post/setting_the_name_attribute_in_ie_dom/ - if (ieVersion <= 7) { - try { - element.mergeAttributes(document.createElement("<input name='" + element.name + "'/>"), false); - } - catch(e) {} // For IE9 with doc mode "IE9 Standards" and browser mode "IE9 Compatibility View" - } }, forceRefresh: function(node) { diff --git a/lib/web/mage/utils/template.js b/lib/web/mage/utils/template.js index 7aa695023cb56..4032c9387904d 100644 --- a/lib/web/mage/utils/template.js +++ b/lib/web/mage/utils/template.js @@ -33,11 +33,15 @@ define([ })(); /** - * Validates template + * Objects can specify how to use templating for their properties - getting that configuration. + * + * To disable rendering for all properties of your object add __disableTmpl: true. + * To disable for specific property add __disableTmpl: {propertyName: true}. + * To limit recursion for a specific property add __disableTmpl: {propertyName: numberOfCycles}. * * @param {String} tmpl * @param {Object} target - * @returns {Boolean} + * @returns {Boolean|Object} */ function isTmplIgnored(tmpl, target) { var parsedTmpl; @@ -53,7 +57,7 @@ define([ if (typeof target !== 'undefined') { if (typeof target === 'object' && target.hasOwnProperty('__disableTmpl')) { - return true; + return target.__disableTmpl; } } @@ -69,16 +73,10 @@ define([ * * @param {String} tmpl - Template string. * @param {Object} $ - Data object used in a template. - * @param {Object} target * @returns {String} Compiled template. */ - template = function (tmpl, $, target) { - - if (!isTmplIgnored(tmpl, target)) { - return eval('`' + tmpl + '`'); - } - - return tmpl; + template = function (tmpl, $) { + return eval('`' + tmpl + '`'); }; /*eslint-enable no-unused-vars, no-eval*/ @@ -130,19 +128,22 @@ define([ * @param {Boolean} [castString=false] - Flag that indicates whether template * should be casted after evaluation to a value of another type or * that it should be leaved as a string. + * @param {Number|undefined} maxCycles - Maximum number of rendering cycles, can be 0. * @returns {*} Compiled template. */ - function render(tmpl, data, castString, target) { - var last = tmpl; + function render(tmpl, data, castString, maxCycles) { + var last = tmpl, + cycles = 0; - while (~tmpl.indexOf(opener)) { - tmpl = template(tmpl, data, target); + while (~tmpl.indexOf(opener) && (typeof maxCycles === 'undefined' || cycles < maxCycles)) { + tmpl = template(tmpl, data); if (tmpl === last) { break; } last = tmpl; + cycles++; } return castString ? @@ -201,6 +202,9 @@ define([ * Template iterator function. */ _.each(tmpl, function iterate(value, key, list) { + var disabled, + maxCycles; + if (key === '$data') { return; } @@ -213,7 +217,21 @@ define([ } if (isTemplate(value)) { - list[key] = render(value, tmpl, castString, list); + //Getting template disabling settings, can be true for all disabled and separate settings + //for each property. + disabled = isTmplIgnored(value, list); + + if (typeof disabled === 'object' && disabled.hasOwnProperty(key) && disabled[key] !== false) { + //Checking if specific settings for a property provided. + maxCycles = disabled[key]; + } + + if (disabled === true || maxCycles === true) { + //Rendering for all properties is disabled. + maxCycles = 0; + } + + list[key] = render(value, tmpl, castString, maxCycles); } else if ($.isPlainObject(value) || Array.isArray(value)) { _.each(value, iterate); }