From 09b64496cf8f9e9e411ed4a0b184a121bb693897 Mon Sep 17 00:00:00 2001 From: vzabaznov Date: Fri, 20 Oct 2017 16:11:23 +0300 Subject: [PATCH 1/9] MAGETWO-80417: Prepare codebase for 2.1.10 --- .../Block/Product/ProductsList.php | 7 +- app/code/Magento/Deploy/Model/Filesystem.php | 53 +++-- .../Deploy/Test/Unit/Model/FilesystemTest.php | 176 ----------------- .../Entity/Attribute/Backend/Serialized.php | 33 +++- .../Magento/Email/Model/Template/Filter.php | 2 +- .../Controller/Adminhtml/History/Download.php | 4 +- .../Adminhtml/History/DownloadTest.php | 187 ------------------ app/code/Magento/Rule/Model/AbstractModel.php | 58 +++++- .../SalesRule/Test/Unit/Model/RuleTest.php | 33 ++-- app/code/Magento/Store/etc/config.xml | 4 + .../Block/Product/Renderer/Configurable.php | 16 +- app/code/Magento/Swatches/Helper/Data.php | 62 +++++- .../Swatches/Test/Unit/Helper/DataTest.php | 18 +- .../Adminhtml/Widget/LoadOptions.php | 60 ++++-- app/code/Magento/Widget/Helper/Conditions.php | 21 +- .../Adminhtml/Widget/LoadOptionsTest.php | 43 ++-- .../Test/Unit/Helper/ConditionsTest.php | 28 ++- .../Adminhtml/Downloadable/FileTest.php | 35 ---- .../Unserialize/SecureUnserializer.php | 31 +++ .../Test/Unit/SecureUnserializerTest.php | 65 ++++++ 20 files changed, 440 insertions(+), 496 deletions(-) delete mode 100644 app/code/Magento/Deploy/Test/Unit/Model/FilesystemTest.php delete mode 100644 app/code/Magento/ImportExport/Test/Unit/Controller/Adminhtml/History/DownloadTest.php delete mode 100644 dev/tests/integration/testsuite/Magento/Downloadable/Controller/Adminhtml/Downloadable/FileTest.php create mode 100644 lib/internal/Magento/Framework/Unserialize/SecureUnserializer.php create mode 100644 lib/internal/Magento/Framework/Unserialize/Test/Unit/SecureUnserializerTest.php diff --git a/app/code/Magento/CatalogWidget/Block/Product/ProductsList.php b/app/code/Magento/CatalogWidget/Block/Product/ProductsList.php index b4276b54ce186..d8be81b99d1d9 100644 --- a/app/code/Magento/CatalogWidget/Block/Product/ProductsList.php +++ b/app/code/Magento/CatalogWidget/Block/Product/ProductsList.php @@ -233,7 +233,12 @@ protected function getConditions() : $this->getData('conditions'); if ($conditions) { - $conditions = $this->conditionsHelper->decode($conditions); + try { + $conditions = $this->conditionsHelper->decode($conditions); + } catch (\InvalidArgumentException $e) { + $this->_logger->critical($e); + $conditions = ''; + } } $this->rule->loadPost(['conditions' => $conditions]); diff --git a/app/code/Magento/Deploy/Model/Filesystem.php b/app/code/Magento/Deploy/Model/Filesystem.php index e0ef097ba0d70..119b4b052d310 100644 --- a/app/code/Magento/Deploy/Model/Filesystem.php +++ b/app/code/Magento/Deploy/Model/Filesystem.php @@ -10,6 +10,7 @@ use Magento\Framework\App\DeploymentConfig\Writer; use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Framework\Exception\LocalizedException; +use Magento\Framework\Validator\Locale; use Magento\User\Model\ResourceModel\User\Collection as UserCollection; /** @@ -88,6 +89,11 @@ class Filesystem */ private $userCollection; + /** + * @var Locale + */ + private $locale; + /** * @param \Magento\Framework\App\DeploymentConfig\Writer $writer * @param \Magento\Framework\App\DeploymentConfig\Reader $reader @@ -96,7 +102,10 @@ class Filesystem * @param \Magento\Framework\App\Filesystem\DirectoryList $directoryList * @param \Magento\Framework\Filesystem\Driver\File $driverFile * @param \Magento\Store\Model\Config\StoreView $storeView - * @param \Magento\Framework\Shell $shell + * @param \Magento\Framework\ShellInterface $shell + * @param UserCollection|null $userCollection + * @param Locale|null $locale + * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( \Magento\Framework\App\DeploymentConfig\Writer $writer, @@ -106,7 +115,9 @@ public function __construct( \Magento\Framework\App\Filesystem\DirectoryList $directoryList, \Magento\Framework\Filesystem\Driver\File $driverFile, \Magento\Store\Model\Config\StoreView $storeView, - \Magento\Framework\ShellInterface $shell + \Magento\Framework\ShellInterface $shell, + UserCollection $userCollection = null, + Locale $locale = null ) { $this->writer = $writer; $this->reader = $reader; @@ -116,6 +127,8 @@ public function __construct( $this->driverFile = $driverFile; $this->storeView = $storeView; $this->shell = $shell; + $this->userCollection = $userCollection ?: $this->objectManager->get(UserCollection::class); + $this->locale = $locale ?: $this->objectManager->get(Locale::class); $this->functionCallPath = PHP_BINARY . ' -f ' . BP . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'magento '; } @@ -180,16 +193,17 @@ protected function deployStaticContent( private function getAdminUserInterfaceLocales() { $locales = []; - foreach ($this->getUserCollection() as $user) { + foreach ($this->userCollection as $user) { $locales[] = $user->getInterfaceLocale(); } return $locales; } /** - * Get used store and admin user locales + * Get used store and admin user locales. * - * @return []string + * @return array + * @throws \InvalidArgumentException if unknown locale is provided by the store configuration */ private function getUsedLocales() { @@ -197,23 +211,20 @@ private function getUsedLocales() $this->storeView->retrieveLocales(), $this->getAdminUserInterfaceLocales() ); - return array_unique($usedLocales); - } - /** - * Get user collection - * - * @return UserCollection - * @deprecated - */ - private function getUserCollection() - { - if (!($this->userCollection instanceof UserCollection)) { - return \Magento\Framework\App\ObjectManager::getInstance()->get( - UserCollection::class - ); - } - return $this->userCollection; + return array_map( + function ($locale) { + if (!$this->locale->isValid($locale)) { + throw new \InvalidArgumentException( + $locale . + ' argument has invalid value, run info:language:list for list of available locales' + ); + } + + return $locale; + }, + array_unique($usedLocales) + ); } /** diff --git a/app/code/Magento/Deploy/Test/Unit/Model/FilesystemTest.php b/app/code/Magento/Deploy/Test/Unit/Model/FilesystemTest.php deleted file mode 100644 index c17714b54d61d..0000000000000 --- a/app/code/Magento/Deploy/Test/Unit/Model/FilesystemTest.php +++ /dev/null @@ -1,176 +0,0 @@ -storeViewMock = $this->getMock( - \Magento\Store\Model\Config\StoreView::class, - [], - [], - '', - false - ); - $this->shellMock = $this->getMock( - \Magento\Framework\ShellInterface::class, - [], - [], - '', - false - ); - $this->userCollectionMock = $this->getMock( - \Magento\User\Model\ResourceModel\User\Collection::class, - [], - [], - '', - false - ); - $this->outputMock = $this->getMock( - \Symfony\Component\Console\Output\OutputInterface::class, - [], - [], - '', - false - ); - $this->objectManagerMock = $this->getMock( - \Magento\Framework\ObjectManagerInterface::class, - [], - [], - '', - false - ); - $this->filesystemMock = $this->getMock( - \Magento\Framework\Filesystem::class, - [], - [], - '', - false - ); - $this->directoryWriteMock = $this->getMock( - \Magento\Framework\Filesystem\Directory\WriteInterface::class, - [], - [], - '', - false - ); - $this->filesystemMock->expects($this->any()) - ->method('getDirectoryWrite') - ->willReturn($this->directoryWriteMock); - $this->filesystem = $objectManager->getObject( - \Magento\Deploy\Model\Filesystem::class, - [ - 'storeView' => $this->storeViewMock, - 'shell' => $this->shellMock, - 'filesystem' => $this->filesystemMock - ] - ); - - $userCollection = new \ReflectionProperty(\Magento\Deploy\Model\Filesystem::class, 'userCollection'); - $userCollection->setAccessible(true); - $userCollection->setValue($this->filesystem, $this->userCollectionMock); - - $this->cmdPrefix = PHP_BINARY . ' -f ' . BP . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'magento '; - } - - public function testRegenerateStatic() - { - $storeLocales = ['fr_FR', 'de_DE', 'nl_NL']; - $adminUserInterfaceLocales = ['de_DE', 'en_US']; - $this->storeViewMock->expects($this->once()) - ->method('retrieveLocales') - ->willReturn($storeLocales); - $userMock = $this->getMock( - \Magento\User\Model\User::class, - [], - [], - '', - false - ); - $userMock->expects($this->once()) - ->method('getInterfaceLocale') - ->willReturn('en_US'); - $this->userCollectionMock->expects($this->once()) - ->method('getIterator') - ->willReturn(new \ArrayIterator([$userMock])); - - $usedLocales = array_unique( - array_merge($storeLocales, $adminUserInterfaceLocales) - ); - $staticContentDeployCmd = $this->cmdPrefix . 'setup:static-content:deploy ' - . implode(' ', $usedLocales); - $setupDiCompileCmd = $this->cmdPrefix . 'setup:di:compile'; - $this->shellMock->expects($this->at(0)) - ->method('execute') - ->with($setupDiCompileCmd); - $this->shellMock->expects($this->at(1)) - ->method('execute') - ->with($staticContentDeployCmd); - - $this->outputMock->expects($this->at(0)) - ->method('writeln') - ->with('Starting compilation'); - $this->outputMock->expects($this->at(2)) - ->method('writeln') - ->with('Compilation complete'); - $this->outputMock->expects($this->at(3)) - ->method('writeln') - ->with('Starting deployment of static content'); - $this->outputMock->expects($this->at(5)) - ->method('writeln') - ->with('Deployment of static content complete'); - - $this->filesystem->regenerateStatic($this->outputMock); - } -} diff --git a/app/code/Magento/Eav/Model/Entity/Attribute/Backend/Serialized.php b/app/code/Magento/Eav/Model/Entity/Attribute/Backend/Serialized.php index dab68ae3b109d..1b373986f331a 100644 --- a/app/code/Magento/Eav/Model/Entity/Attribute/Backend/Serialized.php +++ b/app/code/Magento/Eav/Model/Entity/Attribute/Backend/Serialized.php @@ -5,11 +5,37 @@ */ namespace Magento\Eav\Model\Entity\Attribute\Backend; +use Magento\Framework\Unserialize\SecureUnserializer; +use Magento\Framework\App\ObjectManager; +use Psr\Log\LoggerInterface; + /** * "Serialized" attribute backend */ class Serialized extends \Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend { + /** + * @var SecureUnserializer + */ + private $unserializer; + + /** + * @var LoggerInterface + */ + private $logger; + + /** + * @param SecureUnserializer|null $unserializer + * @param LoggerInterface $logger + */ + public function __construct( + SecureUnserializer $unserializer = null, + LoggerInterface $logger = null + ) { + $this->unserializer = $unserializer ?: ObjectManager::getInstance()->get(SecureUnserializer::class); + $this->logger = $logger ?: ObjectManager::getInstance()->get(LoggerInterface::class); + } + /** * Serialize before saving * @@ -64,9 +90,12 @@ protected function _unserialize(\Magento\Framework\DataObject $object) $attrCode = $this->getAttribute()->getAttributeCode(); if ($object->getData($attrCode)) { try { - $unserialized = unserialize($object->getData($attrCode)); + $unserialized = $this->unserializer->unserialize($object->getData($attrCode)); $object->setData($attrCode, $unserialized); - } catch (\Exception $e) { + } catch (\InvalidArgumentException $e) { + $this->logger->critical($e); + $object->unsetData($attrCode); + } catch (\Exception $e){ $object->unsetData($attrCode); } } diff --git a/app/code/Magento/Email/Model/Template/Filter.php b/app/code/Magento/Email/Model/Template/Filter.php index 14a0566f7c0e6..5db76c12ad75a 100644 --- a/app/code/Magento/Email/Model/Template/Filter.php +++ b/app/code/Magento/Email/Model/Template/Filter.php @@ -1017,7 +1017,7 @@ public function filter($value) if ($this->_appState->getMode() == \Magento\Framework\App\State::MODE_DEVELOPER) { $value = sprintf(__('Error filtering template: %s'), $e->getMessage()); } else { - $value = __("We're sorry, an error has occurred while generating this email."); + $value = __("We're sorry, an error has occurred while generating this content."); } $this->_logger->critical($e); } diff --git a/app/code/Magento/ImportExport/Controller/Adminhtml/History/Download.php b/app/code/Magento/ImportExport/Controller/Adminhtml/History/Download.php index fa1e0a554ad8c..d1f051a9adf04 100644 --- a/app/code/Magento/ImportExport/Controller/Adminhtml/History/Download.php +++ b/app/code/Magento/ImportExport/Controller/Adminhtml/History/Download.php @@ -39,10 +39,10 @@ public function __construct( */ public function execute() { - $fileName = $this->getRequest()->getParam('filename'); + $fileName = basename($this->getRequest()->getParam('filename')); /** @var \Magento\ImportExport\Helper\Report $reportHelper */ - $reportHelper = $this->_objectManager->get('Magento\ImportExport\Helper\Report'); + $reportHelper = $this->_objectManager->get(\Magento\ImportExport\Helper\Report::class); if (!$reportHelper->importFileExists($fileName)) { /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ diff --git a/app/code/Magento/ImportExport/Test/Unit/Controller/Adminhtml/History/DownloadTest.php b/app/code/Magento/ImportExport/Test/Unit/Controller/Adminhtml/History/DownloadTest.php deleted file mode 100644 index 027a085bdcb9d..0000000000000 --- a/app/code/Magento/ImportExport/Test/Unit/Controller/Adminhtml/History/DownloadTest.php +++ /dev/null @@ -1,187 +0,0 @@ -request = $this->getMock( - 'Magento\Framework\App\Request\Http', - ['getParam'], - [], - '', - false - ); - $this->request->expects($this->any())->method('getParam')->with('filename')->willReturn('filename'); - $this->reportHelper = $this->getMock( - 'Magento\ImportExport\Helper\Report', - ['importFileExists', 'getReportSize', 'getReportOutput'], - [], - '', - false - ); - $this->reportHelper->expects($this->any())->method('getReportSize')->willReturn(1); - $this->reportHelper->expects($this->any())->method('getReportOutput')->willReturn('output'); - $this->objectManager = $this->getMock( - 'Magento\Framework\ObjectManager\ObjectManager', - ['get'], - [], - '', - false - ); - $this->objectManager->expects($this->any()) - ->method('get') - ->with('Magento\ImportExport\Helper\Report') - ->willReturn($this->reportHelper); - $this->context = $this->getMock( - 'Magento\Backend\App\Action\Context', - ['getRequest', 'getObjectManager', 'getResultRedirectFactory'], - [], - '', - false - ); - $this->fileFactory = $this->getMock( - 'Magento\Framework\App\Response\Http\FileFactory', - ['create'], - [], - '', - false - ); - $this->resultRaw = $this->getMock( - 'Magento\Framework\Controller\Result\Raw', - ['setContents'], - [], - '', - false - ); - $this->resultRawFactory = $this->getMock( - '\Magento\Framework\Controller\Result\RawFactory', - ['create'], - [], - '', - false - ); - $this->resultRawFactory->expects($this->any())->method('create')->willReturn($this->resultRaw); - $this->redirect = $this->getMock( - '\Magento\Backend\Model\View\Result\Redirect', - ['setPath'], - [], - '', - false - ); - - $this->resultRedirectFactory = $this->getMock( - 'Magento\Framework\Controller\Result\RedirectFactory', - ['create'], - [], - '', - false - ); - $this->resultRedirectFactory->expects($this->any())->method('create')->willReturn($this->redirect); - - $this->context->expects($this->any())->method('getRequest')->willReturn($this->request); - $this->context->expects($this->any())->method('getObjectManager')->willReturn($this->objectManager); - $this->context->expects($this->any()) - ->method('getResultRedirectFactory') - ->willReturn($this->resultRedirectFactory); - - $this->objectManagerHelper = new ObjectManagerHelper($this); - $this->downloadController = $this->objectManagerHelper->getObject( - 'Magento\ImportExport\Controller\Adminhtml\History\Download', - [ - 'context' => $this->context, - 'fileFactory' => $this->fileFactory, - 'resultRawFactory' => $this->resultRawFactory, - 'reportHelper' => $this->reportHelper - ] - ); - - } - - /** - * Test execute() - */ - public function testExecute() - { - $this->reportHelper->expects($this->any())->method('importFileExists')->willReturn(true); - $this->resultRaw->expects($this->once())->method('setContents'); - $this->downloadController->execute(); - } - - /** - * Test execute() with not found file - */ - public function testExecuteFileNotFound() - { - $this->reportHelper->expects($this->any())->method('importFileExists')->willReturn(false); - $this->resultRaw->expects($this->never())->method('setContents'); - $this->downloadController->execute(); - } -} diff --git a/app/code/Magento/Rule/Model/AbstractModel.php b/app/code/Magento/Rule/Model/AbstractModel.php index e29d2b217d717..1e84acfa6f80d 100644 --- a/app/code/Magento/Rule/Model/AbstractModel.php +++ b/app/code/Magento/Rule/Model/AbstractModel.php @@ -6,6 +6,10 @@ namespace Magento\Rule\Model; +use Magento\Framework\App\ObjectManager; +use Magento\Framework\Exception\LocalizedException; +use Magento\Framework\Unserialize\SecureUnserializer; + /** * Abstract Rule entity data model * @SuppressWarnings(PHPMD.CouplingBetweenObjects) @@ -76,8 +80,11 @@ abstract public function getActionsInstance(); protected $_localeDate; /** - * AbstractModel constructor. - * + * @var SecureUnserializer + */ + protected $unserializer; + + /** * @param \Magento\Framework\Model\Context $context * @param \Magento\Framework\Registry $registry * @param \Magento\Framework\Data\FormFactory $formFactory @@ -85,6 +92,7 @@ abstract public function getActionsInstance(); * @param \Magento\Framework\Model\ResourceModel\AbstractResource|null $resource * @param \Magento\Framework\Data\Collection\AbstractDb|null $resourceCollection * @param array $data + * @param SecureUnserializer $unserializer */ public function __construct( \Magento\Framework\Model\Context $context, @@ -93,10 +101,12 @@ public function __construct( \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate, \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null, \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null, - array $data = [] + array $data = [], + SecureUnserializer $unserializer = null ) { $this->_formFactory = $formFactory; $this->_localeDate = $localeDate; + $this->unserializer = $unserializer ?: ObjectManager::getInstance()->get(SecureUnserializer::class); parent::__construct( $context, $registry, @@ -120,10 +130,12 @@ public function beforeSave() // Check if discount amount not negative if ($this->hasDiscountAmount()) { if ((int)$this->getDiscountAmount() < 0) { - throw new \Magento\Framework\Exception\LocalizedException(__('Please choose a valid discount amount.')); + throw new LocalizedException(__('Please choose a valid discount amount.')); } } + $this->validateSerializedFields(); + // Serialize conditions if ($this->getConditions()) { $this->setConditionsSerialized(serialize($this->getConditions()->asArray())); @@ -189,7 +201,13 @@ public function getConditions() if ($this->hasConditionsSerialized()) { $conditions = $this->getConditionsSerialized(); if (!empty($conditions)) { - $conditions = unserialize($conditions); + try { + $conditions = $this->unserializer->unserialize($conditions); + } catch (\InvalidArgumentException $e) { + $this->_logger->critical($e); + $conditions = false; + } + if (is_array($conditions) && !empty($conditions)) { $this->_conditions->loadArray($conditions); } @@ -227,7 +245,13 @@ public function getActions() if ($this->hasActionsSerialized()) { $actions = $this->getActionsSerialized(); if (!empty($actions)) { - $actions = unserialize($actions); + try { + $actions = $this->unserializer->unserialize($actions); + } catch (\InvalidArgumentException $e) { + $this->_logger->critical($e); + $actions = false; + } + if (is_array($actions) && !empty($actions)) { $this->_actions->loadArray($actions); } @@ -480,4 +504,26 @@ private function getCustomAttributeFactory() return \Magento\Framework\App\ObjectManager::getInstance() ->get(\Magento\Framework\Api\AttributeValueFactory::class); } + + /** + * Validates "conditions" and "actions" serialized data. + * + * @return void + * @throws LocalizedException if field data could not be unserialized + */ + private function validateSerializedFields() + { + $fields = ['conditions' => 'conditions_serialized', 'actions' => 'actions_serialized']; + foreach ($fields as $fieldName => $field) { + $data = $this->getData($field); + if (!empty($data)) { + try { + $this->unserializer->unserialize($data); + } catch (\InvalidArgumentException $e) { + $this->_logger->critical($e); + throw new LocalizedException(__('Please specify valid %1.', $fieldName)); + } + } + } + } } diff --git a/app/code/Magento/SalesRule/Test/Unit/Model/RuleTest.php b/app/code/Magento/SalesRule/Test/Unit/Model/RuleTest.php index c49d4e08140d6..7c0225c3e6912 100644 --- a/app/code/Magento/SalesRule/Test/Unit/Model/RuleTest.php +++ b/app/code/Magento/SalesRule/Test/Unit/Model/RuleTest.php @@ -6,6 +6,9 @@ namespace Magento\SalesRule\Test\Unit\Model; +/** + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + */ class RuleTest extends \PHPUnit_Framework_TestCase { /** @@ -32,12 +35,12 @@ protected function setUp() { $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); - $this->coupon = $this->getMockBuilder('Magento\SalesRule\Model\Coupon') + $this->coupon = $this->getMockBuilder(\Magento\SalesRule\Model\Coupon::class) ->disableOriginalConstructor() ->setMethods(['loadPrimaryByRule', 'setRule', 'setIsPrimary', 'getCode', 'getUsageLimit']) ->getMock(); - $couponFactory = $this->getMockBuilder('Magento\SalesRule\Model\CouponFactory') + $couponFactory = $this->getMockBuilder(\Magento\SalesRule\Model\CouponFactory::class) ->disableOriginalConstructor() ->setMethods(['create']) ->getMock(); @@ -46,30 +49,34 @@ protected function setUp() ->willReturn($this->coupon); $this->conditionCombineFactoryMock = $this->getMockBuilder( - '\Magento\SalesRule\Model\Rule\Condition\CombineFactory' + \Magento\SalesRule\Model\Rule\Condition\CombineFactory::class )->disableOriginalConstructor() ->setMethods(['create']) ->getMock(); $this->condProdCombineFactoryMock = $this->getMockBuilder( - '\Magento\SalesRule\Model\Rule\Condition\Product\CombineFactory' + \Magento\SalesRule\Model\Rule\Condition\Product\CombineFactory::class )->disableOriginalConstructor() ->setMethods(['create']) ->getMock(); $this->prepareObjectManager([ [ - 'Magento\Framework\Api\ExtensionAttributesFactory', - $this->getMock('Magento\Framework\Api\ExtensionAttributesFactory', [], [], '', false) + \Magento\Framework\Api\ExtensionAttributesFactory::class, + $this->getMock(\Magento\Framework\Api\ExtensionAttributesFactory::class, [], [], '', false) + ], + [ + \Magento\Framework\Api\AttributeValueFactory::class, + $this->getMock(\Magento\Framework\Api\AttributeValueFactory::class, [], [], '', false) ], [ - 'Magento\Framework\Api\AttributeValueFactory', - $this->getMock('Magento\Framework\Api\AttributeValueFactory', [], [], '', false) + \Magento\Framework\Unserialize\SecureUnserializer::class, + $this->getMock(\Magento\Framework\Unserialize\SecureUnserializer::class, [], [], '', false), ], ]); $this->model = $objectManager->getObject( - 'Magento\SalesRule\Model\Rule', + \Magento\SalesRule\Model\Rule::class, [ 'couponFactory' => $couponFactory, 'condCombineFactory' => $this->conditionCombineFactoryMock, @@ -127,7 +134,7 @@ public function testBeforeSaveResetConditionToNull() protected function setupProdConditionMock() { - $prodConditionMock = $this->getMockBuilder('\Magento\SalesRule\Model\Rule\Condition\Product\Combine') + $prodConditionMock = $this->getMockBuilder(\Magento\SalesRule\Model\Rule\Condition\Product\Combine::class) ->disableOriginalConstructor() ->setMethods(['setRule', 'setId', 'loadArray', 'getConditions']) ->getMock(); @@ -147,7 +154,7 @@ protected function setupProdConditionMock() protected function setupConditionMock() { - $conditionMock = $this->getMockBuilder('\Magento\SalesRule\Model\Rule\Condition\Combine') + $conditionMock = $this->getMockBuilder(\Magento\SalesRule\Model\Rule\Condition\Combine::class) ->disableOriginalConstructor() ->setMethods(['setRule', 'setId', 'loadArray', 'getConditions']) ->getMock(); @@ -185,12 +192,12 @@ public function testGetActionsFieldSetId() */ private function prepareObjectManager($map) { - $objectManagerMock = $this->getMock('Magento\Framework\ObjectManagerInterface'); + $objectManagerMock = $this->getMock(\Magento\Framework\ObjectManagerInterface::class); $objectManagerMock->expects($this->any())->method('getInstance')->willReturnSelf(); $objectManagerMock->expects($this->any()) ->method('get') ->will($this->returnValueMap($map)); - $reflectionClass = new \ReflectionClass('Magento\Framework\App\ObjectManager'); + $reflectionClass = new \ReflectionClass(\Magento\Framework\App\ObjectManager::class); $reflectionProperty = $reflectionClass->getProperty('_instance'); $reflectionProperty->setAccessible(true); $reflectionProperty->setValue($objectManagerMock); diff --git a/app/code/Magento/Store/etc/config.xml b/app/code/Magento/Store/etc/config.xml index 10699899c8534..302cdef93c235 100644 --- a/app/code/Magento/Store/etc/config.xml +++ b/app/code/Magento/Store/etc/config.xml @@ -115,6 +115,10 @@ php + php3 + php4 + php5 + php7 htaccess jsp pl diff --git a/app/code/Magento/Swatches/Block/Product/Renderer/Configurable.php b/app/code/Magento/Swatches/Block/Product/Renderer/Configurable.php index c54c49a2a2b5d..82304cc16a828 100644 --- a/app/code/Magento/Swatches/Block/Product/Renderer/Configurable.php +++ b/app/code/Magento/Swatches/Block/Product/Renderer/Configurable.php @@ -10,6 +10,7 @@ use Magento\ConfigurableProduct\Helper\Data; use Magento\ConfigurableProduct\Model\ConfigurableAttributeData; use Magento\Customer\Helper\Session\CurrentCustomer; +use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Json\EncoderInterface; use Magento\Framework\Pricing\PriceCurrencyInterface; use Magento\Catalog\Model\Product; @@ -209,7 +210,14 @@ public function getProduct() */ protected function getSwatchAttributesData() { - return $this->swatchHelper->getSwatchAttributesAsArray($this->getProduct()); + $swatchAttributes = []; + try { + $swatchAttributes = $this->swatchHelper->getSwatchAttributesAsArray($this->getProduct()); + } catch (LocalizedException $e) { + $this->_logger->critical("Cannot get swatch attributes data\n" . $e->getMessage()); + } + + return $swatchAttributes; } /** @@ -221,7 +229,11 @@ protected function getSwatchAttributesData() */ protected function initIsProductHasSwatchAttribute() { - $this->isProductHasSwatchAttribute = $this->swatchHelper->isProductHasSwatch($this->getProduct()); + try { + $this->isProductHasSwatchAttribute = $this->swatchHelper->isProductHasSwatch($this->getProduct()); + } catch (LocalizedException $e) { + $this->_logger->critical("Cannot check if product has swatch\n" . $e->getMessage()); + } } /** diff --git a/app/code/Magento/Swatches/Helper/Data.php b/app/code/Magento/Swatches/Helper/Data.php index 9093d10b5d2e8..7db4419344971 100644 --- a/app/code/Magento/Swatches/Helper/Data.php +++ b/app/code/Magento/Swatches/Helper/Data.php @@ -10,6 +10,8 @@ use Magento\ConfigurableProduct\Model\Product\Type\Configurable; use Magento\Catalog\Api\Data\ProductInterface as Product; use Magento\Catalog\Model\Product as ModelProduct; +use Magento\Framework\Exception\LocalizedException; +use Magento\Framework\Unserialize\SecureUnserializer; use Magento\Store\Model\StoreManagerInterface; use Magento\Swatches\Model\ResourceModel\Swatch\CollectionFactory as SwatchCollectionFactory; use Magento\Swatches\Model\Swatch; @@ -18,6 +20,7 @@ use Magento\Catalog\Model\ResourceModel\Product\Collection as ProductCollection; use Magento\Framework\App\ObjectManager; use Magento\Swatches\Model\SwatchAttributesProvider; +use Psr\Log\LoggerInterface; /** * Class Helper Data @@ -68,6 +71,18 @@ class Data */ private $swatchAttributesProvider; + /** + * @var SecureUnserializer + */ + private $secureUnserializer; + + /** + * Describes a logger instance. + * + * @var LoggerInterface + */ + private $logger; + /** * Data key which should populated to Attribute entity from "additional_data" field * @@ -80,12 +95,15 @@ class Data ]; /** + * Data constructor. * @param CollectionFactory $productCollectionFactory * @param ProductRepositoryInterface $productRepository * @param StoreManagerInterface $storeManager * @param SwatchCollectionFactory $swatchCollectionFactory * @param Image $imageHelper - * @param SwatchAttributesProvider $swatchAttributesProvider + * @param SwatchAttributesProvider|null $swatchAttributesProvider + * @param SecureUnserializer|null $secureUnserializer + * @param LoggerInterface $logger */ public function __construct( CollectionFactory $productCollectionFactory, @@ -93,7 +111,9 @@ public function __construct( StoreManagerInterface $storeManager, SwatchCollectionFactory $swatchCollectionFactory, Image $imageHelper, - SwatchAttributesProvider $swatchAttributesProvider = null + SwatchAttributesProvider $swatchAttributesProvider = null, + SecureUnserializer $secureUnserializer = null, + LoggerInterface $logger = null ) { $this->productCollectionFactory = $productCollectionFactory; $this->productRepository = $productRepository; @@ -102,18 +122,28 @@ public function __construct( $this->imageHelper = $imageHelper; $this->swatchAttributesProvider = $swatchAttributesProvider ?: ObjectManager::getInstance()->get(SwatchAttributesProvider::class); + $this->secureUnserializer = $secureUnserializer + ?: ObjectManager::getInstance()->get(SecureUnserializer::class); + $this->logger = $logger ?: ObjectManager::getInstance()->get(LoggerInterface::class); } /** * @param Attribute $attribute * @return $this + * @throws LocalizedException */ public function assembleAdditionalDataEavAttribute(Attribute $attribute) { $initialAdditionalData = []; $additionalData = (string) $attribute->getData('additional_data'); if (!empty($additionalData)) { - $additionalData = unserialize($additionalData); + try { + $additionalData = $this->secureUnserializer->unserialize($additionalData); + } catch (\Exception $e) { + $this->logger->critical("Additional data for EAV attribute cannot be assembled\n" . $e->getMessage()); + throw new LocalizedException(__('Swatch cannot be saved')); + } + if (is_array($additionalData)) { $initialAdditionalData = $additionalData; } @@ -134,17 +164,28 @@ public function assembleAdditionalDataEavAttribute(Attribute $attribute) /** * @param Attribute $attribute * @return $this + * @throws LocalizedException */ private function populateAdditionalDataEavAttribute(Attribute $attribute) { - $additionalData = unserialize($attribute->getData('additional_data')); - if (isset($additionalData) && is_array($additionalData)) { - foreach ($this->eavAttributeAdditionalDataKeys as $key) { - if (isset($additionalData[$key])) { - $attribute->setData($key, $additionalData[$key]); + $additionalData = (string) $attribute->getData('additional_data'); + if (!empty($additionalData)) { + try { + $additionalData = $this->secureUnserializer->unserialize($additionalData); + } catch (\Exception $e) { + $this->logger->critical("Additional data for EAV attribute cannot be populated\n" . $e->getMessage()); + throw new LocalizedException(__('Swatch cannot be saved')); + } + + if (is_array($additionalData)) { + foreach ($this->eavAttributeAdditionalDataKeys as $key) { + if (isset($additionalData[$key])) { + $attribute->setData($key, $additionalData[$key]); + } } } } + return $this; } @@ -343,6 +384,7 @@ private function getAllSizeImages(ModelProduct $product, $imageFile) * * @param Product $product * @return \Magento\Catalog\Model\ResourceModel\Eav\Attribute[] + * @throws LocalizedException */ private function getSwatchAttributes(Product $product) { @@ -467,6 +509,7 @@ public function isProductHasSwatch(Product $product) * * @param Attribute $attribute * @return bool + * @throws LocalizedException */ public function isSwatchAttribute(Attribute $attribute) { @@ -479,6 +522,7 @@ public function isSwatchAttribute(Attribute $attribute) * * @param Attribute $attribute * @return bool + * @throws LocalizedException */ public function isVisualSwatch(Attribute $attribute) { @@ -493,12 +537,14 @@ public function isVisualSwatch(Attribute $attribute) * * @param Attribute $attribute * @return bool + * @throws LocalizedException */ public function isTextSwatch(Attribute $attribute) { if (!$attribute->hasData(Swatch::SWATCH_INPUT_TYPE_KEY)) { $this->populateAdditionalDataEavAttribute($attribute); } + return $attribute->getData(Swatch::SWATCH_INPUT_TYPE_KEY) == Swatch::SWATCH_INPUT_TYPE_TEXT; } } diff --git a/app/code/Magento/Swatches/Test/Unit/Helper/DataTest.php b/app/code/Magento/Swatches/Test/Unit/Helper/DataTest.php index f4646573dbf9c..167e1610380d9 100644 --- a/app/code/Magento/Swatches/Test/Unit/Helper/DataTest.php +++ b/app/code/Magento/Swatches/Test/Unit/Helper/DataTest.php @@ -49,6 +49,11 @@ class DataTest extends \PHPUnit_Framework_TestCase /** @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Swatches\Model\SwatchAttributesProvider */ private $swatchAttributesProviderMock; + /** + * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\Unserialize\SecureUnserializer + */ + protected $secureUnserializerMock; + protected function setUp() { $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); @@ -120,6 +125,14 @@ protected function setUp() false ); + $this->secureUnserializerMock = $this->getMock( + \Magento\Framework\Unserialize\SecureUnserializer::class, + ['unserializer'], + [], + '', + false + ); + $this->swatchHelperObject = $this->objectManager->getObject( \Magento\Swatches\Helper\Data::class, [ @@ -130,6 +143,7 @@ protected function setUp() 'swatchCollectionFactory' => $this->swatchCollectionFactoryMock, 'imageHelper' => $this->imageHelperMock, 'swatchAttributesProvider' => $this->swatchAttributesProviderMock, + 'unserializer' => $this->secureUnserializerMock, ] ); } @@ -817,7 +831,7 @@ public function dataForIsVisualSwatchType() serialize($additionalData), [ 'getData' => 1, - 'setData' => 3, + 'setData' => 0, ], 'visual', true, @@ -874,7 +888,7 @@ public function dataForIsTextSwatchType() serialize($additionalData), [ 'getData' => 1, - 'setData' => 3, + 'setData' => 0, ], 'text', true, diff --git a/app/code/Magento/Widget/Controller/Adminhtml/Widget/LoadOptions.php b/app/code/Magento/Widget/Controller/Adminhtml/Widget/LoadOptions.php index 8af5a077e8c5f..5c6ccfeb652ae 100644 --- a/app/code/Magento/Widget/Controller/Adminhtml/Widget/LoadOptions.php +++ b/app/code/Magento/Widget/Controller/Adminhtml/Widget/LoadOptions.php @@ -24,6 +24,38 @@ class LoadOptions extends \Magento\Backend\App\Action */ private $conditionsHelper; + /** + * @var \Psr\Log\LoggerInterface + */ + private $logger; + + /** + * @var \Magento\Framework\Json\Helper\Data + */ + private $jsonHelper; + + /** + * @param \Magento\Backend\App\Action\Context $context + * @param \Magento\Widget\Helper\Conditions $conditionsHelper + * @param \Psr\Log\LoggerInterface $logger + * @param \Magento\Framework\Json\Helper\Data $jsonHelper + */ + public function __construct( + \Magento\Backend\App\Action\Context $context, + \Magento\Widget\Helper\Conditions $conditionsHelper = null, + \Psr\Log\LoggerInterface $logger = null, + \Magento\Framework\Json\Helper\Data $jsonHelper = null + ) { + $this->conditionsHelper = $conditionsHelper ?: ObjectManager::getInstance()->get( + \Magento\Widget\Helper\Conditions::class + ); + $this->logger = $logger ?: ObjectManager::getInstance()->get(\Psr\Log\LoggerInterface::class); + $this->jsonHelper = $jsonHelper ?: ObjectManager::getInstance()->get( + \Magento\Framework\Json\Helper\Data::class + ); + parent::__construct($context); + } + /** * Ajax responder for loading plugin options form * @@ -34,8 +66,7 @@ public function execute() try { $this->_view->loadLayout(); if ($paramsJson = $this->getRequest()->getParam('widget')) { - $request = $this->_objectManager->get(\Magento\Framework\Json\Helper\Data::class) - ->jsonDecode($paramsJson); + $request = $this->jsonHelper->jsonDecode($paramsJson); if (is_array($request)) { $optionsBlock = $this->_view->getLayout()->getBlock('wysiwyg_widget.options'); if (isset($request['widget_type'])) { @@ -45,7 +76,7 @@ public function execute() $request['values'] = array_map('htmlspecialchars_decode', $request['values']); if (isset($request['values']['conditions_encoded'])) { $request['values']['conditions'] = - $this->getConditionsHelper()->decode($request['values']['conditions_encoded']); + $this->conditionsHelper->decode($request['values']['conditions_encoded']); } $optionsBlock->setWidgetValues($request['values']); } @@ -53,23 +84,22 @@ public function execute() $this->_view->renderLayout(); } } catch (\Magento\Framework\Exception\LocalizedException $e) { - $result = ['error' => true, 'message' => $e->getMessage()]; - $this->getResponse()->representJson( - $this->_objectManager->get(\Magento\Framework\Json\Helper\Data::class)->jsonEncode($result) - ); + $this->sendErrorResponse($e->getMessage()); + } catch (\InvalidArgumentException $e) { + $this->logger->critical($e); + $this->sendErrorResponse(__('We\'re sorry, an error has occurred while loading widget options.')); } } /** - * @return \Magento\Widget\Helper\Conditions - * @deprecated + * Sends response in case of exception. + * + * @param \Magento\Framework\Phrase|string $message + * @return void */ - private function getConditionsHelper() + private function sendErrorResponse($message) { - if (!$this->conditionsHelper) { - $this->conditionsHelper = ObjectManager::getInstance()->get(\Magento\Widget\Helper\Conditions::class); - } - - return $this->conditionsHelper; + $result = ['error' => true, 'message' => (string)$message]; + $this->getResponse()->representJson($this->jsonHelper->jsonEncode($result)); } } diff --git a/app/code/Magento/Widget/Helper/Conditions.php b/app/code/Magento/Widget/Helper/Conditions.php index a336c97a9ebfb..ae2fa5a84caed 100644 --- a/app/code/Magento/Widget/Helper/Conditions.php +++ b/app/code/Magento/Widget/Helper/Conditions.php @@ -5,11 +5,28 @@ */ namespace Magento\Widget\Helper; +use Magento\Framework\App\ObjectManager; +use Magento\Framework\Unserialize\SecureUnserializer; + /** * Widget Conditions helper */ class Conditions { + /** + * @var SecureUnserializer + */ + private $unserializer; + + /** + * @param SecureUnserializer|null $unserializer + */ + public function __construct( + SecureUnserializer $unserializer = null + ) { + $this->unserializer = $unserializer ?: ObjectManager::getInstance()->get(SecureUnserializer::class); + } + /** * Encode widget conditions to be used with WYSIWIG * @@ -31,7 +48,7 @@ public function encode(array $value) public function decode($value) { $value = str_replace(['[', ']', '`', '|'], ['{', '}', '"', '\\'], $value); - $value = unserialize($value); - return $value; + + return $this->unserializer->unserialize($value); } } diff --git a/app/code/Magento/Widget/Test/Unit/Controller/Adminhtml/Widget/LoadOptionsTest.php b/app/code/Magento/Widget/Test/Unit/Controller/Adminhtml/Widget/LoadOptionsTest.php index 3862eb9668da0..5cd33e6e6b0b8 100644 --- a/app/code/Magento/Widget/Test/Unit/Controller/Adminhtml/Widget/LoadOptionsTest.php +++ b/app/code/Magento/Widget/Test/Unit/Controller/Adminhtml/Widget/LoadOptionsTest.php @@ -62,7 +62,12 @@ class LoadOptionsTest extends \PHPUnit_Framework_TestCase private $loadOptions; /** - * return void + * @var \Magento\Framework\Json\Helper\Data|\PHPUnit_Framework_MockObject_MockObject + */ + private $jsonDataHelperMock; + + /** + * @inheritdoc */ protected function setUp() { @@ -91,10 +96,21 @@ protected function setUp() $this->conditionsHelperMock = $this->getMockBuilder(ConditionsHelper::class) ->disableOriginalConstructor() ->getMock(); + $loggerMock = $this->getMockBuilder(\Psr\Log\LoggerInterface::class) + ->disableOriginalConstructor() + ->getMock(); + $this->jsonDataHelperMock = $this->getMockBuilder(\Magento\Framework\Json\Helper\Data::class) + ->disableOriginalConstructor() + ->getMock(); $this->loadOptions = $this->objectManagerHelper->getObject( LoadOptions::class, - ['context' => $this->contextMock] + [ + 'context' => $this->contextMock, + 'conditionsHelper' => $this->conditionsHelperMock, + 'logger' => $loggerMock, + 'jsonHelper' => $this->jsonDataHelperMock, + ] ); $this->objectManagerHelper->setBackwardCompatibleProperty( $this->loadOptions, @@ -106,27 +122,18 @@ protected function setUp() /** * @return void */ - public function dtestExecuteWithException() + public function testExecuteWithException() { $jsonResult = '{"error":true,"message":"Some error"}'; $errorMessage = 'Some error'; - /** @var \Magento\Framework\Json\Helper\Data|\PHPUnit_Framework_MockObject_MockObject $jsonDataHelperMock */ - $jsonDataHelperMock = $this->getMockBuilder(\Magento\Framework\Json\Helper\Data::class) - ->disableOriginalConstructor() - ->getMock(); - $jsonDataHelperMock->expects($this->once()) + $this->jsonDataHelperMock->expects($this->once()) ->method('jsonEncode') ->with(['error' => true, 'message' => $errorMessage]) ->willReturn($jsonResult); - $this->viewMock->expects($this->once()) ->method('loadLayout') ->willThrowException(new LocalizedException(__($errorMessage))); - $this->objectManagerMock->expects($this->once()) - ->method('get') - ->with(\Magento\Framework\Json\Helper\Data::class) - ->willReturn($jsonDataHelperMock); $this->responseMock->expects($this->once()) ->method('representJson') ->with($jsonResult) @@ -164,11 +171,7 @@ public function testExecute() ], ]; - /** @var \Magento\Framework\Json\Helper\Data|\PHPUnit_Framework_MockObject_MockObject $jsonDataHelperMock */ - $jsonDataHelperMock = $this->getMockBuilder(\Magento\Framework\Json\Helper\Data::class) - ->disableOriginalConstructor() - ->getMock(); - $jsonDataHelperMock->expects($this->once()) + $this->jsonDataHelperMock->expects($this->once()) ->method('jsonDecode') ->with($widgetJsonParams) ->willReturn($widgetArrayParams); @@ -179,10 +182,6 @@ public function testExecute() ->method('getParam') ->with('widget') ->willReturn($widgetJsonParams); - $this->objectManagerMock->expects($this->once()) - ->method('get') - ->with(\Magento\Framework\Json\Helper\Data::class) - ->willReturn($jsonDataHelperMock); /** @var \Magento\Framework\View\Element\BlockInterface|\PHPUnit_Framework_MockObject_MockObject $blockMock */ $blockMock = $this->getMockBuilder(\Magento\Framework\View\Element\BlockInterface::class) diff --git a/app/code/Magento/Widget/Test/Unit/Helper/ConditionsTest.php b/app/code/Magento/Widget/Test/Unit/Helper/ConditionsTest.php index 9309dfccab264..d11dcab410c5a 100644 --- a/app/code/Magento/Widget/Test/Unit/Helper/ConditionsTest.php +++ b/app/code/Magento/Widget/Test/Unit/Helper/ConditionsTest.php @@ -7,6 +7,7 @@ namespace Magento\Widget\Test\Unit\Helper; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper; +use Magento\Framework\Unserialize\SecureUnserializer; /** * Class ConditionsTest @@ -18,12 +19,32 @@ class ConditionsTest extends \PHPUnit_Framework_TestCase */ protected $conditions; + /** + * @var SecureUnserializer + */ + private $unserializerMock; + + /** + * @inheritdoc + */ protected function setUp() { + $this->unserializerMock = $this->getMockBuilder(SecureUnserializer::class) + ->disableOriginalConstructor() + ->getMock(); + $objectManagerHelper = new ObjectManagerHelper($this); - $this->conditions = $objectManagerHelper->getObject('Magento\Widget\Helper\Conditions'); + $this->conditions = $objectManagerHelper->getObject( + \Magento\Widget\Helper\Conditions::class, + [ + 'unserializer' => $this->unserializerMock, + ] + ); } + /** + * @return void + */ public function testEncodeDecode() { $value = [ @@ -46,6 +67,11 @@ public function testEncodeDecode() "operator" => "==", ], ]; + + $this->unserializerMock->expects($this->once()) + ->method('unserialize') + ->willReturn($value); + $encoded = $this->conditions->encode($value); $this->assertEquals($value, $this->conditions->decode($encoded)); } diff --git a/dev/tests/integration/testsuite/Magento/Downloadable/Controller/Adminhtml/Downloadable/FileTest.php b/dev/tests/integration/testsuite/Magento/Downloadable/Controller/Adminhtml/Downloadable/FileTest.php deleted file mode 100644 index 0071d5f4416fc..0000000000000 --- a/dev/tests/integration/testsuite/Magento/Downloadable/Controller/Adminhtml/Downloadable/FileTest.php +++ /dev/null @@ -1,35 +0,0 @@ - [ - 'name' => 'sample.txt', - 'type' => 'text/plain', - 'tmp_name' => dirname(__DIR__) . '/_files/sample.tmp', - 'error' => 0, - 'size' => 0, - ], - ]; - - $this->dispatch('backend/admin/downloadable_file/upload/type/samples'); - $body = $this->getResponse()->getBody(); - $result = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get( - 'Magento\Framework\Json\Helper\Data' - )->jsonDecode( - $body - ); - $this->assertEquals(0, $result['error']); - } -} diff --git a/lib/internal/Magento/Framework/Unserialize/SecureUnserializer.php b/lib/internal/Magento/Framework/Unserialize/SecureUnserializer.php new file mode 100644 index 0000000000000..ae05835225b88 --- /dev/null +++ b/lib/internal/Magento/Framework/Unserialize/SecureUnserializer.php @@ -0,0 +1,31 @@ +unserializer = new \Magento\Framework\Unserialize\SecureUnserializer(); + } + + /** + * @return void + */ + public function testUnserializeArray() + { + $array = ['foo' => 'bar', 1, 4]; + $this->assertEquals($array, $this->unserializer->unserialize(serialize($array))); + } + + /** + * @param string $serialized The string containing serialized object + * @return void + * + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage Data contains serialized object and cannot be unserialized + * @dataProvider serializedObjectDataProvider + */ + public function testUnserializeObject($serialized) + { + $this->assertFalse($this->unserializer->unserialize($serialized)); + } + + /** + * @return array + */ + public function serializedObjectDataProvider() + { + return [ + // Upper and lower case serialized object indicators, nested in array + ['a:2:{i:0;s:3:"foo";i:1;O:6:"Object":1:{s:11:"Objectvar";i:123;}}'], + ['a:2:{i:0;s:3:"foo";i:1;o:6:"Object":1:{s:11:"Objectvar";i:123;}}'], + ['a:2:{i:0;s:3:"foo";i:1;c:6:"Object":1:{s:11:"Objectvar";i:123;}}'], + ['a:2:{i:0;s:3:"foo";i:1;C:6:"Object":1:{s:11:"Objectvar";i:123;}}'], + + // Positive, negative signs on object length, non-nested + ['o:+6:"Object":1:{s:11:"Objectvar";i:123;}'], + ['o:-6:"Object":1:{s:11:"Objectvar";i:123;}'], + ]; + } +} From 283bb231599f369cd8f9899eb0ff4c45d37ba8d4 Mon Sep 17 00:00:00 2001 From: Andrii Dimov Date: Fri, 27 Oct 2017 13:28:39 +0300 Subject: [PATCH 2/9] MAGETWO-82884: Update Changelog based on delivered scope --- CHANGELOG.md | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea40937204ddf..bc8bd620456c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -2.1.10-dev +2.1.10 ============= * GitHub issues: * [#6718](https://github.com/magento/magento2/issues/6718) -- Custom composer modules break Component Manager (fixed in [#9692](https://github.com/magento/magento2/pull/9692)) @@ -18,6 +18,33 @@ * [#5651](https://github.com/magento/magento2/issues/5651) -- Purchase date on admin screen is always *:07:00 (fixed in [#10260](https://github.com/magento/magento2/pull/10260)) * [#9619](https://github.com/magento/magento2/issues/9619) -- Impossible to create Text Swatch 0 (Zero) (fixed in [#10282](https://github.com/magento/magento2/pull/10282)) * [#10266](https://github.com/magento/magento2/issues/10266) -- Product Attributes - Size 0 (fixed in [#10282](https://github.com/magento/magento2/pull/10282)) + * [#6622](https://github.com/magento/magento2/issues/6622) -- String wont translate: "Please enter a valid number in this field." (fixed in [#10745](https://github.com/magento/magento2/pull/10745)) + * [#4883](https://github.com/magento/magento2/issues/4883) -- Not translated "Please enter a valid email address (Ex: johndoe@domain.com)." (fixed in [#10747](https://github.com/magento/magento2/pull/10747)) + * [#5883](https://github.com/magento/magento2/issues/5883) -- Untranslatable string "Minimum length of this field must be equal..." (fixed in [#10747](https://github.com/magento/magento2/pull/10747)) + * [#5861](https://github.com/magento/magento2/issues/5861) -- [Magento 2.1.0] Translation (fixed in [#10747](https://github.com/magento/magento2/pull/10747)) + * [#5820](https://github.com/magento/magento2/issues/5820) -- js validation messages translation not working in customer account (fixed in [#10747](https://github.com/magento/magento2/pull/10747)) + * [#5509](https://github.com/magento/magento2/issues/5509) -- Translate messages on password strength (fixed in [#10747](https://github.com/magento/magento2/pull/10747)) + * [#6022](https://github.com/magento/magento2/issues/6022) -- Translation Issue on Magento 2.1v (fixed in [#10747](https://github.com/magento/magento2/pull/10747)) + * [#5995](https://github.com/magento/magento2/issues/5995) -- JS translation not working for some fields (fixed in [#10747](https://github.com/magento/magento2/pull/10747)) + * [#7525](https://github.com/magento/magento2/issues/7525) -- Magento 2.1.0 Js Translations Not Working (fixed in [#10747](https://github.com/magento/magento2/pull/10747)) + * [#9967](https://github.com/magento/magento2/issues/9967) -- Some messages in Customer Account Create not translated (fixed in [#10747](https://github.com/magento/magento2/pull/10747)) + * [#5519](https://github.com/magento/magento2/issues/5519) -- Getting PHP Fatal Error on getPrice() (fixed in [#10750](https://github.com/magento/magento2/pull/10750)) + * [#10206](https://github.com/magento/magento2/issues/10206) -- Getting PHP Fatal Error on getPrice() (fixed in [#10750](https://github.com/magento/magento2/pull/10750)) + * [#4387](https://github.com/magento/magento2/issues/4387) -- News From Date and Design Active From is set when setting Special Price for product. (fixed in [#10751](https://github.com/magento/magento2/pull/10751)) + * [#7448](https://github.com/magento/magento2/issues/7448) -- Can't remove "Set Product as New From" value (fixed in [#10751](https://github.com/magento/magento2/pull/10751)) + * [#3754](https://github.com/magento/magento2/issues/3754) -- Must override at least one static content file or custom theme static content won't deploy (fixed in [#10753](https://github.com/magento/magento2/pull/10753)) + * [#4725](https://github.com/magento/magento2/issues/4725) -- Static files are not generated for custom theme (fixed in [#10753](https://github.com/magento/magento2/pull/10753)) + * [#7569](https://github.com/magento/magento2/issues/7569) -- Theme with no static files won't get deployed (fixed in [#10753](https://github.com/magento/magento2/pull/10753)) + * [#7311](https://github.com/magento/magento2/issues/7311) -- Vimeo videos in product gallery do not work over https (fixed in [#10748](https://github.com/magento/magento2/pull/10748)) + * [#8574](https://github.com/magento/magento2/issues/8574) -- Product Gallery Vimeo Videos Don't Play Over HTTPS (fixed in [#10748](https://github.com/magento/magento2/pull/10748)) + * [#6081](https://github.com/magento/magento2/issues/6081) -- Broken HTML in base template file (fixed in [#10934](https://github.com/magento/magento2/pull/10934)) + * [#10510](https://github.com/magento/magento2/issues/10510) -- Magento 2.1.8 w/Sample Data is not responsive in categories with text containers (fixed in [#10929](https://github.com/magento/magento2/pull/10929)) + * [#10738](https://github.com/magento/magento2/issues/10738) -- Empty attribute label is displayed on product page when other language used. (fixed in [#10932](https://github.com/magento/magento2/pull/10932)) + * [#10417](https://github.com/magento/magento2/issues/10417) -- Wysywig editor shows broken image icons (fixed in [#11309](https://github.com/magento/magento2/pull/11309)) + * [#10007](https://github.com/magento/magento2/issues/10007) -- ProductAlert: Product alerts not showing in admin side product edit page (fixed in [#11448](https://github.com/magento/magento2/pull/11448)) + * [#10795](https://github.com/magento/magento2/issues/10795) -- Shipping method radios have duplicate IDs on cart page (fixed in [#11456](https://github.com/magento/magento2/pull/11456)) + * [#10231](https://github.com/magento/magento2/issues/10231) -- Custom URL Rewrite Not working (fixed in [#11469](https://github.com/magento/magento2/pull/11469)) + * [#11207](https://github.com/magento/magento2/issues/11207) -- Shipment API won't append comment to email (fixed in [#11386](https://github.com/magento/magento2/pull/11386)) * GitHub pull requests: * [#9692](https://github.com/magento/magento2/pull/9692) -- Backport of MAGETWO-59256 for 2.1: Custom composer modules break Component Manager #6718 (by @JTimNolan) * [#9809](https://github.com/magento/magento2/pull/9809) -- Fix issue #6999: Configurable attribute cache was never hit (by @thlassche) @@ -32,7 +59,31 @@ * [#10188](https://github.com/magento/magento2/pull/10188) -- magento/magento2:#6175 Fixed Unable to generate unsecure URL if current URL is secure (by @arshadpkm) * [#10260](https://github.com/magento/magento2/pull/10260) -- Fix order date format in Orders Grid (by @ihor-sviziev) * [#10282](https://github.com/magento/magento2/pull/10282) -- 2.1 - Allow to use text swatch 0 (by @ihor-sviziev) - + * [#10482](https://github.com/magento/magento2/pull/10482) -- Updated root composer.json file with current release (by @okorshenko) + * [#10569](https://github.com/magento/magento2/pull/10569) -- Fix for url_rewrite on page delete via api (by @avdb) + * [#10695](https://github.com/magento/magento2/pull/10695) -- Fix checking active carrier against store (by @bardkalbakk) + * [#10714](https://github.com/magento/magento2/pull/10714) -- Bugfix - Multiple filter_url_params (by @bardkalbakk) + * [#10745](https://github.com/magento/magento2/pull/10745) -- Backport of PR-5725 for Magento 2.1 - Fix translations issues in... (by @hostep) + * [#10747](https://github.com/magento/magento2/pull/10747) -- Backport of MAGETWO-55900 for Magento 2.1: [GitHub] Translate message… (by @hostep) + * [#10750](https://github.com/magento/magento2/pull/10750) -- Backport of MAGETWO-65607 for Magento 2.1: [GitHub][PR] Check return … (by @hostep) + * [#10751](https://github.com/magento/magento2/pull/10751) -- Backport of MAGETWO-52577 for Magento 2.1: [GitHub] Set Product as Ne… (by @hostep) + * [#10557](https://github.com/magento/magento2/pull/10557) -- [BUGFIX] Flat Category reindexList of AllChildren if the url_key of t… (by @lewisvoncken) + * [#10753](https://github.com/magento/magento2/pull/10753) -- Backport of MAGETWO-52102 for Magento 2.1: [Github] Custom theme stat… (by @hostep) + * [#10749](https://github.com/magento/magento2/pull/10749) -- Backport PR-9713 & PR-9711 for Magento 2.1 - Google Analytics fixes when Cookie Restrictions is enabled (by @hostep) + * [#10748](https://github.com/magento/magento2/pull/10748) -- Backport PR-7919 for Magento 2.1 - Using Dynamic Protocol Concatination (by @hostep) + * [#10934](https://github.com/magento/magento2/pull/10934) -- [Backport] Fixed unclosed span tag (by @Igloczek) + * [#10929](https://github.com/magento/magento2/pull/10929) -- #10510 - fix RWD with installed Sample Data (by @szafran89) + * [#10932](https://github.com/magento/magento2/pull/10932) -- Backport #10739 - fix for translated attribute label comparison. (by @Januszpl) + * [#11201](https://github.com/magento/magento2/pull/11201) -- Delete CallExit function for After plugin logic execution 2.1-develop [BackPort] (by @osrecio) + * [#11309](https://github.com/magento/magento2/pull/11309) -- [2.1-Develop] Fix #10417 (by @PieterCappelle) + * [#11448](https://github.com/magento/magento2/pull/11448) -- Show product alerts in admin product detail [backport 2.1] (by @raumatbel) + * [#10975](https://github.com/magento/magento2/pull/10975) -- Checkout page could hang for Javascript error (by @angelo983) + * [#11456](https://github.com/magento/magento2/pull/11456) -- Added carrier code to ID to distinguish shipping methods [backport 2.1] (by @peterjaap) + * [#11506](https://github.com/magento/magento2/pull/11506) -- [Backport-2.1] Retain additional cron history by default (by @mpchadwick) + * [#11361](https://github.com/magento/magento2/pull/11361) -- [Backport 2.1-develop] cron:install and cron:remove commands, support to manage multiple instances in the same crontab, based on installation directory (by @adrian-martinez-interactiv4) + * [#11386](https://github.com/magento/magento2/pull/11386) -- [Backport 2.1] Append shipment comment to shipment if appendComment is true (by @JeroenVanLeusden) + * [#11469](https://github.com/magento/magento2/pull/11469) -- FR#10231_21 Custom URL Rewrite Not working (by @mrodespin) + 2.1.8 ============= * GitHub issues: From e8c0fd1bf6324593929862d1710917afe1c75a76 Mon Sep 17 00:00:00 2001 From: Andrii Dimov Date: Wed, 1 Nov 2017 18:48:49 +0200 Subject: [PATCH 3/9] MAGETWO-65466: [Backport] - Issue when deleting item from Product options grid --- .../base/web/js/dynamic-rows/dynamic-rows.js | 426 ++---------------- .../base/js/dynamic-rows/dynamic.rows.test.js | 118 ----- 2 files changed, 31 insertions(+), 513 deletions(-) delete mode 100644 dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/dynamic-rows/dynamic.rows.test.js diff --git a/app/code/Magento/Ui/view/base/web/js/dynamic-rows/dynamic-rows.js b/app/code/Magento/Ui/view/base/web/js/dynamic-rows/dynamic-rows.js index 10e0ab92664fd..f8af2229fc871 100644 --- a/app/code/Magento/Ui/view/base/web/js/dynamic-rows/dynamic-rows.js +++ b/app/code/Magento/Ui/view/base/web/js/dynamic-rows/dynamic-rows.js @@ -14,85 +14,6 @@ define([ ], function (ko, utils, _, layout, uiCollection, registry, $t) { 'use strict'; - /** - * Checks value type and cast to boolean if needed - * - * @param {*} value - * - * @returns {Boolean|*} casted or origin value - */ - function castValue(value) { - if (_.isUndefined(value) || value === '' || _.isNull(value)) { - return false; - } - - return value; - } - - /** - * Compares arrays. - * - * @param {Array} base - array as method bases its decision on first argument. - * @param {Array} current - second array - * - * @returns {Boolean} result - is current array equal to base array - */ - function compareArrays(base, current) { - var index = 0, - length = base.length; - - if (base.length !== current.length) { - return false; - } - - /*eslint-disable max-depth, eqeqeq, no-use-before-define */ - for (index; index < length; index++) { - if (_.isArray(base[index]) && _.isArray(current[index])) { - if (!compareArrays(base[index], current[index])) { - return false; - } - } else if (typeof base[index] === 'object' && typeof current[index] === 'object') { - if (!compareObjects(base[index], current[index])) { - return false; - } - } else if (castValue(base[index]) != castValue(current[index])) { - return false; - } - }/*eslint-enable max-depth, eqeqeq, no-use-before-define */ - - return true; - } - - /** - * Compares objects. Compares only properties from origin object, - * if current object has more properties - they are not considered - * - * @param {Object} base - first object - * @param {Object} current - second object - * - * @returns {Boolean} result - is current object equal to base object - */ - function compareObjects(base, current) { - var prop; - - /*eslint-disable max-depth, eqeqeq*/ - for (prop in base) { - if (_.isArray(base[prop]) && _.isArray(current[prop])) { - if (!compareArrays(base[prop], current[prop])) { - return false; - } - } else if (typeof base[prop] === 'object' && typeof current[prop] === 'object') { - if (!compareObjects(base[prop], current[prop])) { - return false; - } - } else if (castValue(base[prop]) != castValue(current[prop])) { - return false; - } - }/*eslint-enable max-depth, eqeqeq */ - - return true; - } - return uiCollection.extend({ defaults: { defaultRecord: false, @@ -115,11 +36,6 @@ define([ deleteValue: true, showSpinner: true, isDifferedFromDefault: false, - defaultState: [], - defaultPagesState: {}, - pagesChanged: {}, - hasInitialPagesState: {}, - changed: false, fallbackResetTpl: 'ui/form/element/helper/fallback-reset-link', dndConfig: { name: '${ $.name }_dnd', @@ -144,10 +60,9 @@ define([ disabled: 'setDisabled', childTemplate: 'initHeader', recordTemplate: 'onUpdateRecordTemplate', - recordData: 'setDifferedFromDefault parsePagesData setRecordDataToCache', + recordData: 'setDifferedFromDefault parsePagesData', currentPage: 'changePage', - elems: 'checkSpinner', - changed: 'updateTrigger' + elems: 'checkSpinner' }, modules: { dnd: '${ $.dndConfig.name }' @@ -156,17 +71,9 @@ define([ pageSize: 20, relatedData: [], currentPage: 1, - recordDataCache: [], startIndex: 0 }, - /** - * Sets record data to cache - */ - setRecordDataToCache: function (data) { - this.recordDataCache = data; - }, - /** * Extends instance with default config, calls initialize of parent * class, calls initChildren method, set observe variable. @@ -175,49 +82,13 @@ define([ * @returns {Object} Chainable. */ initialize: function () { - _.bindAll(this, - 'processingDeleteRecord', - 'onChildrenUpdate', - 'checkDefaultState', - 'renderColumnsHeader', - 'deleteHandler', - 'setDefaultState' - ); - this._super() .initChildren() .initDnd() - .initDefaultRecord() - .setInitialProperty() .setColumnsHeaderListener() + .initDefaultRecord() .checkSpinner(); - this.on('recordData', this.checkDefaultState); - - return this; - }, - - /** - * @inheritdoc - */ - bubble: function (event) { - if (event === 'deleteRecord' || event === 'update') { - return false; - } - - return this._super(); - }, - - /** - * Inits DND module - * - * @returns {Object} Chainable. - */ - initDnd: function () { - if (this.dndConfig.enabled) { - layout([this.dndConfig]); - } - return this; }, @@ -238,257 +109,39 @@ define([ 'disabled', 'labels', 'showSpinner', - 'isDifferedFromDefault', - 'changed' + 'isDifferedFromDefault' ]); return this; }, /** - * @inheritdoc - */ - initElement: function (elem) { - this._super(); - elem.on({ - 'deleteRecord': this.deleteHandler, - 'update': this.onChildrenUpdate, - 'addChild': this.setDefaultState - }); - - return this; - }, - - /** - * Handler for deleteRecord event - * - * @param {Number|String} index - element index - * @param {Number|String} id - */ - deleteHandler: function (index, id) { - var defaultState; - - this.setDefaultState(); - defaultState = this.defaultPagesState[this.currentPage()]; - this.processingDeleteRecord(index, id); - this.pagesChanged[this.currentPage()] = - !compareArrays(defaultState, this.arrayFilter(this.getChildItems())); - this.changed(_.some(this.pagesChanged)); - }, - - /** - * Set initial property to records data + * Init DND module * * @returns {Object} Chainable. */ - setInitialProperty: function () { - if (_.isArray(this.recordData())) { - this.recordData.each(function (data, index) { - this.source.set(this.dataScope + '.' + this.index + '.' + index + '.initialize', true); - }, this); + initDnd: function () { + if (this.dndConfig.enabled) { + layout([this.dndConfig]); } return this; }, /** - * Handler for update event - * - * @param {Boolean} state - */ - onChildrenUpdate: function (state) { - var changed, - dataScope, - changedElemDataScope; - - if (state && !this.hasInitialPagesState[this.currentPage()]) { - this.setDefaultState(); - changed = this.getChangedElems(this.elems()); - dataScope = this.elems()[0].dataScope.split('.'); - dataScope.splice(dataScope.length - 1, 1); - changed.forEach(function (elem) { - changedElemDataScope = elem.dataScope.split('.'); - changedElemDataScope.splice(0, dataScope.length); - changedElemDataScope[0] = - (parseInt(changedElemDataScope[0], 10) - this.pageSize * (this.currentPage() - 1)).toString(); - this.setValueByPath( - this.defaultPagesState[this.currentPage()], - changedElemDataScope, elem.initialValue - ); - }, this); - } - - if (this.defaultPagesState[this.currentPage()]) { - this.pagesChanged[this.currentPage()] = - !compareArrays(this.defaultPagesState[this.currentPage()], this.arrayFilter(this.getChildItems())); - this.changed(_.some(this.pagesChanged)); - } - }, - - /** - * Set default dynamic-rows state or state before changing data - * - * @param {Array} data - defaultState data - */ - setDefaultState: function (data) { - var componentData, - childItems; - - if (!this.hasInitialPagesState[this.currentPage()]) { - childItems = this.getChildItems(); - componentData = childItems.length ? - utils.copy(childItems) : - utils.copy(this.getChildItems(this.recordDataCache)); - componentData.forEach(function (dataObj) { - if (dataObj.hasOwnProperty('initialize')) { - delete dataObj.initialize; - } - }); - - this.hasInitialPagesState[this.currentPage()] = true; - this.defaultPagesState[this.currentPage()] = data ? data : this.arrayFilter(componentData); - } - }, - - /** - * Sets value to object by string path - * - * @param {Object} obj - * @param {Array|String} path - * @param {*} value - */ - setValueByPath: function (obj, path, value) { - var prop; - - if (_.isString(path)) { - path = path.split('.'); - } - - if (path.length - 1) { - prop = obj[path[0]]; - path.splice(0, 1); - this.setValueByPath(prop, path, value); - } else if (path.length && obj) { - obj[path[0]] = value; - } - }, - - /** - * Returns elements which changed self state - * - * @param {Array} array - data array - * @param {Array} changed - array with changed elements - * @returns {Array} changed - array with changed elements - */ - getChangedElems: function (array, changed) { - changed = changed || []; - - array.forEach(function (elem) { - if (_.isFunction(elem.elems)) { - this.getChangedElems(elem.elems(), changed); - } else if (_.isFunction(elem.hasChanged) && elem.hasChanged()) { - changed.push(elem); - } - }, this); - - return changed; - }, - - /** - * Checks columnsHeaderAfterRender property, + * Check columnsHeaderAfterRender property, * and set listener on elems if needed * * @returns {Object} Chainable. */ setColumnsHeaderListener: function () { if (this.columnsHeaderAfterRender) { - this.on('recordData', this.renderColumnsHeader); - - if (_.isArray(this.recordData()) && this.recordData().length) { - this.renderColumnsHeader(); - } + this.on('recordData', this.renderColumnsHeader.bind(this)); } return this; }, - /** - * Checks whether component's state is default or not - */ - checkDefaultState: function () { - var isRecordDataArray = _.isArray(this.recordData()), - initialize, - hasNotDefaultRecords = isRecordDataArray ? !!this.recordData().filter(function (data) { - return !data.initialize; - }).length : false; - - if (!this.hasInitialPagesState[this.currentPage()] && isRecordDataArray && hasNotDefaultRecords) { - this.hasInitialPagesState[this.currentPage()] = true; - this.defaultPagesState[this.currentPage()] = utils.copy(this.getChildItems().filter(function (data) { - initialize = data.initialize; - delete data.initialize; - - return initialize; - })); - - this.pagesChanged[this.currentPage()] = - !compareArrays(this.defaultPagesState[this.currentPage()], this.arrayFilter(this.getChildItems())); - this.changed(_.some(this.pagesChanged)); - } else if (this.hasInitialPagesState[this.currentPage()]) { - this.pagesChanged[this.currentPage()] = - !compareArrays(this.defaultPagesState[this.currentPage()], this.arrayFilter(this.getChildItems())); - this.changed(_.some(this.pagesChanged)); - } - }, - - /** - * Filters out deleted items from array - * - * @param {Array} data - * - * @returns {Array} filtered array - */ - arrayFilter: function (data) { - var prop; - - /*eslint-disable no-loop-func*/ - data.forEach(function (elem) { - for (prop in elem) { - if (_.isArray(elem[prop])) { - elem[prop] = _.filter(elem[prop], function (elemProp) { - return elemProp[this.deleteProperty] !== this.deleteValue; - }, this); - - elem[prop].forEach(function (elemProp) { - if (_.isArray(elemProp)) { - elem[prop] = this.arrayFilter(elemProp); - } - }, this); - } - } - }, this); - - /*eslint-enable no-loop-func*/ - - return data; - }, - - /** - * Triggers update event - * - * @param {Boolean} val - */ - updateTrigger: function (val) { - this.trigger('update', val); - }, - - /** - * Returns component state - */ - hasChanged: function () { - return this.changed(); - }, - /** * Render column header */ @@ -535,13 +188,12 @@ define([ if (!this.labels().length) { _.each(this.childTemplate.children, function (cell) { data = this.createHeaderTemplate(cell.config); + cell.config.labelVisible = false; _.extend(data, { label: cell.config.label, name: cell.name, - required: !!cell.config.validation, - columnsHeaderClasses: cell.config.columnsHeaderClasses, - sortOrder: cell.config.sortOrder + columnsHeaderClasses: cell.config.columnsHeaderClasses }); this.labels.push(data); @@ -624,19 +276,6 @@ define([ this.pages(pages); }, - /** - * Reinit record data in order to remove deleted values - * - * @return void - */ - reinitRecordData: function () { - this.recordData( - _.filter(this.recordData(), function (elem) { - return elem && elem[this.deleteProperty] !== this.deleteValue; - }, this) - ); - }, - /** * Get items to rendering on current page * @@ -666,8 +305,9 @@ define([ */ processingAddChild: function (ctx, index, prop) { if (this.relatedData.length && this.relatedData.length % this.pageSize === 0) { + this.clear(); this.pages(this.pages() + 1); - this.nextPage(); + this.currentPage(this.pages()); } else if (~~this.currentPage() !== this.pages()) { this.currentPage(this.pages()); } @@ -683,6 +323,11 @@ define([ */ processingDeleteRecord: function (index, recordId) { this.deleteRecord(index, recordId); + + if (this.getChildItems().length <= 0 && this.pages() !== 1) { + this.pages(this.pages() - 1); + this.currentPage(this.pages()); + } }, /** @@ -705,9 +350,8 @@ define([ return false; } + this.clear(); this.initChildren(); - - return true; }, /** @@ -732,7 +376,6 @@ define([ * Change page to next */ nextPage: function () { - this.clear(); this.currentPage(this.currentPage() + 1); }, @@ -740,7 +383,6 @@ define([ * Change page to previos */ previousPage: function () { - this.clear(); this.currentPage(this.currentPage() - 1); }, @@ -818,10 +460,10 @@ define([ deleteRecord: function (index, recordId) { var recordInstance, lastRecord, - recordsData; + recordsData, + childs; if (this.deleteProperty) { - recordsData = this.recordData(); recordInstance = _.find(this.elems(), function (elem) { return elem.index === index; }); @@ -829,10 +471,13 @@ define([ this.elems([]); this._updateCollection(); this.removeMaxPosition(); - recordsData[recordInstance.index][this.deleteProperty] = this.deleteValue; - this.recordData(recordsData); - this.reinitRecordData(); - this.reload(); + this.recordData()[recordInstance.index][this.deleteProperty] = this.deleteValue; + this.recordData.valueHasMutated(); + childs = this.getChildItems(); + + if (childs.length > this.elems().length) { + this.addChild(false, childs[childs.length - 1][this.identificationProperty], false); + } } else { this.update = true; @@ -854,20 +499,11 @@ define([ this.update = false; } - this._reducePages(); - this._sort(); - }, - - /** - * Reduce the number of pages - * - * @private - * @return void - */ - _reducePages: function () { if (this.pages() < ~~this.currentPage()) { this.currentPage(this.pages()); } + + this._sort(); }, /** diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/dynamic-rows/dynamic.rows.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/dynamic-rows/dynamic.rows.test.js deleted file mode 100644 index c7f8dcdde1ff2..0000000000000 --- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/dynamic-rows/dynamic.rows.test.js +++ /dev/null @@ -1,118 +0,0 @@ -/** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - -/* eslint-disable max-nested-callbacks */ -define([ - 'Magento_Ui/js/dynamic-rows/dynamic-rows' -], function (DynamicRows) { - 'use strict'; - - var model, - - /** - * @param {Number} index - * @returns {Object} - * @constructor - */ - ElementMock = function (index) { - return { - /** - * @return void - */ - destroy: function () {}, - index: index - }; - }; - - /** - * Run before each test method - * - * @return void - */ - beforeEach(function (done) { - model = new DynamicRows({}); - done(); - }); - - /** - * Testing changePage and delete record methods - * - * @return void - */ - describe('Magento_Ui/js/dynamic-rows/dynamic-rows', function () { - it('changePage without Records', function () { - /** - * Mock function which return length of record data - * - * @returns {Object} - */ - model.recordData = function () { - return { - length: 0 - }; - }; - - expect(model.changePage(1)).toBeFalsy(); - }); - - it('changePage with Fake Page', function () { - /** - * Mock function, which return the number of pages - * - * @returns {Number} - */ - model.pages = function () { - return 3; - }; - - expect(model.changePage(4)).toBeFalsy(); - }); - - it('changePage', function () { - model.startIndex = 0; - model.pageSize = 3; - model.relatedData = [ - { - 'a': 'b' - }, - { - 'b': 'c' - }, - { - 'v': 'g' - } - ]; - - /** - * @returns {Number} - */ - model.pages = function () { - return 3; - }; - model.changePage(2); - - expect(model.templates.record.recordId).toBe(2);//last record number is 3 - }); - - it('deleteRecord with Delete Property', function () { - var elems, - recordInstanceMock = new ElementMock(1), - elem2 = new ElementMock(2); - - spyOn(recordInstanceMock, 'destroy'); - model.recordData({ - 1: {} - }); - elems = [ - recordInstanceMock, - elem2 - ]; - model.elems(elems); - model.deleteProperty = true; - model.deleteRecord(1, 1); - expect(model.recordData()).toEqual([]); - }); - }); -}); From ea32e3969f6476d25bdb4486d15886ee75b09774 Mon Sep 17 00:00:00 2001 From: mage2-team Date: Thu, 2 Nov 2017 08:11:12 -0700 Subject: [PATCH 4/9] MAGETWO-80398: Magento 2.1.10 Publication (build 2.1.10.021) --- app/code/Magento/Backend/composer.json | 2 +- app/code/Magento/Braintree/composer.json | 2 +- app/code/Magento/Bundle/composer.json | 2 +- .../Magento/BundleImportExport/composer.json | 2 +- app/code/Magento/Catalog/composer.json | 2 +- .../Magento/CatalogImportExport/composer.json | 2 +- app/code/Magento/CatalogRule/composer.json | 2 +- app/code/Magento/CatalogSearch/composer.json | 2 +- .../Magento/CatalogUrlRewrite/composer.json | 2 +- app/code/Magento/CatalogWidget/composer.json | 2 +- app/code/Magento/Checkout/composer.json | 2 +- .../Magento/CheckoutAgreements/composer.json | 2 +- app/code/Magento/Cms/composer.json | 2 +- app/code/Magento/CmsUrlRewrite/composer.json | 2 +- .../Magento/ConfigurableProduct/composer.json | 2 +- app/code/Magento/Cookie/composer.json | 2 +- app/code/Magento/Cron/composer.json | 2 +- app/code/Magento/Customer/composer.json | 2 +- app/code/Magento/Deploy/composer.json | 2 +- app/code/Magento/Downloadable/composer.json | 2 +- app/code/Magento/Eav/composer.json | 2 +- app/code/Magento/Email/composer.json | 2 +- app/code/Magento/Fedex/composer.json | 2 +- app/code/Magento/ImportExport/composer.json | 2 +- app/code/Magento/Indexer/composer.json | 2 +- app/code/Magento/Multishipping/composer.json | 2 +- app/code/Magento/PageCache/composer.json | 2 +- app/code/Magento/Paypal/composer.json | 2 +- app/code/Magento/Persistent/composer.json | 2 +- app/code/Magento/ProductVideo/composer.json | 2 +- app/code/Magento/Quote/composer.json | 2 +- app/code/Magento/Review/composer.json | 2 +- app/code/Magento/Rule/composer.json | 2 +- app/code/Magento/Sales/composer.json | 2 +- app/code/Magento/SalesRule/composer.json | 2 +- app/code/Magento/Search/composer.json | 2 +- app/code/Magento/Shipping/composer.json | 2 +- app/code/Magento/Store/composer.json | 2 +- app/code/Magento/Swatches/composer.json | 2 +- app/code/Magento/Theme/composer.json | 2 +- app/code/Magento/Ui/composer.json | 2 +- app/code/Magento/UrlRewrite/composer.json | 2 +- app/code/Magento/Widget/composer.json | 2 +- app/code/Magento/Wishlist/composer.json | 2 +- .../frontend/Magento/blank/composer.json | 2 +- composer.json | 94 ++++---- composer.lock | 223 +++++++++--------- lib/internal/Magento/Framework/composer.json | 2 +- 48 files changed, 204 insertions(+), 205 deletions(-) diff --git a/app/code/Magento/Backend/composer.json b/app/code/Magento/Backend/composer.json index ff87992fad909..f47959fd69e98 100644 --- a/app/code/Magento/Backend/composer.json +++ b/app/code/Magento/Backend/composer.json @@ -22,7 +22,7 @@ "magento/framework": "100.1.*" }, "type": "magento2-module", - "version": "100.1.4", + "version": "100.1.5", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Braintree/composer.json b/app/code/Magento/Braintree/composer.json index 8ef110c99e56b..a3abd79d9d64d 100644 --- a/app/code/Magento/Braintree/composer.json +++ b/app/code/Magento/Braintree/composer.json @@ -24,7 +24,7 @@ "magento/module-checkout-agreements": "100.1.*" }, "type": "magento2-module", - "version": "100.1.6", + "version": "100.1.7", "license": [ "proprietary" ], diff --git a/app/code/Magento/Bundle/composer.json b/app/code/Magento/Bundle/composer.json index ef8d650794203..42687ffb99449 100644 --- a/app/code/Magento/Bundle/composer.json +++ b/app/code/Magento/Bundle/composer.json @@ -25,7 +25,7 @@ "magento/module-bundle-sample-data": "Sample Data version:100.1.*" }, "type": "magento2-module", - "version": "100.1.4", + "version": "100.1.5", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/BundleImportExport/composer.json b/app/code/Magento/BundleImportExport/composer.json index 7746da6e2d35c..7ef6c6cd48f6b 100644 --- a/app/code/Magento/BundleImportExport/composer.json +++ b/app/code/Magento/BundleImportExport/composer.json @@ -11,7 +11,7 @@ "magento/framework": "100.1.*" }, "type": "magento2-module", - "version": "100.1.3", + "version": "100.1.4", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Catalog/composer.json b/app/code/Magento/Catalog/composer.json index a75871b17ea90..693ae075fa6bd 100644 --- a/app/code/Magento/Catalog/composer.json +++ b/app/code/Magento/Catalog/composer.json @@ -33,7 +33,7 @@ "magento/module-catalog-sample-data": "Sample Data version:100.1.*" }, "type": "magento2-module", - "version": "101.0.9", + "version": "101.0.10", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CatalogImportExport/composer.json b/app/code/Magento/CatalogImportExport/composer.json index e7cadd048d808..2996a6cea483e 100644 --- a/app/code/Magento/CatalogImportExport/composer.json +++ b/app/code/Magento/CatalogImportExport/composer.json @@ -16,7 +16,7 @@ "ext-ctype": "*" }, "type": "magento2-module", - "version": "100.1.6", + "version": "100.1.7", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CatalogRule/composer.json b/app/code/Magento/CatalogRule/composer.json index 139c1b9b51c97..b9d25a29e7f65 100644 --- a/app/code/Magento/CatalogRule/composer.json +++ b/app/code/Magento/CatalogRule/composer.json @@ -17,7 +17,7 @@ "magento/module-catalog-rule-sample-data": "Sample Data version:100.1.*" }, "type": "magento2-module", - "version": "100.1.4", + "version": "100.1.5", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CatalogSearch/composer.json b/app/code/Magento/CatalogSearch/composer.json index 2fefd5dd1ecc9..0990dc8b01349 100644 --- a/app/code/Magento/CatalogSearch/composer.json +++ b/app/code/Magento/CatalogSearch/composer.json @@ -15,7 +15,7 @@ "magento/framework": "100.1.*" }, "type": "magento2-module", - "version": "100.1.7", + "version": "100.1.8", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CatalogUrlRewrite/composer.json b/app/code/Magento/CatalogUrlRewrite/composer.json index e9fae0372d6eb..5bbccfc4b77ae 100644 --- a/app/code/Magento/CatalogUrlRewrite/composer.json +++ b/app/code/Magento/CatalogUrlRewrite/composer.json @@ -14,7 +14,7 @@ "magento/module-ui": "100.1.*" }, "type": "magento2-module", - "version": "100.1.4", + "version": "100.1.5", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CatalogWidget/composer.json b/app/code/Magento/CatalogWidget/composer.json index 52b8740804dd4..734be1c11523e 100644 --- a/app/code/Magento/CatalogWidget/composer.json +++ b/app/code/Magento/CatalogWidget/composer.json @@ -14,7 +14,7 @@ "magento/framework": "100.1.*" }, "type": "magento2-module", - "version": "100.1.3", + "version": "100.1.4", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Checkout/composer.json b/app/code/Magento/Checkout/composer.json index 82b2054cdb69c..24a920be743f5 100644 --- a/app/code/Magento/Checkout/composer.json +++ b/app/code/Magento/Checkout/composer.json @@ -27,7 +27,7 @@ "magento/module-cookie": "100.1.*" }, "type": "magento2-module", - "version": "100.1.8", + "version": "100.1.9", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CheckoutAgreements/composer.json b/app/code/Magento/CheckoutAgreements/composer.json index 56144e3d32e4f..82032daa092e8 100644 --- a/app/code/Magento/CheckoutAgreements/composer.json +++ b/app/code/Magento/CheckoutAgreements/composer.json @@ -10,7 +10,7 @@ "magento/framework": "100.1.*" }, "type": "magento2-module", - "version": "100.1.2", + "version": "100.1.3", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Cms/composer.json b/app/code/Magento/Cms/composer.json index e1d8b4fb68dd8..95c97bb00ce63 100644 --- a/app/code/Magento/Cms/composer.json +++ b/app/code/Magento/Cms/composer.json @@ -18,7 +18,7 @@ "magento/module-cms-sample-data": "Sample Data version:100.1.*" }, "type": "magento2-module", - "version": "101.0.7", + "version": "101.0.8", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CmsUrlRewrite/composer.json b/app/code/Magento/CmsUrlRewrite/composer.json index 341572fdf027e..b3a85874a3faf 100644 --- a/app/code/Magento/CmsUrlRewrite/composer.json +++ b/app/code/Magento/CmsUrlRewrite/composer.json @@ -9,7 +9,7 @@ "magento/framework": "100.1.*" }, "type": "magento2-module", - "version": "100.1.2", + "version": "100.1.3", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/ConfigurableProduct/composer.json b/app/code/Magento/ConfigurableProduct/composer.json index 40004a0bca4da..7e613f5848b4f 100644 --- a/app/code/Magento/ConfigurableProduct/composer.json +++ b/app/code/Magento/ConfigurableProduct/composer.json @@ -23,7 +23,7 @@ "magento/module-product-links-sample-data": "Sample Data version:100.1.*" }, "type": "magento2-module", - "version": "100.1.9", + "version": "100.1.10", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Cookie/composer.json b/app/code/Magento/Cookie/composer.json index ae6ce0e52b681..0af97399a3e3e 100644 --- a/app/code/Magento/Cookie/composer.json +++ b/app/code/Magento/Cookie/composer.json @@ -10,7 +10,7 @@ "magento/module-backend": "100.1.*" }, "type": "magento2-module", - "version": "100.1.2", + "version": "100.1.3", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Cron/composer.json b/app/code/Magento/Cron/composer.json index c4278c02642a9..e6a3d74dd06d3 100644 --- a/app/code/Magento/Cron/composer.json +++ b/app/code/Magento/Cron/composer.json @@ -10,7 +10,7 @@ "magento/module-config": "100.1.*" }, "type": "magento2-module", - "version": "100.1.3", + "version": "100.1.4", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Customer/composer.json b/app/code/Magento/Customer/composer.json index 3663d93008343..2e3d733ff9075 100644 --- a/app/code/Magento/Customer/composer.json +++ b/app/code/Magento/Customer/composer.json @@ -29,7 +29,7 @@ "magento/module-customer-sample-data": "Sample Data version:100.1.*" }, "type": "magento2-module", - "version": "100.1.8", + "version": "100.1.9", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Deploy/composer.json b/app/code/Magento/Deploy/composer.json index cf12a63d6a672..1455f39aaa94a 100644 --- a/app/code/Magento/Deploy/composer.json +++ b/app/code/Magento/Deploy/composer.json @@ -9,7 +9,7 @@ "magento/module-user": "100.1.*" }, "type": "magento2-module", - "version": "100.1.5", + "version": "100.1.6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Downloadable/composer.json b/app/code/Magento/Downloadable/composer.json index 89ff8078f4acd..36758eb0a46ff 100644 --- a/app/code/Magento/Downloadable/composer.json +++ b/app/code/Magento/Downloadable/composer.json @@ -25,7 +25,7 @@ "magento/module-downloadable-sample-data": "Sample Data version:100.1.*" }, "type": "magento2-module", - "version": "100.1.3", + "version": "100.1.4", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Eav/composer.json b/app/code/Magento/Eav/composer.json index 12a37f0edc51b..60811ee4da223 100644 --- a/app/code/Magento/Eav/composer.json +++ b/app/code/Magento/Eav/composer.json @@ -11,7 +11,7 @@ "magento/framework": "100.1.*" }, "type": "magento2-module", - "version": "100.1.6", + "version": "100.1.7", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Email/composer.json b/app/code/Magento/Email/composer.json index a3346295209bf..268e870410687 100644 --- a/app/code/Magento/Email/composer.json +++ b/app/code/Magento/Email/composer.json @@ -12,7 +12,7 @@ "magento/framework": "100.1.*" }, "type": "magento2-module", - "version": "100.1.5", + "version": "100.1.6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Fedex/composer.json b/app/code/Magento/Fedex/composer.json index 4923bdb740d20..fa05ec535e762 100644 --- a/app/code/Magento/Fedex/composer.json +++ b/app/code/Magento/Fedex/composer.json @@ -15,7 +15,7 @@ "lib-libxml": "*" }, "type": "magento2-module", - "version": "100.1.3", + "version": "100.1.4", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/ImportExport/composer.json b/app/code/Magento/ImportExport/composer.json index 6a5590ff7da2d..b7a716d861472 100644 --- a/app/code/Magento/ImportExport/composer.json +++ b/app/code/Magento/ImportExport/composer.json @@ -11,7 +11,7 @@ "ext-ctype": "*" }, "type": "magento2-module", - "version": "100.1.4", + "version": "100.1.5", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Indexer/composer.json b/app/code/Magento/Indexer/composer.json index e5cb6e4a3a6bc..f5af34ba8609a 100644 --- a/app/code/Magento/Indexer/composer.json +++ b/app/code/Magento/Indexer/composer.json @@ -7,7 +7,7 @@ "magento/framework": "100.1.*" }, "type": "magento2-module", - "version": "100.1.3", + "version": "100.1.4", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Multishipping/composer.json b/app/code/Magento/Multishipping/composer.json index dfd6b0531acf1..cf3abc07a83f8 100644 --- a/app/code/Magento/Multishipping/composer.json +++ b/app/code/Magento/Multishipping/composer.json @@ -14,7 +14,7 @@ "magento/framework": "100.1.*" }, "type": "magento2-module", - "version": "100.1.2", + "version": "100.1.3", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/PageCache/composer.json b/app/code/Magento/PageCache/composer.json index c8619d5791482..7d789cc753f82 100644 --- a/app/code/Magento/PageCache/composer.json +++ b/app/code/Magento/PageCache/composer.json @@ -9,7 +9,7 @@ "magento/framework": "100.1.*" }, "type": "magento2-module", - "version": "100.1.4", + "version": "100.1.5", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Paypal/composer.json b/app/code/Magento/Paypal/composer.json index 2e1350b0cdb80..78ae08700b72b 100644 --- a/app/code/Magento/Paypal/composer.json +++ b/app/code/Magento/Paypal/composer.json @@ -25,7 +25,7 @@ "magento/module-checkout-agreements": "100.1.*" }, "type": "magento2-module", - "version": "100.1.6", + "version": "100.1.7", "license": [ "proprietary" ], diff --git a/app/code/Magento/Persistent/composer.json b/app/code/Magento/Persistent/composer.json index 6c90a0da8d8e3..1293dce77941f 100644 --- a/app/code/Magento/Persistent/composer.json +++ b/app/code/Magento/Persistent/composer.json @@ -12,7 +12,7 @@ "magento/framework": "100.1.*" }, "type": "magento2-module", - "version": "100.1.3", + "version": "100.1.4", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/ProductVideo/composer.json b/app/code/Magento/ProductVideo/composer.json index beb3cd0a0589c..b872fc4c15ee7 100644 --- a/app/code/Magento/ProductVideo/composer.json +++ b/app/code/Magento/ProductVideo/composer.json @@ -15,7 +15,7 @@ "magento/module-customer": "100.1.*" }, "type": "magento2-module", - "version": "100.1.6", + "version": "100.1.7", "license": [ "proprietary" ], diff --git a/app/code/Magento/Quote/composer.json b/app/code/Magento/Quote/composer.json index bd5a1359df322..bc24eb160d32a 100644 --- a/app/code/Magento/Quote/composer.json +++ b/app/code/Magento/Quote/composer.json @@ -20,7 +20,7 @@ "magento/framework": "100.1.*" }, "type": "magento2-module", - "version": "100.1.5", + "version": "100.1.6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Review/composer.json b/app/code/Magento/Review/composer.json index 03243034d2586..dcd2efe345852 100644 --- a/app/code/Magento/Review/composer.json +++ b/app/code/Magento/Review/composer.json @@ -18,7 +18,7 @@ "magento/module-review-sample-data": "Sample Data version:100.1.*" }, "type": "magento2-module", - "version": "100.1.4", + "version": "100.1.5", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Rule/composer.json b/app/code/Magento/Rule/composer.json index 7b6889b9d1a11..01320870750b1 100644 --- a/app/code/Magento/Rule/composer.json +++ b/app/code/Magento/Rule/composer.json @@ -11,7 +11,7 @@ "lib-libxml": "*" }, "type": "magento2-module", - "version": "100.1.5", + "version": "100.1.6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Sales/composer.json b/app/code/Magento/Sales/composer.json index 58ea9b8f65e6a..8e47c076cb4a0 100644 --- a/app/code/Magento/Sales/composer.json +++ b/app/code/Magento/Sales/composer.json @@ -32,7 +32,7 @@ "magento/module-sales-sample-data": "Sample Data version:100.1.*" }, "type": "magento2-module", - "version": "100.1.8", + "version": "100.1.9", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/SalesRule/composer.json b/app/code/Magento/SalesRule/composer.json index 11abcb4f7135c..0b4041962cec0 100644 --- a/app/code/Magento/SalesRule/composer.json +++ b/app/code/Magento/SalesRule/composer.json @@ -25,7 +25,7 @@ "magento/module-sales-rule-sample-data": "Sample Data version:100.1.*" }, "type": "magento2-module", - "version": "100.1.4", + "version": "100.1.5", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Search/composer.json b/app/code/Magento/Search/composer.json index f5bcf5b57bfd8..c8ffd9323e561 100644 --- a/app/code/Magento/Search/composer.json +++ b/app/code/Magento/Search/composer.json @@ -11,7 +11,7 @@ "magento/module-ui": "100.1.*" }, "type": "magento2-module", - "version": "100.1.3", + "version": "100.1.4", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Shipping/composer.json b/app/code/Magento/Shipping/composer.json index 11adb7ce24bfb..e952301461d2e 100644 --- a/app/code/Magento/Shipping/composer.json +++ b/app/code/Magento/Shipping/composer.json @@ -24,7 +24,7 @@ "magento/module-ups": "100.1.*" }, "type": "magento2-module", - "version": "100.1.3", + "version": "100.1.4", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Store/composer.json b/app/code/Magento/Store/composer.json index 15227fc708513..a2c3887360d41 100644 --- a/app/code/Magento/Store/composer.json +++ b/app/code/Magento/Store/composer.json @@ -14,7 +14,7 @@ "magento/module-deploy": "100.1.*" }, "type": "magento2-module", - "version": "100.1.7", + "version": "100.1.8", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Swatches/composer.json b/app/code/Magento/Swatches/composer.json index 97a3fa0fe1af0..96ac899ccf386 100644 --- a/app/code/Magento/Swatches/composer.json +++ b/app/code/Magento/Swatches/composer.json @@ -19,7 +19,7 @@ "magento/module-swatches-sample-data": "Sample Data version:100.1.*" }, "type": "magento2-module", - "version": "100.1.8", + "version": "100.1.9", "license": [ "proprietary" ], diff --git a/app/code/Magento/Theme/composer.json b/app/code/Magento/Theme/composer.json index 9a50387d7e93b..b09eb09e1d4d4 100644 --- a/app/code/Magento/Theme/composer.json +++ b/app/code/Magento/Theme/composer.json @@ -21,7 +21,7 @@ "magento/module-theme-sample-data": "Sample Data version:100.1.*" }, "type": "magento2-module", - "version": "100.1.7", + "version": "100.1.8", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Ui/composer.json b/app/code/Magento/Ui/composer.json index f36babd506daf..20961102ae656 100644 --- a/app/code/Magento/Ui/composer.json +++ b/app/code/Magento/Ui/composer.json @@ -10,7 +10,7 @@ "magento/module-user": "100.1.*" }, "type": "magento2-module", - "version": "100.1.7", + "version": "100.1.8", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/UrlRewrite/composer.json b/app/code/Magento/UrlRewrite/composer.json index abc48f12312a8..639d60653e293 100644 --- a/app/code/Magento/UrlRewrite/composer.json +++ b/app/code/Magento/UrlRewrite/composer.json @@ -12,7 +12,7 @@ "magento/module-cms-url-rewrite": "100.1.*" }, "type": "magento2-module", - "version": "100.1.3", + "version": "100.1.4", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Widget/composer.json b/app/code/Magento/Widget/composer.json index efaf4af60b84d..307cb6007d6da 100644 --- a/app/code/Magento/Widget/composer.json +++ b/app/code/Magento/Widget/composer.json @@ -16,7 +16,7 @@ "magento/module-widget-sample-data": "Sample Data version:100.1.*" }, "type": "magento2-module", - "version": "100.1.5", + "version": "100.1.6", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Wishlist/composer.json b/app/code/Magento/Wishlist/composer.json index a267dd7daf417..1c0cade018a4e 100644 --- a/app/code/Magento/Wishlist/composer.json +++ b/app/code/Magento/Wishlist/composer.json @@ -24,7 +24,7 @@ "magento/module-wishlist-sample-data": "Sample Data version:100.1.*" }, "type": "magento2-module", - "version": "100.1.6", + "version": "100.1.7", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/design/frontend/Magento/blank/composer.json b/app/design/frontend/Magento/blank/composer.json index 4e8c9921cd313..a9b0f41c244ae 100644 --- a/app/design/frontend/Magento/blank/composer.json +++ b/app/design/frontend/Magento/blank/composer.json @@ -6,7 +6,7 @@ "magento/framework": "100.1.*" }, "type": "magento2-theme", - "version": "100.1.6", + "version": "100.1.7", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/composer.json b/composer.json index 671935cd64393..5ccc2a640ff6c 100644 --- a/composer.json +++ b/composer.json @@ -2,7 +2,7 @@ "name": "magento/magento2ce", "description": "Magento 2 (Community Edition)", "type": "project", - "version": "2.1.10-dev", + "version": "2.1.10", "license": [ "OSL-3.0", "AFL-3.0" @@ -81,94 +81,94 @@ "magento/module-advanced-pricing-import-export": "100.1.3", "magento/module-authorization": "100.1.2", "magento/module-authorizenet": "100.1.5", - "magento/module-backend": "100.1.4", + "magento/module-backend": "100.1.5", "magento/module-backup": "100.1.3", - "magento/module-braintree": "100.1.6", - "magento/module-bundle": "100.1.4", - "magento/module-bundle-import-export": "100.1.3", + "magento/module-braintree": "100.1.7", + "magento/module-bundle": "100.1.5", + "magento/module-bundle-import-export": "100.1.4", "magento/module-cache-invalidate": "100.1.3", "magento/module-captcha": "100.1.3", - "magento/module-catalog": "101.0.9", - "magento/module-catalog-import-export": "100.1.6", + "magento/module-catalog": "101.0.10", + "magento/module-catalog-import-export": "100.1.7", "magento/module-catalog-inventory": "100.1.6", - "magento/module-catalog-rule": "100.1.4", + "magento/module-catalog-rule": "100.1.5", "magento/module-catalog-rule-configurable": "100.1.3", - "magento/module-catalog-search": "100.1.7", - "magento/module-catalog-url-rewrite": "100.1.4", - "magento/module-catalog-widget": "100.1.3", - "magento/module-checkout": "100.1.8", - "magento/module-checkout-agreements": "100.1.2", - "magento/module-cms": "101.0.7", - "magento/module-cms-url-rewrite": "100.1.2", + "magento/module-catalog-search": "100.1.8", + "magento/module-catalog-url-rewrite": "100.1.5", + "magento/module-catalog-widget": "100.1.4", + "magento/module-checkout": "100.1.9", + "magento/module-checkout-agreements": "100.1.3", + "magento/module-cms": "101.0.8", + "magento/module-cms-url-rewrite": "100.1.3", "magento/module-config": "100.1.6", "magento/module-configurable-import-export": "100.1.3", - "magento/module-configurable-product": "100.1.9", + "magento/module-configurable-product": "100.1.10", "magento/module-contact": "100.1.3", - "magento/module-cookie": "100.1.2", - "magento/module-cron": "100.1.3", + "magento/module-cookie": "100.1.3", + "magento/module-cron": "100.1.4", "magento/module-currency-symbol": "100.1.3", - "magento/module-customer": "100.1.8", + "magento/module-customer": "100.1.9", "magento/module-customer-import-export": "100.1.4", - "magento/module-deploy": "100.1.5", + "magento/module-deploy": "100.1.6", "magento/module-developer": "100.1.3", "magento/module-dhl": "100.1.3", "magento/module-directory": "100.1.4", - "magento/module-downloadable": "100.1.3", + "magento/module-downloadable": "100.1.4", "magento/module-downloadable-import-export": "100.1.2", - "magento/module-eav": "100.1.6", - "magento/module-email": "100.1.5", + "magento/module-eav": "100.1.7", + "magento/module-email": "100.1.6", "magento/module-encryption-key": "100.1.2", - "magento/module-fedex": "100.1.3", + "magento/module-fedex": "100.1.4", "magento/module-gift-message": "100.1.4", "magento/module-google-adwords": "100.1.2", "magento/module-google-analytics": "100.1.2", "magento/module-google-optimizer": "100.1.2", "magento/module-grouped-import-export": "100.1.2", "magento/module-grouped-product": "100.1.4", - "magento/module-import-export": "100.1.4", - "magento/module-indexer": "100.1.3", + "magento/module-import-export": "100.1.5", + "magento/module-indexer": "100.1.4", "magento/module-integration": "100.1.5", "magento/module-layered-navigation": "100.1.2", "magento/module-media-storage": "100.1.3", "magento/module-msrp": "100.1.3", - "magento/module-multishipping": "100.1.2", + "magento/module-multishipping": "100.1.3", "magento/module-new-relic-reporting": "100.1.3", "magento/module-newsletter": "100.1.4", "magento/module-offline-payments": "100.1.2", "magento/module-offline-shipping": "100.1.3", - "magento/module-page-cache": "100.1.4", + "magento/module-page-cache": "100.1.5", "magento/module-payment": "100.1.7", - "magento/module-paypal": "100.1.6", - "magento/module-persistent": "100.1.3", + "magento/module-paypal": "100.1.7", + "magento/module-persistent": "100.1.4", "magento/module-product-alert": "100.1.3", - "magento/module-product-video": "100.1.6", - "magento/module-quote": "100.1.5", + "magento/module-product-video": "100.1.7", + "magento/module-quote": "100.1.6", "magento/module-reports": "100.1.5", "magento/module-require-js": "100.1.3", - "magento/module-review": "100.1.4", + "magento/module-review": "100.1.5", "magento/module-rss": "100.1.3", - "magento/module-rule": "100.1.5", - "magento/module-sales": "100.1.8", - "magento/module-sales-rule": "100.1.4", + "magento/module-rule": "100.1.6", + "magento/module-sales": "100.1.9", + "magento/module-sales-rule": "100.1.5", "magento/module-sales-inventory": "100.1.1", "magento/module-sales-sequence": "100.1.3", "magento/module-sample-data": "100.1.3", - "magento/module-search": "100.1.3", + "magento/module-search": "100.1.4", "magento/module-security": "100.1.3", "magento/module-send-friend": "100.1.2", - "magento/module-shipping": "100.1.3", + "magento/module-shipping": "100.1.4", "magento/module-sitemap": "100.1.4", - "magento/module-store": "100.1.7", + "magento/module-store": "100.1.8", "magento/module-swagger": "100.1.2", - "magento/module-swatches": "100.1.8", + "magento/module-swatches": "100.1.9", "magento/module-swatches-layered-navigation": "100.1.2", "magento/module-tax": "100.1.3", "magento/module-tax-import-export": "100.1.2", - "magento/module-theme": "100.1.7", + "magento/module-theme": "100.1.8", "magento/module-translation": "100.1.3", - "magento/module-ui": "100.1.7", + "magento/module-ui": "100.1.8", "magento/module-ups": "100.1.4", - "magento/module-url-rewrite": "100.1.3", + "magento/module-url-rewrite": "100.1.4", "magento/module-user": "100.1.3", "magento/module-usps": "100.1.4", "magento/module-variable": "100.1.2", @@ -177,10 +177,10 @@ "magento/module-webapi": "100.1.4", "magento/module-webapi-security": "100.1.2", "magento/module-weee": "100.1.2", - "magento/module-widget": "100.1.5", - "magento/module-wishlist": "100.1.6", + "magento/module-widget": "100.1.6", + "magento/module-wishlist": "100.1.7", "magento/theme-adminhtml-backend": "100.1.2", - "magento/theme-frontend-blank": "100.1.6", + "magento/theme-frontend-blank": "100.1.7", "magento/theme-frontend-luma": "100.1.7", "magento/language-de_de": "100.1.1", "magento/language-en_us": "100.1.1", @@ -189,7 +189,7 @@ "magento/language-nl_nl": "100.1.1", "magento/language-pt_br": "100.1.1", "magento/language-zh_hans_cn": "100.1.1", - "magento/framework": "100.1.9", + "magento/framework": "100.1.10", "trentrichardson/jquery-timepicker-addon": "1.4.3", "components/jquery": "1.11.0", "blueimp/jquery-file-upload": "5.6.14", diff --git a/composer.lock b/composer.lock index 9ff81465dcf17..c0cd2a820e01c 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "06a9ec2be93fff3205526c19048a0d74", - "content-hash": "a6fb1ae7dab52b198789e1fd20e0843c", + "content-hash": "1b5c1a89e6da4574010c01595ef7987e", "packages": [ { "name": "braintree/braintree_php", @@ -52,7 +51,7 @@ } ], "description": "Braintree PHP Client Library", - "time": "2015-11-19 19:14:47" + "time": "2015-11-19T19:14:47+00:00" }, { "name": "colinmollenhour/cache-backend-file", @@ -88,7 +87,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": "2016-05-02 16:24:47" + "time": "2016-05-02T16:24:47+00:00" }, { "name": "colinmollenhour/cache-backend-redis", @@ -124,7 +123,7 @@ ], "description": "Zend_Cache backend using Redis with full support for tags.", "homepage": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis", - "time": "2016-05-02 16:23:36" + "time": "2016-05-02T16:23:36+00:00" }, { "name": "colinmollenhour/credis", @@ -163,7 +162,7 @@ ], "description": "Credis is a lightweight interface to the Redis key-value store which wraps the phpredis library when available for better performance.", "homepage": "https://github.com/colinmollenhour/credis", - "time": "2015-11-28 01:20:04" + "time": "2015-11-28T01:20:04+00:00" }, { "name": "colinmollenhour/php-redis-session-abstract", @@ -201,7 +200,7 @@ ], "description": "A Redis-based session handler with optimistic locking", "homepage": "https://github.com/colinmollenhour/php-redis-session-abstract", - "time": "2016-08-04 18:05:51" + "time": "2016-08-04T18:05:51+00:00" }, { "name": "composer/composer", @@ -276,7 +275,7 @@ "dependency", "package" ], - "time": "2016-03-03 15:15:10" + "time": "2016-03-03T15:15:10+00:00" }, { "name": "composer/semver", @@ -338,7 +337,7 @@ "validation", "versioning" ], - "time": "2016-08-30 16:08:34" + "time": "2016-08-30T16:08:34+00:00" }, { "name": "composer/spdx-licenses", @@ -399,7 +398,7 @@ "spdx", "validator" ], - "time": "2017-04-03 19:08:52" + "time": "2017-04-03T19:08:52+00:00" }, { "name": "justinrainbow/json-schema", @@ -465,7 +464,7 @@ "json", "schema" ], - "time": "2016-01-25 15:43:01" + "time": "2016-01-25T15:43:01+00:00" }, { "name": "league/climate", @@ -514,7 +513,7 @@ "php", "terminal" ], - "time": "2015-01-18 14:31:58" + "time": "2015-01-18T14:31:58+00:00" }, { "name": "magento/composer", @@ -550,7 +549,7 @@ "AFL-3.0" ], "description": "Magento composer library helps to instantiate Composer application and run composer commands.", - "time": "2016-03-08 20:50:51" + "time": "2016-03-08T20:50:51+00:00" }, { "name": "magento/magento-composer-installer", @@ -629,7 +628,7 @@ "composer-installer", "magento" ], - "time": "2016-10-06 16:05:07" + "time": "2016-10-06T16:05:07+00:00" }, { "name": "magento/zendframework1", @@ -676,7 +675,7 @@ "ZF1", "framework" ], - "time": "2017-02-27 21:19:07" + "time": "2017-02-27T21:19:07+00:00" }, { "name": "monolog/monolog", @@ -752,7 +751,7 @@ "logging", "psr-3" ], - "time": "2015-08-09 17:44:44" + "time": "2015-08-09T17:44:44+00:00" }, { "name": "oyejorge/less.php", @@ -814,7 +813,7 @@ "php", "stylesheet" ], - "time": "2017-03-28 22:19:25" + "time": "2017-03-28T22:19:25+00:00" }, { "name": "pelago/emogrifier", @@ -870,20 +869,20 @@ ], "description": "Converts CSS styles into inline style attributes in your HTML code", "homepage": "http://www.pelagodesign.com/sidecar/emogrifier/", - "time": "2015-05-15 11:37:51" + "time": "2015-05-15T11:37:51+00:00" }, { "name": "phpseclib/phpseclib", - "version": "2.0.6", + "version": "2.0.7", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "34a7699e6f31b1ef4035ee36444407cecf9f56aa" + "reference": "f4b6a522dfa1fd1e477c9cfe5909d5b31f098c0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/34a7699e6f31b1ef4035ee36444407cecf9f56aa", - "reference": "34a7699e6f31b1ef4035ee36444407cecf9f56aa", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/f4b6a522dfa1fd1e477c9cfe5909d5b31f098c0b", + "reference": "f4b6a522dfa1fd1e477c9cfe5909d5b31f098c0b", "shasum": "" }, "require": { @@ -962,7 +961,7 @@ "x.509", "x509" ], - "time": "2017-06-05 06:31:10" + "time": "2017-10-23T05:04:54+00:00" }, { "name": "psr/log", @@ -1009,7 +1008,7 @@ "psr", "psr-3" ], - "time": "2016-10-10 12:19:37" + "time": "2016-10-10T12:19:37+00:00" }, { "name": "seld/cli-prompt", @@ -1057,7 +1056,7 @@ "input", "prompt" ], - "time": "2017-03-18 11:32:45" + "time": "2017-03-18T11:32:45+00:00" }, { "name": "seld/jsonlint", @@ -1106,7 +1105,7 @@ "parser", "validator" ], - "time": "2017-06-18 15:11:04" + "time": "2017-06-18T15:11:04+00:00" }, { "name": "seld/phar-utils", @@ -1150,7 +1149,7 @@ "keywords": [ "phra" ], - "time": "2015-10-13 18:44:15" + "time": "2015-10-13T18:44:15+00:00" }, { "name": "sjparkinson/static-review", @@ -1203,7 +1202,7 @@ } ], "description": "An extendable framework for version control hooks.", - "time": "2014-09-22 08:40:36" + "time": "2014-09-22T08:40:36+00:00" }, { "name": "symfony/console", @@ -1261,20 +1260,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2015-07-26 09:08:40" + "time": "2015-07-26T09:08:40+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v2.8.27", + "version": "v2.8.28", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "1377400fd641d7d1935981546aaef780ecd5bf6d" + "reference": "7fe089232554357efb8d4af65ce209fc6e5a2186" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1377400fd641d7d1935981546aaef780ecd5bf6d", - "reference": "1377400fd641d7d1935981546aaef780ecd5bf6d", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7fe089232554357efb8d4af65ce209fc6e5a2186", + "reference": "7fe089232554357efb8d4af65ce209fc6e5a2186", "shasum": "" }, "require": { @@ -1321,20 +1320,20 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2017-06-02 07:47:27" + "time": "2017-10-01T21:00:16+00:00" }, { "name": "symfony/filesystem", - "version": "v3.3.9", + "version": "v3.3.10", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "b32a0e5f928d0fa3d1dd03c78d020777e50c10cb" + "reference": "90bc45abf02ae6b7deb43895c1052cb0038506f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b32a0e5f928d0fa3d1dd03c78d020777e50c10cb", - "reference": "b32a0e5f928d0fa3d1dd03c78d020777e50c10cb", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/90bc45abf02ae6b7deb43895c1052cb0038506f1", + "reference": "90bc45abf02ae6b7deb43895c1052cb0038506f1", "shasum": "" }, "require": { @@ -1370,20 +1369,20 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2017-07-29 21:54:42" + "time": "2017-10-03T13:33:10+00:00" }, { "name": "symfony/finder", - "version": "v3.3.9", + "version": "v3.3.10", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "b2260dbc80f3c4198f903215f91a1ac7fe9fe09e" + "reference": "773e19a491d97926f236942484cb541560ce862d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/b2260dbc80f3c4198f903215f91a1ac7fe9fe09e", - "reference": "b2260dbc80f3c4198f903215f91a1ac7fe9fe09e", + "url": "https://api.github.com/repos/symfony/finder/zipball/773e19a491d97926f236942484cb541560ce862d", + "reference": "773e19a491d97926f236942484cb541560ce862d", "shasum": "" }, "require": { @@ -1419,20 +1418,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2017-07-29 21:54:42" + "time": "2017-10-02T06:42:24+00:00" }, { "name": "symfony/process", - "version": "v2.8.27", + "version": "v2.8.28", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "57e52a0a6a80ea0aec4fc1b785a7920a95cb88a8" + "reference": "26c9fb02bf06bd6b90f661a5bd17e510810d0176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/57e52a0a6a80ea0aec4fc1b785a7920a95cb88a8", - "reference": "57e52a0a6a80ea0aec4fc1b785a7920a95cb88a8", + "url": "https://api.github.com/repos/symfony/process/zipball/26c9fb02bf06bd6b90f661a5bd17e510810d0176", + "reference": "26c9fb02bf06bd6b90f661a5bd17e510810d0176", "shasum": "" }, "require": { @@ -1468,7 +1467,7 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2017-07-03 08:04:30" + "time": "2017-10-01T21:00:16+00:00" }, { "name": "tedivm/jshrink", @@ -1514,7 +1513,7 @@ "javascript", "minifier" ], - "time": "2014-11-11 03:54:14" + "time": "2014-11-11T03:54:14+00:00" }, { "name": "tubalmartin/cssmin", @@ -1558,7 +1557,7 @@ "minify", "yui" ], - "time": "2014-09-22 08:08:50" + "time": "2014-09-22T08:08:50+00:00" }, { "name": "zendframework/zend-code", @@ -1611,7 +1610,7 @@ "code", "zf2" ], - "time": "2015-05-11 16:17:05" + "time": "2015-05-11T16:17:05+00:00" }, { "name": "zendframework/zend-config", @@ -1668,7 +1667,7 @@ "config", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-console", @@ -1718,7 +1717,7 @@ "console", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-crypt", @@ -1770,7 +1769,7 @@ "crypt", "zf2" ], - "time": "2015-11-23 16:33:27" + "time": "2015-11-23T16:33:27+00:00" }, { "name": "zendframework/zend-di", @@ -1821,7 +1820,7 @@ "di", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-escaper", @@ -1866,7 +1865,7 @@ "escaper", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-eventmanager", @@ -1912,7 +1911,7 @@ "eventmanager", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-filter", @@ -1968,7 +1967,7 @@ "filter", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-form", @@ -2039,7 +2038,7 @@ "form", "zf2" ], - "time": "2015-09-09 19:11:05" + "time": "2015-09-09T19:11:05+00:00" }, { "name": "zendframework/zend-http", @@ -2090,7 +2089,7 @@ "http", "zf2" ], - "time": "2015-09-14 16:11:20" + "time": "2015-09-14T16:11:20+00:00" }, { "name": "zendframework/zend-i18n", @@ -2154,7 +2153,7 @@ "i18n", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-inputfilter", @@ -2205,7 +2204,7 @@ "inputfilter", "zf2" ], - "time": "2015-09-09 15:44:54" + "time": "2015-09-09T15:44:54+00:00" }, { "name": "zendframework/zend-json", @@ -2259,7 +2258,7 @@ "json", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-loader", @@ -2304,7 +2303,7 @@ "loader", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-log", @@ -2366,7 +2365,7 @@ "logging", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-math", @@ -2417,7 +2416,7 @@ "math", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-modulemanager", @@ -2475,7 +2474,7 @@ "modulemanager", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-mvc", @@ -2563,7 +2562,7 @@ "mvc", "zf2" ], - "time": "2015-09-14 16:32:50" + "time": "2015-09-14T16:32:50+00:00" }, { "name": "zendframework/zend-serializer", @@ -2616,7 +2615,7 @@ "serializer", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-server", @@ -2663,7 +2662,7 @@ "server", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-servicemanager", @@ -2713,7 +2712,7 @@ "servicemanager", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-soap", @@ -2765,7 +2764,7 @@ "soap", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-stdlib", @@ -2820,7 +2819,7 @@ "stdlib", "zf2" ], - "time": "2015-07-21 13:55:46" + "time": "2015-07-21T13:55:46+00:00" }, { "name": "zendframework/zend-text", @@ -2867,7 +2866,7 @@ "text", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-uri", @@ -2915,7 +2914,7 @@ "uri", "zf2" ], - "time": "2015-09-14 16:17:10" + "time": "2015-09-14T16:17:10+00:00" }, { "name": "zendframework/zend-validator", @@ -2980,7 +2979,7 @@ "validator", "zf2" ], - "time": "2015-09-08 21:04:17" + "time": "2015-09-08T21:04:17+00:00" }, { "name": "zendframework/zend-view", @@ -3057,7 +3056,7 @@ "view", "zf2" ], - "time": "2015-06-16 15:22:37" + "time": "2015-06-16T15:22:37+00:00" } ], "packages-dev": [ @@ -3113,7 +3112,7 @@ "constructor", "instantiate" ], - "time": "2015-06-14 21:17:01" + "time": "2015-06-14T21:17:01+00:00" }, { "name": "fabpot/php-cs-fixer", @@ -3172,7 +3171,7 @@ ], "description": "A tool to automatically fix PHP code style", "abandoned": "friendsofphp/php-cs-fixer", - "time": "2017-09-11 14:11:16" + "time": "2017-09-11T14:11:16+00:00" }, { "name": "lusitanian/oauth", @@ -3239,7 +3238,7 @@ "oauth", "security" ], - "time": "2015-10-07 00:20:04" + "time": "2015-10-07T00:20:04+00:00" }, { "name": "pdepend/pdepend", @@ -3279,7 +3278,7 @@ "BSD-3-Clause" ], "description": "Official version of pdepend to be handled with Composer", - "time": "2017-01-10 13:45:16" + "time": "2017-01-10T13:45:16+00:00" }, { "name": "phpmd/phpmd", @@ -3344,7 +3343,7 @@ "phpmd", "pmd" ], - "time": "2016-11-23 20:33:32" + "time": "2016-11-23T20:33:32+00:00" }, { "name": "phpunit/php-code-coverage", @@ -3406,7 +3405,7 @@ "testing", "xunit" ], - "time": "2015-10-06 15:47:00" + "time": "2015-10-06T15:47:00+00:00" }, { "name": "phpunit/php-file-iterator", @@ -3451,7 +3450,7 @@ "filesystem", "iterator" ], - "time": "2013-10-10 15:34:57" + "time": "2013-10-10T15:34:57+00:00" }, { "name": "phpunit/php-text-template", @@ -3492,7 +3491,7 @@ "keywords": [ "template" ], - "time": "2015-06-21 13:50:34" + "time": "2015-06-21T13:50:34+00:00" }, { "name": "phpunit/php-timer", @@ -3541,7 +3540,7 @@ "keywords": [ "timer" ], - "time": "2017-02-26 11:10:40" + "time": "2017-02-26T11:10:40+00:00" }, { "name": "phpunit/php-token-stream", @@ -3590,7 +3589,7 @@ "keywords": [ "tokenizer" ], - "time": "2017-02-27 10:12:30" + "time": "2017-02-27T10:12:30+00:00" }, { "name": "phpunit/phpunit", @@ -3664,7 +3663,7 @@ "testing", "xunit" ], - "time": "2014-05-02 07:13:40" + "time": "2014-05-02T07:13:40+00:00" }, { "name": "phpunit/phpunit-mock-objects", @@ -3720,7 +3719,7 @@ "mock", "xunit" ], - "time": "2015-10-02 06:51:40" + "time": "2015-10-02T06:51:40+00:00" }, { "name": "sebastian/comparator", @@ -3784,7 +3783,7 @@ "compare", "equality" ], - "time": "2017-01-29 09:50:25" + "time": "2017-01-29T09:50:25+00:00" }, { "name": "sebastian/diff", @@ -3836,7 +3835,7 @@ "keywords": [ "diff" ], - "time": "2017-05-22 07:24:03" + "time": "2017-05-22T07:24:03+00:00" }, { "name": "sebastian/environment", @@ -3886,7 +3885,7 @@ "environment", "hhvm" ], - "time": "2016-08-18 05:49:44" + "time": "2016-08-18T05:49:44+00:00" }, { "name": "sebastian/exporter", @@ -3953,7 +3952,7 @@ "export", "exporter" ], - "time": "2016-06-17 09:04:28" + "time": "2016-06-17T09:04:28+00:00" }, { "name": "sebastian/finder-facade", @@ -3992,7 +3991,7 @@ ], "description": "FinderFacade is a convenience wrapper for Symfony's Finder component.", "homepage": "https://github.com/sebastianbergmann/finder-facade", - "time": "2016-02-17 07:02:23" + "time": "2016-02-17T07:02:23+00:00" }, { "name": "sebastian/phpcpd", @@ -4043,7 +4042,7 @@ ], "description": "Copy/Paste Detector (CPD) for PHP code.", "homepage": "https://github.com/sebastianbergmann/phpcpd", - "time": "2013-11-08 09:05:42" + "time": "2013-11-08T09:05:42+00:00" }, { "name": "sebastian/recursion-context", @@ -4096,7 +4095,7 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-10-03 07:41:43" + "time": "2016-10-03T07:41:43+00:00" }, { "name": "sebastian/version", @@ -4131,7 +4130,7 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2015-06-21 13:59:46" + "time": "2015-06-21T13:59:46+00:00" }, { "name": "squizlabs/php_codesniffer", @@ -4206,7 +4205,7 @@ "phpcs", "standards" ], - "time": "2014-05-01 03:07:07" + "time": "2014-05-01T03:07:07+00:00" }, { "name": "symfony/config", @@ -4262,7 +4261,7 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2017-04-12 14:13:17" + "time": "2017-04-12T14:13:17+00:00" }, { "name": "symfony/dependency-injection", @@ -4322,20 +4321,20 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2017-01-28 00:04:57" + "time": "2017-01-28T00:04:57+00:00" }, { "name": "symfony/stopwatch", - "version": "v3.3.9", + "version": "v3.3.10", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "9a5610a8d6a50985a7be485c0ba745c22607beeb" + "reference": "170edf8b3247d7b6779eb6fa7428f342702ca184" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/9a5610a8d6a50985a7be485c0ba745c22607beeb", - "reference": "9a5610a8d6a50985a7be485c0ba745c22607beeb", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/170edf8b3247d7b6779eb6fa7428f342702ca184", + "reference": "170edf8b3247d7b6779eb6fa7428f342702ca184", "shasum": "" }, "require": { @@ -4371,20 +4370,20 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2017-07-29 21:54:42" + "time": "2017-10-02T06:42:24+00:00" }, { "name": "symfony/yaml", - "version": "v2.8.27", + "version": "v2.8.28", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "4c29dec8d489c4e37cf87ccd7166cd0b0e6a45c5" + "reference": "842fb6df22180244b4c65935ce1a88d324e5ff9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/4c29dec8d489c4e37cf87ccd7166cd0b0e6a45c5", - "reference": "4c29dec8d489c4e37cf87ccd7166cd0b0e6a45c5", + "url": "https://api.github.com/repos/symfony/yaml/zipball/842fb6df22180244b4c65935ce1a88d324e5ff9e", + "reference": "842fb6df22180244b4c65935ce1a88d324e5ff9e", "shasum": "" }, "require": { @@ -4420,7 +4419,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2017-06-01 20:52:29" + "time": "2017-10-05T14:38:30+00:00" }, { "name": "theseer/fdomdocument", @@ -4460,7 +4459,7 @@ ], "description": "The classes contained within this repository extend the standard DOM to use exceptions at all occasions of errors instead of PHP warnings or notices. They also add various custom methods and shortcuts for convenience and to simplify the usage of DOM.", "homepage": "https://github.com/theseer/fDOMDocument", - "time": "2017-06-30 11:53:12" + "time": "2017-06-30T11:53:12+00:00" } ], "aliases": [], diff --git a/lib/internal/Magento/Framework/composer.json b/lib/internal/Magento/Framework/composer.json index f16a178da3db4..dfce942050017 100644 --- a/lib/internal/Magento/Framework/composer.json +++ b/lib/internal/Magento/Framework/composer.json @@ -2,7 +2,7 @@ "name": "magento/framework", "description": "N/A", "type": "magento2-library", - "version": "100.1.9", + "version": "100.1.10", "license": [ "OSL-3.0", "AFL-3.0" From 6d98de6b5228eb759c6fc362fb86be3d45e3f61e Mon Sep 17 00:00:00 2001 From: vzabaznov Date: Wed, 8 Nov 2017 17:46:18 +0200 Subject: [PATCH 5/9] MAGETWO-80419: Merge release branch into 2.1-develop --- composer.lock | 199 +++++++++++++++++++++++++------------------------- 1 file changed, 99 insertions(+), 100 deletions(-) diff --git a/composer.lock b/composer.lock index c0cd2a820e01c..588e931973228 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,8 @@ "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": "1b5c1a89e6da4574010c01595ef7987e", + "hash": "82546d68af6520487e8cab0291fdb7d4", + "content-hash": "a27f428c822c62ebedc24b3636847470", "packages": [ { "name": "braintree/braintree_php", @@ -51,7 +52,7 @@ } ], "description": "Braintree PHP Client Library", - "time": "2015-11-19T19:14:47+00:00" + "time": "2015-11-19 19:14:47" }, { "name": "colinmollenhour/cache-backend-file", @@ -87,7 +88,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": "2016-05-02T16:24:47+00:00" + "time": "2016-05-02 16:24:47" }, { "name": "colinmollenhour/cache-backend-redis", @@ -123,31 +124,32 @@ ], "description": "Zend_Cache backend using Redis with full support for tags.", "homepage": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis", - "time": "2016-05-02T16:23:36+00:00" + "time": "2016-05-02 16:23:36" }, { "name": "colinmollenhour/credis", - "version": "1.6", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/colinmollenhour/credis.git", - "reference": "409edfd0ea81f5cb74afbdb86df54890c207b5e4" + "reference": "9c14b4bb0779127638a17dd8aab8f05f28c6df43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/credis/zipball/409edfd0ea81f5cb74afbdb86df54890c207b5e4", - "reference": "409edfd0ea81f5cb74afbdb86df54890c207b5e4", + "url": "https://api.github.com/repos/colinmollenhour/credis/zipball/9c14b4bb0779127638a17dd8aab8f05f28c6df43", + "reference": "9c14b4bb0779127638a17dd8aab8f05f28c6df43", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.4.0" }, "type": "library", "autoload": { "classmap": [ "Client.php", "Cluster.php", - "Sentinel.php" + "Sentinel.php", + "Module.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -162,26 +164,25 @@ ], "description": "Credis is a lightweight interface to the Redis key-value store which wraps the phpredis library when available for better performance.", "homepage": "https://github.com/colinmollenhour/credis", - "time": "2015-11-28T01:20:04+00:00" + "time": "2017-07-05 15:32:38" }, { "name": "colinmollenhour/php-redis-session-abstract", - "version": "v1.2", + "version": "v1.3.4", "source": { "type": "git", "url": "https://github.com/colinmollenhour/php-redis-session-abstract.git", - "reference": "2b552c9bbe06967329dd41e1bd3e0aed02313ddb" + "reference": "6f005b2c3755e4a96ddad821e2ea15d66fb314ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/php-redis-session-abstract/zipball/2b552c9bbe06967329dd41e1bd3e0aed02313ddb", - "reference": "2b552c9bbe06967329dd41e1bd3e0aed02313ddb", + "url": "https://api.github.com/repos/colinmollenhour/php-redis-session-abstract/zipball/6f005b2c3755e4a96ddad821e2ea15d66fb314ae", + "reference": "6f005b2c3755e4a96ddad821e2ea15d66fb314ae", "shasum": "" }, "require": { - "colinmollenhour/credis": "1.6", - "magento/zendframework1": "~1.12.0", - "php": "~5.5.0|~5.6.0|~7.0.0" + "colinmollenhour/credis": "~1.6", + "php": "~5.5.0|~5.6.0|~7.0.0|~7.1.0" }, "type": "library", "autoload": { @@ -200,7 +201,7 @@ ], "description": "A Redis-based session handler with optimistic locking", "homepage": "https://github.com/colinmollenhour/php-redis-session-abstract", - "time": "2016-08-04T18:05:51+00:00" + "time": "2017-03-22 16:13:03" }, { "name": "composer/composer", @@ -275,7 +276,7 @@ "dependency", "package" ], - "time": "2016-03-03T15:15:10+00:00" + "time": "2016-03-03 15:15:10" }, { "name": "composer/semver", @@ -337,7 +338,7 @@ "validation", "versioning" ], - "time": "2016-08-30T16:08:34+00:00" + "time": "2016-08-30 16:08:34" }, { "name": "composer/spdx-licenses", @@ -398,7 +399,7 @@ "spdx", "validator" ], - "time": "2017-04-03T19:08:52+00:00" + "time": "2017-04-03 19:08:52" }, { "name": "justinrainbow/json-schema", @@ -464,7 +465,7 @@ "json", "schema" ], - "time": "2016-01-25T15:43:01+00:00" + "time": "2016-01-25 15:43:01" }, { "name": "league/climate", @@ -513,7 +514,7 @@ "php", "terminal" ], - "time": "2015-01-18T14:31:58+00:00" + "time": "2015-01-18 14:31:58" }, { "name": "magento/composer", @@ -526,8 +527,8 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/magento/composer/zipball/b53f7c8a037860b467083e94de7c17cfd323e365", - "reference": "b53f7c8a037860b467083e94de7c17cfd323e365", - "shasum": "" + "reference": null, + "shasum": "2ca1c4e0d2d5e90fa1cd438e4a0775b6c7cbbe1a" }, "require": { "composer/composer": "1.0.0-beta1", @@ -543,13 +544,11 @@ "Magento\\Composer\\": "src" } }, - "notification-url": "https://packagist.org/downloads/", "license": [ "OSL-3.0", "AFL-3.0" ], - "description": "Magento composer library helps to instantiate Composer application and run composer commands.", - "time": "2016-03-08T20:50:51+00:00" + "description": "Magento composer library helps to instantiate Composer application and run composer commands." }, { "name": "magento/magento-composer-installer", @@ -628,7 +627,7 @@ "composer-installer", "magento" ], - "time": "2016-10-06T16:05:07+00:00" + "time": "2016-10-06 16:05:07" }, { "name": "magento/zendframework1", @@ -675,7 +674,7 @@ "ZF1", "framework" ], - "time": "2017-02-27T21:19:07+00:00" + "time": "2017-02-27 21:19:07" }, { "name": "monolog/monolog", @@ -751,7 +750,7 @@ "logging", "psr-3" ], - "time": "2015-08-09T17:44:44+00:00" + "time": "2015-08-09 17:44:44" }, { "name": "oyejorge/less.php", @@ -813,7 +812,7 @@ "php", "stylesheet" ], - "time": "2017-03-28T22:19:25+00:00" + "time": "2017-03-28 22:19:25" }, { "name": "pelago/emogrifier", @@ -869,7 +868,7 @@ ], "description": "Converts CSS styles into inline style attributes in your HTML code", "homepage": "http://www.pelagodesign.com/sidecar/emogrifier/", - "time": "2015-05-15T11:37:51+00:00" + "time": "2015-05-15 11:37:51" }, { "name": "phpseclib/phpseclib", @@ -961,7 +960,7 @@ "x.509", "x509" ], - "time": "2017-10-23T05:04:54+00:00" + "time": "2017-10-23 05:04:54" }, { "name": "psr/log", @@ -1008,7 +1007,7 @@ "psr", "psr-3" ], - "time": "2016-10-10T12:19:37+00:00" + "time": "2016-10-10 12:19:37" }, { "name": "seld/cli-prompt", @@ -1056,7 +1055,7 @@ "input", "prompt" ], - "time": "2017-03-18T11:32:45+00:00" + "time": "2017-03-18 11:32:45" }, { "name": "seld/jsonlint", @@ -1105,7 +1104,7 @@ "parser", "validator" ], - "time": "2017-06-18T15:11:04+00:00" + "time": "2017-06-18 15:11:04" }, { "name": "seld/phar-utils", @@ -1149,7 +1148,7 @@ "keywords": [ "phra" ], - "time": "2015-10-13T18:44:15+00:00" + "time": "2015-10-13 18:44:15" }, { "name": "sjparkinson/static-review", @@ -1202,7 +1201,7 @@ } ], "description": "An extendable framework for version control hooks.", - "time": "2014-09-22T08:40:36+00:00" + "time": "2014-09-22 08:40:36" }, { "name": "symfony/console", @@ -1260,7 +1259,7 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2015-07-26T09:08:40+00:00" + "time": "2015-07-26 09:08:40" }, { "name": "symfony/event-dispatcher", @@ -1320,7 +1319,7 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2017-10-01T21:00:16+00:00" + "time": "2017-10-01 21:00:16" }, { "name": "symfony/filesystem", @@ -1369,7 +1368,7 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2017-10-03T13:33:10+00:00" + "time": "2017-10-03 13:33:10" }, { "name": "symfony/finder", @@ -1418,7 +1417,7 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2017-10-02T06:42:24+00:00" + "time": "2017-10-02 06:42:24" }, { "name": "symfony/process", @@ -1467,7 +1466,7 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2017-10-01T21:00:16+00:00" + "time": "2017-10-01 21:00:16" }, { "name": "tedivm/jshrink", @@ -1513,7 +1512,7 @@ "javascript", "minifier" ], - "time": "2014-11-11T03:54:14+00:00" + "time": "2014-11-11 03:54:14" }, { "name": "tubalmartin/cssmin", @@ -1557,7 +1556,7 @@ "minify", "yui" ], - "time": "2014-09-22T08:08:50+00:00" + "time": "2014-09-22 08:08:50" }, { "name": "zendframework/zend-code", @@ -1610,7 +1609,7 @@ "code", "zf2" ], - "time": "2015-05-11T16:17:05+00:00" + "time": "2015-05-11 16:17:05" }, { "name": "zendframework/zend-config", @@ -1667,7 +1666,7 @@ "config", "zf2" ], - "time": "2015-05-07T14:55:31+00:00" + "time": "2015-05-07 14:55:31" }, { "name": "zendframework/zend-console", @@ -1717,7 +1716,7 @@ "console", "zf2" ], - "time": "2015-05-07T14:55:31+00:00" + "time": "2015-05-07 14:55:31" }, { "name": "zendframework/zend-crypt", @@ -1769,7 +1768,7 @@ "crypt", "zf2" ], - "time": "2015-11-23T16:33:27+00:00" + "time": "2015-11-23 16:33:27" }, { "name": "zendframework/zend-di", @@ -1820,7 +1819,7 @@ "di", "zf2" ], - "time": "2015-05-07T14:55:31+00:00" + "time": "2015-05-07 14:55:31" }, { "name": "zendframework/zend-escaper", @@ -1865,7 +1864,7 @@ "escaper", "zf2" ], - "time": "2015-05-07T14:55:31+00:00" + "time": "2015-05-07 14:55:31" }, { "name": "zendframework/zend-eventmanager", @@ -1911,7 +1910,7 @@ "eventmanager", "zf2" ], - "time": "2015-05-07T14:55:31+00:00" + "time": "2015-05-07 14:55:31" }, { "name": "zendframework/zend-filter", @@ -1967,7 +1966,7 @@ "filter", "zf2" ], - "time": "2015-05-07T14:55:31+00:00" + "time": "2015-05-07 14:55:31" }, { "name": "zendframework/zend-form", @@ -2038,7 +2037,7 @@ "form", "zf2" ], - "time": "2015-09-09T19:11:05+00:00" + "time": "2015-09-09 19:11:05" }, { "name": "zendframework/zend-http", @@ -2089,7 +2088,7 @@ "http", "zf2" ], - "time": "2015-09-14T16:11:20+00:00" + "time": "2015-09-14 16:11:20" }, { "name": "zendframework/zend-i18n", @@ -2153,7 +2152,7 @@ "i18n", "zf2" ], - "time": "2015-05-07T14:55:31+00:00" + "time": "2015-05-07 14:55:31" }, { "name": "zendframework/zend-inputfilter", @@ -2204,7 +2203,7 @@ "inputfilter", "zf2" ], - "time": "2015-09-09T15:44:54+00:00" + "time": "2015-09-09 15:44:54" }, { "name": "zendframework/zend-json", @@ -2258,7 +2257,7 @@ "json", "zf2" ], - "time": "2015-05-07T14:55:31+00:00" + "time": "2015-05-07 14:55:31" }, { "name": "zendframework/zend-loader", @@ -2303,7 +2302,7 @@ "loader", "zf2" ], - "time": "2015-05-07T14:55:31+00:00" + "time": "2015-05-07 14:55:31" }, { "name": "zendframework/zend-log", @@ -2365,7 +2364,7 @@ "logging", "zf2" ], - "time": "2015-05-07T14:55:31+00:00" + "time": "2015-05-07 14:55:31" }, { "name": "zendframework/zend-math", @@ -2416,7 +2415,7 @@ "math", "zf2" ], - "time": "2015-05-07T14:55:31+00:00" + "time": "2015-05-07 14:55:31" }, { "name": "zendframework/zend-modulemanager", @@ -2474,7 +2473,7 @@ "modulemanager", "zf2" ], - "time": "2015-05-07T14:55:31+00:00" + "time": "2015-05-07 14:55:31" }, { "name": "zendframework/zend-mvc", @@ -2562,7 +2561,7 @@ "mvc", "zf2" ], - "time": "2015-09-14T16:32:50+00:00" + "time": "2015-09-14 16:32:50" }, { "name": "zendframework/zend-serializer", @@ -2615,7 +2614,7 @@ "serializer", "zf2" ], - "time": "2015-05-07T14:55:31+00:00" + "time": "2015-05-07 14:55:31" }, { "name": "zendframework/zend-server", @@ -2662,7 +2661,7 @@ "server", "zf2" ], - "time": "2015-05-07T14:55:31+00:00" + "time": "2015-05-07 14:55:31" }, { "name": "zendframework/zend-servicemanager", @@ -2712,7 +2711,7 @@ "servicemanager", "zf2" ], - "time": "2015-05-07T14:55:31+00:00" + "time": "2015-05-07 14:55:31" }, { "name": "zendframework/zend-soap", @@ -2764,7 +2763,7 @@ "soap", "zf2" ], - "time": "2015-05-07T14:55:31+00:00" + "time": "2015-05-07 14:55:31" }, { "name": "zendframework/zend-stdlib", @@ -2819,7 +2818,7 @@ "stdlib", "zf2" ], - "time": "2015-07-21T13:55:46+00:00" + "time": "2015-07-21 13:55:46" }, { "name": "zendframework/zend-text", @@ -2866,7 +2865,7 @@ "text", "zf2" ], - "time": "2015-05-07T14:55:31+00:00" + "time": "2015-05-07 14:55:31" }, { "name": "zendframework/zend-uri", @@ -2914,7 +2913,7 @@ "uri", "zf2" ], - "time": "2015-09-14T16:17:10+00:00" + "time": "2015-09-14 16:17:10" }, { "name": "zendframework/zend-validator", @@ -2979,7 +2978,7 @@ "validator", "zf2" ], - "time": "2015-09-08T21:04:17+00:00" + "time": "2015-09-08 21:04:17" }, { "name": "zendframework/zend-view", @@ -3056,7 +3055,7 @@ "view", "zf2" ], - "time": "2015-06-16T15:22:37+00:00" + "time": "2015-06-16 15:22:37" } ], "packages-dev": [ @@ -3112,7 +3111,7 @@ "constructor", "instantiate" ], - "time": "2015-06-14T21:17:01+00:00" + "time": "2015-06-14 21:17:01" }, { "name": "fabpot/php-cs-fixer", @@ -3171,7 +3170,7 @@ ], "description": "A tool to automatically fix PHP code style", "abandoned": "friendsofphp/php-cs-fixer", - "time": "2017-09-11T14:11:16+00:00" + "time": "2017-09-11 14:11:16" }, { "name": "lusitanian/oauth", @@ -3238,7 +3237,7 @@ "oauth", "security" ], - "time": "2015-10-07T00:20:04+00:00" + "time": "2015-10-07 00:20:04" }, { "name": "pdepend/pdepend", @@ -3278,7 +3277,7 @@ "BSD-3-Clause" ], "description": "Official version of pdepend to be handled with Composer", - "time": "2017-01-10T13:45:16+00:00" + "time": "2017-01-10 13:45:16" }, { "name": "phpmd/phpmd", @@ -3343,7 +3342,7 @@ "phpmd", "pmd" ], - "time": "2016-11-23T20:33:32+00:00" + "time": "2016-11-23 20:33:32" }, { "name": "phpunit/php-code-coverage", @@ -3405,7 +3404,7 @@ "testing", "xunit" ], - "time": "2015-10-06T15:47:00+00:00" + "time": "2015-10-06 15:47:00" }, { "name": "phpunit/php-file-iterator", @@ -3450,7 +3449,7 @@ "filesystem", "iterator" ], - "time": "2013-10-10T15:34:57+00:00" + "time": "2013-10-10 15:34:57" }, { "name": "phpunit/php-text-template", @@ -3491,7 +3490,7 @@ "keywords": [ "template" ], - "time": "2015-06-21T13:50:34+00:00" + "time": "2015-06-21 13:50:34" }, { "name": "phpunit/php-timer", @@ -3540,7 +3539,7 @@ "keywords": [ "timer" ], - "time": "2017-02-26T11:10:40+00:00" + "time": "2017-02-26 11:10:40" }, { "name": "phpunit/php-token-stream", @@ -3589,7 +3588,7 @@ "keywords": [ "tokenizer" ], - "time": "2017-02-27T10:12:30+00:00" + "time": "2017-02-27 10:12:30" }, { "name": "phpunit/phpunit", @@ -3663,7 +3662,7 @@ "testing", "xunit" ], - "time": "2014-05-02T07:13:40+00:00" + "time": "2014-05-02 07:13:40" }, { "name": "phpunit/phpunit-mock-objects", @@ -3719,7 +3718,7 @@ "mock", "xunit" ], - "time": "2015-10-02T06:51:40+00:00" + "time": "2015-10-02 06:51:40" }, { "name": "sebastian/comparator", @@ -3783,7 +3782,7 @@ "compare", "equality" ], - "time": "2017-01-29T09:50:25+00:00" + "time": "2017-01-29 09:50:25" }, { "name": "sebastian/diff", @@ -3835,7 +3834,7 @@ "keywords": [ "diff" ], - "time": "2017-05-22T07:24:03+00:00" + "time": "2017-05-22 07:24:03" }, { "name": "sebastian/environment", @@ -3885,7 +3884,7 @@ "environment", "hhvm" ], - "time": "2016-08-18T05:49:44+00:00" + "time": "2016-08-18 05:49:44" }, { "name": "sebastian/exporter", @@ -3952,7 +3951,7 @@ "export", "exporter" ], - "time": "2016-06-17T09:04:28+00:00" + "time": "2016-06-17 09:04:28" }, { "name": "sebastian/finder-facade", @@ -3991,7 +3990,7 @@ ], "description": "FinderFacade is a convenience wrapper for Symfony's Finder component.", "homepage": "https://github.com/sebastianbergmann/finder-facade", - "time": "2016-02-17T07:02:23+00:00" + "time": "2016-02-17 07:02:23" }, { "name": "sebastian/phpcpd", @@ -4042,7 +4041,7 @@ ], "description": "Copy/Paste Detector (CPD) for PHP code.", "homepage": "https://github.com/sebastianbergmann/phpcpd", - "time": "2013-11-08T09:05:42+00:00" + "time": "2013-11-08 09:05:42" }, { "name": "sebastian/recursion-context", @@ -4095,7 +4094,7 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-10-03T07:41:43+00:00" + "time": "2016-10-03 07:41:43" }, { "name": "sebastian/version", @@ -4130,7 +4129,7 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2015-06-21T13:59:46+00:00" + "time": "2015-06-21 13:59:46" }, { "name": "squizlabs/php_codesniffer", @@ -4205,7 +4204,7 @@ "phpcs", "standards" ], - "time": "2014-05-01T03:07:07+00:00" + "time": "2014-05-01 03:07:07" }, { "name": "symfony/config", @@ -4261,7 +4260,7 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2017-04-12T14:13:17+00:00" + "time": "2017-04-12 14:13:17" }, { "name": "symfony/dependency-injection", @@ -4321,7 +4320,7 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2017-01-28T00:04:57+00:00" + "time": "2017-01-28 00:04:57" }, { "name": "symfony/stopwatch", @@ -4370,7 +4369,7 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2017-10-02T06:42:24+00:00" + "time": "2017-10-02 06:42:24" }, { "name": "symfony/yaml", @@ -4419,7 +4418,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2017-10-05T14:38:30+00:00" + "time": "2017-10-05 14:38:30" }, { "name": "theseer/fdomdocument", @@ -4459,7 +4458,7 @@ ], "description": "The classes contained within this repository extend the standard DOM to use exceptions at all occasions of errors instead of PHP warnings or notices. They also add various custom methods and shortcuts for convenience and to simplify the usage of DOM.", "homepage": "https://github.com/theseer/fDOMDocument", - "time": "2017-06-30T11:53:12+00:00" + "time": "2017-06-30 11:53:12" } ], "aliases": [], From 02b1816a30164ed9d68582b4543e8863cb03c197 Mon Sep 17 00:00:00 2001 From: vzabaznov Date: Wed, 8 Nov 2017 18:22:14 +0200 Subject: [PATCH 6/9] MAGETWO-80419: Merge release branch into 2.1-develop --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 2e7e20514650d..97f163d7cf5e3 100644 --- a/composer.json +++ b/composer.json @@ -2,7 +2,7 @@ "name": "magento/magento2ce", "description": "Magento 2 (Community Edition)", "type": "project", - "version": "2.1.10", + "version": "2.1.10-dev", "license": [ "OSL-3.0", "AFL-3.0" From 78db3409d4721728b74a235ee0fb048ff0f1d420 Mon Sep 17 00:00:00 2001 From: vzabaznov Date: Thu, 9 Nov 2017 11:22:35 +0200 Subject: [PATCH 7/9] MAGETWO-80419: Merge release branch into 2.1-develop --- composer.lock | 167 +++++++++++++++++++++++++------------------------- 1 file changed, 83 insertions(+), 84 deletions(-) diff --git a/composer.lock b/composer.lock index 588e931973228..8eaac00be8c4a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "82546d68af6520487e8cab0291fdb7d4", - "content-hash": "a27f428c822c62ebedc24b3636847470", + "content-hash": "ba1560dc099a274c04897d5dccf94d95", "packages": [ { "name": "braintree/braintree_php", @@ -52,7 +51,7 @@ } ], "description": "Braintree PHP Client Library", - "time": "2015-11-19 19:14:47" + "time": "2015-11-19T19:14:47+00:00" }, { "name": "colinmollenhour/cache-backend-file", @@ -88,7 +87,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": "2016-05-02 16:24:47" + "time": "2016-05-02T16:24:47+00:00" }, { "name": "colinmollenhour/cache-backend-redis", @@ -124,7 +123,7 @@ ], "description": "Zend_Cache backend using Redis with full support for tags.", "homepage": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis", - "time": "2016-05-02 16:23:36" + "time": "2016-05-02T16:23:36+00:00" }, { "name": "colinmollenhour/credis", @@ -164,7 +163,7 @@ ], "description": "Credis is a lightweight interface to the Redis key-value store which wraps the phpredis library when available for better performance.", "homepage": "https://github.com/colinmollenhour/credis", - "time": "2017-07-05 15:32:38" + "time": "2017-07-05T15:32:38+00:00" }, { "name": "colinmollenhour/php-redis-session-abstract", @@ -201,7 +200,7 @@ ], "description": "A Redis-based session handler with optimistic locking", "homepage": "https://github.com/colinmollenhour/php-redis-session-abstract", - "time": "2017-03-22 16:13:03" + "time": "2017-03-22T16:13:03+00:00" }, { "name": "composer/composer", @@ -276,7 +275,7 @@ "dependency", "package" ], - "time": "2016-03-03 15:15:10" + "time": "2016-03-03T15:15:10+00:00" }, { "name": "composer/semver", @@ -338,7 +337,7 @@ "validation", "versioning" ], - "time": "2016-08-30 16:08:34" + "time": "2016-08-30T16:08:34+00:00" }, { "name": "composer/spdx-licenses", @@ -399,7 +398,7 @@ "spdx", "validator" ], - "time": "2017-04-03 19:08:52" + "time": "2017-04-03T19:08:52+00:00" }, { "name": "justinrainbow/json-schema", @@ -465,7 +464,7 @@ "json", "schema" ], - "time": "2016-01-25 15:43:01" + "time": "2016-01-25T15:43:01+00:00" }, { "name": "league/climate", @@ -514,7 +513,7 @@ "php", "terminal" ], - "time": "2015-01-18 14:31:58" + "time": "2015-01-18T14:31:58+00:00" }, { "name": "magento/composer", @@ -527,7 +526,7 @@ "dist": { "type": "zip", "url": "https://api.github.com/repos/magento/composer/zipball/b53f7c8a037860b467083e94de7c17cfd323e365", - "reference": null, + "reference": "b53f7c8a037860b467083e94de7c17cfd323e365", "shasum": "2ca1c4e0d2d5e90fa1cd438e4a0775b6c7cbbe1a" }, "require": { @@ -627,7 +626,7 @@ "composer-installer", "magento" ], - "time": "2016-10-06 16:05:07" + "time": "2016-10-06T16:05:07+00:00" }, { "name": "magento/zendframework1", @@ -674,7 +673,7 @@ "ZF1", "framework" ], - "time": "2017-02-27 21:19:07" + "time": "2017-02-27T21:19:07+00:00" }, { "name": "monolog/monolog", @@ -750,7 +749,7 @@ "logging", "psr-3" ], - "time": "2015-08-09 17:44:44" + "time": "2015-08-09T17:44:44+00:00" }, { "name": "oyejorge/less.php", @@ -812,7 +811,7 @@ "php", "stylesheet" ], - "time": "2017-03-28 22:19:25" + "time": "2017-03-28T22:19:25+00:00" }, { "name": "pelago/emogrifier", @@ -868,7 +867,7 @@ ], "description": "Converts CSS styles into inline style attributes in your HTML code", "homepage": "http://www.pelagodesign.com/sidecar/emogrifier/", - "time": "2015-05-15 11:37:51" + "time": "2015-05-15T11:37:51+00:00" }, { "name": "phpseclib/phpseclib", @@ -960,7 +959,7 @@ "x.509", "x509" ], - "time": "2017-10-23 05:04:54" + "time": "2017-10-23T05:04:54+00:00" }, { "name": "psr/log", @@ -1007,7 +1006,7 @@ "psr", "psr-3" ], - "time": "2016-10-10 12:19:37" + "time": "2016-10-10T12:19:37+00:00" }, { "name": "seld/cli-prompt", @@ -1055,7 +1054,7 @@ "input", "prompt" ], - "time": "2017-03-18 11:32:45" + "time": "2017-03-18T11:32:45+00:00" }, { "name": "seld/jsonlint", @@ -1104,7 +1103,7 @@ "parser", "validator" ], - "time": "2017-06-18 15:11:04" + "time": "2017-06-18T15:11:04+00:00" }, { "name": "seld/phar-utils", @@ -1148,7 +1147,7 @@ "keywords": [ "phra" ], - "time": "2015-10-13 18:44:15" + "time": "2015-10-13T18:44:15+00:00" }, { "name": "sjparkinson/static-review", @@ -1201,7 +1200,7 @@ } ], "description": "An extendable framework for version control hooks.", - "time": "2014-09-22 08:40:36" + "time": "2014-09-22T08:40:36+00:00" }, { "name": "symfony/console", @@ -1259,7 +1258,7 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2015-07-26 09:08:40" + "time": "2015-07-26T09:08:40+00:00" }, { "name": "symfony/event-dispatcher", @@ -1319,7 +1318,7 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2017-10-01 21:00:16" + "time": "2017-10-01T21:00:16+00:00" }, { "name": "symfony/filesystem", @@ -1368,7 +1367,7 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2017-10-03 13:33:10" + "time": "2017-10-03T13:33:10+00:00" }, { "name": "symfony/finder", @@ -1417,7 +1416,7 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2017-10-02 06:42:24" + "time": "2017-10-02T06:42:24+00:00" }, { "name": "symfony/process", @@ -1466,7 +1465,7 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2017-10-01 21:00:16" + "time": "2017-10-01T21:00:16+00:00" }, { "name": "tedivm/jshrink", @@ -1512,7 +1511,7 @@ "javascript", "minifier" ], - "time": "2014-11-11 03:54:14" + "time": "2014-11-11T03:54:14+00:00" }, { "name": "tubalmartin/cssmin", @@ -1556,7 +1555,7 @@ "minify", "yui" ], - "time": "2014-09-22 08:08:50" + "time": "2014-09-22T08:08:50+00:00" }, { "name": "zendframework/zend-code", @@ -1609,7 +1608,7 @@ "code", "zf2" ], - "time": "2015-05-11 16:17:05" + "time": "2015-05-11T16:17:05+00:00" }, { "name": "zendframework/zend-config", @@ -1666,7 +1665,7 @@ "config", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-console", @@ -1716,7 +1715,7 @@ "console", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-crypt", @@ -1768,7 +1767,7 @@ "crypt", "zf2" ], - "time": "2015-11-23 16:33:27" + "time": "2015-11-23T16:33:27+00:00" }, { "name": "zendframework/zend-di", @@ -1819,7 +1818,7 @@ "di", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-escaper", @@ -1864,7 +1863,7 @@ "escaper", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-eventmanager", @@ -1910,7 +1909,7 @@ "eventmanager", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-filter", @@ -1966,7 +1965,7 @@ "filter", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-form", @@ -2037,7 +2036,7 @@ "form", "zf2" ], - "time": "2015-09-09 19:11:05" + "time": "2015-09-09T19:11:05+00:00" }, { "name": "zendframework/zend-http", @@ -2088,7 +2087,7 @@ "http", "zf2" ], - "time": "2015-09-14 16:11:20" + "time": "2015-09-14T16:11:20+00:00" }, { "name": "zendframework/zend-i18n", @@ -2152,7 +2151,7 @@ "i18n", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-inputfilter", @@ -2203,7 +2202,7 @@ "inputfilter", "zf2" ], - "time": "2015-09-09 15:44:54" + "time": "2015-09-09T15:44:54+00:00" }, { "name": "zendframework/zend-json", @@ -2257,7 +2256,7 @@ "json", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-loader", @@ -2302,7 +2301,7 @@ "loader", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-log", @@ -2364,7 +2363,7 @@ "logging", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-math", @@ -2415,7 +2414,7 @@ "math", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-modulemanager", @@ -2473,7 +2472,7 @@ "modulemanager", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-mvc", @@ -2561,7 +2560,7 @@ "mvc", "zf2" ], - "time": "2015-09-14 16:32:50" + "time": "2015-09-14T16:32:50+00:00" }, { "name": "zendframework/zend-serializer", @@ -2614,7 +2613,7 @@ "serializer", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-server", @@ -2661,7 +2660,7 @@ "server", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-servicemanager", @@ -2711,7 +2710,7 @@ "servicemanager", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-soap", @@ -2763,7 +2762,7 @@ "soap", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-stdlib", @@ -2818,7 +2817,7 @@ "stdlib", "zf2" ], - "time": "2015-07-21 13:55:46" + "time": "2015-07-21T13:55:46+00:00" }, { "name": "zendframework/zend-text", @@ -2865,7 +2864,7 @@ "text", "zf2" ], - "time": "2015-05-07 14:55:31" + "time": "2015-05-07T14:55:31+00:00" }, { "name": "zendframework/zend-uri", @@ -2913,7 +2912,7 @@ "uri", "zf2" ], - "time": "2015-09-14 16:17:10" + "time": "2015-09-14T16:17:10+00:00" }, { "name": "zendframework/zend-validator", @@ -2978,7 +2977,7 @@ "validator", "zf2" ], - "time": "2015-09-08 21:04:17" + "time": "2015-09-08T21:04:17+00:00" }, { "name": "zendframework/zend-view", @@ -3055,7 +3054,7 @@ "view", "zf2" ], - "time": "2015-06-16 15:22:37" + "time": "2015-06-16T15:22:37+00:00" } ], "packages-dev": [ @@ -3111,7 +3110,7 @@ "constructor", "instantiate" ], - "time": "2015-06-14 21:17:01" + "time": "2015-06-14T21:17:01+00:00" }, { "name": "fabpot/php-cs-fixer", @@ -3170,7 +3169,7 @@ ], "description": "A tool to automatically fix PHP code style", "abandoned": "friendsofphp/php-cs-fixer", - "time": "2017-09-11 14:11:16" + "time": "2017-09-11T14:11:16+00:00" }, { "name": "lusitanian/oauth", @@ -3237,7 +3236,7 @@ "oauth", "security" ], - "time": "2015-10-07 00:20:04" + "time": "2015-10-07T00:20:04+00:00" }, { "name": "pdepend/pdepend", @@ -3277,7 +3276,7 @@ "BSD-3-Clause" ], "description": "Official version of pdepend to be handled with Composer", - "time": "2017-01-10 13:45:16" + "time": "2017-01-10T13:45:16+00:00" }, { "name": "phpmd/phpmd", @@ -3342,7 +3341,7 @@ "phpmd", "pmd" ], - "time": "2016-11-23 20:33:32" + "time": "2016-11-23T20:33:32+00:00" }, { "name": "phpunit/php-code-coverage", @@ -3404,7 +3403,7 @@ "testing", "xunit" ], - "time": "2015-10-06 15:47:00" + "time": "2015-10-06T15:47:00+00:00" }, { "name": "phpunit/php-file-iterator", @@ -3449,7 +3448,7 @@ "filesystem", "iterator" ], - "time": "2013-10-10 15:34:57" + "time": "2013-10-10T15:34:57+00:00" }, { "name": "phpunit/php-text-template", @@ -3490,7 +3489,7 @@ "keywords": [ "template" ], - "time": "2015-06-21 13:50:34" + "time": "2015-06-21T13:50:34+00:00" }, { "name": "phpunit/php-timer", @@ -3539,7 +3538,7 @@ "keywords": [ "timer" ], - "time": "2017-02-26 11:10:40" + "time": "2017-02-26T11:10:40+00:00" }, { "name": "phpunit/php-token-stream", @@ -3588,7 +3587,7 @@ "keywords": [ "tokenizer" ], - "time": "2017-02-27 10:12:30" + "time": "2017-02-27T10:12:30+00:00" }, { "name": "phpunit/phpunit", @@ -3662,7 +3661,7 @@ "testing", "xunit" ], - "time": "2014-05-02 07:13:40" + "time": "2014-05-02T07:13:40+00:00" }, { "name": "phpunit/phpunit-mock-objects", @@ -3718,7 +3717,7 @@ "mock", "xunit" ], - "time": "2015-10-02 06:51:40" + "time": "2015-10-02T06:51:40+00:00" }, { "name": "sebastian/comparator", @@ -3782,7 +3781,7 @@ "compare", "equality" ], - "time": "2017-01-29 09:50:25" + "time": "2017-01-29T09:50:25+00:00" }, { "name": "sebastian/diff", @@ -3834,7 +3833,7 @@ "keywords": [ "diff" ], - "time": "2017-05-22 07:24:03" + "time": "2017-05-22T07:24:03+00:00" }, { "name": "sebastian/environment", @@ -3884,7 +3883,7 @@ "environment", "hhvm" ], - "time": "2016-08-18 05:49:44" + "time": "2016-08-18T05:49:44+00:00" }, { "name": "sebastian/exporter", @@ -3951,7 +3950,7 @@ "export", "exporter" ], - "time": "2016-06-17 09:04:28" + "time": "2016-06-17T09:04:28+00:00" }, { "name": "sebastian/finder-facade", @@ -3990,7 +3989,7 @@ ], "description": "FinderFacade is a convenience wrapper for Symfony's Finder component.", "homepage": "https://github.com/sebastianbergmann/finder-facade", - "time": "2016-02-17 07:02:23" + "time": "2016-02-17T07:02:23+00:00" }, { "name": "sebastian/phpcpd", @@ -4041,7 +4040,7 @@ ], "description": "Copy/Paste Detector (CPD) for PHP code.", "homepage": "https://github.com/sebastianbergmann/phpcpd", - "time": "2013-11-08 09:05:42" + "time": "2013-11-08T09:05:42+00:00" }, { "name": "sebastian/recursion-context", @@ -4094,7 +4093,7 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-10-03 07:41:43" + "time": "2016-10-03T07:41:43+00:00" }, { "name": "sebastian/version", @@ -4129,7 +4128,7 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2015-06-21 13:59:46" + "time": "2015-06-21T13:59:46+00:00" }, { "name": "squizlabs/php_codesniffer", @@ -4204,7 +4203,7 @@ "phpcs", "standards" ], - "time": "2014-05-01 03:07:07" + "time": "2014-05-01T03:07:07+00:00" }, { "name": "symfony/config", @@ -4260,7 +4259,7 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2017-04-12 14:13:17" + "time": "2017-04-12T14:13:17+00:00" }, { "name": "symfony/dependency-injection", @@ -4320,7 +4319,7 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2017-01-28 00:04:57" + "time": "2017-01-28T00:04:57+00:00" }, { "name": "symfony/stopwatch", @@ -4369,7 +4368,7 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2017-10-02 06:42:24" + "time": "2017-10-02T06:42:24+00:00" }, { "name": "symfony/yaml", @@ -4418,7 +4417,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2017-10-05 14:38:30" + "time": "2017-10-05T14:38:30+00:00" }, { "name": "theseer/fdomdocument", @@ -4458,7 +4457,7 @@ ], "description": "The classes contained within this repository extend the standard DOM to use exceptions at all occasions of errors instead of PHP warnings or notices. They also add various custom methods and shortcuts for convenience and to simplify the usage of DOM.", "homepage": "https://github.com/theseer/fDOMDocument", - "time": "2017-06-30 11:53:12" + "time": "2017-06-30T11:53:12+00:00" } ], "aliases": [], From f1289086fbff95432ec7274049ee318f548df616 Mon Sep 17 00:00:00 2001 From: vzabaznov Date: Thu, 9 Nov 2017 12:55:54 +0200 Subject: [PATCH 8/9] MAGETWO-80419: Merge release branch into 2.1-develop --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 97f163d7cf5e3..2ee440f09eb54 100644 --- a/composer.json +++ b/composer.json @@ -2,7 +2,7 @@ "name": "magento/magento2ce", "description": "Magento 2 (Community Edition)", "type": "project", - "version": "2.1.10-dev", + "version": "2.1.11-dev", "license": [ "OSL-3.0", "AFL-3.0" From 2790873c30942ece24fd6d86278e09252802d9c2 Mon Sep 17 00:00:00 2001 From: vzabaznov Date: Fri, 10 Nov 2017 15:25:13 +0200 Subject: [PATCH 9/9] MAGETWO-80419: Merge release branch into 2.1-develop --- composer.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.lock b/composer.lock index 8eaac00be8c4a..a4b158b6ca882 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "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": "ba1560dc099a274c04897d5dccf94d95", + "content-hash": "ab4a3f5ae0ed14a2689221e2220758d2", "packages": [ { "name": "braintree/braintree_php",