protected function generateConstraints()
{
$constraints = array();
$nodeTypes = $this->nodeTypeManager->getNodeTypes(true);
/** @var NodeType $nodeType */
foreach ($nodeTypes as $nodeTypeName => $nodeType) {
$constraints[$nodeTypeName] = array('nodeTypes' => array(), 'childNodes' => array());
foreach ($nodeTypes as $innerNodeTypeName => $innerNodeType) {
if ($nodeType->allowsChildNodeType($innerNodeType)) {
$constraints[$nodeTypeName]['nodeTypes'][$innerNodeTypeName] = true;
}
}
foreach ($nodeType->getAutoCreatedChildNodes() as $key => $_x) {
foreach ($nodeTypes as $innerNodeTypeName => $innerNodeType) {
if ($nodeType->allowsGrandchildNodeType($key, $innerNodeType)) {
$constraints[$nodeTypeName]['childNodes'][$key]['nodeTypes'][$innerNodeTypeName] = true;
}
}
}
}
return $constraints;
}