Neos\Neos\Service\ImageVariantGarbageCollector::removeUnusedImageVariant PHP Method

removeUnusedImageVariant() public method

This is triggered via the nodePropertyChanged event. Note: This method it triggered by the "nodePropertyChanged" signal, @see \Neos\ContentRepository\Domain\Model\Node::emitNodePropertyChanged()
public removeUnusedImageVariant ( Neos\ContentRepository\Domain\Model\NodeInterface $node, string $propertyName, mixed $oldValue, mixed $value ) : void
$node Neos\ContentRepository\Domain\Model\NodeInterface the affected node
$propertyName string name of the property that has been changed/added
$oldValue mixed the property value before it was changed or NULL if the property is new
$value mixed the new property value
return void
    public function removeUnusedImageVariant(NodeInterface $node, $propertyName, $oldValue, $value)
    {
        if ($oldValue === $value || !$oldValue instanceof ImageVariant) {
            return;
        }
        $identifier = $this->persistenceManager->getIdentifierByObject($oldValue);
        $results = $this->nodeDataRepository->findNodesByRelatedEntities(array(ImageVariant::class => [$identifier]));
        // This case shouldn't happen as the query will usually find at least the node that triggered this call, still if there is no relation we can remove the ImageVariant.
        if ($results === []) {
            $this->assetRepository->remove($oldValue);
            return;
        }
        // If the result contains exactly the node that got a new ImageVariant assigned then we are safe to remove the asset here.
        if ($results === [$node->getNodeData()]) {
            $this->assetRepository->remove($oldValue);
        }
    }
ImageVariantGarbageCollector