From 5b6da9de665be8ba428f66ad5a04eb78454d2f80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnther=20Jedenastik?= Date: Mon, 26 Aug 2019 12:09:57 +0200 Subject: [PATCH 1/2] delete metaData node independent of realtimeExtraction setting --- Classes/Domain/ExtractionManager.php | 27 +++++++++++++++++++++++++++ Classes/Package.php | 3 ++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/Classes/Domain/ExtractionManager.php b/Classes/Domain/ExtractionManager.php index 42b15d9..1029c8b 100644 --- a/Classes/Domain/ExtractionManager.php +++ b/Classes/Domain/ExtractionManager.php @@ -140,4 +140,31 @@ public function extractMetaData(Asset $asset) : MetaDataCollection return $metaDataCollection; } + + /** + * @param Asset $asset + * @return MetaDataCollection + * @throws ExtractorException + * @throws UnknownObjectException + */ + public function onAssetRemoved(Asset $asset) : MetaDataCollection + { + if ($asset instanceof ImageVariant) { + $asset = $asset->getOriginalAsset(); + } + + $flowResource = $asset->getResource(); + if ($flowResource === null) { + throw new ExtractorException('Resource of Asset "' . $asset->getTitle() . '"" not found.', 1484060541); + } + + $metaDataCollection = new MetaDataCollection(); + $this->buildAssetMetaData($asset, $metaDataCollection); + + // Because the signal assetRemoved was emitted the deleted flag for $flowResource is true + // thus the signal metaDataCollectionUpdated finally deletes the metadata for the asset + $this->metaDataManager->emitMetaDataCollectionUpdated($asset, $metaDataCollection); + + return $metaDataCollection; + } } diff --git a/Classes/Package.php b/Classes/Package.php index 57c71cd..96abb51 100644 --- a/Classes/Package.php +++ b/Classes/Package.php @@ -29,6 +29,8 @@ class Package extends BasePackage public function boot(Bootstrap $bootstrap) { $dispatcher = $bootstrap->getSignalSlotDispatcher(); + $dispatcher->connect(AssetService::class, 'assetRemoved', ExtractionManager::class, 'onAssetRemoved'); + $packageKey = $this->getPackageKey(); $dispatcher->connect( ConfigurationManager::class, @@ -51,6 +53,5 @@ protected static function connectMetaDataExtraction(SignalSlotDispatcher $dispat { $dispatcher->connect(AssetService::class, 'assetCreated', ExtractionManager::class, 'extractMetaData'); $dispatcher->connect(AssetService::class, 'assetUpdated', ExtractionManager::class, 'extractMetaData'); - $dispatcher->connect(AssetService::class, 'assetRemoved', ExtractionManager::class, 'extractMetaData'); } } From 17ab7297e3eabf063d07bb1340a56591aaf37111 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnther=20Jedenastik?= Date: Tue, 1 Oct 2019 09:57:42 +0200 Subject: [PATCH 2/2] code cleanup for assetRemoved signal handler --- Classes/Domain/ExtractionManager.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Classes/Domain/ExtractionManager.php b/Classes/Domain/ExtractionManager.php index 1029c8b..c5d8889 100644 --- a/Classes/Domain/ExtractionManager.php +++ b/Classes/Domain/ExtractionManager.php @@ -161,10 +161,6 @@ public function onAssetRemoved(Asset $asset) : MetaDataCollection $metaDataCollection = new MetaDataCollection(); $this->buildAssetMetaData($asset, $metaDataCollection); - // Because the signal assetRemoved was emitted the deleted flag for $flowResource is true - // thus the signal metaDataCollectionUpdated finally deletes the metadata for the asset - $this->metaDataManager->emitMetaDataCollectionUpdated($asset, $metaDataCollection); - - return $metaDataCollection; + $this->metaDataManager->updateMetaDataForAsset($asset, $metaDataCollection); } }