diff --git a/app/code/Magento/Cms/Model/Block.php b/app/code/Magento/Cms/Model/Block.php index fc369971054d7..3795409a95d2b 100644 --- a/app/code/Magento/Cms/Model/Block.php +++ b/app/code/Magento/Cms/Model/Block.php @@ -6,7 +6,6 @@ namespace Magento\Cms\Model; use Magento\Cms\Api\Data\BlockInterface; -use Magento\Cms\Model\ResourceModel\Block as ResourceCmsBlock; use Magento\Framework\DataObject\IdentityInterface; use Magento\Framework\Model\AbstractModel; @@ -58,6 +57,11 @@ protected function _construct() public function beforeSave() { $needle = 'block_id="' . $this->getId() . '"'; + + if ($this->hasDataChanges()) { + $this->setUpdateTime(null); + } + if (false == strstr($this->getContent(), $needle)) { return parent::beforeSave(); } diff --git a/app/code/Magento/Cms/Model/Page.php b/app/code/Magento/Cms/Model/Page.php index 591f8d93fcdc6..d950f484cd1d9 100644 --- a/app/code/Magento/Cms/Model/Page.php +++ b/app/code/Magento/Cms/Model/Page.php @@ -6,12 +6,11 @@ namespace Magento\Cms\Model; use Magento\Cms\Api\Data\PageInterface; -use Magento\Cms\Model\ResourceModel\Page as ResourceCmsPage; +use Magento\Cms\Helper\Page as PageHelper; use Magento\Framework\App\Config\ScopeConfigInterface; use Magento\Framework\DataObject\IdentityInterface; use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Model\AbstractModel; -use Magento\Cms\Helper\Page as PageHelper; /** * Cms Page Model @@ -547,6 +546,10 @@ public function beforeSave() $originalIdentifier = $this->getOrigData('identifier'); $currentIdentifier = $this->getIdentifier(); + if ($this->hasDataChanges()) { + $this->setUpdateTime(null); + } + if (!$this->getId() || $originalIdentifier === $currentIdentifier) { return parent::beforeSave(); } diff --git a/app/code/Magento/Cms/Model/ResourceModel/Block.php b/app/code/Magento/Cms/Model/ResourceModel/Block.php index d5bae7359fe35..9aab54b02bc14 100644 --- a/app/code/Magento/Cms/Model/ResourceModel/Block.php +++ b/app/code/Magento/Cms/Model/ResourceModel/Block.php @@ -7,10 +7,10 @@ use Magento\Cms\Api\Data\BlockInterface; use Magento\Framework\DB\Select; +use Magento\Framework\EntityManager\EntityManager; +use Magento\Framework\EntityManager\MetadataPool; use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Model\AbstractModel; -use Magento\Framework\EntityManager\MetadataPool; -use Magento\Framework\EntityManager\EntityManager; use Magento\Framework\Model\ResourceModel\Db\AbstractDb; use Magento\Framework\Model\ResourceModel\Db\Context; use Magento\Store\Model\Store; diff --git a/app/code/Magento/Cms/Model/ResourceModel/Page.php b/app/code/Magento/Cms/Model/ResourceModel/Page.php index 8e26c8b67fa4b..b836cf199632d 100644 --- a/app/code/Magento/Cms/Model/ResourceModel/Page.php +++ b/app/code/Magento/Cms/Model/ResourceModel/Page.php @@ -6,18 +6,18 @@ namespace Magento\Cms\Model\ResourceModel; +use Magento\Cms\Api\Data\PageInterface; use Magento\Cms\Model\Page as CmsPage; use Magento\Framework\DB\Select; +use Magento\Framework\EntityManager\EntityManager; +use Magento\Framework\EntityManager\MetadataPool; use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Model\AbstractModel; -use Magento\Framework\EntityManager\MetadataPool; use Magento\Framework\Model\ResourceModel\Db\AbstractDb; use Magento\Framework\Model\ResourceModel\Db\Context; use Magento\Framework\Stdlib\DateTime; use Magento\Store\Model\Store; use Magento\Store\Model\StoreManagerInterface; -use Magento\Framework\EntityManager\EntityManager; -use Magento\Cms\Api\Data\PageInterface; /** * Cms page mysql resource diff --git a/dev/tests/integration/testsuite/Magento/Cms/Model/BlockTest.php b/dev/tests/integration/testsuite/Magento/Cms/Model/BlockTest.php new file mode 100644 index 0000000000000..9b2bb67c55da1 --- /dev/null +++ b/dev/tests/integration/testsuite/Magento/Cms/Model/BlockTest.php @@ -0,0 +1,90 @@ +objectManager = Bootstrap::getObjectManager(); + + /** @var BlockFactory $blockFactory */ + /** @var Block $blockResource */ + $this->blockResource = $this->objectManager->create(Block::class); + $this->blockFactory = $this->objectManager->create(BlockFactory::class); + $this->blockRepository = $this->objectManager->create(BlockRepositoryInterface::class); + } + + /** + * Test UpdateTime + * @param array $blockData + * @throws \Exception + * @magentoDbIsolation enabled + * @dataProvider testUpdateTimeDataProvider + */ + public function testUpdateTime(array $blockData) + { + # Prepare and save the temporary block + $tempBlock = $this->blockFactory->create(); + $tempBlock->setData($blockData); + $this->blockResource->save($tempBlock); + + # Load previously created block and compare update_time field + $block = $this->blockRepository->getById($tempBlock->getId()); + $date = $this->objectManager->get(DateTime::class)->date(); + $this->assertEquals($date, $block->getUpdateTime()); + } + + /** + * Data provider "testUpdateTime" method + * @return array + */ + public function testUpdateTimeDataProvider() + { + return [ + [ + 'data' => [ + 'title' => 'Test title', + 'stores' => [0], + 'identifier' => 'test-identifier', + 'content' => 'Test content', + 'is_active' => 1 + ] + ] + ]; + } +} diff --git a/dev/tests/integration/testsuite/Magento/Cms/Model/PageTest.php b/dev/tests/integration/testsuite/Magento/Cms/Model/PageTest.php index 7a04ddce8fa08..c8040861b08eb 100644 --- a/dev/tests/integration/testsuite/Magento/Cms/Model/PageTest.php +++ b/dev/tests/integration/testsuite/Magento/Cms/Model/PageTest.php @@ -6,17 +6,13 @@ namespace Magento\Cms\Model; use Magento\Cms\Api\PageRepositoryInterface; +use Magento\Framework\Stdlib\DateTime\DateTime; /** * @magentoAppArea adminhtml */ class PageTest extends \PHPUnit\Framework\TestCase { - /** - * @var \Magento\Cms\Model\Page - */ - protected $model; - protected function setUp() { $user = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create( @@ -51,15 +47,14 @@ public function testGenerateIdentifierFromTitle($data, $expectedIdentifier) */ public function testUpdateTime() { - $updateTime = '2016-09-01 00:00:00'; $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); /** @var \Magento\Cms\Model\Page $page */ $page = $objectManager->create(\Magento\Cms\Model\Page::class); $page->setData(['title' => 'Test', 'stores' => [1]]); - $page->setUpdateTime($updateTime); $page->save(); $page = $objectManager->get(PageRepositoryInterface::class)->getById($page->getId()); - $this->assertEquals($updateTime, $page->getUpdateTime()); + $date = $objectManager->get(DateTime::class)->date(); + $this->assertEquals($date, $page->getUpdateTime()); } public function generateIdentifierFromTitleDataProvider()