/** Determines the custom layout definition (if necessary) for the given class * @param ClassDefinition $class * @param int $objectId * @return array layout */ public static function getCustomLayoutDefinitionForGridColumnConfig(ClassDefinition $class, $objectId) { $layoutDefinitions = $class->getLayoutDefinitions(); $result = array("layoutDefinition" => $layoutDefinitions); if (!$objectId) { return $result; } $user = AdminTool::getCurrentUser(); if ($user->isAdmin()) { return $result; } $mergedFieldDefinition = self::getCustomGridFieldDefinitions($class->getId(), $objectId); if (is_array($mergedFieldDefinition)) { if ($mergedFieldDefinition["localizedfields"]) { $childs = $mergedFieldDefinition["localizedfields"]->getFieldDefinitions(); if (is_array($childs)) { foreach ($childs as $locKey => $locValue) { $mergedFieldDefinition[$locKey] = $locValue; } } } self::doFilterCustomGridFieldDefinitions($layoutDefinitions, $mergedFieldDefinition); $result["layoutDefinition"] = $layoutDefinitions; $result["fieldDefinition"] = $mergedFieldDefinition; } return $result; }