2 namespace TYPO3\CMS\Extensionmanager\Domain\Repository;
46 $configurationArray = $this->getConfigurationArrayFromExtensionKey($extensionKey);
47 return $this->convertHierarchicArrayToObject($configurationArray);
56 protected function getConfigurationArrayFromExtensionKey($extensionKey)
59 $configurationUtility = $this->objectManager->get(\TYPO3\CMS\Extensionmanager\Utility\ConfigurationUtility::class);
60 $defaultConfiguration = $configurationUtility->getDefaultConfigurationFromExtConfTemplateAsValuedArray($extensionKey);
62 $resultArray = array();
63 if (!empty($defaultConfiguration)) {
66 $hierarchicConfiguration = array();
67 foreach ($configuration as $configurationOption) {
70 $hierarchicConfiguration = $originalConfiguration;
74 $hierarchicConfiguration = array_reverse($hierarchicConfiguration);
77 foreach ($hierarchicConfiguration as &$catConfigurationArray) {
78 foreach ($catConfigurationArray as &$subcatConfigurationArray) {
79 uasort($subcatConfigurationArray,
function ($a, $b) {
80 return strnatcmp($a[
'subcat'], $b[
'subcat']);
83 unset($subcatConfigurationArray);
85 unset($tempConfiguration);
88 $resultArray = $hierarchicConfiguration;
103 $hierarchicConfiguration = array();
109 if ($this->
translate($configurationOption[
'label'], $extensionKey)) {
110 $configurationOption[
'label'] = $this->
translate($configurationOption[
'label'], $extensionKey);
113 $configurationOption[
'subcat_name'] = $configurationOption[
'subcat_name'] ?:
'__default';
114 $hierarchicConfiguration[$configurationOption[
'cat']][$configurationOption[
'subcat_name']][$configurationOption[
'name']] = $configurationOption;
115 return $hierarchicConfiguration;
127 preg_match(
'/options\[(.*)\]/is', $configurationOption[
'type'], $typeMatches);
129 foreach ($optionItems as $optionItem) {
131 if (count($optionPair) === 2) {
132 $configurationOption[
'generic'][$optionPair[0]] = $optionPair[1];
134 $configurationOption[
'generic'][$optionPair[0]] = $optionPair[0];
137 $configurationOption[
'type'] =
'options';
138 return $configurationOption;
150 preg_match(
'/user\\[(.*)\\]/is', $configurationOption[
'type'], $matches);
151 $configurationOption[
'generic'] = $matches[1];
152 $configurationOption[
'type'] =
'user';
153 return $configurationOption;
165 $metaInformation = $configuration[
'__meta__'] ?: array();
166 unset($configuration[
'__meta__']);
167 return $metaInformation;
180 $currentExtensionConfig = unserialize(
181 $this->objectManager->get(\TYPO3\CMS\Core\Configuration\ConfigurationManager::class)
182 ->getConfigurationValueByPath(
'EXT/extConf/' . $extensionKey)
184 if (!is_array($currentExtensionConfig)) {
185 $currentExtensionConfig = array();
187 }
catch (\RuntimeException $e) {
188 $currentExtensionConfig = array();
191 $valuedCurrentExtensionConfig = array();
192 foreach ($flatExtensionConfig as $key => $value) {
193 $valuedCurrentExtensionConfig[$key][
'value'] = $value;
196 return $defaultConfiguration;
206 protected function convertHierarchicArrayToObject(array $configuration)
208 $configurationObjectStorage = new \SplObjectStorage();
209 foreach ($configuration as $category => $subcategory) {
211 $configurationCategoryObject = $this->objectManager->get(\TYPO3\CMS\Extensionmanager\Domain\Model\ConfigurationCategory::class);
212 $configurationCategoryObject->setName($category);
213 if ($subcategory[
'highlightText']) {
214 $configurationCategoryObject->setHighlightText($subcategory[
'highlightText']);
215 unset($subcategory[
'highlightText']);
217 foreach ($subcategory as $subcatName => $configurationItems) {
219 $configurationSubcategoryObject = $this->objectManager->get(\TYPO3\CMS\Extensionmanager\Domain\Model\ConfigurationSubcategory::class);
220 $configurationSubcategoryObject->setName($subcatName);
221 foreach ($configurationItems as $configurationItem) {
226 if (array_key_exists(
'subcat_label', $configurationItem)) {
227 $configurationSubcategoryObject->setLabel($configurationItem[
'subcat_label']);
231 $configurationObject = $this->objectManager->get(\TYPO3\CMS\Extensionmanager\Domain\Model\ConfigurationItem::class);
232 if (isset($configurationItem[
'generic'])) {
233 $configurationObject->setGeneric($configurationItem[
'generic']);
235 if (isset($configurationItem[
'cat'])) {
236 $configurationObject->setCategory($configurationItem[
'cat']);
238 if (isset($configurationItem[
'subcat_name'])) {
239 $configurationObject->setSubCategory($configurationItem[
'subcat_name']);
241 if (isset($configurationItem[
'labels']) && isset($configurationItem[
'labels'][0])) {
242 $configurationObject->setLabelHeadline($configurationItem[
'labels'][0]);
244 if (isset($configurationItem[
'labels']) && isset($configurationItem[
'labels'][1])) {
245 $configurationObject->setLabelText($configurationItem[
'labels'][1]);
247 if (isset($configurationItem[
'type'])) {
248 $configurationObject->setType($configurationItem[
'type']);
250 if (isset($configurationItem[
'name'])) {
251 $configurationObject->setName($configurationItem[
'name']);
253 if (isset($configurationItem[
'value'])) {
254 $configurationObject->setValue($configurationItem[
'value']);
256 if (isset($configurationItem[
'highlight'])) {
257 $configurationObject->setHighlight($configurationItem[
'highlight']);
259 $configurationSubcategoryObject->addItem($configurationObject);
261 $configurationCategoryObject->addSubcategory($configurationSubcategoryObject);
263 $configurationObjectStorage->attach($configurationCategoryObject);
265 return $configurationObjectStorage;
278 $translation = \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate($key, $extensionName);