/** Synchronizes a custom layout with its master layout * @param ClassDefinition\CustomLayout $customLayout */ public static function synchronizeCustomLayout(ClassDefinition\CustomLayout $customLayout) { $classId = $customLayout->getClassId(); $class = ClassDefinition::getById($classId); if ($class && $class->getModificationDate() > $customLayout->getModificationDate()) { $masterDefinition = $class->getFieldDefinitions(); $customLayoutDefinition = $customLayout->getLayoutDefinitions(); $targetList = self::extractLocalizedFieldDefinitions($class->getLayoutDefinitions(), array(), false); $masterDefinition = array_merge($masterDefinition, $targetList); self::synchronizeCustomLayoutFieldWithMaster($masterDefinition, $customLayoutDefinition); $customLayout->save(); } }