diff --git a/app/code/Magento/MediaGallery/Model/ResourceModel/Keyword/SaveAssetLinks.php b/app/code/Magento/MediaGallery/Model/ResourceModel/Keyword/SaveAssetLinks.php index 95a0cadd3abcc..eb6bd2aad236c 100644 --- a/app/code/Magento/MediaGallery/Model/ResourceModel/Keyword/SaveAssetLinks.php +++ b/app/code/Magento/MediaGallery/Model/ResourceModel/Keyword/SaveAssetLinks.php @@ -24,6 +24,7 @@ class SaveAssetLinks private const TABLE_ASSET_KEYWORD = 'media_gallery_asset_keyword'; private const FIELD_ASSET_ID = 'asset_id'; private const FIELD_KEYWORD_ID = 'keyword_id'; + private const TABLE_MEDIA_ASSET = 'media_gallery_asset'; /** * @var ResourceConnection @@ -73,6 +74,10 @@ public function execute(int $assetId, array $keywordIds): void $this->deleteAssetKeywords($assetId, $obsoleteKeywordIds); $this->insertAssetKeywords($assetId, $newKeywordIds); + + if ($obsoleteKeywordIds || $newKeywordIds) { + $this->setAssetUpdatedAt($assetId); + } } /** @@ -179,4 +184,28 @@ function (KeywordInterface $keyword): int { $keywordsData ); } + + /** + * Updates modified date of media asset + * + * @param int $assetId + * @throws CouldNotSaveException + */ + private function setAssetUpdatedAt(int $assetId): void + { + try { + $connection = $this->resourceConnection->getConnection(); + $connection->update( + $connection->getTableName(self::TABLE_MEDIA_ASSET), + ['updated_at' => null], + ['id =?' => $assetId] + ); + } catch (\Exception $exception) { + $this->logger->critical($exception); + throw new CouldNotSaveException( + __('Could not update assets modified date'), + $exception + ); + } + } } diff --git a/app/code/Magento/MediaGallery/Test/Unit/Model/ResourceModel/Keyword/SaveAssetLinksTest.php b/app/code/Magento/MediaGallery/Test/Unit/Model/ResourceModel/Keyword/SaveAssetLinksTest.php index 0bc81fbedaa19..d027f0ed21b53 100644 --- a/app/code/Magento/MediaGallery/Test/Unit/Model/ResourceModel/Keyword/SaveAssetLinksTest.php +++ b/app/code/Magento/MediaGallery/Test/Unit/Model/ResourceModel/Keyword/SaveAssetLinksTest.php @@ -75,7 +75,7 @@ public function testAssetKeywordsSave(int $assetId, array $keywordIds, array $va $expectedCalls = (int) (count($keywordIds)); if ($expectedCalls) { - $this->resourceConnectionMock->expects($this->once()) + $this->resourceConnectionMock->expects($this->exactly(2)) ->method('getConnection') ->willReturn($this->connectionMock); $this->resourceConnectionMock->expects($this->once())