private static function doFilterCustomGridFieldDefinitions(&$layout, $fieldDefinitions)
{
if ($layout instanceof ClassDefinition\Data) {
$name = $layout->getName();
if (!$fieldDefinitions[$name] || $fieldDefinitions[$name]->getInvisible()) {
return false;
} else {
$layout->setNoteditable($layout->getNoteditable() | $fieldDefinitions[$name]->getNoteditable());
}
}
if (method_exists($layout, "getChilds")) {
$children = $layout->getChilds();
if (is_array($children)) {
$count = count($children);
for ($i = $count - 1; $i >= 0; $i--) {
$child = $children[$i];
if (!self::doFilterCustomGridFieldDefinitions($child, $fieldDefinitions)) {
unset($children[$i]);
}
}
$layout->setChilds(array_values($children));
}
}
return true;
}