From 36e5f63654176cef075e3af6b061cc07db122cd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Hoffmann?= Date: Wed, 8 Mar 2023 16:25:41 +0100 Subject: [PATCH 1/2] TASK: adjust update behaviour of asset usage --- Classes/Package.php | 3 ++- Classes/Service/AssetIntegrationService.php | 21 +++++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/Classes/Package.php b/Classes/Package.php index 96be49c..5c5a038 100644 --- a/Classes/Package.php +++ b/Classes/Package.php @@ -16,6 +16,7 @@ use Flowpack\Neos\AssetUsage\Service\AssetIntegrationService; use Neos\ContentRepository\Domain\Model\Node; use Neos\ContentRepository\Domain\Model\Workspace; +use Neos\Neos\Service\PublishingService; use Neos\Flow\Core\Bootstrap; use Neos\Flow\Package\Package as BasePackage; use Neos\Media\Domain\Service\AssetService; @@ -31,7 +32,7 @@ public function boot(Bootstrap $bootstrap): void $dispatcher->connect(Node::class, 'nodePropertyChanged', AssetIntegrationService::class, 'nodePropertyChanged'); $dispatcher->connect(Node::class, 'nodeRemoved', AssetIntegrationService::class, 'nodeRemoved'); $dispatcher->connect(Node::class, 'nodeAdded', AssetIntegrationService::class, 'nodeAdded'); - $dispatcher->connect(Node::class, 'nodeDiscarded', AssetIntegrationService::class, 'nodeDiscarded'); + $dispatcher->connect(PublishingService::class, 'nodeDiscarded', AssetIntegrationService::class, 'nodeDiscarded'); $dispatcher->connect(Workspace::class, 'beforeNodePublishing', AssetIntegrationService::class, 'beforeNodePublishing'); $dispatcher->connect(Workspace::class, 'afterNodePublishing', AssetIntegrationService::class, 'afterNodePublishing'); diff --git a/Classes/Service/AssetIntegrationService.php b/Classes/Service/AssetIntegrationService.php index 2d90434..a38bee6 100644 --- a/Classes/Service/AssetIntegrationService.php +++ b/Classes/Service/AssetIntegrationService.php @@ -205,13 +205,6 @@ public function beforeNodePublishing(NodeInterface $node, Workspace $targetWorks $targetNode = $contentContext->getNodeByIdentifier($node->getIdentifier()); foreach ($this->getAssetPropertyNamesForNodeType($node->getNodeType()) as $propertyName) { - if (!$node->hasProperty($propertyName)) { - return; - } - $propertyValue = $node->getProperty($propertyName); - if (!$propertyValue) { - return; - } // Unregister the asset stored in the target node, the assets will be registered again after publishing if ($targetNode && $targetNode->hasProperty($propertyName)) { $targetPropertyValue = $targetNode->getProperty($propertyName); @@ -219,6 +212,14 @@ public function beforeNodePublishing(NodeInterface $node, Workspace $targetWorks $this->unregisterUsageInNode($targetNode, $targetPropertyValue, false); } } + + if (!$node->hasProperty($propertyName)) { + return; + } + $propertyValue = $node->getProperty($propertyName); + if (!$propertyValue) { + return; + } $this->unregisterUsageInNode($node, $propertyValue, false); } } @@ -309,11 +310,15 @@ public function nodeAdded(NodeInterface $node): void */ public function nodePropertyChanged(NodeInterface $node, string $propertyName, $oldValue, $newValue): void { + if ($this->propertyTypeCanBeRegistered($node->getNodeType()->getPropertyType($propertyName)) && $oldValue && empty($newValue)) { + $this->unregisterUsageInNode($node, $oldValue); + } + if ($oldValue === $newValue || !$this->propertyTypeCanBeRegistered($node->getNodeType()->getPropertyType($propertyName))) { return; } - if ($oldValue) { + if ($oldValue && $newValue) { $this->unregisterUsageInNode($node, $oldValue); } From a3387bc776590fe073193f1f0404ed44a16c60a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Hoffmann?= Date: Thu, 9 Mar 2023 11:05:30 +0100 Subject: [PATCH 2/2] TASK: revered unneeded change, make code clearer --- Classes/Service/AssetIntegrationService.php | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Classes/Service/AssetIntegrationService.php b/Classes/Service/AssetIntegrationService.php index a38bee6..691db69 100644 --- a/Classes/Service/AssetIntegrationService.php +++ b/Classes/Service/AssetIntegrationService.php @@ -217,7 +217,7 @@ public function beforeNodePublishing(NodeInterface $node, Workspace $targetWorks return; } $propertyValue = $node->getProperty($propertyName); - if (!$propertyValue) { + if (empty($propertyValue)) { return; } $this->unregisterUsageInNode($node, $propertyValue, false); @@ -310,15 +310,11 @@ public function nodeAdded(NodeInterface $node): void */ public function nodePropertyChanged(NodeInterface $node, string $propertyName, $oldValue, $newValue): void { - if ($this->propertyTypeCanBeRegistered($node->getNodeType()->getPropertyType($propertyName)) && $oldValue && empty($newValue)) { - $this->unregisterUsageInNode($node, $oldValue); - } - if ($oldValue === $newValue || !$this->propertyTypeCanBeRegistered($node->getNodeType()->getPropertyType($propertyName))) { return; } - if ($oldValue && $newValue) { + if ($oldValue) { $this->unregisterUsageInNode($node, $oldValue); }