Neos\Neos\Controller\Module\Management\WorkspacesController::renderContentChanges PHP Метод

renderContentChanges() защищенный Метод

Renders the difference between the original and the changed content of the given node and returns it, along with meta information, in an array.
protected renderContentChanges ( Neos\ContentRepository\Domain\Model\NodeInterface $changedNode ) : array
$changedNode Neos\ContentRepository\Domain\Model\NodeInterface
Результат array
    protected function renderContentChanges(NodeInterface $changedNode)
    {
        $contentChanges = [];
        $originalNode = $this->getOriginalNode($changedNode);
        $changeNodePropertiesDefaults = $changedNode->getNodeType()->getDefaultValuesForProperties($changedNode);
        $renderer = new HtmlArrayRenderer();
        foreach ($changedNode->getProperties() as $propertyName => $changedPropertyValue) {
            if ($originalNode === null && empty($changedPropertyValue) || isset($changeNodePropertiesDefaults[$propertyName]) && $changedPropertyValue === $changeNodePropertiesDefaults[$propertyName]) {
                continue;
            }
            $originalPropertyValue = $originalNode === null ? null : $originalNode->getProperty($propertyName);
            if ($changedPropertyValue === $originalPropertyValue && !$changedNode->isRemoved()) {
                continue;
            }
            if (!is_object($originalPropertyValue) && !is_object($changedPropertyValue)) {
                $originalSlimmedDownContent = $this->renderSlimmedDownContent($originalPropertyValue);
                $changedSlimmedDownContent = $changedNode->isRemoved() ? '' : $this->renderSlimmedDownContent($changedPropertyValue);
                $diff = new Diff(explode("\n", $originalSlimmedDownContent), explode("\n", $changedSlimmedDownContent), ['context' => 1]);
                $diffArray = $diff->render($renderer);
                $this->postProcessDiffArray($diffArray);
                if (count($diffArray) > 0) {
                    $contentChanges[$propertyName] = ['type' => 'text', 'propertyLabel' => $this->getPropertyLabel($propertyName, $changedNode), 'diff' => $diffArray];
                }
            } elseif ($originalPropertyValue instanceof AssetInterface || $changedPropertyValue instanceof AssetInterface) {
                $contentChanges[$propertyName] = ['type' => 'asset', 'propertyLabel' => $this->getPropertyLabel($propertyName, $changedNode), 'original' => $originalPropertyValue, 'changed' => $changedPropertyValue];
            } elseif ($originalPropertyValue instanceof \DateTime && $changedPropertyValue instanceof \DateTime) {
                if ($changedPropertyValue->getTimestamp() !== $originalPropertyValue->getTimestamp()) {
                    $contentChanges[$propertyName] = ['type' => 'datetime', 'propertyLabel' => $this->getPropertyLabel($propertyName, $changedNode), 'original' => $originalPropertyValue, 'changed' => $changedPropertyValue];
                }
            }
        }
        return $contentChanges;
    }