diff --git a/Classes/Domain/ExtractionManager.php b/Classes/Domain/ExtractionManager.php index 42b15d9..c5d8889 100644 --- a/Classes/Domain/ExtractionManager.php +++ b/Classes/Domain/ExtractionManager.php @@ -140,4 +140,27 @@ 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); + + $this->metaDataManager->updateMetaDataForAsset($asset, $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'); } }