/** * @param string $entityClass * * @return array */ public function getSupportedGridsInfo($entityClass) { $entityClass = $this->entityClassNameHelper->resolveEntityClass($entityClass); $results = []; if (!$this->configManager->hasConfig($entityClass)) { return $results; } $shareScopes = $this->configManager->getProvider('security')->getConfig($entityClass)->get('share_scopes'); if (!$shareScopes) { return $results; } $classNames = $this->shareScopeProvider->getClassNamesBySharingScopes($shareScopes); foreach ($classNames as $className) { $results[] = ['isGranted' => $this->securityFacade->isGranted('VIEW', 'entity:' . $className), 'label' => $this->getClassLabel($className), 'className' => $className, 'first' => false, 'gridName' => $this->getGridName($className)]; } usort($results, function ($itemA) { return $itemA['isGranted'] ? -1 : 1; }); !empty($results[0]) && ($results[0]['first'] = true); return $results; }
/** * Returns rows grouped by class name * * @param array $rows * @param string $entityClass * * @return array */ protected function getGroupedRows($rows, $entityClass) { $result = []; $classNames = $this->shareScopeProvider->getClassNamesBySharingScopeConfig($entityClass); if (!$classNames) { return $result; } foreach ($classNames as $className) { $children = []; $classLabel = ''; foreach ($rows as $row) { if ($row['entityClass'] === $className) { $classLabel = $row['classLabel']; $child = $row; $children[] = $child; } } if ($children) { $result[] = ['text' => $classLabel, 'children' => $children]; } } return $result; }