private static function synchronizeCustomLayoutFieldWithMaster($masterDefinition, &$layout)
{
if ($layout instanceof ClassDefinition\Data) {
$fieldname = $layout->name;
if (!$masterDefinition[$fieldname]) {
return false;
} else {
if ($layout->getFieldtype() != $masterDefinition[$fieldname]->getFieldType()) {
$layout->adoptMasterDefinition($masterDefinition[$fieldname]);
} else {
$layout->synchronizeWithMasterDefinition($masterDefinition[$fieldname]);
}
}
}
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::synchronizeCustomLayoutFieldWithMaster($masterDefinition, $child)) {
unset($children[$i]);
}
$layout->setChilds($children);
}
}
}
return true;
}