Neos\ContentRepository\Domain\Repository\NodeDataRepository::getNodeTypeFilterConstraints PHP Method

getNodeTypeFilterConstraints() protected method

protected getNodeTypeFilterConstraints ( Neos\Flow\Persistence\QueryInterface $query, $nodeTypeFilter ) : array
$query Neos\Flow\Persistence\QueryInterface
$nodeTypeFilter
return array
    protected function getNodeTypeFilterConstraints(QueryInterface $query, $nodeTypeFilter)
    {
        $includeNodeTypeConstraints = [];
        $excludeNodeTypeConstraints = [];
        $nodeTypeFilterParts = Arrays::trimExplode(',', $nodeTypeFilter);
        foreach ($nodeTypeFilterParts as $nodeTypeFilterPart) {
            $nodeTypeFilterPart = trim($nodeTypeFilterPart);
            if (strpos($nodeTypeFilterPart, '!') === 0) {
                $negate = true;
                $nodeTypeFilterPart = substr($nodeTypeFilterPart, 1);
            } else {
                $negate = false;
            }
            $nodeTypeFilterPartSubTypes = array_merge([$nodeTypeFilterPart], $this->nodeTypeManager->getSubNodeTypes($nodeTypeFilterPart, false));
            foreach ($nodeTypeFilterPartSubTypes as $nodeTypeFilterPartSubType) {
                if ($negate === true) {
                    $excludeNodeTypeConstraints[] = $query->logicalNot($query->equals('nodeType', $nodeTypeFilterPartSubType));
                } else {
                    $includeNodeTypeConstraints[] = $query->equals('nodeType', $nodeTypeFilterPartSubType);
                }
            }
        }
        $constraints = $excludeNodeTypeConstraints;
        if (count($includeNodeTypeConstraints) > 0) {
            $constraints[] = $query->logicalOr($includeNodeTypeConstraints);
        }
        return $constraints;
    }