/** * @param ConfigProvider $provider * @param ConfigInterface $config * @param array $data * @param string $state * @return array */ protected function processData(ConfigProvider $provider, ConfigInterface $config, array $data, $state) { if ($provider->getScope() === 'enum' && $config->get('enum_code')) { return []; } $translatable = $provider->getPropertyConfig()->getTranslatableValues($config->getId()); $translations = []; foreach ($data as $code => $value) { if (in_array($code, $translatable, true)) { // check if a label text was changed $labelKey = $config->get($code); if ($state === ExtendScope::STATE_NEW || !$this->translationHelper->isTranslationEqual($labelKey, $value)) { $translations[$labelKey] = $value; } // replace label text with label name in $value variable $value = $labelKey; } $config->set($code, $value); } $this->configManager->persist($config); return $translations; }
/** * @param ConfigProvider $configProvider * @param string $configType * @return array */ protected function getFormBlockConfig(ConfigProvider $configProvider, $configType) { $result = (array) $configProvider->getPropertyConfig()->getFormBlockConfig($configType); $this->applyFormBlockConfigTranslations($result); return $result; }
/** * Extracts field default values from an annotation and config file * * @param ConfigProvider $provider * @param string $className * @param string $fieldName * @param string $fieldType * @param FieldMetadata|null $metadata * @return array */ protected function getFieldDefaultValues(ConfigProvider $provider, $className, $fieldName, $fieldType, $metadata = null) { $defaultValues = []; $scope = $provider->getScope(); // try to get default values from an annotation if ($metadata && isset($metadata->defaultValues[$scope])) { $defaultValues = $metadata->defaultValues[$scope]; } // combine them with default values from a config file $defaultValues = array_merge($provider->getPropertyConfig()->getDefaultValues(PropertyConfigContainer::TYPE_FIELD, $fieldType), $defaultValues); // process translatable values $translatablePropertyNames = $provider->getPropertyConfig()->getTranslatableValues(PropertyConfigContainer::TYPE_FIELD); foreach ($translatablePropertyNames as $propertyName) { if (empty($defaultValues[$propertyName])) { $defaultValues[$propertyName] = ConfigHelper::getTranslationKey($scope, $propertyName, $className, $fieldName); } } return $defaultValues; }