/** * {@inheritdoc} */ public function getSupportedEntityClasses() { $result = []; $extendConfigProvider = $this->configManager->getProvider('extend'); foreach ($extendConfigProvider->getConfigs(null, true) as $extendConfig) { if (ExtendHelper::isEnumValueEntityAccessible($extendConfig)) { $result[] = $extendConfig->getId()->getClassName(); } } return $result; }
/** * @return string[] */ protected function getPotentialEnumHolderClassNames() { if (null === $this->potentialEnumHolderClassNames) { $this->potentialEnumHolderClassNames = array_map(function (ConfigInterface $config) { return $config->getId()->getClassName(); }, $this->configManager->getProvider('extend')->filter(function (ConfigInterface $config) { return ExtendHelper::isEnumValueEntityAccessible($config); })); // skip dictionaries $groupingConfigProvider = $this->configManager->getProvider('grouping'); $this->potentialEnumHolderClassNames = array_filter($this->potentialEnumHolderClassNames, function ($className) use($groupingConfigProvider) { if (!$groupingConfigProvider->hasConfig($className)) { return true; } $config = $groupingConfigProvider->getConfig($className); $groups = $config->get('groups'); if (empty($groups)) { return true; } return !in_array(GroupingScope::GROUP_DICTIONARY, $groups, true); }); } return $this->potentialEnumHolderClassNames; }
/** * Returns the list of data type keys for all public enums * * @return string[] key = enum code, value = data type key */ public function getPublicEnumTypes() { $result = []; $enumConfigProvider = $this->configManager->getProvider('enum'); $extendConfigProvider = $this->configManager->getProvider('extend'); $entityConfigs = $extendConfigProvider->getConfigs(null, true); foreach ($entityConfigs as $entityConfig) { if (!ExtendHelper::isEnumValueEntityAccessible($entityConfig)) { continue; } $className = $entityConfig->getId()->getClassName(); $enumConfig = $enumConfigProvider->getConfig($className); if (!$enumConfig->is('public')) { continue; } $enumCode = $enumConfig->get('code'); $result[$enumCode] = ($enumConfig->is('multiple') ? 'multiEnum' : 'enum') . '||' . $enumCode; } return $result; }