Neos\ContentRepository\Domain\Repository\NodeDataRepository::reduceNodeVariantsByWorkspaces PHP Метод

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

Given an array with duplicate nodes (from different workspaces) those are reduced to uniqueness (by node identifier and dimensions hash)
protected reduceNodeVariantsByWorkspaces ( array $nodes, array $workspaces ) : array
$nodes array NodeData
$workspaces array
Результат array Array of unique node results indexed by identifier and dimensions hash
    protected function reduceNodeVariantsByWorkspaces(array $nodes, array $workspaces)
    {
        $foundNodes = [];
        $minimalPositionByIdentifier = [];
        /** @var $node NodeData */
        foreach ($nodes as $node) {
            // Find the position of the workspace, a smaller value means more priority
            $workspaceNames = array_map(function (Workspace $workspace) {
                return $workspace->getName();
            }, $workspaces);
            $workspacePosition = array_search($node->getWorkspace()->getName(), $workspaceNames);
            $uniqueNodeDataIdentity = $node->getIdentifier() . '|' . $node->getDimensionsHash();
            if (!isset($minimalPositionByIdentifier[$uniqueNodeDataIdentity]) || $workspacePosition < $minimalPositionByIdentifier[$uniqueNodeDataIdentity]) {
                $foundNodes[$uniqueNodeDataIdentity] = $node;
                $minimalPositionByIdentifier[$uniqueNodeDataIdentity] = $workspacePosition;
            }
        }
        return $foundNodes;
    }