Ejemplo n.º 1
0
 /**
  * {@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;
 }
Ejemplo n.º 3
0
 /**
  * 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;
 }