/** * Removes all auto created child nodes that existed in the previous nodeType. * * @param NodeInterface $node * @param NodeType $oldNodeType * @return void */ public function cleanUpAutoCreatedChildNodes(NodeInterface $node, NodeType $oldNodeType) { $newNodeType = $node->getNodeType(); $autoCreatedChildNodesForNewNodeType = $newNodeType->getAutoCreatedChildNodes(); $autoCreatedChildNodesForOldNodeType = $oldNodeType->getAutoCreatedChildNodes(); $removedChildNodesFromOldNodeType = array_diff(array_keys($autoCreatedChildNodesForOldNodeType), array_keys($autoCreatedChildNodesForNewNodeType)); /** @var NodeInterface $childNode */ foreach ($node->getChildNodes() as $childNode) { if (in_array($childNode->getName(), $removedChildNodesFromOldNodeType)) { $childNode->remove(); } } }